hedgewars/CMakeLists.txt
author koda
Thu, 21 Mar 2013 15:03:30 +0100
branchcmake_pascal
changeset 8825 9f8d146e9335
parent 8823 65b430b6cd68
child 8827 f53dfd8e0432
permissions -rw-r--r--
drop processor flags
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
8661
ac8dba27a3f1 replace sdl mixer/image version checking with something more robust
koda
parents: 8611
diff changeset
     7
include (CheckLibraryExists)
8669
3f9853888d4f user correct variable and slimmer test, version typos, .dll.a updated
koda
parents: 8666
diff changeset
     8
#Mix_Init/Mix_Quit from SDL_mixer 1.2.10
8664
6204ac0293b4 support old cmake style variables
koda
parents: 8662
diff changeset
     9
check_library_exists(${SDLMIXER_LIBRARY} Mix_Init "" HAVE_MIXINIT)
8669
3f9853888d4f user correct variable and slimmer test, version typos, .dll.a updated
koda
parents: 8666
diff changeset
    10
#IMG_Init/IMG_Quit from SDL_image 1.2.8
8664
6204ac0293b4 support old cmake style variables
koda
parents: 8662
diff changeset
    11
check_library_exists(${SDLIMAGE_LIBRARY} IMG_Init "" HAVE_IMGINIT)
2672
0f1403bf267a check for sdl_image and sdl_mixer versions
koda
parents: 2671
diff changeset
    12
8752
48cf2ccb83c6 with lot of hackery, use add_executable on pascal files, SUCCSS
koda
parents: 8702
diff changeset
    13
enable_language(Pascal)
8702
a28966180a29 have fpc work in the right directory instead of passing the full path of the main module (avoids having full paths in debug build backtraces for the first module only)
koda
parents: 8697
diff changeset
    14
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.inc.in ${CMAKE_CURRENT_BINARY_DIR}/config.inc)
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
    15
8166
5bc0fc0bab4d Refactor Freepascal module.
Bryan Dunsmore <dunsmoreb@gmail.com>
parents: 8164
diff changeset
    16
if (APPLE)
5bc0fc0bab4d Refactor Freepascal module.
Bryan Dunsmore <dunsmoreb@gmail.com>
parents: 8164
diff changeset
    17
    set(required_fpc_version 2.6)
5bc0fc0bab4d Refactor Freepascal module.
Bryan Dunsmore <dunsmoreb@gmail.com>
parents: 8164
diff changeset
    18
else()
5bc0fc0bab4d Refactor Freepascal module.
Bryan Dunsmore <dunsmoreb@gmail.com>
parents: 8164
diff changeset
    19
    set(required_fpc_version 2.2)
5bc0fc0bab4d Refactor Freepascal module.
Bryan Dunsmore <dunsmoreb@gmail.com>
parents: 8164
diff changeset
    20
endif()
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    21
2786
85f6425a4d74 Engine:
smxx
parents: 2673
diff changeset
    22
set(engine_sources
8761
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    23
    SDLh.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    24
    uSinTable.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    25
    uFloat.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    26
    uConsts.pas
7730
2013733f9ca9 A bit more on the knife. Also add missing files to CMakeLists
nemo
parents: 7718
diff changeset
    27
    LuaPas.pas
2013733f9ca9 A bit more on the knife. Also add missing files to CMakeLists
nemo
parents: 7718
diff changeset
    28
    PNGh.pas
8761
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    29
    uTypes.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    30
    uUtils.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    31
    uVariables.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    32
    uMisc.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    33
    uConsole.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    34
    uDebug.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    35
    uCommands.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    36
    uInputHandler.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    37
    uTextures.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    38
    uRenderUtils.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    39
    uRender.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    40
    uCaptions.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    41
    uLandTexture.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    42
    uIO.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    43
    uChat.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    44
    uPhysFSLayer.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    45
    uStore.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    46
    uSound.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    47
    uRandom.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    48
    uLocale.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    49
    uStats.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    50
    uCursor.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    51
    uVideoRec.pas
7730
2013733f9ca9 A bit more on the knife. Also add missing files to CMakeLists
nemo
parents: 7718
diff changeset
    52
    uAILandMarks.pas
8761
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    53
    adler32.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    54
    uLandTemplates.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    55
    uLandGraphics.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    56
    uLandPainted.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    57
    uLandOutline.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    58
    uLandGenMaze.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    59
    uLandObjects.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    60
    uLand.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    61
    uAmmos.pas
8761
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    62
8819
8e25b820b360 below this i cannot break the loop
koda
parents: 8813
diff changeset
    63
    uAIMisc.pas
8e25b820b360 below this i cannot break the loop
koda
parents: 8813
diff changeset
    64
    uAIActions.pas
8e25b820b360 below this i cannot break the loop
koda
parents: 8813
diff changeset
    65
    uAI.pas
8e25b820b360 below this i cannot break the loop
koda
parents: 8813
diff changeset
    66
    uWorld.pas
8e25b820b360 below this i cannot break the loop
koda
parents: 8813
diff changeset
    67
    uVisualGears.pas
8e25b820b360 below this i cannot break the loop
koda
parents: 8813
diff changeset
    68
    uTeams.pas
8761
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    69
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    70
    uGearsList.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    71
    uCollisions.pas
8761
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    72
    uAIAmmoTests.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    73
    uGears.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    74
    uGame.pas
4413
46caab3a8f84 uCommandHandlers
unc0rr
parents: 4403
diff changeset
    75
    uCommandHandlers.pas
7370
d50b874e7ee8 Introduce uGearsHandlers.pas, for now only part of cake handlers is moved there
unc0rr
parents: 7233
diff changeset
    76
    uGearsHandlers.pas
7592
cf67e58313ea Move rope code to separate unit
unc0rr
parents: 7370
diff changeset
    77
    uGearsHandlersRope.pas
7730
2013733f9ca9 A bit more on the knife. Also add missing files to CMakeLists
nemo
parents: 7718
diff changeset
    78
    uGearsHedgehog.pas
4386
855049a88c59 Forgot this
unc0rr
parents: 4380
diff changeset
    79
    uGearsRender.pas
7592
cf67e58313ea Move rope code to separate unit
unc0rr
parents: 7370
diff changeset
    80
    uGearsUtils.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    81
    uScript.pas
8761
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    82
    hwengine.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    83
4357
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
    ArgParsers.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    87
    options.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    88
    ${CMAKE_CURRENT_BINARY_DIR}/config.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    89
    )
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    90
7959
644b757d20e6 Start work on physfs support in engine
unc0rr
parents: 7817
diff changeset
    91
8686
d303da4568b7 introduce find_package_or_fail/disable to group together similar cmake code
koda
parents: 8669
diff changeset
    92
include(${CMAKE_MODULE_PATH}/utils.cmake)
d303da4568b7 introduce find_package_or_fail/disable to group together similar cmake code
koda
parents: 8669
diff changeset
    93
d303da4568b7 introduce find_package_or_fail/disable to group together similar cmake code
koda
parents: 8669
diff changeset
    94
find_package_or_fail(FreePascal)
d303da4568b7 introduce find_package_or_fail/disable to group together similar cmake code
koda
parents: 8669
diff changeset
    95
8665
3ff8694d9e22 rewritten findfreepascal, moved checkstack code elsewhere
koda
parents: 8664
diff changeset
    96
#when cmake-2.6 support is dropped, this ought to be inside FindFreePascal.cmake
3ff8694d9e22 rewritten findfreepascal, moved checkstack code elsewhere
koda
parents: 8664
diff changeset
    97
if (FREEPASCAL_VERSION VERSION_LESS required_fpc_version)
3ff8694d9e22 rewritten findfreepascal, moved checkstack code elsewhere
koda
parents: 8664
diff changeset
    98
    message(FATAL_ERROR "Freepascal ${FREEPASCAL_VERSION} is too old, minimum version required is ${required_fpc_version}")
8802
ed984e06b435 enable fpc inlining only in release mode only if using fpc > 2.6
koda
parents: 8798
diff changeset
    99
elseif(FREEPASCAL_VERSION VERSION_GREATER 2.4)
ed984e06b435 enable fpc inlining only in release mode only if using fpc > 2.6
koda
parents: 8798
diff changeset
   100
    #enable INLINE only with a recent version of fpc
8821
e85ff6e298b5 adjust verbosity, move debug/release variables in the right section
koda
parents: 8819
diff changeset
   101
    add_flag_prepend(CMAKE_Pascal_FLAGS_RELEASE -Si)
8164
b12634f2e1b2 Move noexecstack flags to Freepascal module and refactor.
Bryan Dunsmore <dunsmoreb@gmail.com>
parents: 8162
diff changeset
   102
endif()
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
   103
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
   104
8090
38d9cc60b14c cleanup revision section, make hg launch tolerant to config errors, drop deprecated exec_prog for desktop configuration in favour of execute_process
koda
parents: 8087
diff changeset
   105
#DEPENDECIES AND EXECUTABLES SECTION
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   106
if(APPLE)
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   107
    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
   108
    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
   109
    string(REGEX MATCH "[xX]86_64+" x86_64_build "${CMAKE_OSX_ARCHITECTURES}")
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   110
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   111
    if(powerpc_build)
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   112
        set(powerpc_build "powerpc")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   113
    endif()
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   114
7708
95de696e4711 another little tweak
koda
parents: 7706
diff changeset
   115
    #on OSX we need to provide the SDL_main() function when building as executable
8823
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   116
    if(NOT BUILD_ENGINE_LIBRARY)
8804
32bc222ddca6 move sdlmain compilation in its own folder
koda
parents: 8802
diff changeset
   117
        add_subdirectory(sdlmain)
8775
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   118
        add_flag_append(CMAKE_Pascal_FLAGS -Fl${LIBRARY_OUTPUT_PATH})
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   119
    endif()
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   120
endif(APPLE)
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   121
8813
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   122
if(FFMPEG_FOUND)
8811
dcdfcddf37ee move avwraper compilation in its own folder
koda
parents: 8804
diff changeset
   123
    add_subdirectory(avwrapper)
8775
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   124
    add_definitions(-dUSE_VIDEO_RECORDING)
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   125
    add_flag_append(CMAKE_Pascal_FLAGS -Fl${LIBRARY_OUTPUT_PATH})
7538
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   126
endif()
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   127
8770
53481d654691 partial conversion of pascal_flags to CMAKE_Pascal_FLAGS
koda
parents: 8761
diff changeset
   128
find_package_or_disable_msg(PNG NOPNG "Screenshots will be saved in BMP")
53481d654691 partial conversion of pascal_flags to CMAKE_Pascal_FLAGS
koda
parents: 8761
diff changeset
   129
if(PNG_FOUND)
53481d654691 partial conversion of pascal_flags to CMAKE_Pascal_FLAGS
koda
parents: 8761
diff changeset
   130
    get_filename_component(PNG_LIB_DIR ${PNG_LIBRARY} PATH)
8775
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   131
    add_definitions(-dPNG_SCREENSHOTS)
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   132
    add_flag_append(CMAKE_Pascal_FLAGS -Fl${PNG_LIB_DIR})
8770
53481d654691 partial conversion of pascal_flags to CMAKE_Pascal_FLAGS
koda
parents: 8761
diff changeset
   133
endif()
8067
34a679e5ca9d Link some libraries needed for physfs on windows (there are still 5 symbols which couldn't be found - to be resolved)
unc0rr
parents: 8064
diff changeset
   134
8787
f9dc079f2aa6 move one flag
koda
parents: 8775
diff changeset
   135
if(NOT LUA_FOUND)
8798
03d113d51062 wow windows works too with minor changes
koda
parents: 8790
diff changeset
   136
    add_flag_append(CMAKE_Pascal_FLAGS -k${EXECUTABLE_OUTPUT_PATH}/lib${LUA_LIBRARY}.a)
8787
f9dc079f2aa6 move one flag
koda
parents: 8775
diff changeset
   137
    #linking with liblua.a requires system readline
8798
03d113d51062 wow windows works too with minor changes
koda
parents: 8790
diff changeset
   138
    if(UNIX)
03d113d51062 wow windows works too with minor changes
koda
parents: 8790
diff changeset
   139
        add_flag_append(CMAKE_Pascal_FLAGS -k-lreadline)
03d113d51062 wow windows works too with minor changes
koda
parents: 8790
diff changeset
   140
    endif(UNIX)
8787
f9dc079f2aa6 move one flag
koda
parents: 8775
diff changeset
   141
endif()
f9dc079f2aa6 move one flag
koda
parents: 8775
diff changeset
   142
8775
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   143
if(NOT PHYSFS_FOUND)
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   144
    #-XLA is a beta fpc flag that renames libraries before passing them to the linker
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   145
    #we also have to pass PHYSFS_INTERNAL to satisfy windows runtime requirements
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   146
    #(should be harmless on other platforms)
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   147
    add_flag_append(CMAKE_Pascal_FLAGS "-XLAphysfs=${physfs_output_name}")
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   148
    add_definitions(-dPHYSFS_INTERNAL)
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   149
endif()
8752
48cf2ccb83c6 with lot of hackery, use add_executable on pascal files, SUCCSS
koda
parents: 8702
diff changeset
   150
8754
0c08d07e791a this should make cmake-pascal stuff work on linux too
koda
parents: 8752
diff changeset
   151
if(APPLE)
8775
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   152
    add_flag_append(CMAKE_Pascal_FLAGS -Px86_64)
8754
0c08d07e791a this should make cmake-pascal stuff work on linux too
koda
parents: 8752
diff changeset
   153
endif()
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   154
8813
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   155
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   156
if(BUILD_ENGINE_LIBRARY)
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   157
else(BUILD_ENGINE_LIBRARY)
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   158
endif(BUILD_ENGINE_LIBRARY)
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   159
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   160
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   161
if(HAVE_MIXINIT)
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   162
    add_definitions(-dSDL_MIXER_NEWER)
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   163
endif(HAVE_MIXINIT)
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   164
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   165
if(HAVE_IMGINIT)
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   166
    add_definitions(-dSDL_IMAGE_NEWER)
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   167
endif(HAVE_IMGINIT)
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   168
8775
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   169
add_definitions(-dDEBUGFILE)
8823
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   170
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   171
#SOURCE AND PROGRAMS SECTION
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   172
if(BUILD_ENGINE_LIBRARY)
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   173
    message(${WARNING} "Engine will be built as library (experimental)")
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   174
    if(APPLE AND current_macosx_version VERSION_GREATER "10.5")
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   175
        # due to compiler/linker issues on Max OS X 10.6 -k-no_order_inits is needed to avoid linking fail
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   176
        add_flag_append(CMAKE_Pascal_FLAGS "-k-no_order_inits")
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   177
    endif()
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   178
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   179
    #workaround for missing <TARGET> support during object generation
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   180
    set(engine_output_name "${CMAKE_SHARED_LIBRARY_PREFIX}hwengine${CMAKE_SHARED_LIBRARY_SUFFIX}")
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   181
    set(destination_dir ${target_library_install_dir})
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   182
    add_flags_prepend(CMAKE_Pascal_FLAGS "-o${LIBRARY_OUTPUT_PATH}/${engine_output_name}")
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   183
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   184
    add_definitions(-dHWLIBRARY)
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   185
    add_library(hwengine SHARED ${engine_sources} hwLibrary.pas)
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   186
else()
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   187
    # no need to change name here because target has same name
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   188
    set(engine_output_name "hwengine${CMAKE_EXECUTABLE_SUFFIX}")
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   189
    set(destination_dir ${target_binary_install_dir})
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   190
    add_executable(hwengine ${engine_sources})
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   191
endif()
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   192
7031
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   193
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   194
#when system Lua is not found we need to compile it before engine
7233
225179f64fd8 LUA_FOUND should surely be set only if the system lua was found.
nemo
parents: 7223
diff changeset
   195
if(NOT LUA_FOUND)
8790
783669d76b4f even though pascal linking is scripted, we need target_link_libraries anyways, so that modifying that library, will trigger linking again
koda
parents: 8787
diff changeset
   196
    target_link_libraries(hwengine lua)
7031
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   197
endif()
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   198
8528
ffd71e99a4f0 and now compile and link properly
koda
parents: 8518
diff changeset
   199
# same for physfs
ffd71e99a4f0 and now compile and link properly
koda
parents: 8518
diff changeset
   200
if(NOT PHYSFS_FOUND)
8790
783669d76b4f even though pascal linking is scripted, we need target_link_libraries anyways, so that modifying that library, will trigger linking again
koda
parents: 8787
diff changeset
   201
    target_link_libraries(hwengine physfs)
8528
ffd71e99a4f0 and now compile and link properly
koda
parents: 8518
diff changeset
   202
endif()
ffd71e99a4f0 and now compile and link properly
koda
parents: 8518
diff changeset
   203
8790
783669d76b4f even though pascal linking is scripted, we need target_link_libraries anyways, so that modifying that library, will trigger linking again
koda
parents: 8787
diff changeset
   204
target_link_libraries(hwengine physlayer)
7967
2f4fa2a06e4f Build physfs lib before engine
unc0rr
parents: 7959
diff changeset
   205
7942
17b3937de37b avwrapper needs to depend on hwengine not on ENGINECLEAN
koda
parents: 7940
diff changeset
   206
#when ffmpeg/libav is found we need to compile it before engine
7954
a5f0a6d46c52 advice from hasufell
koda
parents: 7942
diff changeset
   207
#TODO: convert avwrapper to .pas unit so we can skip this step
7942
17b3937de37b avwrapper needs to depend on hwengine not on ENGINECLEAN
koda
parents: 7940
diff changeset
   208
if(${FFMPEG_FOUND})
8790
783669d76b4f even though pascal linking is scripted, we need target_link_libraries anyways, so that modifying that library, will trigger linking again
koda
parents: 8787
diff changeset
   209
    target_link_libraries(hwengine avwrapper)
7942
17b3937de37b avwrapper needs to depend on hwengine not on ENGINECLEAN
koda
parents: 7940
diff changeset
   210
endif()
17b3937de37b avwrapper needs to depend on hwengine not on ENGINECLEAN
koda
parents: 7940
diff changeset
   211
8823
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   212
if(APPLE AND NOT BUILD_ENGINE_LIBRARY)
8790
783669d76b4f even though pascal linking is scripted, we need target_link_libraries anyways, so that modifying that library, will trigger linking again
koda
parents: 8787
diff changeset
   213
    target_link_libraries(hwengine SDLmain)
783669d76b4f even though pascal linking is scripted, we need target_link_libraries anyways, so that modifying that library, will trigger linking again
koda
parents: 8787
diff changeset
   214
endif()
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   215
8798
03d113d51062 wow windows works too with minor changes
koda
parents: 8790
diff changeset
   216
install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}" DESTINATION ${destination_dir})