hedgewars/CMakeLists.txt
author nemo
Thu, 18 Oct 2012 14:04:24 -0400
changeset 7767 d1ea9b3f543e
parent 7730 2013733f9ca9
child 7812 00696c1450da
permissions -rw-r--r--
damn nots
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)
7528
f8cf277dca36 FindFFMPEG.cmake (used only for frontend for now).
Stepan777 <stepik-777@mail.ru>
parents: 7373
diff changeset
     6
find_package(FFMPEG)
2401
2a694ea2a437 fixes & co.
koda
parents: 2326
diff changeset
     7
5019
e38d1720a0ff allows for building hedgewars with SDL-1.3
koda
parents: 4930
diff changeset
     8
include(${CMAKE_MODULE_PATH}/FindSDL_Extras.cmake)
2672
0f1403bf267a check for sdl_image and sdl_mixer versions
koda
parents: 2671
diff changeset
     9
5019
e38d1720a0ff allows for building hedgewars with SDL-1.3
koda
parents: 4930
diff changeset
    10
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
    11
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3680
diff changeset
    12
#SOURCE AND PROGRAMS SECTION
2326
0ddf641fddee rename dpr -> pas, restores ammos on two columns, minor fixes to openalbridge
koda
parents: 2251
diff changeset
    13
set(hwengine_project ${hedgewars_SOURCE_DIR}/hedgewars/hwengine.pas)
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
    14
set(engine_output_name "hwengine")
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    15
2786
85f6425a4d74 Engine:
smxx
parents: 2673
diff changeset
    16
set(engine_sources
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    17
    ${hwengine_project}
7730
2013733f9ca9 A bit more on the knife. Also add missing files to CMakeLists
nemo
parents: 7718
diff changeset
    18
    LuaPas.pas
2013733f9ca9 A bit more on the knife. Also add missing files to CMakeLists
nemo
parents: 7718
diff changeset
    19
    PNGh.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    20
    SDLh.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    21
    uAI.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    22
    uAIActions.pas
7730
2013733f9ca9 A bit more on the knife. Also add missing files to CMakeLists
nemo
parents: 7718
diff changeset
    23
    uAILandMarks.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    24
    uAIAmmoTests.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    25
    uAIMisc.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    26
    uAmmos.pas
4393
883b979697e4 uCaptions
unc0rr
parents: 4386
diff changeset
    27
    uCaptions.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    28
    uChat.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    29
    uCollisions.pas
4373
fe0e3903bb9e Introduce uCommands.pas
unC0Rr
parents: 4357
diff changeset
    30
    uCommands.pas
4413
46caab3a8f84 uCommandHandlers
unc0rr
parents: 4403
diff changeset
    31
    uCommandHandlers.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    32
    uConsole.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    33
    uConsts.pas
7730
2013733f9ca9 A bit more on the knife. Also add missing files to CMakeLists
nemo
parents: 7718
diff changeset
    34
    uCursor.pas
4403
unc0rr
parents: 4393
diff changeset
    35
    uDebug.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    36
    uFloat.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    37
    uGame.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    38
    uGears.pas
7370
d50b874e7ee8 Introduce uGearsHandlers.pas, for now only part of cake handlers is moved there
unc0rr
parents: 7233
diff changeset
    39
    uGearsHandlers.pas
7592
cf67e58313ea Move rope code to separate unit
unc0rr
parents: 7370
diff changeset
    40
    uGearsHandlersRope.pas
7730
2013733f9ca9 A bit more on the knife. Also add missing files to CMakeLists
nemo
parents: 7718
diff changeset
    41
    uGearsHedgehog.pas
2013733f9ca9 A bit more on the knife. Also add missing files to CMakeLists
nemo
parents: 7718
diff changeset
    42
    uGearsList.pas
4386
855049a88c59 Forgot this
unc0rr
parents: 4380
diff changeset
    43
    uGearsRender.pas
7592
cf67e58313ea Move rope code to separate unit
unc0rr
parents: 7370
diff changeset
    44
    uGearsUtils.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    45
    uIO.pas
6954
a61458a81480 changed uKeys to uInputHandler to better reflect its function
Xeli
parents: 6920
diff changeset
    46
    uInputHandler.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    47
    uLand.pas
6491
736479f3d348 Some cleanup here and there
unc0rr
parents: 6224
diff changeset
    48
    uLandGenMaze.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    49
    uLandGraphics.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    50
    uLandObjects.pas
6491
736479f3d348 Some cleanup here and there
unc0rr
parents: 6224
diff changeset
    51
    uLandOutline.pas
4457
ffb766e85150 - Change painted map file format
unc0rr
parents: 4415
diff changeset
    52
    uLandPainted.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    53
    uLandTemplates.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    54
    uLandTexture.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    55
    uLocale.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    56
    uMisc.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    57
    uMobile.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    58
    uRandom.pas
4378
91655618a510 Introduce uRender
unC0Rr
parents: 4375
diff changeset
    59
    uRender.pas
4380
b78638b36b89 Introduce uRenderUtils
unC0Rr
parents: 4378
diff changeset
    60
    uRenderUtils.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    61
    uScript.pas
4415
941251bad467 SinTable.inc -> uSinTable.pas
unc0rr
parents: 4413
diff changeset
    62
    uSinTable.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    63
    uSound.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    64
    uStats.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    65
    uStore.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    66
    uTeams.pas
4375
ae5507ddb989 Introduce uTextures
unC0Rr
parents: 4374
diff changeset
    67
    uTextures.pas
7730
2013733f9ca9 A bit more on the knife. Also add missing files to CMakeLists
nemo
parents: 7718
diff changeset
    68
    uTouch.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    69
    uTypes.pas
4374
bcefeeabaa33 Move some stuff from uMisc to uUtils
unC0Rr
parents: 4373
diff changeset
    70
    uUtils.pas
5179
8d64dcb566ea Fix "Mixing signed expressions and longwords gives a 64bit result" warnings
unc0rr
parents: 5169
diff changeset
    71
    uVariables.pas
7180
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 7114
diff changeset
    72
    uVideoRec.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    73
    uVisualGears.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    74
    uWorld.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    75
    GSHandlers.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    76
    VGSHandlers.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    77
    ArgParsers.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    78
    options.inc
4378
91655618a510 Introduce uRender
unC0Rr
parents: 4375
diff changeset
    79
    adler32.pas
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    80
    ${CMAKE_CURRENT_BINARY_DIR}/config.inc
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    81
    )
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    82
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
    83
if(BUILD_ENGINE_LIBRARY)
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
    84
    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
    85
    set(hwengine_project ${hedgewars_SOURCE_DIR}/hedgewars/hwLibrary.pas)
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
    86
    set(pascal_flags "-dHWLIBRARY" ${pascal_flags})
4928
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
    87
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
    88
    # 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
    89
    if(CMAKE_SIZEOF_VOID_P MATCHES "8")
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
    90
        set(pascal_flags "-Cg" ${pascal_flags})
4928
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
    91
    endif(CMAKE_SIZEOF_VOID_P MATCHES "8")
6ebbca960503 fix engine library compilation on linux/amd64
sheepluva
parents: 4457
diff changeset
    92
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
    93
    # due to compiler/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
    94
    if(APPLE AND current_macosx_version GREATER "10.5")
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
    95
        set(pascal_flags "-k-no_order_inits" ${pascal_flags})
5188
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5179
diff changeset
    96
    endif()
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
    97
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
    98
    if (APPLE)
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
    99
        set(engine_output_name "hwengine.dylib")
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   100
    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
   101
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
   102
7029
efbe6400fc24 add support for FPC and FPFLAGS cmake arguments (helps crosscompiling)
koda
parents: 6992
diff changeset
   103
IF(FPC)
efbe6400fc24 add support for FPC and FPFLAGS cmake arguments (helps crosscompiling)
koda
parents: 6992
diff changeset
   104
    set(fpc_executable ${FPC})
efbe6400fc24 add support for FPC and FPFLAGS cmake arguments (helps crosscompiling)
koda
parents: 6992
diff changeset
   105
ELSE()
efbe6400fc24 add support for FPC and FPFLAGS cmake arguments (helps crosscompiling)
koda
parents: 6992
diff changeset
   106
    find_program(fpc_executable fpc)
efbe6400fc24 add support for FPC and FPFLAGS cmake arguments (helps crosscompiling)
koda
parents: 6992
diff changeset
   107
ENDIF()
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   108
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   109
if(fpc_executable)
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   110
    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
   111
endif(fpc_executable)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   112
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   113
set(noexecstack_flags "-k-z" "-knoexecstack")
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
   114
file(WRITE ${EXECUTABLE_OUTPUT_PATH}/checkstack.pas "begin end.")
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
   115
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
   116
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
   117
    ARGS ${noexecstack_flags} checkstack.pas
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   118
    OUTPUT_VARIABLE noout
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   119
    RETURN_VALUE testnoexecstack
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   120
    )
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
   121
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   122
if(${testnoexecstack})
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   123
    set (noexecstack_flags "")
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   124
endif(${testnoexecstack})
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
   125
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   126
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   127
if(APPLE)
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   128
    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
   129
    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
   130
    string(REGEX MATCH "[xX]86_64+" x86_64_build "${CMAKE_OSX_ARCHITECTURES}")
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   131
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   132
    if(powerpc_build)
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   133
        set(powerpc_build "powerpc")
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   134
    endif()
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   135
7708
95de696e4711 another little tweak
koda
parents: 7706
diff changeset
   136
    #on OSX we need to provide the SDL_main() function when building as executable
7109
af3a43a46f21 there a libSDLMain.a in the bundled SDL framework
koda
parents: 7031
diff changeset
   137
    if(NOT BUILD_ENGINE_LIBRARY)
7708
95de696e4711 another little tweak
koda
parents: 7706
diff changeset
   138
        #let's look for the installed sdlmain file; if it is not found, let's build our own
7109
af3a43a46f21 there a libSDLMain.a in the bundled SDL framework
koda
parents: 7031
diff changeset
   139
        find_package(SDL REQUIRED)
af3a43a46f21 there a libSDLMain.a in the bundled SDL framework
koda
parents: 7031
diff changeset
   140
        #remove the ";-framework Cocoa" from the SDL_LIBRARY variable
af3a43a46f21 there a libSDLMain.a in the bundled SDL framework
koda
parents: 7031
diff changeset
   141
        string(REGEX REPLACE "(.*);-.*" "\\1" sdl_dir "${SDL_LIBRARY}")
af3a43a46f21 there a libSDLMain.a in the bundled SDL framework
koda
parents: 7031
diff changeset
   142
        #find libsdmain.a
af3a43a46f21 there a libSDLMain.a in the bundled SDL framework
koda
parents: 7031
diff changeset
   143
        find_file(SDLMAIN_LIB libSDLMain.a PATHS ${sdl_dir}/Resources/)
2669
4eec706e86b0 introduction of IMG_Init
koda
parents: 2666
diff changeset
   144
7109
af3a43a46f21 there a libSDLMain.a in the bundled SDL framework
koda
parents: 7031
diff changeset
   145
        if(SDLMAIN_LIB MATCHES "SDLMAIN_LIB-NOTFOUND")
af3a43a46f21 there a libSDLMain.a in the bundled SDL framework
koda
parents: 7031
diff changeset
   146
            include_directories(${SDL_INCLUDE_DIR})
af3a43a46f21 there a libSDLMain.a in the bundled SDL framework
koda
parents: 7031
diff changeset
   147
            add_library (SDLmain STATIC SDLMain.m)
af3a43a46f21 there a libSDLMain.a in the bundled SDL framework
koda
parents: 7031
diff changeset
   148
            #add a dependency to the hwengine target
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   149
            set(engine_sources ${engine_sources} SDLmain)
7708
95de696e4711 another little tweak
koda
parents: 7706
diff changeset
   150
            set(SDLMAIN_LIB "${LIBRARY_OUTPUT_PATH}/libSDLmain.a")
7109
af3a43a46f21 there a libSDLMain.a in the bundled SDL framework
koda
parents: 7031
diff changeset
   151
        endif()
2669
4eec706e86b0 introduction of IMG_Init
koda
parents: 2666
diff changeset
   152
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   153
        set(pascal_flags "-k${SDLMAIN_LIB}" ${pascal_flags})
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   154
    endif()
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   155
endif(APPLE)
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   156
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   157
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   158
#PASCAL DETECTION SECTION
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   159
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" fpc_version "${fpc_output}")
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   160
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   161
if(fpc_version)
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   162
    string(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" fpc_vers_major "${fpc_version}")
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   163
    string(REGEX REPLACE "[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" fpc_vers_minor "${fpc_version}")
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   164
    string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" fpc_vers_patch "${fpc_version}")
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   165
    message(STATUS "Freepascal version installed: ${fpc_vers_major}.${fpc_vers_minor}")
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   166
    math(EXPR fpc_version "${fpc_vers_major}*10000 + ${fpc_vers_minor}*100 + ${fpc_vers_patch}")
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   167
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   168
    if(fpc_version LESS "020200")
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   169
        message(FATAL_ERROR "Minimum required version of FreePascal is 2.2.0")
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   170
    elseif(APPLE AND (fpc_version LESS "020600"))
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   171
        message(FATAL_ERROR "Minimum required version of FreePascal is 2.6.0 on Mac OS X")
7109
af3a43a46f21 there a libSDLMain.a in the bundled SDL framework
koda
parents: 7031
diff changeset
   172
    endif()
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   173
else()
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   174
    message(FATAL_ERROR "No FreePascal compiler found!")
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   175
endif()
2809
b8956af350c1 mac build supports lua
koda
parents: 2804
diff changeset
   176
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   177
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   178
#DEPENDECIES AND EXECUTABLES SECTION
7114
e0110a1229b7 add NOPNG to cmake to explicitly disable PNG dependency
koda
parents: 7112
diff changeset
   179
if(NOT NOPNG)
e0110a1229b7 add NOPNG to cmake to explicitly disable PNG dependency
koda
parents: 7112
diff changeset
   180
    find_package(PNG)
e0110a1229b7 add NOPNG to cmake to explicitly disable PNG dependency
koda
parents: 7112
diff changeset
   181
    if(${PNG_FOUND})
7718
97ba379164ec use cmake OPTION for arguments and further cleanup on CMakeFiles
koda
parents: 7708
diff changeset
   182
        message(STATUS "Found libpng: ${PNG_LIBRARY}")
7114
e0110a1229b7 add NOPNG to cmake to explicitly disable PNG dependency
koda
parents: 7112
diff changeset
   183
        set(pascal_flags "-dPNG_SCREENSHOTS" ${pascal_flags})
7223
b554726ff468 uniform NOPNG and NOSERVER cmake symbols
koda
parents: 7114
diff changeset
   184
        if(APPLE)  # need to explictly link with the static lib -- maybe windows too?
7114
e0110a1229b7 add NOPNG to cmake to explicitly disable PNG dependency
koda
parents: 7112
diff changeset
   185
            string(REGEX REPLACE "(.*)libpng.*" "\\1" PNG_LIBDIR "${PNG_LIBRARY}")
e0110a1229b7 add NOPNG to cmake to explicitly disable PNG dependency
koda
parents: 7112
diff changeset
   186
            set(pascal_flags "-k${PNG_LIBDIR}/libpng.a" ${pascal_flags})
e0110a1229b7 add NOPNG to cmake to explicitly disable PNG dependency
koda
parents: 7112
diff changeset
   187
        endif()
e0110a1229b7 add NOPNG to cmake to explicitly disable PNG dependency
koda
parents: 7112
diff changeset
   188
    else()
7718
97ba379164ec use cmake OPTION for arguments and further cleanup on CMakeFiles
koda
parents: 7708
diff changeset
   189
        message(STATUS "Screenshots will be in BMP format because libpng was not found")
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   190
    endif()
7223
b554726ff468 uniform NOPNG and NOSERVER cmake symbols
koda
parents: 7114
diff changeset
   191
else()
7718
97ba379164ec use cmake OPTION for arguments and further cleanup on CMakeFiles
koda
parents: 7708
diff changeset
   192
    message(STATUS "Screenshots will be in BMP format per user request")
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   193
endif()
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   194
7655
b993257902d3 if this doesn't work I shall cry like a lady
sheepluva
parents: 7654
diff changeset
   195
b993257902d3 if this doesn't work I shall cry like a lady
sheepluva
parents: 7654
diff changeset
   196
7706
19ade14ecc29 forgot a few checks from rev f40c65ae3eab
koda
parents: 7694
diff changeset
   197
#this command is a workaround to some inlining issues present in older FreePascal versions and fixed in 2.6
19ade14ecc29 forgot a few checks from rev f40c65ae3eab
koda
parents: 7694
diff changeset
   198
if(fpc_version LESS "020600")
7655
b993257902d3 if this doesn't work I shall cry like a lady
sheepluva
parents: 7654
diff changeset
   199
    add_custom_target(ENGINECLEAN COMMAND ${CMAKE_BUILD_TOOL} "clean" "${PROJECT_BINARY_DIR}" "${hedgewars_SOURCE_DIR}/hedgewars")
b993257902d3 if this doesn't work I shall cry like a lady
sheepluva
parents: 7654
diff changeset
   200
endif()
b993257902d3 if this doesn't work I shall cry like a lady
sheepluva
parents: 7654
diff changeset
   201
b993257902d3 if this doesn't work I shall cry like a lady
sheepluva
parents: 7654
diff changeset
   202
7718
97ba379164ec use cmake OPTION for arguments and further cleanup on CMakeFiles
koda
parents: 7708
diff changeset
   203
if(NOT NOVIDEOREC)
7538
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   204
    if(${FFMPEG_FOUND})
7718
97ba379164ec use cmake OPTION for arguments and further cleanup on CMakeFiles
koda
parents: 7708
diff changeset
   205
        message(STATUS "Found FFMPEG: ${FFMPEG_LIBRARIES}")
7538
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   206
        include_directories(${FFMPEG_INCLUDE_DIR})
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   207
        set(pascal_flags "-dUSE_VIDEO_RECORDING" ${pascal_flags})
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   208
        IF (WIN32)
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   209
            # there are some problems with linking our avwrapper as static lib, so link it as shared
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   210
            add_library(avwrapper SHARED avwrapper.c)
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   211
            target_link_libraries(avwrapper ${FFMPEG_LIBRARIES})
7622
172fb1c7615b Fix library installation in win32
unc0rr
parents: 7618
diff changeset
   212
            install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}avwrapper${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION ${target_dir})
7538
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   213
        ELSE()
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   214
            add_library(avwrapper STATIC avwrapper.c)
7618
4d3a32d91028 fix build for me
sheepluva
parents: 7615
diff changeset
   215
            set(pascal_flags "-k${FFMPEG_LIBAVCODEC}" "-k${FFMPEG_LIBAVFORMAT}" "-k${FFMPEG_LIBAVUTIL}" ${pascal_flags})
7540
cc6c656f70b5 cmake scripts
Stepan777 <stepik-777@mail.ru>
parents: 7538
diff changeset
   216
         #   set(pascal_flags "-k${LIBRARY_OUTPUT_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}avwrapper${CMAKE_STATIC_LIBRARY_SUFFIX}" ${pascal_flags})
7538
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   217
        ENDIF()
7706
19ade14ecc29 forgot a few checks from rev f40c65ae3eab
koda
parents: 7694
diff changeset
   218
        if(fpc_version LESS "020600")
7655
b993257902d3 if this doesn't work I shall cry like a lady
sheepluva
parents: 7654
diff changeset
   219
            add_dependencies(avwrapper ENGINECLEAN)
b993257902d3 if this doesn't work I shall cry like a lady
sheepluva
parents: 7654
diff changeset
   220
        endif()
7540
cc6c656f70b5 cmake scripts
Stepan777 <stepik-777@mail.ru>
parents: 7538
diff changeset
   221
    else()
7718
97ba379164ec use cmake OPTION for arguments and further cleanup on CMakeFiles
koda
parents: 7708
diff changeset
   222
        message(STATUS "Could NOT find FFMPEG, video recording will be disabled")
7538
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   223
    endif()
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   224
else()
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   225
    message(STATUS "Video recording disabled by user")
2d6e69b392cb better cmake script
Stepan777 <stepik-777@mail.ru>
parents: 7534
diff changeset
   226
endif()
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   227
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   228
set(fpc_flags ${noexecstack_flags} ${pascal_flags} ${hwengine_project})
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   229
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   230
IF(NOT APPLE)
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   231
    #here is the command for standard executables or for shared library
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   232
    add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}${CMAKE_EXECUTABLE_SUFFIX}"
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   233
        COMMAND "${fpc_executable}"
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   234
        ARGS ${fpc_flags}
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   235
        MAIN_DEPENDENCY ${hwengine_project}
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   236
        DEPENDS ${engine_sources}
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   237
        )
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   238
ELSE()
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   239
    #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
   240
    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
   241
        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
   242
        add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch}"
7112
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   243
            COMMAND "${fpc_executable}"
38c5d56c4d6e rename a few internal cmake variables (for consistency and readability)
koda
parents: 7109
diff changeset
   244
            ARGS ${fpc_flags} -ohwengine.${build_arch} -P${build_arch}
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   245
            MAIN_DEPENDENCY ${hwengine_project}
7109
af3a43a46f21 there a libSDLMain.a in the bundled SDL framework
koda
parents: 7031
diff changeset
   246
            DEPENDS ${engine_sources}
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   247
            )
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   248
        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
   249
    endforeach()
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   250
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   251
    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
   252
        COMMAND "lipo"
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   253
        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
   254
        DEPENDS ${lipo_args_list}
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 4158
diff changeset
   255
        )
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   256
ENDIF()
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   257
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
   258
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   259
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
   260
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   261
#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
   262
if(NOT LUA_FOUND)
7031
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   263
    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
   264
endif()
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7029
diff changeset
   265
7706
19ade14ecc29 forgot a few checks from rev f40c65ae3eab
koda
parents: 7694
diff changeset
   266
#this command is a workaround to some inlining issues present in older FreePascal versions and fixed in 2.6
7694
f40c65ae3eab issue ENGINECLEAN only when fpc < 2.6
koda
parents: 7655
diff changeset
   267
if(fpc_version LESS "020600")
7654
e07580669a3e I assumed NO_VIDEOREC would be set if ${FFMPEG_FOUND} was false. doesn't seem to be the case.
sheepluva
parents: 7653
diff changeset
   268
    if(NO_VIDEOREC OR NOT ${FFMPEG_FOUND})
7653
6dda2562f692 engineclean returns
sheepluva
parents: 7622
diff changeset
   269
        add_dependencies(${engine_output_name} ENGINECLEAN)
6dda2562f692 engineclean returns
sheepluva
parents: 7622
diff changeset
   270
    endif()
6dda2562f692 engineclean returns
sheepluva
parents: 7622
diff changeset
   271
endif()
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   272
4930
5d59bb58c365 fix issue 185 :|
koda
parents: 4928
diff changeset
   273
install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_dir})