CMakeLists.txt
author Wuzzy <Wuzzy2@mail.ru>
Mon, 16 Sep 2019 17:33:49 +0200
changeset 15410 8504fee3b601
parent 15314 fe705efbfc52
child 15445 88770c206c31
permissions -rw-r--r--
Racer: Fix weird water splashes after waypoint placement Does not affect official racer, as only waypoint placement is touched. The reason was that the air attack gear sometimes was not deleted fast enough so it might occassionally drop some air bombs (these are deleted now). Also, the airplane position was set to water level, which caused another water splash.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
     1
project(hedgewars)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
     2
11851
5edd66c2d422 Drop xfire module
koda
parents: 11791
diff changeset
     3
5407
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
     4
#initialise cmake environment
9198
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9192
diff changeset
     5
cmake_minimum_required(VERSION 2.6.4)
9165
7b0d5388abc4 stack-protector flag needs to be passed to the linker as well
koda
parents: 9152
diff changeset
     6
foreach(hwpolicy CMP0003 CMP0012 CMP0017 CMP0018)
8146
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
     7
    if(POLICY ${hwpolicy})
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
     8
        cmake_policy(SET ${hwpolicy} NEW)
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
     9
    endif()
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
    10
endforeach()
8611
90f445317e8a support WARNING message status on cmake 2.6 (bug 524)
koda
parents: 8597
diff changeset
    11
12887
62f7d28e93e3 Set cmake RPATH policy to OLD
koda
parents: 12834
diff changeset
    12
foreach(hwpolicy CMP0026 CMP0068)
11354
78156dc2cab3 cmake: Set OLD for policy 26
Vittorio Giovara <vittorio.giovara@gmail.com>
parents: 11285
diff changeset
    13
    if(POLICY ${hwpolicy})
78156dc2cab3 cmake: Set OLD for policy 26
Vittorio Giovara <vittorio.giovara@gmail.com>
parents: 11285
diff changeset
    14
        cmake_policy(SET ${hwpolicy} OLD)
78156dc2cab3 cmake: Set OLD for policy 26
Vittorio Giovara <vittorio.giovara@gmail.com>
parents: 11285
diff changeset
    15
    endif()
78156dc2cab3 cmake: Set OLD for policy 26
Vittorio Giovara <vittorio.giovara@gmail.com>
parents: 11285
diff changeset
    16
endforeach()
78156dc2cab3 cmake: Set OLD for policy 26
Vittorio Giovara <vittorio.giovara@gmail.com>
parents: 11285
diff changeset
    17
8674
fff355ba2902 our cmake modules have become good enough, prefer them over system ones
koda
parents: 8673
diff changeset
    18
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules")
8775
3cad01db0bae apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents: 8770
diff changeset
    19
include(${CMAKE_MODULE_PATH}/utils.cmake)
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: 8089
diff changeset
    20
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    21
#possible cmake configuration
10523
00ac079fa51f fix some nasty rendering issues reported by Nexia - thanks a lot!
sheepluva
parents: 10437
diff changeset
    22
option(NOSERVER "Disable gameServer build (off)" OFF)
15314
fe705efbfc52 remove direct libpng dependency on windows
alfadur
parents: 15294
diff changeset
    23
if(NOT WIN32)
fe705efbfc52 remove direct libpng dependency on windows
alfadur
parents: 15294
diff changeset
    24
    option(NOPNG "Disable screenshoot compression (off)" OFF)
fe705efbfc52 remove direct libpng dependency on windows
alfadur
parents: 15294
diff changeset
    25
endif()
8687
5b6ad1bd6ace update option list
koda
parents: 8686
diff changeset
    26
option(NOVIDEOREC "Disable video recording (off)" OFF)
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: 8089
diff changeset
    27
9192
a8a717cf4a66 use BUILD_SHARED_LIBS to control whether a library is shared or static, make our bundled physfs library check for this configuration
koda
parents: 9190
diff changeset
    28
#libraries are built shared unless explicitly added as a static
a8a717cf4a66 use BUILD_SHARED_LIBS to control whether a library is shared or static, make our bundled physfs library check for this configuration
koda
parents: 9190
diff changeset
    29
option(BUILD_SHARED_LIBS "Build libraries as shared modules (on)" ON)
9994
8455993a7a1b * allow telling cmake where to find required fonts in system when user supplies the paths, as suggested by unC0Rr, e.g. -DFONTS_DIRS='/usr/share/fonts/truetype/wqy;/usr/share/fonts/truetype/dejavu'
sheepluva
parents: 9991
diff changeset
    30
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: 9205
diff changeset
    31
if(WIN32 OR APPLE)
15294
95281174e297 Rewrite a few CMake flag descriptions
Wuzzy <Wuzzy2@mail.ru>
parents: 14992
diff changeset
    32
    option(LUA_SYSTEM "Use system Lua (off)" OFF)
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: 9205
diff changeset
    33
else()
15294
95281174e297 Rewrite a few CMake flag descriptions
Wuzzy <Wuzzy2@mail.ru>
parents: 14992
diff changeset
    34
    option(LUA_SYSTEM "Use system Lua (on)" ON)
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: 9205
diff changeset
    35
endif()
acb2492288e5 heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents: 9205
diff changeset
    36
8687
5b6ad1bd6ace update option list
koda
parents: 8686
diff changeset
    37
option(BUILD_ENGINE_LIBRARY "Enable hwengine library (off)" OFF)
5b6ad1bd6ace update option list
koda
parents: 8686
diff changeset
    38
option(ANDROID "Enable Android build (off)" OFF)
5b6ad1bd6ace update option list
koda
parents: 8686
diff changeset
    39
9262
b5a36423bd7e this hid CFLAGS
koda
parents: 9233
diff changeset
    40
option(MINIMAL_FLAGS "Respect system flags as much as possible (off)" OFF)
b5a36423bd7e this hid CFLAGS
koda
parents: 9233
diff changeset
    41
option(NOAUTOUPDATE "Disable OS X Sparkle update checking (off)" OFF)
10976
56f07b52213a Allow skipping the bundle step after install on OSX
koda
parents: 10803
diff changeset
    42
option(SKIPBUNDLE "Do not create relocate bundle (off)" OFF)
8549
af104e59ea8e due to popular demand, add a compile time switch to manually select whether to build the internal physfs (default) or not
koda
parents: 8544
diff changeset
    43
10523
00ac079fa51f fix some nasty rendering issues reported by Nexia - thanks a lot!
sheepluva
parents: 10437
diff changeset
    44
option(BUILD_ENGINE_C "Compile hwengine as native C (off)" OFF)
15294
95281174e297 Rewrite a few CMake flag descriptions
Wuzzy <Wuzzy2@mail.ru>
parents: 14992
diff changeset
    45
option(BUILD_ENGINE_JS "Compile hwengine as JavaScript (off)" OFF)
95281174e297 Rewrite a few CMake flag descriptions
Wuzzy <Wuzzy2@mail.ru>
parents: 14992
diff changeset
    46
option(GL2 "Enable OpenGL 2 rendering, only use if you know what you're doing (off)" OFF)
8096
453917e94e55 updated branch
koda
parents: 8044 8093
diff changeset
    47
8333
416cb5e5a405 move DATA_INSTALL_DIR to the configurable options section
koda
parents: 8331
diff changeset
    48
set(GHFLAGS "" CACHE STRING "Additional Haskell flags")
416cb5e5a405 move DATA_INSTALL_DIR to the configurable options section
koda
parents: 8331
diff changeset
    49
if(UNIX AND NOT APPLE)
416cb5e5a405 move DATA_INSTALL_DIR to the configurable options section
koda
parents: 8331
diff changeset
    50
    set(DATA_INSTALL_DIR "share/hedgewars" CACHE STRING "Resource folder path")
416cb5e5a405 move DATA_INSTALL_DIR to the configurable options section
koda
parents: 8331
diff changeset
    51
endif()
8104
09c38cdf380d show console on win when debugging to see frontend messages
koda
parents: 8093
diff changeset
    52
10025
ec966363adbe new cmake option NOVERSIONINFOUPDATE -- to be used if source is in a git/repo that is NOT the hedgewars repo
sheepluva
parents: 10024
diff changeset
    53
option(NOVERSIONINFOUPDATE "Disable update of version_info.txt. To be used if source is in a git/repo that is NOT the hedgewars repo" OFF)
ec966363adbe new cmake option NOVERSIONINFOUPDATE -- to be used if source is in a git/repo that is NOT the hedgewars repo
sheepluva
parents: 10024
diff changeset
    54
11659
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
    55
14992
b35a036d6b97 Disable VIDEOREC if trying to build it with BUILD_ENGINE_C in release builds
Wuzzy <Wuzzy2@mail.ru>
parents: 14859
diff changeset
    56
if(BUILD_ENGINE_C AND NOT NOVIDEOREC)
b35a036d6b97 Disable VIDEOREC if trying to build it with BUILD_ENGINE_C in release builds
Wuzzy <Wuzzy2@mail.ru>
parents: 14859
diff changeset
    57
    if((CMAKE_BUILD_TYPE MATCHES "RELEASE") OR (CMAKE_BUILD_TYPE MATCHES "RELWITHDEBUGINFO"))
b35a036d6b97 Disable VIDEOREC if trying to build it with BUILD_ENGINE_C in release builds
Wuzzy <Wuzzy2@mail.ru>
parents: 14859
diff changeset
    58
        message("NOTE: Video recorder support disabled. It's incompatible with BUILD_ENGINE_C")
b35a036d6b97 Disable VIDEOREC if trying to build it with BUILD_ENGINE_C in release builds
Wuzzy <Wuzzy2@mail.ru>
parents: 14859
diff changeset
    59
        set(BUILD_ENGINE_C ON CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
b35a036d6b97 Disable VIDEOREC if trying to build it with BUILD_ENGINE_C in release builds
Wuzzy <Wuzzy2@mail.ru>
parents: 14859
diff changeset
    60
    else()
b35a036d6b97 Disable VIDEOREC if trying to build it with BUILD_ENGINE_C in release builds
Wuzzy <Wuzzy2@mail.ru>
parents: 14859
diff changeset
    61
        message("WARNING: Video recorder support is currently incompatible with BUILD_ENGINE_C, the video recorder won't work (but demos are fine)! See <https://issues.hedgewars.org/show_bug.cgi?id=722>.")
b35a036d6b97 Disable VIDEOREC if trying to build it with BUILD_ENGINE_C in release builds
Wuzzy <Wuzzy2@mail.ru>
parents: 14859
diff changeset
    62
    endif()
b35a036d6b97 Disable VIDEOREC if trying to build it with BUILD_ENGINE_C in release builds
Wuzzy <Wuzzy2@mail.ru>
parents: 14859
diff changeset
    63
endif()
11659
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
    64
if(BUILD_ENGINE_JS)
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
    65
    if(NOT CMAKE_TOOLCHAIN_FILE)
11701
e71435e046a1 Reword emscripten-related error messages
koda
parents: 11659
diff changeset
    66
        message(FATAL_ERROR "Missing emscripten toolchain file\nClean your cache and rerun cmake with -DCMAKE_TOOLCHAIN_FILE=${CMAKE_SOURCE_DIR}/cmake_modules/Platform/Emscripten.cmake")
11659
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
    67
    endif()
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
    68
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
    69
    set(BUILD_ENGINE_C ON CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
11791
3127b0fece81 Set pas2c switches more cleanly
koda
parents: 11741
diff changeset
    70
    set(BUILD_ENGINE_LIBRARY ON CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
11659
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
    71
    set(NOAUTOUPDATE ON CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
    72
    set(LUA_SYSTEM OFF CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
    73
    set(NOVIDEOREC ON CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
    74
    set(NOSERVER ON CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
    75
    set(GL2 ON CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
    76
    set(BUILD_SHARED_LIBS OFF CACHE STRING "Required for BUILD_ENGINE_JS" FORCE)
11741
72f0c8a73080 Set install dir for emscripten
koda
parents: 11740
diff changeset
    77
72f0c8a73080 Set install dir for emscripten
koda
parents: 11740
diff changeset
    78
    set(target_binary_install_dir "bin" CACHE PATH "install dest for binaries")
72f0c8a73080 Set install dir for emscripten
koda
parents: 11740
diff changeset
    79
    set(target_library_install_dir "lib" CACHE PATH "install dest for libs")
11659
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
    80
endif()
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
    81
14147
89acfded7722 workaround for the freepascal bug courtesy of koda
nemo
parents: 13909
diff changeset
    82
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "4" AND UNIX AND NOT APPLE)
89acfded7722 workaround for the freepascal bug courtesy of koda
nemo
parents: 13909
diff changeset
    83
    set(BUILD_ENGINE_C ON CACHE STRING "PAS2C force-enabled due to a freepascal 32 bit alignment bug" FORCE)
89acfded7722 workaround for the freepascal bug courtesy of koda
nemo
parents: 13909
diff changeset
    84
endif()
89acfded7722 workaround for the freepascal bug courtesy of koda
nemo
parents: 13909
diff changeset
    85
10004
eb0b520564bb use bundled physfs on win and osx
koda
parents: 9994
diff changeset
    86
#system paths for finding required fonts (see share/hedgewars/Data/fonts)
eb0b520564bb use bundled physfs on win and osx
koda
parents: 9994
diff changeset
    87
#subdirectories will NOT be searched.
eb0b520564bb use bundled physfs on win and osx
koda
parents: 9994
diff changeset
    88
#all fonts that can't be found will be bundled with hedgewars
9994
8455993a7a1b * allow telling cmake where to find required fonts in system when user supplies the paths, as suggested by unC0Rr, e.g. -DFONTS_DIRS='/usr/share/fonts/truetype/wqy;/usr/share/fonts/truetype/dejavu'
sheepluva
parents: 9991
diff changeset
    89
set(FONTS_DIRS "" CACHE STRING "Additional paths to folders where required fonts can be found ( ; is separator)")
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: 8089
diff changeset
    90
5405
5b17e1b3e0d5 better variable grouping...
koda
parents: 5223
diff changeset
    91
#versioning
14441
23326691af27 Set internal version to 1.0.0-dev
Wuzzy <Wuzzy2@mail.ru>
parents: 14440
diff changeset
    92
set(CPACK_PACKAGE_VERSION_MAJOR 1)
23326691af27 Set internal version to 1.0.0-dev
Wuzzy <Wuzzy2@mail.ru>
parents: 14440
diff changeset
    93
set(CPACK_PACKAGE_VERSION_MINOR 0)
23326691af27 Set internal version to 1.0.0-dev
Wuzzy <Wuzzy2@mail.ru>
parents: 14440
diff changeset
    94
set(CPACK_PACKAGE_VERSION_PATCH 0)
14377
b251aa50c0d3 Bump protocol number to 58 (1.0.0-dev)
Wuzzy <Wuzzy2@mail.ru>
parents: 14356
diff changeset
    95
set(HEDGEWARS_PROTO_VER 58)
14440
d4bd2b455247 Append -dev to version string if built in non-release mode
Wuzzy <Wuzzy2@mail.ru>
parents: 14377
diff changeset
    96
if((CMAKE_BUILD_TYPE MATCHES "RELEASE") OR (CMAKE_BUILD_TYPE MATCHES "RELWITHDEBUGINFO"))
d4bd2b455247 Append -dev to version string if built in non-release mode
Wuzzy <Wuzzy2@mail.ru>
parents: 14377
diff changeset
    97
    set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
d4bd2b455247 Append -dev to version string if built in non-release mode
Wuzzy <Wuzzy2@mail.ru>
parents: 14377
diff changeset
    98
else()
d4bd2b455247 Append -dev to version string if built in non-release mode
Wuzzy <Wuzzy2@mail.ru>
parents: 14377
diff changeset
    99
    set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-dev")
d4bd2b455247 Append -dev to version string if built in non-release mode
Wuzzy <Wuzzy2@mail.ru>
parents: 14377
diff changeset
   100
endif()
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents: 9141
diff changeset
   101
include(${CMAKE_MODULE_PATH}/revinfo.cmake)
5405
5b17e1b3e0d5 better variable grouping...
koda
parents: 5223
diff changeset
   102
8650
18807b6302c8 version variables confom to naming convention
koda
parents: 8646
diff changeset
   103
message(STATUS "Building ${HEDGEWARS_VERSION}-r${HEDGEWARS_REVISION} (${HEDGEWARS_HASH})")
907
a5b0b93a39c8 Use constant generated by cmake for version string
unc0rr
parents: 904
diff changeset
   104
9705
322fe1736347 fix linking on osx by hardcoding the default library output path
koda
parents: 9703
diff changeset
   105
#io library paths
322fe1736347 fix linking on osx by hardcoding the default library output path
koda
parents: 9703
diff changeset
   106
include(${CMAKE_MODULE_PATH}/paths.cmake)
9220
5e7db24f3489 gather up the linker flags in a macro
koda
parents: 9214
diff changeset
   107
#general utilities
5e7db24f3489 gather up the linker flags in a macro
koda
parents: 9214
diff changeset
   108
include(${CMAKE_MODULE_PATH}/utils.cmake)
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents: 9141
diff changeset
   109
#platform specific init code
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents: 9141
diff changeset
   110
include(${CMAKE_MODULE_PATH}/platform.cmake)
2015
d2848d723690 koda's patch
unc0rr
parents: 2005
diff changeset
   111
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
   112
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   113
#when build type is not specified, assume Debug/Release according to build version information
9963
9e75dbffec81 drop extra spaces from a few CMakeLists.txt files
koda
parents: 9961
diff changeset
   114
if(CMAKE_BUILD_TYPE)
9e75dbffec81 drop extra spaces from a few CMakeLists.txt files
koda
parents: 9961
diff changeset
   115
    string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE)
9e75dbffec81 drop extra spaces from a few CMakeLists.txt files
koda
parents: 9961
diff changeset
   116
    if(NOT((CMAKE_BUILD_TYPE MATCHES "RELEASE") OR
10783
8e742c9ffdf8 Add RelWithDebInfo for debugging purposes
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents: 10776
diff changeset
   117
           (CMAKE_BUILD_TYPE MATCHES "DEBUG") OR
8e742c9ffdf8 Add RelWithDebInfo for debugging purposes
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents: 10776
diff changeset
   118
           (CMAKE_BUILD_TYPE MATCHES "RELWITHDEBINFO")))
8e742c9ffdf8 Add RelWithDebInfo for debugging purposes
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents: 10776
diff changeset
   119
        set(CMAKE_BUILD_TYPE ${default_build_type} CACHE STRING "Build type (Debug/Release/RelWithDebInfo)" FORCE)
8e742c9ffdf8 Add RelWithDebInfo for debugging purposes
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents: 10776
diff changeset
   120
        message(STATUS "Unknown build type ${CMAKE_BUILD_TYPE}, using default (${default_build_type})")
9963
9e75dbffec81 drop extra spaces from a few CMakeLists.txt files
koda
parents: 9961
diff changeset
   121
    endif()
9e75dbffec81 drop extra spaces from a few CMakeLists.txt files
koda
parents: 9961
diff changeset
   122
else(CMAKE_BUILD_TYPE)
10783
8e742c9ffdf8 Add RelWithDebInfo for debugging purposes
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents: 10776
diff changeset
   123
    set(CMAKE_BUILD_TYPE ${default_build_type} CACHE STRING "Build type (Debug/Release/RelWithDebInfo)" FORCE)
9963
9e75dbffec81 drop extra spaces from a few CMakeLists.txt files
koda
parents: 9961
diff changeset
   124
endif(CMAKE_BUILD_TYPE)
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   125
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
   126
9152
c884e40dca9e move compiler checks in a separate cmake module
koda
parents: 9151
diff changeset
   127
#perform safe check that enable/disable compilation features
11659
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   128
#skip when crosscompiling to javascript
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   129
if(NOT BUILD_ENGINE_JS)
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   130
    include(${CMAKE_MODULE_PATH}/compilerchecks.cmake)
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   131
endif()
9152
c884e40dca9e move compiler checks in a separate cmake module
koda
parents: 9151
diff changeset
   132
9265
a0e7e7a1c3f8 rework compiler flags section a little, drop already enabled flags, add -Wextra
koda
parents: 9262
diff changeset
   133
#set default compiler flags
13906
d4874de4736b don't use -Wextra when building with vcpkg
alfadur
parents: 13881
diff changeset
   134
if(WIN32 AND VCPKG_TOOLCHAIN)
13909
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   135
    add_flag_append(CMAKE_C_FLAGS "/DWIN32_VCPKG /Wall")
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   136
    add_flag_append(CMAKE_C_FLAGS_RELEASE "/Ox")
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   137
    add_flag_append(CMAKE_C_FLAGS_DEBUG "/Od")
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   138
    add_flag_append(CMAKE_CXX_FLAGS "/DWIN32_VCPKG /Wall")
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   139
    add_flag_append(CMAKE_CXX_FLAGS_RELEASE "/Ox")
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   140
    add_flag_append(CMAKE_CXX_FLAGS_DEBUG "/Od")    
13906
d4874de4736b don't use -Wextra when building with vcpkg
alfadur
parents: 13881
diff changeset
   141
else()
13909
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   142
    add_flag_append(CMAKE_C_FLAGS "-Wall -pipe")
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   143
    add_flag_append(CMAKE_C_FLAGS_RELEASE "-O2")
13906
d4874de4736b don't use -Wextra when building with vcpkg
alfadur
parents: 13881
diff changeset
   144
    add_flag_append(CMAKE_C_FLAGS_DEBUG "-Wextra -O0")
13909
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   145
    add_flag_append(CMAKE_CXX_FLAGS "-Wall -pipe")
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   146
    add_flag_append(CMAKE_CXX_FLAGS_RELEASE "-O2")
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   147
    add_flag_append(CMAKE_CXX_FLAGS_DEBUG "-Wextra -O0")    
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   148
endif()       
9265
a0e7e7a1c3f8 rework compiler flags section a little, drop already enabled flags, add -Wextra
koda
parents: 9262
diff changeset
   149
a0e7e7a1c3f8 rework compiler flags section a little, drop already enabled flags, add -Wextra
koda
parents: 9262
diff changeset
   150
#CMake adds a lot of additional configuration flags, so let's clear them up
9963
9e75dbffec81 drop extra spaces from a few CMakeLists.txt files
koda
parents: 9961
diff changeset
   151
if(MINIMAL_FLAGS)
9265
a0e7e7a1c3f8 rework compiler flags section a little, drop already enabled flags, add -Wextra
koda
parents: 9262
diff changeset
   152
    unset(CMAKE_C_FLAGS_RELEASE)
a0e7e7a1c3f8 rework compiler flags section a little, drop already enabled flags, add -Wextra
koda
parents: 9262
diff changeset
   153
    unset(CMAKE_C_FLAGS_DEBUG)
a0e7e7a1c3f8 rework compiler flags section a little, drop already enabled flags, add -Wextra
koda
parents: 9262
diff changeset
   154
    unset(CMAKE_CXX_FLAGS_RELEASE)
a0e7e7a1c3f8 rework compiler flags section a little, drop already enabled flags, add -Wextra
koda
parents: 9262
diff changeset
   155
    unset(CMAKE_CXX_FLAGS_DEBUG)
7944
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
   156
endif()
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   157
9262
b5a36423bd7e this hid CFLAGS
koda
parents: 9233
diff changeset
   158
7397
833fc211ca2d allow FPFLAGS and GHFLAGS only in cmakes able to support them
koda
parents: 7264
diff changeset
   159
#parse additional parameters
8796
8ab4ef8b70f6 config time pascal flags interpretation
koda
parents: 8787
diff changeset
   160
if(GHFLAGS)
9265
a0e7e7a1c3f8 rework compiler flags section a little, drop already enabled flags, add -Wextra
koda
parents: 9262
diff changeset
   161
    if(${CMAKE_VERSION} VERSION_GREATER 2.6)
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   162
        separate_arguments(ghflags_parsed UNIX_COMMAND ${GHFLAGS})
9104
5cf87143b188 wow binary logic ftw
koda
parents: 9096
diff changeset
   163
    else()
9963
9e75dbffec81 drop extra spaces from a few CMakeLists.txt files
koda
parents: 9961
diff changeset
   164
        message("*** GHFLAGS are available only when using CMake >= 2.8 ***")
7397
833fc211ca2d allow FPFLAGS and GHFLAGS only in cmakes able to support them
koda
parents: 7264
diff changeset
   165
    endif()
833fc211ca2d allow FPFLAGS and GHFLAGS only in cmakes able to support them
koda
parents: 7264
diff changeset
   166
endif()
833fc211ca2d allow FPFLAGS and GHFLAGS only in cmakes able to support them
koda
parents: 7264
diff changeset
   167
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
   168
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   169
#get BUILD_TYPE and enable/disable optimisation
8279
c03d64969112 less linking needed, raise minimum_osx_version when videorec is enabled
koda
parents: 8272
diff changeset
   170
message(STATUS "Using ${CMAKE_BUILD_TYPE} configuration")
7709
631852904cee only accept RELASE and DEBUG build type configuration
koda
parents: 7705
diff changeset
   171
if(CMAKE_BUILD_TYPE MATCHES "DEBUG")
8707
404c18aed69f alignment
koda
parents: 8706
diff changeset
   172
    list(APPEND haskell_flags "-Wall"       # all warnings
404c18aed69f alignment
koda
parents: 8706
diff changeset
   173
                              "-debug"      # debug mode
9244
bb95e351270c fix a few loose ends here
koda
parents: 9238
diff changeset
   174
                              "-fno-warn-unused-do-bind"
11402
bea08a303cb7 cmake: Remove core-lint flag for haskell
koda
parents: 11383
diff changeset
   175
                              "-O0"
8644
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   176
                              )
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   177
else()
8707
404c18aed69f alignment
koda
parents: 8706
diff changeset
   178
    list(APPEND haskell_flags "-w" # no warnings
11402
bea08a303cb7 cmake: Remove core-lint flag for haskell
koda
parents: 11383
diff changeset
   179
                              "-O2"
8644
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   180
                              )
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   181
endif()
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   182
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   183
9238
84e591af6c29 little cleanup after so many merges
koda
parents: 9236
diff changeset
   184
#build engine without freepascal
11659
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   185
if(BUILD_ENGINE_C AND NOT BUILD_ENGINE_JS)
9282
92af50454cf2 force clang dependency when NOPASCAL is set
koda
parents: 9273
diff changeset
   186
    find_package(Clang REQUIRED)
9246
75f430ebeb74 new FindClang.cmake
koda
parents: 9244
diff changeset
   187
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 10013 9980
diff changeset
   188
    if(${CLANG_VERSION} VERSION_LESS "3.0")
9246
75f430ebeb74 new FindClang.cmake
koda
parents: 9244
diff changeset
   189
        message(FATAL_ERROR "LLVM/Clang compiler required version is 3.0 but version ${CLANG_VERSION} was found!")
9238
84e591af6c29 little cleanup after so many merges
koda
parents: 9236
diff changeset
   190
    endif()
9246
75f430ebeb74 new FindClang.cmake
koda
parents: 9244
diff changeset
   191
75f430ebeb74 new FindClang.cmake
koda
parents: 9244
diff changeset
   192
    set(CMAKE_C_COMPILER ${CLANG_EXECUTABLE})
75f430ebeb74 new FindClang.cmake
koda
parents: 9244
diff changeset
   193
    set(CMAKE_CXX_COMPILER ${CLANG_EXECUTABLE})
9980
a666e4eefd27 rename NOPASCAL option to BUILD_ENGINE_C
koda
parents: 9950
diff changeset
   194
endif()
9236
ddd675825672 really update with default
koda
parents: 9197 9233
diff changeset
   195
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   196
9238
84e591af6c29 little cleanup after so many merges
koda
parents: 9236
diff changeset
   197
#server
84e591af6c29 little cleanup after so many merges
koda
parents: 9236
diff changeset
   198
if(NOT NOSERVER)
7973
afb67e34a6b5 add CMakeFile for pas2c, add WEBGL config option
koda
parents: 7933
diff changeset
   199
    add_subdirectory(gameServer)
7223
b554726ff468 uniform NOPNG and NOSERVER cmake symbols
koda
parents: 7220
diff changeset
   200
endif()
1415
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1370
diff changeset
   201
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   202
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   203
#lua discovery
9963
9e75dbffec81 drop extra spaces from a few CMakeLists.txt files
koda
parents: 9961
diff changeset
   204
if(LUA_SYSTEM)
9e75dbffec81 drop extra spaces from a few CMakeLists.txt files
koda
parents: 9961
diff changeset
   205
    if(NOT LUA_LIBRARY OR NOT LUA_INCLUDE_DIR)
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: 9205
diff changeset
   206
        find_package(Lua)
acb2492288e5 heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents: 9205
diff changeset
   207
    endif()
acb2492288e5 heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents: 9205
diff changeset
   208
9963
9e75dbffec81 drop extra spaces from a few CMakeLists.txt files
koda
parents: 9961
diff changeset
   209
    if(LUA_LIBRARY AND LUA_INCLUDE_DIR)
9233
a6ae0286787c when you don't use bundled dirs, add a fake target anyway, so you can use the same cmake syntax even if the target uses a different name
koda
parents: 9229
diff changeset
   210
        #use an IMPORTED tharget so that we can just use 'lua' to link
a6ae0286787c when you don't use bundled dirs, add a fake target anyway, so you can use the same cmake syntax even if the target uses a different name
koda
parents: 9229
diff changeset
   211
        add_library(lua UNKNOWN IMPORTED)
a6ae0286787c when you don't use bundled dirs, add a fake target anyway, so you can use the same cmake syntax even if the target uses a different name
koda
parents: 9229
diff changeset
   212
        set_target_properties(lua PROPERTIES IMPORTED_LOCATION ${LUA_LIBRARY})
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: 9205
diff changeset
   213
    else()
acb2492288e5 heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents: 9205
diff changeset
   214
        message(FATAL_ERROR "Missing Lua! Rerun cmake with -DLUA_SYSTEM=off to build the internal version")
acb2492288e5 heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents: 9205
diff changeset
   215
    endif()
7223
b554726ff468 uniform NOPNG and NOSERVER cmake symbols
koda
parents: 7220
diff changeset
   216
else()
9963
9e75dbffec81 drop extra spaces from a few CMakeLists.txt files
koda
parents: 9961
diff changeset
   217
    if(NOT LUA_LIBRARY OR NOT LUA_INCLUDE_DIR)
9214
bcb103c0a34a less cached cmake output
koda
parents: 9213
diff changeset
   218
        message(STATUS "LUA will be provided by the bundled sources")
bcb103c0a34a less cached cmake output
koda
parents: 9213
diff changeset
   219
    endif()
9213
e3d46d0bc7d0 code typos
koda
parents: 9212
diff changeset
   220
    set(lua_output_name "hwlua")
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   221
    add_subdirectory(misc/liblua)
7031
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7030
diff changeset
   222
endif()
7223
b554726ff468 uniform NOPNG and NOSERVER cmake symbols
koda
parents: 7220
diff changeset
   223
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   224
8544
d610e692e2f6 perform a version check before including physfs (maybe there is a better place for this?) and allow overriding automagic search
koda
parents: 8540
diff changeset
   225
#physfs discovery
13881
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   226
if(NOT PHYSFS_LIBRARY OR NOT PHYSFS_INCLUDE_DIR)
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   227
    find_package(PhysFS)
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   228
endif()
8549
af104e59ea8e due to popular demand, add a compile time switch to manually select whether to build the internal physfs (default) or not
koda
parents: 8544
diff changeset
   229
13881
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   230
find_file(physfs_h physfs.h ${PHYSFS_INCLUDE_DIR})
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   231
if(physfs_h)
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   232
    file(STRINGS ${physfs_h} physfs_majorversion REGEX "PHYSFS_VER_MAJOR[\t' ']+[0-9]+")
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   233
    file(STRINGS ${physfs_h} physfs_minorversion REGEX "PHYSFS_VER_MINOR[\t' ']+[0-9]+")
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   234
    file(STRINGS ${physfs_h} physfs_patchversion REGEX "PHYSFS_VER_PATCH[\t' ']+[0-9]+")
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   235
    string(REGEX MATCH "([0-9]+)" physfs_majorversion "${physfs_majorversion}")
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   236
    string(REGEX MATCH "([0-9]+)" physfs_minorversion "${physfs_minorversion}")
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   237
    string(REGEX MATCH "([0-9]+)" physfs_patchversion "${physfs_patchversion}")
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   238
    set(physfs_detected_ver "${physfs_majorversion}.${physfs_minorversion}.${physfs_patchversion}")
8544
d610e692e2f6 perform a version check before including physfs (maybe there is a better place for this?) and allow overriding automagic search
koda
parents: 8540
diff changeset
   239
13881
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   240
    if(${physfs_detected_ver} VERSION_LESS 3.0.0)
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   241
        message(FATAL_ERROR "PhysFS version is too old (detected ${physfs_detected_ver}, required 3.0.0)\n"
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   242
                            "Perform an update of PhysFS to fix this.")
8549
af104e59ea8e due to popular demand, add a compile time switch to manually select whether to build the internal physfs (default) or not
koda
parents: 8544
diff changeset
   243
    endif()
13881
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   244
endif()
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   245
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   246
if(PHYSFS_LIBRARY AND PHYSFS_INCLUDE_DIR)
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   247
    #use an IMPORTED tharget so that we can just use 'physfs' to link
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   248
    add_library(physfs UNKNOWN IMPORTED)
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   249
    set_target_properties(physfs PROPERTIES IMPORTED_LOCATION ${PHYSFS_LIBRARY})
8549
af104e59ea8e due to popular demand, add a compile time switch to manually select whether to build the internal physfs (default) or not
koda
parents: 8544
diff changeset
   250
else()
13881
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   251
    message(FATAL_ERROR "Missing PhysFS! Install PhysFS to fix this.")
8528
ffd71e99a4f0 and now compile and link properly
koda
parents: 8522
diff changeset
   252
endif()
8549
af104e59ea8e due to popular demand, add a compile time switch to manually select whether to build the internal physfs (default) or not
koda
parents: 8544
diff changeset
   253
9959
1a42d36f346a use mainstream project name
koda
parents: 9955
diff changeset
   254
find_package_or_disable_msg(LIBAV NOVIDEOREC "Video recording will not be built")
8666
1652c1d9adc8 rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents: 8665
diff changeset
   255
8671
a9957b7797f3 write FindGHC.cmake for haskell stuff
koda
parents: 8669
diff changeset
   256
#physfs helper library
8528
ffd71e99a4f0 and now compile and link properly
koda
parents: 8522
diff changeset
   257
add_subdirectory(misc/libphyslayer)
8283
af97cdbb7713 cmake verbosity/documentation/cleanup/formatting
koda
parents: 8279
diff changeset
   258
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 10013 9980
diff changeset
   259
#maybe this could be merged inside hedgewars/CMakeLists.txt
9980
a666e4eefd27 rename NOPASCAL option to BUILD_ENGINE_C
koda
parents: 9950
diff changeset
   260
if(BUILD_ENGINE_C)
7973
afb67e34a6b5 add CMakeFile for pas2c, add WEBGL config option
koda
parents: 7933
diff changeset
   261
    #pascal to c converter
afb67e34a6b5 add CMakeFile for pas2c, add WEBGL config option
koda
parents: 7933
diff changeset
   262
    add_subdirectory(tools/pas2c)
7999
bb503cd46516 add a few cmakefiles for c engine and rtl
koda
parents: 7995
diff changeset
   263
    add_subdirectory(project_files/hwc)
7973
afb67e34a6b5 add CMakeFile for pas2c, add WEBGL config option
koda
parents: 7933
diff changeset
   264
else()
7993
5b5083dc6837 split WEBGL and NOPASCAL cmake options
koda
parents: 7973
diff changeset
   265
    #main pascal engine
7973
afb67e34a6b5 add CMakeFile for pas2c, add WEBGL config option
koda
parents: 7933
diff changeset
   266
    add_subdirectory(hedgewars)
8671
a9957b7797f3 write FindGHC.cmake for haskell stuff
koda
parents: 8669
diff changeset
   267
endif()
a9957b7797f3 write FindGHC.cmake for haskell stuff
koda
parents: 8669
diff changeset
   268
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   269
#Android related build scripts
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 10013 9980
diff changeset
   270
#TODO: when ANDROID, BUILD_ENGINE_LIBRARY should be set
6812
929b467c7277 fixed some typo's. LUA_LIBRARY now points to the right name, regardless of the host machine. Running cmake after a bad attempt (ie forgot to add paths to PATH) now works rather than having to clean the cache
Xeli
parents: 6605
diff changeset
   271
if(ANDROID)
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   272
    add_subdirectory(project_files/Android-build)
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 10013 9980
diff changeset
   273
else(ANDROID)
11659
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   274
    #skip frontend for javascript
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   275
    if(NOT BUILD_ENGINE_JS)
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   276
        add_subdirectory(QTfrontend)
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   277
        add_subdirectory(share)
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   278
    endif()
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   279
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   280
    add_subdirectory(bin)
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   281
    add_subdirectory(tools)
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 10013 9980
diff changeset
   282
endif(ANDROID)
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   283
9091
bafadc6b4516 change cpack configuration file name so that it's not excluded by 'make package_source'
koda
parents: 9086
diff changeset
   284
include(${CMAKE_MODULE_PATH}/cpackvars.cmake)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   285
9988
317d46a2afd2 simple mechanism to run lua-based test cases. experimental - I will back it out if it turns out to be nonsense
sheepluva
parents: 9965
diff changeset
   286
enable_testing()
10660
79fa79c77c38 fix size of PtrInt. enable tests for pas2c (all passing now)
sheepluva
parents: 10561
diff changeset
   287
10776
56e401fb45ea Rename test to test_normal, to comply with policy CMP0037
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents: 10752
diff changeset
   288
add_custom_target(test_normal  COMMAND ${CMAKE_CTEST_COMMAND} -E '^todo/' --timeout 300 --schedule-random)
10559
44095e0a0c1a Verbose tests
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents: 10523
diff changeset
   289
add_custom_target(test_verbose COMMAND ${CMAKE_CTEST_COMMAND} -E '^todo/' --timeout 300 --schedule-random -V)
9988
317d46a2afd2 simple mechanism to run lua-based test cases. experimental - I will back it out if it turns out to be nonsense
sheepluva
parents: 9965
diff changeset
   290
10437
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   291
set(LUATESTS_DIR "${CMAKE_SOURCE_DIR}/tests/lua")
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   292
set(TESTSDATA_DIR "${CMAKE_SOURCE_DIR}/share/hedgewars/Data")
10028
9e742fc72696 add a test based on unC0Rr's suggestion. still a lot of mess and redundancy involved, sry :P
sheepluva
parents: 10026
diff changeset
   293
9e742fc72696 add a test based on unC0Rr's suggestion. still a lot of mess and redundancy involved, sry :P
sheepluva
parents: 10026
diff changeset
   294
# set set this to "" if you want to see what's going on
10437
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   295
# TODO: engine should do this implicitly when running tests,
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   296
# unless some env var like HWENGINE_SHOWTESTS is set or something
10028
9e742fc72696 add a test based on unC0Rr's suggestion. still a lot of mess and redundancy involved, sry :P
sheepluva
parents: 10026
diff changeset
   297
set(STATSONLYFLAG "--stats-only")
10437
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   298
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   299
# add all lua tests
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   300
file(GLOB_RECURSE luatests RELATIVE "${LUATESTS_DIR}" "${LUATESTS_DIR}/*.lua")
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   301
foreach(luatest ${luatests})
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   302
    add_test("${luatest}" "bin/hwengine" "--prefix" "${TESTSDATA_DIR}" "--nosound" "--nomusic" "${STATSONLYFLAG}" "--lua-test" "${LUATESTS_DIR}/${luatest}")
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   303
endforeach(luatest)
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   304