CMakeLists.txt
author unC0Rr
Thu, 19 Dec 2024 14:18:55 +0100
branchtransitional_engine
changeset 16052 6633961698ad
parent 16038 d903f8d2395a
permissions -rw-r--r--
Make wider range of numbers representable with FPNum on the cost of smaller precision
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
16021
6a3dc15b78b9 Add corrosion as a subdirectory, CMake fixes
unC0Rr
parents: 16009
diff changeset
     1
cmake_minimum_required(VERSION 3.12.0)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
     2
5407
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
     3
#initialise cmake environment
16021
6a3dc15b78b9 Add corrosion as a subdirectory, CMake fixes
unC0Rr
parents: 16009
diff changeset
     4
foreach(hwpolicy CMP0003 CMP0012 CMP0017 CMP0018 CMP0048)
8146
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
     5
    if(POLICY ${hwpolicy})
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
     6
        cmake_policy(SET ${hwpolicy} NEW)
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
     7
    endif()
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
     8
endforeach()
8611
90f445317e8a support WARNING message status on cmake 2.6 (bug 524)
koda
parents: 8597
diff changeset
     9
12887
62f7d28e93e3 Set cmake RPATH policy to OLD
koda
parents: 12834
diff changeset
    10
foreach(hwpolicy CMP0026 CMP0068)
11354
78156dc2cab3 cmake: Set OLD for policy 26
Vittorio Giovara <vittorio.giovara@gmail.com>
parents: 11285
diff changeset
    11
    if(POLICY ${hwpolicy})
78156dc2cab3 cmake: Set OLD for policy 26
Vittorio Giovara <vittorio.giovara@gmail.com>
parents: 11285
diff changeset
    12
        cmake_policy(SET ${hwpolicy} OLD)
78156dc2cab3 cmake: Set OLD for policy 26
Vittorio Giovara <vittorio.giovara@gmail.com>
parents: 11285
diff changeset
    13
    endif()
78156dc2cab3 cmake: Set OLD for policy 26
Vittorio Giovara <vittorio.giovara@gmail.com>
parents: 11285
diff changeset
    14
endforeach()
78156dc2cab3 cmake: Set OLD for policy 26
Vittorio Giovara <vittorio.giovara@gmail.com>
parents: 11285
diff changeset
    15
16021
6a3dc15b78b9 Add corrosion as a subdirectory, CMake fixes
unC0Rr
parents: 16009
diff changeset
    16
project(hedgewars VERSION 1.1.0)
6a3dc15b78b9 Add corrosion as a subdirectory, CMake fixes
unC0Rr
parents: 16009
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)
15451
3102d95a870e CMAKE_BUILD_TYPE: Replace MATCHES with STREQUAL
Wuzzy <Wuzzy2@mail.ru>
parents: 15450
diff changeset
    57
    if((CMAKE_BUILD_TYPE STREQUAL "Release") OR (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo"))
14992
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
15466
c788c38f238d Bump version to 1.0.1-dev, proto number to 60
Wuzzy <Wuzzy2@mail.ru>
parents: 15451
diff changeset
    92
set(HEDGEWARS_PROTO_VER 60)
15451
3102d95a870e CMAKE_BUILD_TYPE: Replace MATCHES with STREQUAL
Wuzzy <Wuzzy2@mail.ru>
parents: 15450
diff changeset
    93
if((CMAKE_BUILD_TYPE STREQUAL "Release") OR (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo"))
16021
6a3dc15b78b9 Add corrosion as a subdirectory, CMake fixes
unC0Rr
parents: 16009
diff changeset
    94
    set(HEDGEWARS_VERSION "${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH}")
14440
d4bd2b455247 Append -dev to version string if built in non-release mode
Wuzzy <Wuzzy2@mail.ru>
parents: 14377
diff changeset
    95
else()
16021
6a3dc15b78b9 Add corrosion as a subdirectory, CMake fixes
unC0Rr
parents: 16009
diff changeset
    96
    set(HEDGEWARS_VERSION "${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH}-dev")
14440
d4bd2b455247 Append -dev to version string if built in non-release mode
Wuzzy <Wuzzy2@mail.ru>
parents: 14377
diff changeset
    97
endif()
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents: 9141
diff changeset
    98
include(${CMAKE_MODULE_PATH}/revinfo.cmake)
5405
5b17e1b3e0d5 better variable grouping...
koda
parents: 5223
diff changeset
    99
8650
18807b6302c8 version variables confom to naming convention
koda
parents: 8646
diff changeset
   100
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
   101
9705
322fe1736347 fix linking on osx by hardcoding the default library output path
koda
parents: 9703
diff changeset
   102
#io library paths
322fe1736347 fix linking on osx by hardcoding the default library output path
koda
parents: 9703
diff changeset
   103
include(${CMAKE_MODULE_PATH}/paths.cmake)
9220
5e7db24f3489 gather up the linker flags in a macro
koda
parents: 9214
diff changeset
   104
#general utilities
5e7db24f3489 gather up the linker flags in a macro
koda
parents: 9214
diff changeset
   105
include(${CMAKE_MODULE_PATH}/utils.cmake)
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents: 9141
diff changeset
   106
#platform specific init code
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents: 9141
diff changeset
   107
include(${CMAKE_MODULE_PATH}/platform.cmake)
2015
d2848d723690 koda's patch
unc0rr
parents: 2005
diff changeset
   108
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   109
#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
   110
if(CMAKE_BUILD_TYPE)
15451
3102d95a870e CMAKE_BUILD_TYPE: Replace MATCHES with STREQUAL
Wuzzy <Wuzzy2@mail.ru>
parents: 15450
diff changeset
   111
    if(NOT((CMAKE_BUILD_TYPE STREQUAL "Release") OR
3102d95a870e CMAKE_BUILD_TYPE: Replace MATCHES with STREQUAL
Wuzzy <Wuzzy2@mail.ru>
parents: 15450
diff changeset
   112
           (CMAKE_BUILD_TYPE STREQUAL "Debug") OR
3102d95a870e CMAKE_BUILD_TYPE: Replace MATCHES with STREQUAL
Wuzzy <Wuzzy2@mail.ru>
parents: 15450
diff changeset
   113
           (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")))
10783
8e742c9ffdf8 Add RelWithDebInfo for debugging purposes
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents: 10776
diff changeset
   114
        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
   115
        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
   116
    endif()
9e75dbffec81 drop extra spaces from a few CMakeLists.txt files
koda
parents: 9961
diff changeset
   117
else(CMAKE_BUILD_TYPE)
10783
8e742c9ffdf8 Add RelWithDebInfo for debugging purposes
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents: 10776
diff changeset
   118
    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
   119
endif(CMAKE_BUILD_TYPE)
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   120
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
   121
9152
c884e40dca9e move compiler checks in a separate cmake module
koda
parents: 9151
diff changeset
   122
#perform safe check that enable/disable compilation features
11659
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   123
#skip when crosscompiling to javascript
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   124
if(NOT BUILD_ENGINE_JS)
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   125
    include(${CMAKE_MODULE_PATH}/compilerchecks.cmake)
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   126
endif()
9152
c884e40dca9e move compiler checks in a separate cmake module
koda
parents: 9151
diff changeset
   127
9265
a0e7e7a1c3f8 rework compiler flags section a little, drop already enabled flags, add -Wextra
koda
parents: 9262
diff changeset
   128
#set default compiler flags
13906
d4874de4736b don't use -Wextra when building with vcpkg
alfadur
parents: 13881
diff changeset
   129
if(WIN32 AND VCPKG_TOOLCHAIN)
13909
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   130
    add_flag_append(CMAKE_C_FLAGS "/DWIN32_VCPKG /Wall")
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   131
    add_flag_append(CMAKE_C_FLAGS_RELEASE "/Ox")
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   132
    add_flag_append(CMAKE_C_FLAGS_DEBUG "/Od")
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   133
    add_flag_append(CMAKE_CXX_FLAGS "/DWIN32_VCPKG /Wall")
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   134
    add_flag_append(CMAKE_CXX_FLAGS_RELEASE "/Ox")
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   135
    add_flag_append(CMAKE_CXX_FLAGS_DEBUG "/Od")    
13906
d4874de4736b don't use -Wextra when building with vcpkg
alfadur
parents: 13881
diff changeset
   136
else()
13909
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   137
    add_flag_append(CMAKE_C_FLAGS "-Wall -pipe")
15900
128ace913837 Introduce hwengine-future library, use Land allocated in it
unC0Rr
parents: 15884
diff changeset
   138
    add_flag_append(CMAKE_C_FLAGS_RELEASE "-O3")
13906
d4874de4736b don't use -Wextra when building with vcpkg
alfadur
parents: 13881
diff changeset
   139
    add_flag_append(CMAKE_C_FLAGS_DEBUG "-Wextra -O0")
13909
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   140
    add_flag_append(CMAKE_CXX_FLAGS "-Wall -pipe")
15900
128ace913837 Introduce hwengine-future library, use Land allocated in it
unC0Rr
parents: 15884
diff changeset
   141
    add_flag_append(CMAKE_CXX_FLAGS_RELEASE "-O3")
13909
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   142
    add_flag_append(CMAKE_CXX_FLAGS_DEBUG "-Wextra -O0")    
a44e4c057f57 use correct compiler flags
alfadur
parents: 13906
diff changeset
   143
endif()       
9265
a0e7e7a1c3f8 rework compiler flags section a little, drop already enabled flags, add -Wextra
koda
parents: 9262
diff changeset
   144
a0e7e7a1c3f8 rework compiler flags section a little, drop already enabled flags, add -Wextra
koda
parents: 9262
diff changeset
   145
#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
   146
if(MINIMAL_FLAGS)
9265
a0e7e7a1c3f8 rework compiler flags section a little, drop already enabled flags, add -Wextra
koda
parents: 9262
diff changeset
   147
    unset(CMAKE_C_FLAGS_RELEASE)
a0e7e7a1c3f8 rework compiler flags section a little, drop already enabled flags, add -Wextra
koda
parents: 9262
diff changeset
   148
    unset(CMAKE_C_FLAGS_DEBUG)
a0e7e7a1c3f8 rework compiler flags section a little, drop already enabled flags, add -Wextra
koda
parents: 9262
diff changeset
   149
    unset(CMAKE_CXX_FLAGS_RELEASE)
a0e7e7a1c3f8 rework compiler flags section a little, drop already enabled flags, add -Wextra
koda
parents: 9262
diff changeset
   150
    unset(CMAKE_CXX_FLAGS_DEBUG)
7944
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
   151
endif()
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   152
9262
b5a36423bd7e this hid CFLAGS
koda
parents: 9233
diff changeset
   153
7397
833fc211ca2d allow FPFLAGS and GHFLAGS only in cmakes able to support them
koda
parents: 7264
diff changeset
   154
#parse additional parameters
8796
8ab4ef8b70f6 config time pascal flags interpretation
koda
parents: 8787
diff changeset
   155
if(GHFLAGS)
9265
a0e7e7a1c3f8 rework compiler flags section a little, drop already enabled flags, add -Wextra
koda
parents: 9262
diff changeset
   156
    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
   157
        separate_arguments(ghflags_parsed UNIX_COMMAND ${GHFLAGS})
9104
5cf87143b188 wow binary logic ftw
koda
parents: 9096
diff changeset
   158
    else()
9963
9e75dbffec81 drop extra spaces from a few CMakeLists.txt files
koda
parents: 9961
diff changeset
   159
        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
   160
    endif()
833fc211ca2d allow FPFLAGS and GHFLAGS only in cmakes able to support them
koda
parents: 7264
diff changeset
   161
endif()
833fc211ca2d allow FPFLAGS and GHFLAGS only in cmakes able to support them
koda
parents: 7264
diff changeset
   162
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
   163
15876
1878d95d6e15 Add GHC_DYNAMIC cmake option - allows building dynamically-linked haskell object files and executables (needed for some distributions)
S.D.
parents: 15870
diff changeset
   164
if(GHC_DYNAMIC)
1878d95d6e15 Add GHC_DYNAMIC cmake option - allows building dynamically-linked haskell object files and executables (needed for some distributions)
S.D.
parents: 15870
diff changeset
   165
  list(APPEND haskell_flags "-dynamic")
1878d95d6e15 Add GHC_DYNAMIC cmake option - allows building dynamically-linked haskell object files and executables (needed for some distributions)
S.D.
parents: 15870
diff changeset
   166
endif()
1878d95d6e15 Add GHC_DYNAMIC cmake option - allows building dynamically-linked haskell object files and executables (needed for some distributions)
S.D.
parents: 15870
diff changeset
   167
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   168
#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
   169
message(STATUS "Using ${CMAKE_BUILD_TYPE} configuration")
15451
3102d95a870e CMAKE_BUILD_TYPE: Replace MATCHES with STREQUAL
Wuzzy <Wuzzy2@mail.ru>
parents: 15450
diff changeset
   170
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
8707
404c18aed69f alignment
koda
parents: 8706
diff changeset
   171
    list(APPEND haskell_flags "-Wall"       # all warnings
404c18aed69f alignment
koda
parents: 8706
diff changeset
   172
                              "-debug"      # debug mode
9244
bb95e351270c fix a few loose ends here
koda
parents: 9238
diff changeset
   173
                              "-fno-warn-unused-do-bind"
11402
bea08a303cb7 cmake: Remove core-lint flag for haskell
koda
parents: 11383
diff changeset
   174
                              "-O0"
8644
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   175
                              )
15947
3199bbfeba31 fix vcpkg build
alfadur
parents: 15884
diff changeset
   176
    set(USE_DEBUG_LIBRARIES TRUE)
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)
15947
3199bbfeba31 fix vcpkg build
alfadur
parents: 15884
diff changeset
   249
    if (DEFINED PHYSFS_LIBRARY_RELEASE)
3199bbfeba31 fix vcpkg build
alfadur
parents: 15884
diff changeset
   250
        if (${USE_DEBUG_LIBRARIES})
3199bbfeba31 fix vcpkg build
alfadur
parents: 15884
diff changeset
   251
            set_target_properties(physfs PROPERTIES IMPORTED_LOCATION ${PHYSFS_LIBRARY_DEBUG})
3199bbfeba31 fix vcpkg build
alfadur
parents: 15884
diff changeset
   252
        else()    
3199bbfeba31 fix vcpkg build
alfadur
parents: 15884
diff changeset
   253
            set_target_properties(physfs PROPERTIES IMPORTED_LOCATION ${PHYSFS_LIBRARY_RELEASE})
3199bbfeba31 fix vcpkg build
alfadur
parents: 15884
diff changeset
   254
        endif()
3199bbfeba31 fix vcpkg build
alfadur
parents: 15884
diff changeset
   255
    else()
3199bbfeba31 fix vcpkg build
alfadur
parents: 15884
diff changeset
   256
        set_target_properties(physfs PROPERTIES IMPORTED_LOCATION ${PHYSFS_LIBRARY})
3199bbfeba31 fix vcpkg build
alfadur
parents: 15884
diff changeset
   257
    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
   258
else()
13881
99b265e0d1d0 Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents: 13349
diff changeset
   259
    message(FATAL_ERROR "Missing PhysFS! Install PhysFS to fix this.")
8528
ffd71e99a4f0 and now compile and link properly
koda
parents: 8522
diff changeset
   260
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
   261
9959
1a42d36f346a use mainstream project name
koda
parents: 9955
diff changeset
   262
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
   263
16021
6a3dc15b78b9 Add corrosion as a subdirectory, CMake fixes
unC0Rr
parents: 16009
diff changeset
   264
8671
a9957b7797f3 write FindGHC.cmake for haskell stuff
koda
parents: 8669
diff changeset
   265
#physfs helper library
8528
ffd71e99a4f0 and now compile and link properly
koda
parents: 8522
diff changeset
   266
add_subdirectory(misc/libphyslayer)
8283
af97cdbb7713 cmake verbosity/documentation/cleanup/formatting
koda
parents: 8279
diff changeset
   267
16021
6a3dc15b78b9 Add corrosion as a subdirectory, CMake fixes
unC0Rr
parents: 16009
diff changeset
   268
6a3dc15b78b9 Add corrosion as a subdirectory, CMake fixes
unC0Rr
parents: 16009
diff changeset
   269
#rust libraries
6a3dc15b78b9 Add corrosion as a subdirectory, CMake fixes
unC0Rr
parents: 16009
diff changeset
   270
add_subdirectory(tools/corrosion)
16023
0fd23fc57947 Make pascal engine link to hwengine-future and use WFC generator
unC0Rr
parents: 16021
diff changeset
   271
corrosion_import_crate(MANIFEST_PATH rust/lib-hwengine-future/Cargo.toml)
16038
d903f8d2395a - Update corrosion
unC0Rr
parents: 16023
diff changeset
   272
corrosion_install(TARGETS hwengine_future EXPORT hwengine_future_install_target)
d903f8d2395a - Update corrosion
unC0Rr
parents: 16023
diff changeset
   273
install(EXPORT hwengine_future_install_target DESTINATION ${target_library_install_dir})
16021
6a3dc15b78b9 Add corrosion as a subdirectory, CMake fixes
unC0Rr
parents: 16009
diff changeset
   274
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 10013 9980
diff changeset
   275
#maybe this could be merged inside hedgewars/CMakeLists.txt
9980
a666e4eefd27 rename NOPASCAL option to BUILD_ENGINE_C
koda
parents: 9950
diff changeset
   276
if(BUILD_ENGINE_C)
7973
afb67e34a6b5 add CMakeFile for pas2c, add WEBGL config option
koda
parents: 7933
diff changeset
   277
    #pascal to c converter
afb67e34a6b5 add CMakeFile for pas2c, add WEBGL config option
koda
parents: 7933
diff changeset
   278
    add_subdirectory(tools/pas2c)
7999
bb503cd46516 add a few cmakefiles for c engine and rtl
koda
parents: 7995
diff changeset
   279
    add_subdirectory(project_files/hwc)
7973
afb67e34a6b5 add CMakeFile for pas2c, add WEBGL config option
koda
parents: 7933
diff changeset
   280
else()
7993
5b5083dc6837 split WEBGL and NOPASCAL cmake options
koda
parents: 7973
diff changeset
   281
    #main pascal engine
7973
afb67e34a6b5 add CMakeFile for pas2c, add WEBGL config option
koda
parents: 7933
diff changeset
   282
    add_subdirectory(hedgewars)
8671
a9957b7797f3 write FindGHC.cmake for haskell stuff
koda
parents: 8669
diff changeset
   283
endif()
a9957b7797f3 write FindGHC.cmake for haskell stuff
koda
parents: 8669
diff changeset
   284
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   285
#Android related build scripts
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 10013 9980
diff changeset
   286
#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
   287
if(ANDROID)
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   288
    add_subdirectory(project_files/Android-build)
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 10013 9980
diff changeset
   289
else(ANDROID)
11659
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   290
    #skip frontend for javascript
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   291
    if(NOT BUILD_ENGINE_JS)
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   292
        add_subdirectory(QTfrontend)
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   293
        add_subdirectory(share)
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   294
    endif()
71bdf987e41f Fully support emscripten toolchain in our build system
koda
parents: 11654
diff changeset
   295
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   296
    add_subdirectory(bin)
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   297
    add_subdirectory(tools)
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 10013 9980
diff changeset
   298
endif(ANDROID)
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   299
9091
bafadc6b4516 change cpack configuration file name so that it's not excluded by 'make package_source'
koda
parents: 9086
diff changeset
   300
include(${CMAKE_MODULE_PATH}/cpackvars.cmake)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   301
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
   302
enable_testing()
10660
79fa79c77c38 fix size of PtrInt. enable tests for pas2c (all passing now)
sheepluva
parents: 10561
diff changeset
   303
10776
56e401fb45ea Rename test to test_normal, to comply with policy CMP0037
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents: 10752
diff changeset
   304
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
   305
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
   306
10437
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   307
set(LUATESTS_DIR "${CMAKE_SOURCE_DIR}/tests/lua")
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   308
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
   309
9e742fc72696 add a test based on unC0Rr's suggestion. still a lot of mess and redundancy involved, sry :P
sheepluva
parents: 10026
diff changeset
   310
# 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
   311
# TODO: engine should do this implicitly when running tests,
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   312
# 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
   313
set(STATSONLYFLAG "--stats-only")
10437
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   314
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   315
# add all lua tests
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   316
file(GLOB_RECURSE luatests RELATIVE "${LUATESTS_DIR}" "${LUATESTS_DIR}/*.lua")
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   317
foreach(luatest ${luatests})
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   318
    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
   319
endforeach(luatest)
e586b8af4569 find and add lua tests automagically
sheepluva
parents: 10380
diff changeset
   320