hedgewars/CMakeLists.txt
author koda
Sat, 19 Feb 2011 04:04:29 +0100
changeset 4951 ae0c6c35414d
parent 4930 5d59bb58c365
child 5019 e38d1720a0ff
permissions -rw-r--r--
fix silly validation and signature
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2420
b7390a3040f8 ultramegafix
koda
parents: 2413
diff changeset
     1
find_package(SDL)
b7390a3040f8 ultramegafix
koda
parents: 2413
diff changeset
     2
find_package(SDL_image)
b7390a3040f8 ultramegafix
koda
parents: 2413
diff changeset
     3
find_package(SDL_net)
b7390a3040f8 ultramegafix
koda
parents: 2413
diff changeset
     4
find_package(SDL_ttf)
2515
51d3f4b6293a revert audio to use SDL_mixer -- also frontend uses it, so it needs sdlmixer sources
koda
parents: 2494
diff changeset
     5
find_package(SDL_mixer)
2924
908851e59958 Engine:
smxx
parents: 2822
diff changeset
     6
find_package(Lua)
2401
2a694ea2a437 fixes & co.
koda
parents: 2326
diff changeset
     7
3067
smxx
parents: 2990
diff changeset
     8
configure_file(${hedgewars_SOURCE_DIR}/hedgewars/config.inc.in ${CMAKE_CURRENT_BINARY_DIR}/config.inc)
smxx
parents: 2990
diff changeset
     9
2672
0f1403bf267a check for sdl_image and sdl_mixer versions
koda
parents: 2671
diff changeset
    10
#find which version of SDL_image and SDL_mixer we have (for IMG_Init and Mix_Init)
0f1403bf267a check for sdl_image and sdl_mixer versions
koda
parents: 2671
diff changeset
    11
#if the headers are not installed, the newer apis won't be activated
2673
2c847bcc951d rewritten find_file part
koda
parents: 2672
diff changeset
    12
find_file(sdlmixer_h SDL_mixer.h ${SDLMIXER_INCLUDE_DIR})
2c847bcc951d rewritten find_file part
koda
parents: 2672
diff changeset
    13
if(sdlmixer_h)
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    14
    file(STRINGS ${sdlmixer_h} sdlmixer_version_tmp REGEX "SDL_MIXER_PATCHLEVEL[\t' ']+[0-9]+")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    15
    string(REGEX MATCH ".([0-9]+)" sdlmixer_version "${sdlmixer_version_tmp}")
2672
0f1403bf267a check for sdl_image and sdl_mixer versions
koda
parents: 2671
diff changeset
    16
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    17
    if(sdlmixer_version GREATER 9)
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    18
        message(STATUS "Enabling enhanced SDL_Mixer calls")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    19
        set(pascal_compiler_flags_cmn "-dSDL_MIXER_NEWER" ${pascal_compiler_flags_cmn})
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    20
    endif()
2673
2c847bcc951d rewritten find_file part
koda
parents: 2672
diff changeset
    21
endif()
2672
0f1403bf267a check for sdl_image and sdl_mixer versions
koda
parents: 2671
diff changeset
    22
2673
2c847bcc951d rewritten find_file part
koda
parents: 2672
diff changeset
    23
find_file(sdlimage_h SDL_image.h ${SDLIMAGE_INCLUDE_DIR})
2c847bcc951d rewritten find_file part
koda
parents: 2672
diff changeset
    24
if(sdlimage_h)
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    25
    file(STRINGS ${sdlimage_h} sdlimage_version_tmp REGEX "SDL_IMAGE_PATCHLEVEL[\t' ']+[0-9]+")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    26
    string(REGEX MATCH ".([0-9]+)" sdlimage_version "${sdlimage_version_tmp}")
2672
0f1403bf267a check for sdl_image and sdl_mixer versions
koda
parents: 2671
diff changeset
    27
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    28
    if(sdlimage_version GREATER 7)
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    29
        message(STATUS "Enabling enhanced SDL_Image calls")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    30
        set(pascal_compiler_flags_cmn "-dSDL_IMAGE_NEWER" ${pascal_compiler_flags_cmn})
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    31
    endif()
2673
2c847bcc951d rewritten find_file part
koda
parents: 2672
diff changeset
    32
endif()
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
    33
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3680
diff changeset
    34
#SOURCE AND PROGRAMS SECTION
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    35
set(fpc_tryexe fpc)
2326
0ddf641fddee rename dpr -> pas, restores ammos on two columns, minor fixes to openalbridge
koda
parents: 2251
diff changeset
    36
set(hwengine_project ${hedgewars_SOURCE_DIR}/hedgewars/hwengine.pas)
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
    37
set(engine_output_name "hwengine")
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    38
2786
85f6425a4d74 Engine:
smxx
parents: 2673
diff changeset
    39
set(engine_sources
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    40
    ${hwengine_project}
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    41
    SDLh.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    42
    uAI.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    43
    uAIActions.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    44
    uAIAmmoTests.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    45
    uAIMisc.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    46
    uAmmos.pas
4393
883b979697e4 uCaptions
unc0rr
parents: 4386
diff changeset
    47
    uCaptions.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    48
    uChat.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    49
    uCollisions.pas
4373
fe0e3903bb9e Introduce uCommands.pas
unC0Rr
parents: 4357
diff changeset
    50
    uCommands.pas
4413
46caab3a8f84 uCommandHandlers
unc0rr
parents: 4403
diff changeset
    51
    uCommandHandlers.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    52
    uConsole.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    53
    uConsts.pas
4403
unc0rr
parents: 4393
diff changeset
    54
    uDebug.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    55
    uFloat.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    56
    uGame.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    57
    uGears.pas
4386
855049a88c59 Forgot this
unc0rr
parents: 4380
diff changeset
    58
    uGearsRender.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    59
    uIO.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    60
    uKeys.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    61
    uLand.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    62
    uLandGraphics.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    63
    uLandObjects.pas
4457
ffb766e85150 - Change painted map file format
unc0rr
parents: 4415
diff changeset
    64
    uLandPainted.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    65
    uLandTemplates.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    66
    uLandTexture.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    67
    uLocale.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    68
    uMisc.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    69
    uMobile.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    70
    uRandom.pas
4378
91655618a510 Introduce uRender
unC0Rr
parents: 4375
diff changeset
    71
    uRender.pas
4380
b78638b36b89 Introduce uRenderUtils
unC0Rr
parents: 4378
diff changeset
    72
    uRenderUtils.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    73
    uScript.pas
4415
941251bad467 SinTable.inc -> uSinTable.pas
unc0rr
parents: 4413
diff changeset
    74
    uSinTable.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    75
    uSound.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    76
    uStats.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    77
    uStore.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    78
    uTeams.pas
4375
ae5507ddb989 Introduce uTextures
unC0Rr
parents: 4374
diff changeset
    79
    uTextures.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    80
    uTypes.pas
4374
bcefeeabaa33 Move some stuff from uMisc to uUtils
unC0Rr
parents: 4373
diff changeset
    81
    uUtils.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    82
    uVisualGears.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    83
    uWorld.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    84
    GSHandlers.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    85
    VGSHandlers.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    86
    HHHandlers.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    87
    ArgParsers.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    88
    options.inc
4378
91655618a510 Introduce uRender
unC0Rr
parents: 4375
diff changeset
    89
    adler32.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    90
    ${CMAKE_CURRENT_BINARY_DIR}/config.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    91
    )
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    92
3495
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3468
diff changeset
    93
if(BUILD_ENGINE_LIBRARY)
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    94
    message(STATUS "Engine will be built as library (experimental)")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    95
    set(hwengine_project ${hedgewars_SOURCE_DIR}/hedgewars/hwLibrary.pas)
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    96
    set(engine_sources ${hwengine_project} PascalExports.pas ${engine_sources})
4928
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
    97
    set(pascal_compiler_flags_cmn "-dHWLIBRARY" ${pascal_compiler_flags_cmn})
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
    98
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
    99
    # create position independent code, only required for x68_64 builds, similar to -fPIC
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
   100
    if(CMAKE_SIZEOF_VOID_P MATCHES "8")
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
   101
        set(pascal_compiler_flags_cmn "-Cg" ${pascal_compiler_flags_cmn})
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
   102
    endif(CMAKE_SIZEOF_VOID_P MATCHES "8")
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
   103
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
   104
    # due to compiling/linker issues on Max OS X 10.6 -k-no_order_inits is needed to avoid linking fail
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
   105
    if(APPLE AND current_macosx_version MATCHES "10.6")
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
   106
        set(pascal_compiler_flags_cmn "-k-no_order_inits" ${pascal_compiler_flags_cmn})
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
   107
    endif(APPLE AND current_macosx_version MATCHES "10.6")
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   108
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   109
    if (APPLE)
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   110
        set(engine_output_name "hwengine.dylib")
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   111
    endif (APPLE)
3495
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3468
diff changeset
   112
endif(BUILD_ENGINE_LIBRARY)
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3468
diff changeset
   113
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   114
find_program(fpc_executable ${fpc_tryexe})
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   115
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   116
if(fpc_executable)
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   117
    exec_program(${fpc_executable} ARGS "-iV" OUTPUT_VARIABLE fpc_output)
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   118
endif(fpc_executable)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   119
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   120
set(noexecstack_flags "-k-z" "-knoexecstack")
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
   121
file(WRITE ${EXECUTABLE_OUTPUT_PATH}/checkstack.pas "begin end.")
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
   122
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
   123
exec_program(${fpc_executable} ${EXECUTABLE_OUTPUT_PATH}
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   124
    ARGS ${noexecstack_flags} checkstack.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   125
    OUTPUT_VARIABLE noout
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   126
    RETURN_VALUE testnoexecstack
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   127
    )
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
   128
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   129
if(${testnoexecstack})
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   130
    set (noexecstack_flags "")
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   131
endif(${testnoexecstack})
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
   132
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   133
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   134
if(APPLE)
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   135
    string(REGEX MATCH "[pP][pP][cC]+" powerpc_build "${CMAKE_OSX_ARCHITECTURES}")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   136
    string(REGEX MATCH "[iI]386+" i386_build "${CMAKE_OSX_ARCHITECTURES}")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   137
    string(REGEX MATCH "[xX]86_64+" x86_64_build "${CMAKE_OSX_ARCHITECTURES}")
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   138
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   139
    if(powerpc_build)
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   140
        set(powerpc_build "powerpc")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   141
    endif()
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   142
endif(APPLE)
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   143
2669
4eec706e86b0 introduction of IMG_Init
koda
parents: 2666
diff changeset
   144
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   145
#PASCAL DETECTION SECTION
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   146
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" fpc_version "${fpc_output}")
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   147
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   148
if(fpc_version)
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   149
    string(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" fpc_vers_major "${fpc_version}")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   150
    string(REGEX REPLACE "[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" fpc_vers_minor "${fpc_version}")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   151
    string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" fpc_vers_patch "${fpc_version}")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   152
    message(STATUS "Freepascal version detected: ${fpc_vers_major}.${fpc_vers_minor}")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   153
    math(EXPR fpc_ver "${fpc_vers_major}*10000 + ${fpc_vers_minor}*100 + ${fpc_vers_patch}")
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   154
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   155
    if(fpc_ver LESS "020200")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   156
        message(FATAL_ERROR "Minimum required version of FreePascal is 2.2.0")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   157
    elseif(APPLE AND x86_64_build AND fpc_ver LESS "020400")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   158
        message(FATAL_ERROR "Minimum required version of FreePascal is 2.4.0 for building 64 bit applications!")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   159
    endif()
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   160
else()
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   161
    message(FATAL_ERROR "No Pascal compiler found!")
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   162
endif()
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   163
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   164
set(pascal_compiler ${fpc_executable})
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2601
diff changeset
   165
set(pascal_compiler_flags ${noexecstack_flags} ${pascal_compiler_flags_cmn} ${hwengine_project})
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   166
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   167
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   168
#DEPENDECIES AND EXECUTABLES SECTION
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   169
IF(NOT APPLE)
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   170
    #here is the command for standard executables or for shared library
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   171
    add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}${CMAKE_EXECUTABLE_SUFFIX}"
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   172
        COMMAND "${pascal_compiler}"
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   173
        ARGS ${pascal_compiler_flags}
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   174
        MAIN_DEPENDENCY ${hwengine_project}
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   175
        DEPENDS ${engine_sources}
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   176
        )
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   177
ELSE()
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   178
    #let's build sdlmain, which is absent from the framework
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   179
    find_package(SDL REQUIRED)
2669
4eec706e86b0 introduction of IMG_Init
koda
parents: 2666
diff changeset
   180
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   181
    set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   182
    include_directories(${SDL_INCLUDE_DIR})
2669
4eec706e86b0 introduction of IMG_Init
koda
parents: 2666
diff changeset
   183
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   184
    add_library (SDLmain STATIC SDLMain.m)
2669
4eec706e86b0 introduction of IMG_Init
koda
parents: 2666
diff changeset
   185
2809
b8956af350c1 mac build supports lua
koda
parents: 2804
diff changeset
   186
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   187
    #these are the dependencies for building a universal binary on Mac OS X
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   188
    foreach (build_arch ${powerpc_build} ${i386_build} ${x86_64_build})
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   189
        set(lipo_args_list "${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch}" ${lipo_args_list})
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   190
        add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch}"
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   191
            COMMAND "${pascal_compiler}"
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   192
            ARGS ${pascal_compiler_flags} -ohwengine.${build_arch} -P${build_arch}
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   193
            MAIN_DEPENDENCY ${hwengine_project}
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   194
            DEPENDS ${engine_sources} SDLmain lua
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   195
            )
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   196
        add_custom_target(hwengine.${build_arch} ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch}")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   197
    endforeach()
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   198
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   199
    add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}"
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   200
        COMMAND "lipo"
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   201
        ARGS ${lipo_args_list} -create -output ${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   202
        DEPENDS ${lipo_args_list}
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   203
        )
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   204
ENDIF()
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   205
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
   206
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   207
add_custom_target(${engine_output_name} ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}${CMAKE_EXECUTABLE_SUFFIX}")
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   208
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   209
install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_dir})
2015
d2848d723690 koda's patch
unc0rr
parents: 2003
diff changeset
   210