hedgewars/CMakeLists.txt
author unc0rr
Thu, 10 May 2012 13:45:47 +0400
changeset 7040 4aff2da0d0b3
parent 7031 d5ea24399a48
child 7109 af3a43a46f21
permissions -rw-r--r--
Render function variables in struct with no mangling. 13 C units are compilable now.
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)
2401
2a694ea2a437 fixes & co.
koda
parents: 2326
diff changeset
     6
5019
e38d1720a0ff allows for building hedgewars with SDL-1.3
koda
parents: 4930
diff changeset
     7
include(${CMAKE_MODULE_PATH}/FindSDL_Extras.cmake)
2672
0f1403bf267a check for sdl_image and sdl_mixer versions
koda
parents: 2671
diff changeset
     8
5019
e38d1720a0ff allows for building hedgewars with SDL-1.3
koda
parents: 4930
diff changeset
     9
configure_file(${hedgewars_SOURCE_DIR}/hedgewars/config.inc.in ${CMAKE_CURRENT_BINARY_DIR}/config.inc)
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
    10
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3680
diff changeset
    11
#SOURCE AND PROGRAMS SECTION
2326
0ddf641fddee rename dpr -> pas, restores ammos on two columns, minor fixes to openalbridge
koda
parents: 2251
diff changeset
    12
set(hwengine_project ${hedgewars_SOURCE_DIR}/hedgewars/hwengine.pas)
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
    13
set(engine_output_name "hwengine")
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    14
2786
85f6425a4d74 Engine:
smxx
parents: 2673
diff changeset
    15
set(engine_sources
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    16
    ${hwengine_project}
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    17
    SDLh.pas
6881
ee01eeaa1281 png screenshots
Stepan777
parents: 6801
diff changeset
    18
    PNGh.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    19
    uAI.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    20
    uAIActions.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    21
    uAIAmmoTests.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    22
    uAIMisc.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    23
    uAmmos.pas
4393
883b979697e4 uCaptions
unc0rr
parents: 4386
diff changeset
    24
    uCaptions.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    25
    uChat.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    26
    uCollisions.pas
4373
fe0e3903bb9e Introduce uCommands.pas
unC0Rr
parents: 4357
diff changeset
    27
    uCommands.pas
4413
46caab3a8f84 uCommandHandlers
unc0rr
parents: 4403
diff changeset
    28
    uCommandHandlers.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    29
    uConsole.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    30
    uConsts.pas
4403
unc0rr
parents: 4393
diff changeset
    31
    uDebug.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    32
    uFloat.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    33
    uGame.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    34
    uGears.pas
4386
855049a88c59 Forgot this
unc0rr
parents: 4380
diff changeset
    35
    uGearsRender.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    36
    uIO.pas
6954
a61458a81480 changed uKeys to uInputHandler to better reflect its function
Xeli
parents: 6920
diff changeset
    37
    uInputHandler.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    38
    uLand.pas
6491
736479f3d348 Some cleanup here and there
unc0rr
parents: 6224
diff changeset
    39
    uLandGenMaze.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    40
    uLandGraphics.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    41
    uLandObjects.pas
6491
736479f3d348 Some cleanup here and there
unc0rr
parents: 6224
diff changeset
    42
    uLandOutline.pas
4457
ffb766e85150 - Change painted map file format
unc0rr
parents: 4415
diff changeset
    43
    uLandPainted.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    44
    uLandTemplates.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    45
    uLandTexture.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    46
    uLocale.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    47
    uMisc.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    48
    uMobile.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    49
    uRandom.pas
4378
91655618a510 Introduce uRender
unC0Rr
parents: 4375
diff changeset
    50
    uRender.pas
4380
b78638b36b89 Introduce uRenderUtils
unC0Rr
parents: 4378
diff changeset
    51
    uRenderUtils.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    52
    uScript.pas
4415
941251bad467 SinTable.inc -> uSinTable.pas
unc0rr
parents: 4413
diff changeset
    53
    uSinTable.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    54
    uSound.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    55
    uStats.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    56
    uStore.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    57
    uTeams.pas
4375
ae5507ddb989 Introduce uTextures
unC0Rr
parents: 4374
diff changeset
    58
    uTextures.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    59
    uTypes.pas
4374
bcefeeabaa33 Move some stuff from uMisc to uUtils
unC0Rr
parents: 4373
diff changeset
    60
    uUtils.pas
5179
8d64dcb566ea Fix "Mixing signed expressions and longwords gives a 64bit result" warnings
unc0rr
parents: 5169
diff changeset
    61
    uVariables.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    62
    uVisualGears.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    63
    uWorld.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    64
    GSHandlers.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    65
    VGSHandlers.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    66
    ArgParsers.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    67
    options.inc
4378
91655618a510 Introduce uRender
unC0Rr
parents: 4375
diff changeset
    68
    adler32.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    69
    ${CMAKE_CURRENT_BINARY_DIR}/config.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    70
    )
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    71
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
    72
if(BUILD_ENGINE_LIBRARY)
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    73
    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
    74
    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
    75
    set(engine_sources ${hwengine_project} PascalExports.pas ${engine_sources})
4928
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
    76
    set(pascal_compiler_flags_cmn "-dHWLIBRARY" ${pascal_compiler_flags_cmn})
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
    77
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
    78
    # 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
    79
    if(CMAKE_SIZEOF_VOID_P MATCHES "8")
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
    80
        set(pascal_compiler_flags_cmn "-Cg" ${pascal_compiler_flags_cmn})
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
    81
    endif(CMAKE_SIZEOF_VOID_P MATCHES "8")
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
    82
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
    83
    # due to compiling/linker issues on Max OS X 10.6 -k-no_order_inits is needed to avoid linking fail
5188
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5179
diff changeset
    84
    if(APPLE AND current_macosx_version GREATER "10.5")
4928
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
    85
        set(pascal_compiler_flags_cmn "-k-no_order_inits" ${pascal_compiler_flags_cmn})
5188
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5179
diff changeset
    86
    endif()
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
    87
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
    88
    if (APPLE)
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
    89
        set(engine_output_name "hwengine.dylib")
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
    90
    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
    91
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
    92
7029
efbe6400fc24 add support for FPC and FPFLAGS cmake arguments (helps crosscompiling)
koda
parents: 6992
diff changeset
    93
IF(FPC)
efbe6400fc24 add support for FPC and FPFLAGS cmake arguments (helps crosscompiling)
koda
parents: 6992
diff changeset
    94
    set(fpc_executable ${FPC})
efbe6400fc24 add support for FPC and FPFLAGS cmake arguments (helps crosscompiling)
koda
parents: 6992
diff changeset
    95
ELSE()
efbe6400fc24 add support for FPC and FPFLAGS cmake arguments (helps crosscompiling)
koda
parents: 6992
diff changeset
    96
    find_program(fpc_executable fpc)
efbe6400fc24 add support for FPC and FPFLAGS cmake arguments (helps crosscompiling)
koda
parents: 6992
diff changeset
    97
ENDIF()
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    98
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
    99
if(fpc_executable)
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   100
    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
   101
endif(fpc_executable)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   102
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   103
set(noexecstack_flags "-k-z" "-knoexecstack")
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
   104
file(WRITE ${EXECUTABLE_OUTPUT_PATH}/checkstack.pas "begin end.")
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
   105
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
   106
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
   107
    ARGS ${noexecstack_flags} checkstack.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   108
    OUTPUT_VARIABLE noout
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   109
    RETURN_VALUE testnoexecstack
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   110
    )
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
   111
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   112
if(${testnoexecstack})
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   113
    set (noexecstack_flags "")
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   114
endif(${testnoexecstack})
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
   115
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   116
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   117
if(APPLE)
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   118
    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
   119
    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
   120
    string(REGEX MATCH "[xX]86_64+" x86_64_build "${CMAKE_OSX_ARCHITECTURES}")
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   121
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   122
    if(powerpc_build)
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   123
        set(powerpc_build "powerpc")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   124
    endif()
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   125
endif(APPLE)
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   126
2669
4eec706e86b0 introduction of IMG_Init
koda
parents: 2666
diff changeset
   127
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   128
#PASCAL DETECTION SECTION
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   129
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" fpc_version "${fpc_output}")
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   130
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   131
if(fpc_version)
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   132
    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
   133
    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
   134
    string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" fpc_vers_patch "${fpc_version}")
5169
e353ca78d28b some comments and simplifications for cmake files
koda
parents: 5019
diff changeset
   135
    message(STATUS "Freepascal version installed: ${fpc_vers_major}.${fpc_vers_minor}")
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   136
    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
   137
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   138
    if(fpc_ver LESS "020200")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   139
        message(FATAL_ERROR "Minimum required version of FreePascal is 2.2.0")
6801
b42bdf470b84 workaround the different Lion ABI by forcing fpc 2.6 as minimum compiler version on osx
koda
parents: 6491
diff changeset
   140
    elseif(APPLE AND (fpc_ver LESS "020600"))
b42bdf470b84 workaround the different Lion ABI by forcing fpc 2.6 as minimum compiler version on osx
koda
parents: 6491
diff changeset
   141
        message(FATAL_ERROR "Minimum required version of FreePascal is 2.6.0 on Mac OS X")
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   142
    endif()
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   143
else()
7029
efbe6400fc24 add support for FPC and FPFLAGS cmake arguments (helps crosscompiling)
koda
parents: 6992
diff changeset
   144
    message(FATAL_ERROR "No FreePascal compiler found!")
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   145
endif()
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   146
6920
b1d0d26d41fa this should enable png screenshots on osx as well
koda
parents: 6916
diff changeset
   147
b1d0d26d41fa this should enable png screenshots on osx as well
koda
parents: 6916
diff changeset
   148
#DEPENDECIES AND EXECUTABLES SECTION
6916
50243b6ffab5 case sensitivity + correct variable check
vittorio.giovara@gmail.com
parents: 6915
diff changeset
   149
find_package(PNG)
50243b6ffab5 case sensitivity + correct variable check
vittorio.giovara@gmail.com
parents: 6915
diff changeset
   150
if(${PNG_FOUND})
6920
b1d0d26d41fa this should enable png screenshots on osx as well
koda
parents: 6916
diff changeset
   151
    message(STATUS "PNG screenshots enabled (library found at ${PNG_LIBRARY})")
6915
be298851fc7b when libpng is not found, gratiously fallback to bmp screenshots; untested
koda
parents: 6881
diff changeset
   152
    set(pascal_compiler_flags_cmn "-dPNG_SCREENSHOTS" ${pascal_compiler_flags_cmn})
6920
b1d0d26d41fa this should enable png screenshots on osx as well
koda
parents: 6916
diff changeset
   153
    if(APPLE)  # need to explictly link with the static lib
b1d0d26d41fa this should enable png screenshots on osx as well
koda
parents: 6916
diff changeset
   154
        string(REGEX REPLACE "(.*)libpng.*" "\\1" PNG_LIBDIR "${PNG_LIBRARY}")
b1d0d26d41fa this should enable png screenshots on osx as well
koda
parents: 6916
diff changeset
   155
        set(pascal_compiler_flags_cmn "-k${PNG_LIBDIR}/libpng.a" ${pascal_compiler_flags_cmn})
b1d0d26d41fa this should enable png screenshots on osx as well
koda
parents: 6916
diff changeset
   156
    endif()
6915
be298851fc7b when libpng is not found, gratiously fallback to bmp screenshots; untested
koda
parents: 6881
diff changeset
   157
else()
be298851fc7b when libpng is not found, gratiously fallback to bmp screenshots; untested
koda
parents: 6881
diff changeset
   158
    message(STATUS "PNG library not found, switching to screenshots in BMP format")
be298851fc7b when libpng is not found, gratiously fallback to bmp screenshots; untested
koda
parents: 6881
diff changeset
   159
endif()
be298851fc7b when libpng is not found, gratiously fallback to bmp screenshots; untested
koda
parents: 6881
diff changeset
   160
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   161
set(pascal_compiler ${fpc_executable})
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2601
diff changeset
   162
set(pascal_compiler_flags ${noexecstack_flags} ${pascal_compiler_flags_cmn} ${hwengine_project})
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   163
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   164
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   165
IF(NOT APPLE)
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   166
    #here is the command for standard executables or for shared library
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   167
    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
   168
        COMMAND "${pascal_compiler}"
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   169
        ARGS ${pascal_compiler_flags}
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   170
        MAIN_DEPENDENCY ${hwengine_project}
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   171
        DEPENDS ${engine_sources}
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   172
        )
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   173
ELSE()
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   174
    #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
   175
    find_package(SDL REQUIRED)
2669
4eec706e86b0 introduction of IMG_Init
koda
parents: 2666
diff changeset
   176
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   177
    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
   178
    include_directories(${SDL_INCLUDE_DIR})
2669
4eec706e86b0 introduction of IMG_Init
koda
parents: 2666
diff changeset
   179
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   180
    add_library (SDLmain STATIC SDLMain.m)
2669
4eec706e86b0 introduction of IMG_Init
koda
parents: 2666
diff changeset
   181
2809
b8956af350c1 mac build supports lua
koda
parents: 2804
diff changeset
   182
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   183
    #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
   184
    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
   185
        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
   186
        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
   187
            COMMAND "${pascal_compiler}"
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   188
            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
   189
            MAIN_DEPENDENCY ${hwengine_project}
7031
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   190
            DEPENDS ${engine_sources} SDLmain
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   191
            )
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   192
        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
   193
    endforeach()
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   194
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   195
    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
   196
        COMMAND "lipo"
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   197
        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
   198
        DEPENDS ${lipo_args_list}
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   199
        )
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   200
ENDIF()
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   201
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
   202
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   203
add_custom_target(${engine_output_name} ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}${CMAKE_EXECUTABLE_SUFFIX}")
7031
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   204
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   205
#when system Lua is not found we need to compile it before engine
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   206
if(NOT ${LUA_FOUND})
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   207
    add_dependencies(${engine_output_name} lua)
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   208
endif()
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   209
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   210
#this command is a workaround to some inlining issues present in older
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   211
# FreePascal versions and fixed in 2.6, That version is mandatory on OSX,
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   212
# hence the command is not needed there
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   213
if(NOT APPLE)
6224
42b256eca362 one dangerous merge
koda
parents: 6131
diff changeset
   214
    add_custom_target(ENGINECLEAN COMMAND ${CMAKE_BUILD_TOOL} "clean" "${PROJECT_BINARY_DIR}" "${hedgewars_SOURCE_DIR}/hedgewars")
42b256eca362 one dangerous merge
koda
parents: 6131
diff changeset
   215
    add_dependencies(${engine_output_name} ENGINECLEAN)
7031
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   216
endif()
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   217
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   218
install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_dir})
2015
d2848d723690 koda's patch
unc0rr
parents: 2003
diff changeset
   219