hedgewars/CMakeLists.txt
author unc0rr
Wed, 19 Jun 2013 00:19:33 +0400
branchwebgl
changeset 9260 64718974158f
parent 9244 bb95e351270c
child 9521 8054d9d775fd
permissions -rw-r--r--
Reduce number of link errors
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)
9224
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9208 8863
diff changeset
     8
2672
0f1403bf267a check for sdl_image and sdl_mixer versions
koda
parents: 2671
diff changeset
     9
8752
48cf2ccb83c6 with lot of hackery, use add_executable on pascal files, SUCCSS
koda
parents: 8702
diff changeset
    10
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
    11
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.inc.in ${CMAKE_CURRENT_BINARY_DIR}/config.inc)
8846
c156ac6ddc2b set directories to be included externally, in the project file
koda
parents: 8843
diff changeset
    12
include_directories(${CMAKE_CURRENT_BINARY_DIR})
8661
ac8dba27a3f1 replace sdl mixer/image version checking with something more robust
koda
parents: 8611
diff changeset
    13
2672
0f1403bf267a check for sdl_image and sdl_mixer versions
koda
parents: 2671
diff changeset
    14
2786
85f6425a4d74 Engine:
smxx
parents: 2673
diff changeset
    15
set(engine_sources
8761
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    16
    SDLh.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    17
    uSinTable.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    18
    uFloat.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    19
    uConsts.pas
7730
2013733f9ca9 A bit more on the knife. Also add missing files to CMakeLists
nemo
parents: 7718
diff changeset
    20
    LuaPas.pas
2013733f9ca9 A bit more on the knife. Also add missing files to CMakeLists
nemo
parents: 7718
diff changeset
    21
    PNGh.pas
8761
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    22
    uTypes.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    23
    uUtils.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    24
    uVariables.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    25
    uMisc.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    26
    uConsole.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    27
    uDebug.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    28
    uCommands.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    29
    uInputHandler.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    30
    uTextures.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    31
    uRenderUtils.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    32
    uRender.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    33
    uCaptions.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    34
    uLandTexture.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    35
    uIO.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    36
    uChat.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    37
    uPhysFSLayer.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    38
    uStore.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    39
    uSound.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    40
    uRandom.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    41
    uLocale.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    42
    uStats.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    43
    uCursor.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    44
    uVideoRec.pas
7730
2013733f9ca9 A bit more on the knife. Also add missing files to CMakeLists
nemo
parents: 7718
diff changeset
    45
    uAILandMarks.pas
8761
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    46
    adler32.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    47
    uLandTemplates.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    48
    uLandGraphics.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    49
    uLandPainted.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    50
    uLandOutline.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    51
    uLandGenMaze.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    52
    uLandObjects.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    53
    uLand.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    54
    uAmmos.pas
8761
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    55
8819
8e25b820b360 below this i cannot break the loop
koda
parents: 8813
diff changeset
    56
    uAIMisc.pas
8e25b820b360 below this i cannot break the loop
koda
parents: 8813
diff changeset
    57
    uAIActions.pas
8e25b820b360 below this i cannot break the loop
koda
parents: 8813
diff changeset
    58
    uAI.pas
8e25b820b360 below this i cannot break the loop
koda
parents: 8813
diff changeset
    59
    uWorld.pas
8e25b820b360 below this i cannot break the loop
koda
parents: 8813
diff changeset
    60
    uVisualGears.pas
8e25b820b360 below this i cannot break the loop
koda
parents: 8813
diff changeset
    61
    uTeams.pas
8761
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    62
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    63
    uGearsList.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    64
    uCollisions.pas
8761
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    65
    uAIAmmoTests.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    66
    uGears.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    67
    uGame.pas
4413
46caab3a8f84 uCommandHandlers
unc0rr
parents: 4403
diff changeset
    68
    uCommandHandlers.pas
7370
d50b874e7ee8 Introduce uGearsHandlers.pas, for now only part of cake handlers is moved there
unc0rr
parents: 7233
diff changeset
    69
    uGearsHandlers.pas
7592
cf67e58313ea Move rope code to separate unit
unc0rr
parents: 7370
diff changeset
    70
    uGearsHandlersRope.pas
7730
2013733f9ca9 A bit more on the knife. Also add missing files to CMakeLists
nemo
parents: 7718
diff changeset
    71
    uGearsHedgehog.pas
4386
855049a88c59 Forgot this
unc0rr
parents: 4380
diff changeset
    72
    uGearsRender.pas
7592
cf67e58313ea Move rope code to separate unit
unc0rr
parents: 7370
diff changeset
    73
    uGearsUtils.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    74
    uScript.pas
8761
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    75
    hwengine.pas
801cf78707f2 partial reodering of units so that dependency tracking is done with cmake
koda
parents: 8756
diff changeset
    76
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    77
    GSHandlers.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    78
    VGSHandlers.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    79
    ArgParsers.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    80
    options.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    81
    ${CMAKE_CURRENT_BINARY_DIR}/config.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    82
    )
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    83
7959
644b757d20e6 Start work on physfs support in engine
unc0rr
parents: 7817
diff changeset
    84
8686
d303da4568b7 introduce find_package_or_fail/disable to group together similar cmake code
koda
parents: 8669
diff changeset
    85
include(${CMAKE_MODULE_PATH}/utils.cmake)
8338
cfad3738132c Small GL message
Michael Hartman <omh1280@gmail.com>
parents: 8330
diff changeset
    86
#opengl 2
cfad3738132c Small GL message
Michael Hartman <omh1280@gmail.com>
parents: 8330
diff changeset
    87
IF(${GL2})
cfad3738132c Small GL message
Michael Hartman <omh1280@gmail.com>
parents: 8330
diff changeset
    88
    set(pascal_flags "-dGL2" ${pascal_flags})
cfad3738132c Small GL message
Michael Hartman <omh1280@gmail.com>
parents: 8330
diff changeset
    89
    message(STATUS "Building using OpenGL 2")
cfad3738132c Small GL message
Michael Hartman <omh1280@gmail.com>
parents: 8330
diff changeset
    90
ENDIF(${GL2})
8686
d303da4568b7 introduce find_package_or_fail/disable to group together similar cmake code
koda
parents: 8669
diff changeset
    91
8852
0576439ef859 add and use the integrated version check
koda
parents: 8846
diff changeset
    92
if (${CMAKE_Pascal_COMPILER_VERSION} VERSION_LESS 2.2 OR # older versions are just ancient
0576439ef859 add and use the integrated version check
koda
parents: 8846
diff changeset
    93
    (${CMAKE_Pascal_COMPILER_VERSION} VERSION_LESS 2.6 AND APPLE)) # because of 64bit and opengl bindings
0576439ef859 add and use the integrated version check
koda
parents: 8846
diff changeset
    94
    message(FATAL_ERROR "Your FreePascal installation is too old (fpc ${CMAKE_Pascal_COMPILER_VERSION})!")
0576439ef859 add and use the integrated version check
koda
parents: 8846
diff changeset
    95
elseif(CMAKE_Pascal_COMPILER_VERSION VERSION_GREATER 2.4)
8802
ed984e06b435 enable fpc inlining only in release mode only if using fpc > 2.6
koda
parents: 8798
diff changeset
    96
    #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
    97
    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
    98
endif()
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    99
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
   100
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
   101
#DEPENDECIES AND EXECUTABLES SECTION
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   102
if(APPLE)
8837
b9a15738711e parsing CMAKE_OSX_ARCHITECTURES
koda
parents: 8827
diff changeset
   103
    if(CMAKE_OSX_ARCHITECTURES)
b9a15738711e parsing CMAKE_OSX_ARCHITECTURES
koda
parents: 8827
diff changeset
   104
        #parse this system variable and adjust only the powerpc syntax to be compatible with -P
b9a15738711e parsing CMAKE_OSX_ARCHITECTURES
koda
parents: 8827
diff changeset
   105
        string(REGEX MATCH "[pP][pP][cC]+" powerpc_build "${CMAKE_OSX_ARCHITECTURES}")
b9a15738711e parsing CMAKE_OSX_ARCHITECTURES
koda
parents: 8827
diff changeset
   106
        string(REGEX MATCH "[iI]386+" i386_build "${CMAKE_OSX_ARCHITECTURES}")
b9a15738711e parsing CMAKE_OSX_ARCHITECTURES
koda
parents: 8827
diff changeset
   107
        string(REGEX MATCH "[xX]86_64+" x86_64_build "${CMAKE_OSX_ARCHITECTURES}")
8855
879270f627e0 restore the osx build disabling universal app support
koda
parents: 8852
diff changeset
   108
        if(x86_64_build)
879270f627e0 restore the osx build disabling universal app support
koda
parents: 8852
diff changeset
   109
            add_flag_prepend(CMAKE_Pascal_FLAGS -Px86_64)
879270f627e0 restore the osx build disabling universal app support
koda
parents: 8852
diff changeset
   110
        elseif(i386_build)
879270f627e0 restore the osx build disabling universal app support
koda
parents: 8852
diff changeset
   111
            add_flag_prepend(CMAKE_Pascal_FLAGS -Pi386)
879270f627e0 restore the osx build disabling universal app support
koda
parents: 8852
diff changeset
   112
        elseif(powerpc_build)
879270f627e0 restore the osx build disabling universal app support
koda
parents: 8852
diff changeset
   113
            add_flag_prepend(CMAKE_Pascal_FLAGS -Ppowerpc)
879270f627e0 restore the osx build disabling universal app support
koda
parents: 8852
diff changeset
   114
        else()
879270f627e0 restore the osx build disabling universal app support
koda
parents: 8852
diff changeset
   115
            message(FATAL_ERROR "Unknown architecture present in CMAKE_OSX_ARCHITECTURES (${CMAKE_OSX_ARCHITECTURES})")
879270f627e0 restore the osx build disabling universal app support
koda
parents: 8852
diff changeset
   116
        endif()
879270f627e0 restore the osx build disabling universal app support
koda
parents: 8852
diff changeset
   117
        list(LENGTH CMAKE_OSX_ARCHITECTURES num_of_archs)
879270f627e0 restore the osx build disabling universal app support
koda
parents: 8852
diff changeset
   118
        if(num_of_archs GREATER 1)
9244
bb95e351270c fix a few loose ends here
koda
parents: 9236
diff changeset
   119
            message("*** Only one architecture in CMAKE_OSX_ARCHITECTURES is currently supported, picking the first one ***")
8837
b9a15738711e parsing CMAKE_OSX_ARCHITECTURES
koda
parents: 8827
diff changeset
   120
        endif()
b9a15738711e parsing CMAKE_OSX_ARCHITECTURES
koda
parents: 8827
diff changeset
   121
    elseif(CMAKE_SIZEOF_VOID_P MATCHES "8")
b9a15738711e parsing CMAKE_OSX_ARCHITECTURES
koda
parents: 8827
diff changeset
   122
        #if that variable is not set check if we are on x86_64 and if so force it, else use default
8855
879270f627e0 restore the osx build disabling universal app support
koda
parents: 8852
diff changeset
   123
        add_flag_prepend(CMAKE_Pascal_FLAGS -Px86_64)
4357
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
7708
95de696e4711 another little tweak
koda
parents: 7706
diff changeset
   126
    #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
   127
    if(NOT BUILD_ENGINE_LIBRARY)
8843
843a9a405542 gather all libs in a single list
koda
parents: 8840
diff changeset
   128
        list(APPEND HW_LINK_LIBS 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
   129
        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
   130
    endif()
8518
24d2bdc6deff fix compiling on osx when you have multiple linkers installed
koda
parents: 8379
diff changeset
   131
8863
9774ad4fe170 fpc sysroot should belong to user configuration
koda
parents: 8855
diff changeset
   132
    #when sysroot is set, make sure that fpc picks it
9774ad4fe170 fpc sysroot should belong to user configuration
koda
parents: 8855
diff changeset
   133
    if(CMAKE_OSX_SYSROOT)
9774ad4fe170 fpc sysroot should belong to user configuration
koda
parents: 8855
diff changeset
   134
        set(add_flag_append "-XD${CMAKE_OSX_SYSROOT}")
9774ad4fe170 fpc sysroot should belong to user configuration
koda
parents: 8855
diff changeset
   135
    endif(CMAKE_OSX_SYSROOT)
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   136
endif(APPLE)
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   137
8813
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   138
if(FFMPEG_FOUND)
8811
dcdfcddf37ee move avwraper compilation in its own folder
koda
parents: 8804
diff changeset
   139
    add_subdirectory(avwrapper)
8843
843a9a405542 gather all libs in a single list
koda
parents: 8840
diff changeset
   140
    list(APPEND HW_LINK_LIBS 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
   141
    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
   142
    add_flag_append(CMAKE_Pascal_FLAGS -Fl${LIBRARY_OUTPUT_PATH})
7538
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   143
endif()
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   144
8688
88a6114a318c even more wrapping with find_package_or_disable_msg
koda
parents: 8686
diff changeset
   145
find_package_or_disable_msg(PNG NOPNG "Screenshots will be saved in BMP")
88a6114a318c even more wrapping with find_package_or_disable_msg
koda
parents: 8686
diff changeset
   146
if(PNG_FOUND)
8832
4e9728dcebeb fix osx build
koda
parents: 8830
diff changeset
   147
    list(REMOVE_AT PNG_LIBRARIES 1) #removing the zlib library path
4e9728dcebeb fix osx build
koda
parents: 8830
diff changeset
   148
    get_filename_component(PNG_LIBRARY_DIR ${PNG_LIBRARIES} PATH)
9227
c02e081ba481 this should resolve a few issues on clean builds
koda
parents: 9225
diff changeset
   149
    add_flag_append(CMAKE_Pascal_FLAGS -Fl${PNG_LIBRARY_DIR})
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   150
endif()
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   151
9208
acb2492288e5 heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents: 9203
diff changeset
   152
if(LUA_FOUND AND LUA_SYSTEM)
acb2492288e5 heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents: 9203
diff changeset
   153
    get_filename_component(LUA_LIBRARY_DIR ${LUA_LIBRARY} PATH)
acb2492288e5 heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents: 9203
diff changeset
   154
    get_filename_component(LUA_LIBRARY_NAME ${LUA_LIBRARY} NAME)
acb2492288e5 heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents: 9203
diff changeset
   155
    #NAME_WE would strip the .1 (or .2) next to the ".so"
acb2492288e5 heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents: 9203
diff changeset
   156
    string(REGEX REPLACE "${CMAKE_SHARED_LIBRARY_PREFIX}(.*)${CMAKE_SHARED_LIBRARY_SUFFIX}" "\\1" LUA_LIBRARY_NAME "${LUA_LIBRARY_NAME}")
9230
035cc97de6aa oops, forgot to set the path after all
koda
parents: 9227
diff changeset
   157
    add_flag_append(CMAKE_Pascal_FLAGS "-Fl${LUA_LIBRARY_DIR} -XLAlua=${LUA_LIBRARY_NAME}")
9227
c02e081ba481 this should resolve a few issues on clean builds
koda
parents: 9225
diff changeset
   158
else()
c02e081ba481 this should resolve a few issues on clean builds
koda
parents: 9225
diff changeset
   159
    add_definitions(-dLUA_INTERNAL)
c02e081ba481 this should resolve a few issues on clean builds
koda
parents: 9225
diff changeset
   160
    list(APPEND HW_LINK_LIBS lua)
c02e081ba481 this should resolve a few issues on clean builds
koda
parents: 9225
diff changeset
   161
    add_flag_append(CMAKE_Pascal_FLAGS "-XLAlua=${lua_output_name}")
9208
acb2492288e5 heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents: 9203
diff changeset
   162
endif()
7655
b993257902d3 if this doesn't work I shall cry like a lady
sheepluva
parents: 7654
diff changeset
   163
9224
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9208 8863
diff changeset
   164
8775
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   165
if(NOT PHYSFS_FOUND)
8843
843a9a405542 gather all libs in a single list
koda
parents: 8840
diff changeset
   166
    add_definitions(-dPHYSFS_INTERNAL)
843a9a405542 gather all libs in a single list
koda
parents: 8840
diff changeset
   167
    list(APPEND HW_LINK_LIBS physfs)
8775
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   168
    #-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
   169
    #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
   170
    #(should be harmless on other platforms)
9230
035cc97de6aa oops, forgot to set the path after all
koda
parents: 9227
diff changeset
   171
    add_flag_append(CMAKE_Pascal_FLAGS "-Fl${LIBRARY_OUTPUT_PATH} -XLAphysfs=${physfs_output_name}")
7655
b993257902d3 if this doesn't work I shall cry like a lady
sheepluva
parents: 7654
diff changeset
   172
endif()
8843
843a9a405542 gather all libs in a single list
koda
parents: 8840
diff changeset
   173
list(APPEND HW_LINK_LIBS physlayer)
7655
b993257902d3 if this doesn't work I shall cry like a lady
sheepluva
parents: 7654
diff changeset
   174
9224
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9208 8863
diff changeset
   175
#Mix_Init/Mix_Quit from SDL_mixer 1.2.10
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9208 8863
diff changeset
   176
check_library_exists(${SDLMIXER_LIBRARY} Mix_Init "" HAVE_MIXINIT)
8813
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   177
if(HAVE_MIXINIT)
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   178
    add_definitions(-dSDL_MIXER_NEWER)
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   179
endif(HAVE_MIXINIT)
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   180
9224
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9208 8863
diff changeset
   181
#IMG_Init/IMG_Quit from SDL_image 1.2.8
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9208 8863
diff changeset
   182
check_library_exists(${SDLIMAGE_LIBRARY} IMG_Init "" HAVE_IMGINIT)
8813
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   183
if(HAVE_IMGINIT)
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   184
    add_definitions(-dSDL_IMAGE_NEWER)
a932b10fc1d0 move a few checks so that add_defintions doesn't interfere
koda
parents: 8811
diff changeset
   185
endif(HAVE_IMGINIT)
7655
b993257902d3 if this doesn't work I shall cry like a lady
sheepluva
parents: 7654
diff changeset
   186
9224
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9208 8863
diff changeset
   187
#needs to be last
8775
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
   188
add_definitions(-dDEBUGFILE)
9203
bcc25cb9b122 and now also avwrapper can be shared/static, add visibility to its exported functions, drop (needed only when static)
koda
parents: 9151
diff changeset
   189
8823
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   190
#SOURCE AND PROGRAMS SECTION
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   191
if(BUILD_ENGINE_LIBRARY)
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   192
    message(${WARNING} "Engine will be built as library (experimental)")
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   193
    if(APPLE AND current_macosx_version VERSION_GREATER "10.5")
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   194
        # due to compiler/linker issues on Max OS X 10.6 -k-no_order_inits is needed to avoid linking fail
8840
e1be48f36b82 remove old code
koda
parents: 8837
diff changeset
   195
        add_flag_prepend(CMAKE_Pascal_FLAGS "-k-no_order_inits")
8823
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   196
    endif()
7954
a5f0a6d46c52 advice from hasufell
koda
parents: 7942
diff changeset
   197
8823
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   198
    #workaround for missing <TARGET> support during object generation
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   199
    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
   200
    set(destination_dir ${target_library_install_dir})
8827
koda
parents: 8825
diff changeset
   201
    add_flag_prepend(CMAKE_Pascal_FLAGS "-o${LIBRARY_OUTPUT_PATH}/${engine_output_name}")
8823
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   202
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   203
    add_definitions(-dHWLIBRARY)
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   204
    add_library(hwengine SHARED ${engine_sources} hwLibrary.pas)
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   205
else()
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   206
    # no need to change name here because target has same name
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   207
    set(engine_output_name "hwengine${CMAKE_EXECUTABLE_SUFFIX}")
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   208
    set(destination_dir ${target_binary_install_dir})
65b430b6cd68 add support for creating shared pascal libraries
koda
parents: 8821
diff changeset
   209
    add_executable(hwengine ${engine_sources})
7538
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   210
endif()
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   211
8855
879270f627e0 restore the osx build disabling universal app support
koda
parents: 8852
diff changeset
   212
#even though not actually used, this will trigger relink if any lib changes
8843
843a9a405542 gather all libs in a single list
koda
parents: 8840
diff changeset
   213
target_link_libraries(hwengine ${HW_LINK_LIBS})
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   214
8316
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8314
diff changeset
   215
install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}" DESTINATION ${destination_dir})