CMakeLists.txt
author koda
Thu, 13 Jun 2013 15:37:52 +0200
changeset 9220 5e7db24f3489
parent 9214 bcb103c0a34a
child 9224 bce8cf41d666
permissions -rw-r--r--
gather up the linker flags in a macro
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
5407
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
     3
#initialise cmake environment
9198
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9192
diff changeset
     4
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
     5
foreach(hwpolicy CMP0003 CMP0012 CMP0017 CMP0018)
8146
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
     6
    if(POLICY ${hwpolicy})
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
     7
        cmake_policy(SET ${hwpolicy} NEW)
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
     8
    endif()
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
     9
endforeach()
8611
90f445317e8a support WARNING message status on cmake 2.6 (bug 524)
koda
parents: 8597
diff changeset
    10
8674
fff355ba2902 our cmake modules have become good enough, prefer them over system ones
koda
parents: 8673
diff changeset
    11
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules")
8673
834e2d3b43d2 Backed out changeset 4cccc0520988
koda
parents: 8672
diff changeset
    12
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
    13
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    14
#possible cmake configuration
8687
5b6ad1bd6ace update option list
koda
parents: 8686
diff changeset
    15
option(NOSERVER "Disable gameServer build (off)]" OFF)
5b6ad1bd6ace update option list
koda
parents: 8686
diff changeset
    16
option(NOPNG "Disable screenshoot compression (off)" OFF)
5b6ad1bd6ace update option list
koda
parents: 8686
diff changeset
    17
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
    18
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
    19
#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
    20
option(BUILD_SHARED_LIBS "Build libraries as shared modules (on)" ON)
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
    21
#set this to ON when 2.1.0 becomes more widespread (and only for linux)
9096
b3041025c271 fix the cmake flag PHYSFS_SYSTEM being called SYSTEM_PHYSFS in the code
sheepluva
parents: 9091
diff changeset
    22
option(PHYSFS_SYSTEM "Use system physfs (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
    23
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
    24
if(WIN32 OR APPLE)
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
    25
    option(LUA_SYSTEM "Use system lua (off)" OFF)
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
    26
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
    27
    option(LUA_SYSTEM "Use system lua (on)" ON)
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
    28
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
    29
8687
5b6ad1bd6ace update option list
koda
parents: 8686
diff changeset
    30
option(BUILD_ENGINE_LIBRARY "Enable hwengine library (off)" OFF)
5b6ad1bd6ace update option list
koda
parents: 8686
diff changeset
    31
option(ANDROID "Enable Android build (off)" OFF)
5b6ad1bd6ace update option list
koda
parents: 8686
diff changeset
    32
5b6ad1bd6ace update option list
koda
parents: 8686
diff changeset
    33
if(UNIX AND NOT APPLE)
5b6ad1bd6ace update option list
koda
parents: 8686
diff changeset
    34
    option(MINIMAL_FLAGS "Respect system flags as much as possible (off)" OFF)
5b6ad1bd6ace update option list
koda
parents: 8686
diff changeset
    35
else()
8659
e49056d3aba1 fail if sparkle not found consciously
koda
parents: 8650
diff changeset
    36
    option(NOAUTOUPDATE "Disable OS X Sparkle update checking" OFF)
e49056d3aba1 fail if sparkle not found consciously
koda
parents: 8650
diff changeset
    37
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
    38
8333
416cb5e5a405 move DATA_INSTALL_DIR to the configurable options section
koda
parents: 8331
diff changeset
    39
set(FPFLAGS "" CACHE STRING "Additional Freepascal flags")
416cb5e5a405 move DATA_INSTALL_DIR to the configurable options section
koda
parents: 8331
diff changeset
    40
set(GHFLAGS "" CACHE STRING "Additional Haskell flags")
416cb5e5a405 move DATA_INSTALL_DIR to the configurable options section
koda
parents: 8331
diff changeset
    41
if(UNIX AND NOT APPLE)
416cb5e5a405 move DATA_INSTALL_DIR to the configurable options section
koda
parents: 8331
diff changeset
    42
    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
    43
endif()
8104
09c38cdf380d show console on win when debugging to see frontend messages
koda
parents: 8093
diff changeset
    44
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
    45
5405
5b17e1b3e0d5 better variable grouping...
koda
parents: 5223
diff changeset
    46
#versioning
5407
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
    47
set(CPACK_PACKAGE_VERSION_MAJOR 0)
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
    48
set(CPACK_PACKAGE_VERSION_MINOR 9)
9141
e391e9a19b1c Bump protocol and version (game desync would be triggered by b70352db5675, 2ae44c4381cd - other revisions probably safe)
nemo
parents: 9106
diff changeset
    49
set(CPACK_PACKAGE_VERSION_PATCH 20)
e391e9a19b1c Bump protocol and version (game desync would be triggered by b70352db5675, 2ae44c4381cd - other revisions probably safe)
nemo
parents: 9106
diff changeset
    50
set(HEDGEWARS_PROTO_VER 46)
5407
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
    51
set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents: 9141
diff changeset
    52
include(${CMAKE_MODULE_PATH}/revinfo.cmake)
5405
5b17e1b3e0d5 better variable grouping...
koda
parents: 5223
diff changeset
    53
8650
18807b6302c8 version variables confom to naming convention
koda
parents: 8646
diff changeset
    54
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
    55
9220
5e7db24f3489 gather up the linker flags in a macro
koda
parents: 9214
diff changeset
    56
#general utilities
5e7db24f3489 gather up the linker flags in a macro
koda
parents: 9214
diff changeset
    57
include(${CMAKE_MODULE_PATH}/utils.cmake)
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents: 9141
diff changeset
    58
#platform specific init code
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents: 9141
diff changeset
    59
include(${CMAKE_MODULE_PATH}/platform.cmake)
9190
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents: 9165
diff changeset
    60
include(${CMAKE_MODULE_PATH}/paths.cmake)
2015
d2848d723690 koda's patch
unc0rr
parents: 2005
diff changeset
    61
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    62
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
    63
#when build type is not specified, assume Debug/Release according to build version information
7709
631852904cee only accept RELASE and DEBUG build type configuration
koda
parents: 7705
diff changeset
    64
if (CMAKE_BUILD_TYPE)
631852904cee only accept RELASE and DEBUG build type configuration
koda
parents: 7705
diff changeset
    65
    string (TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE)
631852904cee only accept RELASE and DEBUG build type configuration
koda
parents: 7705
diff changeset
    66
    if ( NOT( (CMAKE_BUILD_TYPE MATCHES "RELEASE") OR (CMAKE_BUILD_TYPE MATCHES "DEBUG") ) )
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    67
        set (CMAKE_BUILD_TYPE ${default_build_type} CACHE STRING "Build type (Debug/Release)" FORCE)
7709
631852904cee only accept RELASE and DEBUG build type configuration
koda
parents: 7705
diff changeset
    68
        message (STATUS "Unknown build type, using default (${default_build_type})")
631852904cee only accept RELASE and DEBUG build type configuration
koda
parents: 7705
diff changeset
    69
    endif ()
631852904cee only accept RELASE and DEBUG build type configuration
koda
parents: 7705
diff changeset
    70
else (CMAKE_BUILD_TYPE)
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    71
    set (CMAKE_BUILD_TYPE ${default_build_type} CACHE STRING "Build type (Debug/Release)" FORCE)
7709
631852904cee only accept RELASE and DEBUG build type configuration
koda
parents: 7705
diff changeset
    72
endif (CMAKE_BUILD_TYPE)
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
    73
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    74
9152
c884e40dca9e move compiler checks in a separate cmake module
koda
parents: 9151
diff changeset
    75
#perform safe check that enable/disable compilation features
c884e40dca9e move compiler checks in a separate cmake module
koda
parents: 9151
diff changeset
    76
include(${CMAKE_MODULE_PATH}/compilerchecks.cmake)
c884e40dca9e move compiler checks in a separate cmake module
koda
parents: 9151
diff changeset
    77
7944
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
    78
#set default flags values for all projects (unless MINIMAL_FLAGS is true)
8347
716c05f19401 GCI2012: CMake List Append
Willie Zhu
parents: 8333
diff changeset
    79
if(NOT ${MINIMAL_FLAGS})
8348
c039ac6f33e0 don't discard older cmake_c_flags
koda
parents: 8347
diff changeset
    80
    set(CMAKE_C_FLAGS "-pipe ${CMAKE_C_FLAGS}")
c039ac6f33e0 don't discard older cmake_c_flags
koda
parents: 8347
diff changeset
    81
    set(CMAKE_C_FLAGS_RELEASE "-w -Os -fomit-frame-pointer ${CMAKE_C_FLAGS_RELEASE}")
9212
1d4e1469940b use QT_DEBUG which is always added
koda
parents: 9211
diff changeset
    82
    set(CMAKE_C_FLAGS_DEBUG "-Wall -O0 -g ${CMAKE_C_FLAGS_DEBUG}")
9211
6235925d0fa1 respect C and CXX flags
koda
parents: 9208
diff changeset
    83
    set(CMAKE_CXX_FLAGS "-pipe ${CMAKE_CXX_FLAGS}")
6235925d0fa1 respect C and CXX flags
koda
parents: 9208
diff changeset
    84
    set(CMAKE_CXX_FLAGS_RELEASE "-w -Os -fomit-frame-pointer ${CMAKE_CXX_FLAGS_RELEASE}")
9212
1d4e1469940b use QT_DEBUG which is always added
koda
parents: 9211
diff changeset
    85
    set(CMAKE_CXX_FLAGS_DEBUG "-Wall -O0 -g ${CMAKE_CXX_FLAGS_DEBUG}")
7944
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
    86
else()
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
    87
    #CMake adds a lot of additional configuration flags, so let's clear them up
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
    88
    set(CMAKE_C_FLAGS_RELEASE "")
9212
1d4e1469940b use QT_DEBUG which is always added
koda
parents: 9211
diff changeset
    89
    set(CMAKE_C_FLAGS_DEBUG "-Wall")
7944
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
    90
    set(CMAKE_CXX_FLAGS_RELEASE "")
9212
1d4e1469940b use QT_DEBUG which is always added
koda
parents: 9211
diff changeset
    91
    set(CMAKE_CXX_FLAGS_DEBUG "-Wall")
7944
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
    92
endif()
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
    93
7397
833fc211ca2d allow FPFLAGS and GHFLAGS only in cmakes able to support them
koda
parents: 7264
diff changeset
    94
#parse additional parameters
833fc211ca2d allow FPFLAGS and GHFLAGS only in cmakes able to support them
koda
parents: 7264
diff changeset
    95
if(FPFLAGS OR GHFLAGS)
9151
1d2df388fcc6 simplify cmake message syntax a little bit
koda
parents: 9150
diff changeset
    96
    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
    97
        separate_arguments(fpflags_parsed UNIX_COMMAND ${FPFLAGS})
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
    98
        separate_arguments(ghflags_parsed UNIX_COMMAND ${GHFLAGS})
9104
5cf87143b188 wow binary logic ftw
koda
parents: 9096
diff changeset
    99
    else()
9151
1d2df388fcc6 simplify cmake message syntax a little bit
koda
parents: 9150
diff changeset
   100
        message("*** FPFLAGS and 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
   101
    endif()
833fc211ca2d allow FPFLAGS and GHFLAGS only in cmakes able to support them
koda
parents: 7264
diff changeset
   102
endif()
833fc211ca2d allow FPFLAGS and GHFLAGS only in cmakes able to support them
koda
parents: 7264
diff changeset
   103
8707
404c18aed69f alignment
koda
parents: 8706
diff changeset
   104
list(APPEND pascal_flags ${fpflags_parsed}            # user flags
404c18aed69f alignment
koda
parents: 8706
diff changeset
   105
                 "-B"                                 # compile all units
404c18aed69f alignment
koda
parents: 8706
diff changeset
   106
                 "-vm4079,4080,4081"                  # fpc verbosity output format
404c18aed69f alignment
koda
parents: 8706
diff changeset
   107
                 "-FE${PROJECT_BINARY_DIR}/bin"       # fpc binaries output directory
8706
9f5df5dc44a0 introducing the bestest flag of all
koda
parents: 8705
diff changeset
   108
                 "-FU${PROJECT_BINARY_DIR}/hedgewars" # fpc units output directory
8707
404c18aed69f alignment
koda
parents: 8706
diff changeset
   109
                 "-Fl${PROJECT_BINARY_DIR}/bin"       # fpc linking directory (win/unix)
404c18aed69f alignment
koda
parents: 8706
diff changeset
   110
                 "-Fi${PROJECT_BINARY_DIR}/hedgewars" # fpc .inc path (for out of source builds)
404c18aed69f alignment
koda
parents: 8706
diff changeset
   111
                 "-k-L${PROJECT_BINARY_DIR}/bin"      # ld linking directory (unix/osx)
404c18aed69f alignment
koda
parents: 8706
diff changeset
   112
                 "-Cs2000000"                         # stack size
404c18aed69f alignment
koda
parents: 8706
diff changeset
   113
                 "-vewnq"                             # fpc output verbosity
404c18aed69f alignment
koda
parents: 8706
diff changeset
   114
                 "-dDEBUGFILE"                        # macro for engine output
8283
af97cdbb7713 cmake verbosity/documentation/cleanup/formatting
koda
parents: 8279
diff changeset
   115
                 )
8707
404c18aed69f alignment
koda
parents: 8706
diff changeset
   116
list(APPEND haskell_flags ${ghflags_parsed} # user flags
404c18aed69f alignment
koda
parents: 8706
diff changeset
   117
                 "-O2"                      # optimise for faster code
8644
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   118
                 )
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   119
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
   120
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   121
#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
   122
message(STATUS "Using ${CMAKE_BUILD_TYPE} configuration")
7709
631852904cee only accept RELASE and DEBUG build type configuration
koda
parents: 7705
diff changeset
   123
if(CMAKE_BUILD_TYPE MATCHES "DEBUG")
8707
404c18aed69f alignment
koda
parents: 8706
diff changeset
   124
    list(APPEND pascal_flags "-O-" # disable all optimisations
404c18aed69f alignment
koda
parents: 8706
diff changeset
   125
                             "-g"  # enable debug symbols
404c18aed69f alignment
koda
parents: 8706
diff changeset
   126
                             "-gl" # add line info to bt
404c18aed69f alignment
koda
parents: 8706
diff changeset
   127
                             "-gv" # allow valgrind
8555
342f7af2eea5 moar docs update
koda
parents: 8549
diff changeset
   128
                             )
8707
404c18aed69f alignment
koda
parents: 8706
diff changeset
   129
    list(APPEND haskell_flags "-Wall"       # all warnings
404c18aed69f alignment
koda
parents: 8706
diff changeset
   130
                              "-debug"      # debug mode
404c18aed69f alignment
koda
parents: 8706
diff changeset
   131
                              "-dcore-lint" # internal sanity check
8644
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   132
                              )
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   133
else()
8707
404c18aed69f alignment
koda
parents: 8706
diff changeset
   134
    list(APPEND pascal_flags "-Os" # optimise for size
404c18aed69f alignment
koda
parents: 8706
diff changeset
   135
                             "-Xs" # strip binary
404c18aed69f alignment
koda
parents: 8706
diff changeset
   136
                             "-Si" # turn on inlining
8555
342f7af2eea5 moar docs update
koda
parents: 8549
diff changeset
   137
                             )
8707
404c18aed69f alignment
koda
parents: 8706
diff changeset
   138
    list(APPEND haskell_flags "-w" # no warnings
8644
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   139
                              )
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   140
endif()
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   141
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   142
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   143
#lua discovery
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
   144
if (${LUA_SYSTEM})
acb2492288e5 heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents: 9205
diff changeset
   145
    if (NOT LUA_LIBRARY OR NOT LUA_INCLUDE_DIR)
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
   146
        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
   147
    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
   148
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
   149
    if (LUA_LIBRARY AND LUA_INCLUDE_DIR)
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
   150
        set(LUA_FOUND TRUE)
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
   151
    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
   152
        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
   153
    endif()
7223
b554726ff468 uniform NOPNG and NOSERVER cmake symbols
koda
parents: 7220
diff changeset
   154
else()
9214
bcb103c0a34a less cached cmake output
koda
parents: 9213
diff changeset
   155
    if (NOT LUA_LIBRARY OR NOT LUA_INCLUDE_DIR)
bcb103c0a34a less cached cmake output
koda
parents: 9213
diff changeset
   156
        message(STATUS "LUA will be provided by the bundled sources")
bcb103c0a34a less cached cmake output
koda
parents: 9213
diff changeset
   157
    endif()
9213
e3d46d0bc7d0 code typos
koda
parents: 9212
diff changeset
   158
    set(lua_output_name "hwlua")
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   159
    add_subdirectory(misc/liblua)
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
   160
    list(APPEND pascal_flags "-XLAlua=${lua_output_name}" "-dLUA_INTERNAL")
7031
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7030
diff changeset
   161
endif()
7223
b554726ff468 uniform NOPNG and NOSERVER cmake symbols
koda
parents: 7220
diff changeset
   162
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   163
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
   164
#physfs discovery
9096
b3041025c271 fix the cmake flag PHYSFS_SYSTEM being called SYSTEM_PHYSFS in the code
sheepluva
parents: 9091
diff changeset
   165
if (${PHYSFS_SYSTEM})
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
   166
    if (NOT PHYSFS_LIBRARY OR NOT PHYSFS_INCLUDE_DIR)
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
   167
        find_package(PhysFS)
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
   168
    endif()
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
   169
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
   170
    find_file(physfs_h physfs.h ${PHYSFS_INCLUDE_DIR})
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
   171
    if(physfs_h)
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
   172
        file(STRINGS ${physfs_h} physfs_majorversion REGEX "PHYSFS_VER_MAJOR[\t' ']+[0-9]+")
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
   173
        file(STRINGS ${physfs_h} physfs_minorversion REGEX "PHYSFS_VER_MINOR[\t' ']+[0-9]+")
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
   174
        file(STRINGS ${physfs_h} physfs_patchversion REGEX "PHYSFS_VER_PATCH[\t' ']+[0-9]+")
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
   175
        string(REGEX MATCH "([0-9]+)" physfs_majorversion "${physfs_majorversion}")
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
   176
        string(REGEX MATCH "([0-9]+)" physfs_minorversion "${physfs_minorversion}")
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
   177
        string(REGEX MATCH "([0-9]+)" physfs_patchversion "${physfs_patchversion}")
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
   178
        set(physfs_detected_ver "${physfs_majorversion}.${physfs_minorversion}.${physfs_patchversion}")
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
   179
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
   180
        if (physfs_detected_ver VERSION_LESS "2.1.0")
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
   181
            message(FATAL_ERROR "PhysFS version is too old (dected ${physfs_detected_ver}, required 2.1.0)")
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
   182
            set(physfs_too_old true)
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
   183
        endif()
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
   184
    endif()
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
   185
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
   186
    if (NOT PHYSFS_LIBRARY OR NOT PHYSFS_INCLUDE_DIR)
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
   187
        message(FATAL_ERROR "Missing PhysFS! Rerun cmake with -DPHYSFS_SYSTEM=off to build the internal version")
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
   188
    endif()
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
   189
else()
9214
bcb103c0a34a less cached cmake output
koda
parents: 9213
diff changeset
   190
    if (NOT PHYSFS_LIBRARY OR NOT PHYSFS_INCLUDE_DIR)
bcb103c0a34a less cached cmake output
koda
parents: 9213
diff changeset
   191
        message(STATUS "PhysFS will be provided by the bundled sources")
bcb103c0a34a less cached cmake output
koda
parents: 9213
diff changeset
   192
    endif()
9204
1c233176fffd drop the '_'
koda
parents: 9198
diff changeset
   193
    set(physfs_output_name "hwphysfs")
8528
ffd71e99a4f0 and now compile and link properly
koda
parents: 8522
diff changeset
   194
    add_subdirectory(misc/libphysfs)
8558
e96bf10216ef on windows fpc-linking is the funniest of all
koda
parents: 8555
diff changeset
   195
    #-XLA is a beta fpc flag that renames libraries before passing them to the linker
e96bf10216ef on windows fpc-linking is the funniest of all
koda
parents: 8555
diff changeset
   196
    #we also have to pass PHYSFS_INTERNAL to satisfy windows runtime requirements
e96bf10216ef on windows fpc-linking is the funniest of all
koda
parents: 8555
diff changeset
   197
    #(should be harmless on other platforms)
e96bf10216ef on windows fpc-linking is the funniest of all
koda
parents: 8555
diff changeset
   198
    list(APPEND pascal_flags "-XLAphysfs=${physfs_output_name}" "-dPHYSFS_INTERNAL")
8528
ffd71e99a4f0 and now compile and link properly
koda
parents: 8522
diff changeset
   199
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
   200
8688
88a6114a318c even more wrapping with find_package_or_disable_msg
koda
parents: 8687
diff changeset
   201
find_package_or_disable_msg(FFMPEG NOVIDEOREC "Video recording will not be built")
8666
1652c1d9adc8 rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents: 8665
diff changeset
   202
8671
a9957b7797f3 write FindGHC.cmake for haskell stuff
koda
parents: 8669
diff changeset
   203
#physfs helper library
8528
ffd71e99a4f0 and now compile and link properly
koda
parents: 8522
diff changeset
   204
add_subdirectory(misc/libphyslayer)
8283
af97cdbb7713 cmake verbosity/documentation/cleanup/formatting
koda
parents: 8279
diff changeset
   205
8671
a9957b7797f3 write FindGHC.cmake for haskell stuff
koda
parents: 8669
diff changeset
   206
#server
a9957b7797f3 write FindGHC.cmake for haskell stuff
koda
parents: 8669
diff changeset
   207
if(NOT NOSERVER)
a9957b7797f3 write FindGHC.cmake for haskell stuff
koda
parents: 8669
diff changeset
   208
    add_subdirectory(gameServer)
a9957b7797f3 write FindGHC.cmake for haskell stuff
koda
parents: 8669
diff changeset
   209
endif()
a9957b7797f3 write FindGHC.cmake for haskell stuff
koda
parents: 8669
diff changeset
   210
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   211
#main engine
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   212
add_subdirectory(hedgewars)
5053
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   213
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   214
#Android related build scripts
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
   215
if(ANDROID)
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   216
    #run cmake -DANDROID=1 to enable this
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   217
    add_subdirectory(project_files/Android-build)
6025
cac1d5601d7c reviewed the build system and parts of the previous merge, performed some code cleanup
koda
parents: 6023
diff changeset
   218
endif()
5381
8f95038f3f75 Removed protocol check, using CMake now to setup the building scripts using Templates/* removed old scripts
Xeli
parents: 5223
diff changeset
   219
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   220
#TODO: when ANDROID, BUILD_ENGINE_LIBRARY should be set
8082
675372256a01 lotsa hackery to get frontend somehow link libengine...
koda
parents: 8078
diff changeset
   221
if(NOT ANDROID)
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   222
    add_subdirectory(bin)
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   223
    add_subdirectory(QTfrontend)
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   224
    add_subdirectory(share)
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   225
    add_subdirectory(tools)
3515
3e8635f43972 fix cmakefiles to work with mercurial
koda
parents: 3495
diff changeset
   226
endif()
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   227
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   228
9091
bafadc6b4516 change cpack configuration file name so that it's not excluded by 'make package_source'
koda
parents: 9086
diff changeset
   229
include(${CMAKE_MODULE_PATH}/cpackvars.cmake)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   230