CMakeLists.txt
author koda
Wed, 06 Mar 2013 12:12:02 +0100
changeset 8666 1652c1d9adc8
parent 8665 3ff8694d9e22
child 8669 3f9853888d4f
permissions -rw-r--r--
rework ffmpeg/libav/videorec linking and their cmake discovery
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
8104
09c38cdf380d show console on win when debugging to see frontend messages
koda
parents: 8093
diff changeset
     4
cmake_minimum_required(VERSION 2.6.0)
8611
90f445317e8a support WARNING message status on cmake 2.6 (bug 524)
koda
parents: 8597
diff changeset
     5
if(CMAKE_VERSION VERSION_LESS "2.8")
90f445317e8a support WARNING message status on cmake 2.6 (bug 524)
koda
parents: 8597
diff changeset
     6
    set(WARNING "WARNING: ")
90f445317e8a support WARNING message status on cmake 2.6 (bug 524)
koda
parents: 8597
diff changeset
     7
    set(allow_parse_args FALSE)
90f445317e8a support WARNING message status on cmake 2.6 (bug 524)
koda
parents: 8597
diff changeset
     8
else()
90f445317e8a support WARNING message status on cmake 2.6 (bug 524)
koda
parents: 8597
diff changeset
     9
    set(WARNING WARNING)
90f445317e8a support WARNING message status on cmake 2.6 (bug 524)
koda
parents: 8597
diff changeset
    10
    set(allow_parse_args TRUE)
90f445317e8a support WARNING message status on cmake 2.6 (bug 524)
koda
parents: 8597
diff changeset
    11
endif()
8146
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
    12
foreach(hwpolicy CMP0003 CMP0012 CMP0017)
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
    13
    if(POLICY ${hwpolicy})
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
    14
        cmake_policy(SET ${hwpolicy} NEW)
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
    15
    endif()
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
    16
endforeach()
8611
90f445317e8a support WARNING message status on cmake 2.6 (bug 524)
koda
parents: 8597
diff changeset
    17
8087
ccc99eebdac2 little cmake cleanup, search installed modules first, then our own
koda
parents: 8082
diff changeset
    18
#use available modules, fallback to ours if not present (CMP0017 helps)
8640
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
    19
set(CMAKE_MODULE_PATH "${CMAKE_ROOT}/Modules" "${CMAKE_SOURCE_DIR}/cmake_modules")
5405
5b17e1b3e0d5 better variable grouping...
koda
parents: 5223
diff changeset
    20
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
    21
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    22
#possible cmake configuration
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
    23
option(NOSERVER "Disable gameServer build [default: auto]" OFF)
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
    24
option(NOPNG "Disable screenshoot compression [default: auto]" OFF)
8666
1652c1d9adc8 rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents: 8665
diff changeset
    25
option(NOVIDEOREC "Disable video recording [default: 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
    26
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
    27
#set this to ON when 2.1.0 becomes more widespread (and only for linux)
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
    28
option(SYSTEM_PHYSFS "Use system physfs [default:off]" OFF)
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
    29
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
    30
option(BUILD_ENGINE_LIBRARY "Enable hwengine library [default: off]" OFF)
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
    31
option(ANDROID "Enable Android build [default: off]" OFF)
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
    32
option(MINIMAL_FLAGS "Respect system flags as much as possible [default: off]" OFF)
8659
e49056d3aba1 fail if sparkle not found consciously
koda
parents: 8650
diff changeset
    33
if(APPLE)
e49056d3aba1 fail if sparkle not found consciously
koda
parents: 8650
diff changeset
    34
    option(NOAUTOUPDATE "Disable OS X Sparkle update checking" OFF)
e49056d3aba1 fail if sparkle not found consciously
koda
parents: 8650
diff changeset
    35
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
    36
8333
416cb5e5a405 move DATA_INSTALL_DIR to the configurable options section
koda
parents: 8331
diff changeset
    37
set(FPFLAGS "" CACHE STRING "Additional Freepascal flags")
416cb5e5a405 move DATA_INSTALL_DIR to the configurable options section
koda
parents: 8331
diff changeset
    38
set(GHFLAGS "" CACHE STRING "Additional Haskell flags")
416cb5e5a405 move DATA_INSTALL_DIR to the configurable options section
koda
parents: 8331
diff changeset
    39
if(UNIX AND NOT APPLE)
416cb5e5a405 move DATA_INSTALL_DIR to the configurable options section
koda
parents: 8331
diff changeset
    40
    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
    41
endif()
8104
09c38cdf380d show console on win when debugging to see frontend messages
koda
parents: 8093
diff changeset
    42
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
    43
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    44
#detect Mercurial revision and init rev/hash information
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    45
find_program(HGCOMMAND hg)
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    46
if(HGCOMMAND AND (EXISTS ${CMAKE_SOURCE_DIR}/.hg))
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    47
    execute_process(COMMAND ${HGCOMMAND} identify -in
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    48
                    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    49
                    OUTPUT_VARIABLE internal_version
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    50
                    ERROR_QUIET
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    51
                )
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    52
    #check local repo status
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    53
    string(REGEX REPLACE "[^+]" "" HGCHANGED ${internal_version})
8650
18807b6302c8 version variables confom to naming convention
koda
parents: 8646
diff changeset
    54
    string(REGEX REPLACE "[0-9a-zA-Z]+(.*) ([0-9]+)(.*)" "\\2" HEDGEWARS_REVISION ${internal_version})
18807b6302c8 version variables confom to naming convention
koda
parents: 8646
diff changeset
    55
    string(REGEX REPLACE "([0-9a-zA-Z]+)(.*) [0-9]+(.*)" "\\1" HEDGEWARS_HASH ${internal_version})
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
    56
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    57
    if(HGCHANGED)
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    58
        message(${WARNING} "You have uncommitted changes in your repository!")
8146
1fba650c2aa4 GCI2012: Lowercase CMake functions (main files only)
m4tx
parents: 8104
diff changeset
    59
    endif()
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    60
    #let's assume that if you have hg you might be interested in debugging
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    61
    set(default_build_type "DEBUG")
8641
f3aa0d48a600 dump rev and hash in a file to be packed by cpack
koda
parents: 8640
diff changeset
    62
    #write down hash and rev for easy picking should hg be missing
8650
18807b6302c8 version variables confom to naming convention
koda
parents: 8646
diff changeset
    63
    file(WRITE "${CMAKE_SOURCE_DIR}/share/version_info.txt" "Hedgewars versioning information, do not modify\nrev ${HEDGEWARS_REVISION}\nhash ${HEDGEWARS_HASH}\n")
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    64
else()
7709
631852904cee only accept RELASE and DEBUG build type configuration
koda
parents: 7705
diff changeset
    65
    set(default_build_type "RELEASE")
8642
d7062e684466 use rev info from the just created file when configuring without mercurial
koda
parents: 8641
diff changeset
    66
    # when compiling outside rev control, fetch revision and hash information from version_info.txt
d7062e684466 use rev info from the just created file when configuring without mercurial
koda
parents: 8641
diff changeset
    67
    find_file(version_info version_info.txt PATH ${CMAKE_SOURCE_DIR}/share)
d7062e684466 use rev info from the just created file when configuring without mercurial
koda
parents: 8641
diff changeset
    68
    if(version_info)
d7062e684466 use rev info from the just created file when configuring without mercurial
koda
parents: 8641
diff changeset
    69
        file(STRINGS ${version_info} internal_version REGEX "rev")
8650
18807b6302c8 version variables confom to naming convention
koda
parents: 8646
diff changeset
    70
        string(REGEX REPLACE "rev ([0-9]*)" "\\1" HEDGEWARS_REVISION ${internal_version})
8642
d7062e684466 use rev info from the just created file when configuring without mercurial
koda
parents: 8641
diff changeset
    71
        file(STRINGS ${version_info} internal_version REGEX "hash")
8650
18807b6302c8 version variables confom to naming convention
koda
parents: 8646
diff changeset
    72
        string(REGEX REPLACE "hash ([a-zA-Z0-9]*)" "\\1" HEDGEWARS_HASH ${internal_version})
8642
d7062e684466 use rev info from the just created file when configuring without mercurial
koda
parents: 8641
diff changeset
    73
    else()
d7062e684466 use rev info from the just created file when configuring without mercurial
koda
parents: 8641
diff changeset
    74
        message(${WARNING} "${CMAKE_SOURCE_DIR}/share/version_info.txt not found, revision information "
d7062e684466 use rev info from the just created file when configuring without mercurial
koda
parents: 8641
diff changeset
    75
                           "will be incorrect!!! Contact your source provider to fix this!")
8650
18807b6302c8 version variables confom to naming convention
koda
parents: 8646
diff changeset
    76
        set(HEDGEWARS_REVISION "0000")
18807b6302c8 version variables confom to naming convention
koda
parents: 8646
diff changeset
    77
        set(HEDGEWARS_HASH "unknown")
8642
d7062e684466 use rev info from the just created file when configuring without mercurial
koda
parents: 8641
diff changeset
    78
    endif()
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    79
endif()
2672
0f1403bf267a check for sdl_image and sdl_mixer versions
koda
parents: 2671
diff changeset
    80
1107
ee873ada9e86 Supress CMake warning
unc0rr
parents: 1074
diff changeset
    81
5405
5b17e1b3e0d5 better variable grouping...
koda
parents: 5223
diff changeset
    82
#versioning
5407
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
    83
set(CPACK_PACKAGE_VERSION_MAJOR 0)
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
    84
set(CPACK_PACKAGE_VERSION_MINOR 9)
8613
82c649dfc7c3 split cVersionString into its three separate components (version, revision, hash) and apply the new values sensibly on the frontend (esp. title, info and feedback)
koda
parents: 8611
diff changeset
    85
set(CPACK_PACKAGE_VERSION_PATCH 19)
7960
99d5af6997dd bad koda
nemo
parents: 7933
diff changeset
    86
set(HEDGEWARS_PROTO_VER 44)
5407
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
    87
set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
5405
5b17e1b3e0d5 better variable grouping...
koda
parents: 5223
diff changeset
    88
8650
18807b6302c8 version variables confom to naming convention
koda
parents: 8646
diff changeset
    89
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
    90
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    91
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    92
#where to build libs and bins
8316
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8313
diff changeset
    93
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8313
diff changeset
    94
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8313
diff changeset
    95
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
    96
#resource paths
8316
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8313
diff changeset
    97
if(UNIX AND NOT APPLE)
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8313
diff changeset
    98
    set(target_binary_install_dir "bin")
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8313
diff changeset
    99
    set(target_library_install_dir "lib")
8646
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   100
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   101
    string(SUBSTRING "${DATA_INSTALL_DIR}" 0 1 sharepath_start)
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   102
    if (NOT (${sharepath_start} MATCHES "/"))
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   103
        set(HEDGEWARS_DATADIR "${CMAKE_INSTALL_PREFIX}/${DATA_INSTALL_DIR}/")
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   104
    else()
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   105
        set(HEDGEWARS_DATADIR "${DATA_INSTALL_DIR}/")
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   106
    endif()
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   107
    set(HEDGEWARS_FULL_DATADIR "${HEDGEWARS_DATADIR}")
7718
97ba379164ec use cmake OPTION for arguments and further cleanup on CMakeFiles
koda
parents: 7709
diff changeset
   108
else()
8316
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8313
diff changeset
   109
    set(target_binary_install_dir "./")
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8313
diff changeset
   110
8317
ec9f94ab2737 remove the CROSSAPPLE option until a better solution is found
koda
parents: 8316
diff changeset
   111
    if(APPLE)
8646
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   112
        set(target_library_install_dir "../Frameworks/")
8316
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8313
diff changeset
   113
        set(CMAKE_INSTALL_PREFIX "Hedgewars.app/Contents/MacOS/")
8646
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   114
        set(HEDGEWARS_DATADIR "../Resources/")
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   115
        set(HEDGEWARS_FULL_DATADIR "/Applications/${CMAKE_INSTALL_PREFIX}/${HEDGEWARS_DATADIR}")
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   116
    elseif(WIN32)
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   117
        set(target_library_install_dir "./")
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   118
        set(HEDGEWARS_DATADIR "./")
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   119
        set(HEDGEWARS_FULL_DATADIR "${CMAKE_INSTALL_PREFIX}/")
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   120
        set(CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/misc/winutils/")
e31044b7fbba on linux assume datapath is always relative to cmake_install_prefix, unless you provide an absolute path; on win32/osx hardcode engine path to default installation prefixes (it gets overridden at runtime so it works even if you move the data folder)
koda
parents: 8644
diff changeset
   121
        link_directories("${EXECUTABLE_OUTPUT_PATH}" "${CMAKE_SOURCE_DIR}/misc/winutils/bin")
8316
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8313
diff changeset
   122
    endif()
7256
5b97b9946cde CROSSAPPLE ftw
koda
parents: 7233
diff changeset
   123
endif()
5b97b9946cde CROSSAPPLE ftw
koda
parents: 7233
diff changeset
   124
8316
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8313
diff changeset
   125
7256
5b97b9946cde CROSSAPPLE ftw
koda
parents: 7233
diff changeset
   126
if(APPLE)
5b97b9946cde CROSSAPPLE ftw
koda
parents: 7233
diff changeset
   127
    set(CMAKE_FIND_FRAMEWORK "FIRST")
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3677
diff changeset
   128
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   129
    #what system are we building for
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   130
    set(minimum_macosx_version $ENV{MACOSX_DEPLOYMENT_TARGET})
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3677
diff changeset
   131
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   132
    #detect on which system we are: if sw_vers cannot be found for any reason (re)use minimum_macosx_version
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   133
    find_program(sw_vers sw_vers)
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   134
    if(sw_vers)
8093
2286a39140da moar cmake cleanup, use message(WARNING ...) where appropriate
koda
parents: 8090
diff changeset
   135
        execute_process(COMMAND ${sw_vers} "-productVersion"
2286a39140da moar cmake cleanup, use message(WARNING ...) where appropriate
koda
parents: 8090
diff changeset
   136
                        OUTPUT_VARIABLE current_macosx_version
2286a39140da moar cmake cleanup, use message(WARNING ...) where appropriate
koda
parents: 8090
diff changeset
   137
                        OUTPUT_STRIP_TRAILING_WHITESPACE)
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   138
        string(REGEX REPLACE "([0-9]+.[0-9]+).[0-9]+" "\\1" current_macosx_version ${current_macosx_version})
8093
2286a39140da moar cmake cleanup, use message(WARNING ...) where appropriate
koda
parents: 8090
diff changeset
   139
    else()
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   140
        if(NOT minimum_macosx_version)
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   141
            message(FATAL_ERROR "sw_vers not found! Need explicit MACOSX_DEPLOYMENT_TARGET variable set")
7114
e0110a1229b7 add NOPNG to cmake to explicitly disable PNG dependency
koda
parents: 7113
diff changeset
   142
        else()
8611
90f445317e8a support WARNING message status on cmake 2.6 (bug 524)
koda
parents: 8597
diff changeset
   143
            message(${WARNING} "sw_vers not found! Fallback to MACOSX_DEPLOYMENT_TARGET variable")
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   144
            set(current_macosx_version ${minimum_macosx_version})
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   145
        endif()
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   146
    endif()
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
   147
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   148
    #if nothing is set, we deploy only for the current system
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   149
    if(NOT minimum_macosx_version)
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   150
        set(minimum_macosx_version ${current_macosx_version})
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   151
    endif()
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
   152
8093
2286a39140da moar cmake cleanup, use message(WARNING ...) where appropriate
koda
parents: 8090
diff changeset
   153
    #lower systems don't have enough processing power anyway
8279
c03d64969112 less linking needed, raise minimum_osx_version when videorec is enabled
koda
parents: 8272
diff changeset
   154
    if (minimum_macosx_version VERSION_LESS "10.4")
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   155
        message(FATAL_ERROR "Hedgewars is not supported on Mac OS X pre-10.4")
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   156
    endif()
2929
dd4efe601bc6 restore tiger 10.4 deployment
koda
parents: 2834
diff changeset
   157
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   158
    #workaround for http://playcontrol.net/ewing/jibberjabber/big_behind-the-scenes_chang.html#SDL_mixer (Update 2)
8279
c03d64969112 less linking needed, raise minimum_osx_version when videorec is enabled
koda
parents: 8272
diff changeset
   159
    if(current_macosx_version VERSION_EQUAL "10.4")
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   160
        find_package(SDL_mixer REQUIRED)
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   161
        set(DYLIB_SMPEG "-dylib_file @loader_path/Frameworks/smpeg.framework/Versions/A/smpeg:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/smpeg.framework/Versions/A/smpeg")
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   162
        set(DYLIB_MIKMOD "-dylib_file @loader_path/Frameworks/mikmod.framework/Versions/A/mikmod:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/mikmod.framework/Versions/A/mikmod")
8348
c039ac6f33e0 don't discard older cmake_c_flags
koda
parents: 8347
diff changeset
   163
        set(CMAKE_C_FLAGS "${DYLIB_SMPEG} ${DYLIB_MIKMOD}")
8347
716c05f19401 GCI2012: CMake List Append
Willie Zhu
parents: 8333
diff changeset
   164
        list(APPEND pascal_flags "-k${DYLIB_SMPEG}" "-k${DYLIB_MIKMOD}")
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   165
    endif()
7114
e0110a1229b7 add NOPNG to cmake to explicitly disable PNG dependency
koda
parents: 7113
diff changeset
   166
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   167
    #CMAKE_OSX_ARCHITECTURES and CMAKE_OSX_SYSROOT need to be set for universal binary and correct linking
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   168
    if(NOT CMAKE_OSX_ARCHITECTURES)
8279
c03d64969112 less linking needed, raise minimum_osx_version when videorec is enabled
koda
parents: 8272
diff changeset
   169
        if(current_macosx_version VERSION_LESS "10.6")
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   170
            if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "powerpc*")
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   171
                set(CMAKE_OSX_ARCHITECTURES "ppc7400")
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   172
            else()
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   173
                set(CMAKE_OSX_ARCHITECTURES "i386")
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   174
            endif()
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   175
        else()
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   176
            set(CMAKE_OSX_ARCHITECTURES "x86_64")
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   177
        endif()
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   178
    endif()
5053
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   179
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   180
    #CMAKE_OSX_SYSROOT is set at the system version we are supposed to build on
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   181
    #we need to provide the correct one when host and target differ
8279
c03d64969112 less linking needed, raise minimum_osx_version when videorec is enabled
koda
parents: 8272
diff changeset
   182
    if(NOT ${minimum_macosx_version} VERSION_EQUAL ${current_macosx_version})
c03d64969112 less linking needed, raise minimum_osx_version when videorec is enabled
koda
parents: 8272
diff changeset
   183
        if(minimum_macosx_version VERSION_EQUAL "10.4")
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   184
            set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.4u.sdk/")
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   185
            set(CMAKE_C_COMPILER "gcc-4.0")
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   186
            set(CMAKE_CXX_COMPILER "g++-4.0")
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   187
        else()
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   188
            string(REGEX REPLACE "([0-9]+.[0-9]+).[0-9]+" "\\1" sdk_version ${minimum_macosx_version})
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   189
            set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX${sdk_version}.sdk/")
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   190
        endif()
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   191
    endif()
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
   192
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   193
    #add user framework directory, other paths can be passed via FPFLAGS
8347
716c05f19401 GCI2012: CMake List Append
Willie Zhu
parents: 8333
diff changeset
   194
    list(APPEND pascal_flags "-Ff~/Library/Frameworks")
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   195
    #set deployment target
8347
716c05f19401 GCI2012: CMake List Append
Willie Zhu
parents: 8333
diff changeset
   196
    list(APPEND pascal_flags "-k-macosx_version_min" "-k${minimum_macosx_version}" "-XR${CMAKE_OSX_SYSROOT}")
2015
d2848d723690 koda's patch
unc0rr
parents: 2005
diff changeset
   197
endif(APPLE)
d2848d723690 koda's patch
unc0rr
parents: 2005
diff changeset
   198
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
   199
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   200
#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
   201
if (CMAKE_BUILD_TYPE)
631852904cee only accept RELASE and DEBUG build type configuration
koda
parents: 7705
diff changeset
   202
    string (TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE)
631852904cee only accept RELASE and DEBUG build type configuration
koda
parents: 7705
diff changeset
   203
    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
   204
        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
   205
        message (STATUS "Unknown build type, using default (${default_build_type})")
631852904cee only accept RELASE and DEBUG build type configuration
koda
parents: 7705
diff changeset
   206
    endif ()
631852904cee only accept RELASE and DEBUG build type configuration
koda
parents: 7705
diff changeset
   207
else (CMAKE_BUILD_TYPE)
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
   208
    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
   209
endif (CMAKE_BUILD_TYPE)
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   210
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
   211
7944
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
   212
#set default flags values for all projects (unless MINIMAL_FLAGS is true)
8347
716c05f19401 GCI2012: CMake List Append
Willie Zhu
parents: 8333
diff changeset
   213
if(NOT ${MINIMAL_FLAGS})
8348
c039ac6f33e0 don't discard older cmake_c_flags
koda
parents: 8347
diff changeset
   214
    set(CMAKE_C_FLAGS "-pipe ${CMAKE_C_FLAGS}")
c039ac6f33e0 don't discard older cmake_c_flags
koda
parents: 8347
diff changeset
   215
    set(CMAKE_C_FLAGS_RELEASE "-w -Os -fomit-frame-pointer ${CMAKE_C_FLAGS_RELEASE}")
c039ac6f33e0 don't discard older cmake_c_flags
koda
parents: 8347
diff changeset
   216
    set(CMAKE_C_FLAGS_DEBUG "-Wall -O0 -g -DDEBUG ${CMAKE_C_FLAGS_DEBUG}")
7944
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
   217
    set(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS})
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
   218
    set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
   219
    set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
   220
else()
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
   221
    #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
   222
    set(CMAKE_C_FLAGS_RELEASE "")
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
   223
    set(CMAKE_C_FLAGS_DEBUG "-Wall -DDEBUG")
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
   224
    set(CMAKE_CXX_FLAGS_RELEASE "")
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
   225
    set(CMAKE_CXX_FLAGS_DEBUG "-Wall -DDEBUG")
a94f4ef5ba2b play nicer with system flags
hasufell
parents: 7933
diff changeset
   226
endif()
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   227
8665
3ff8694d9e22 rewritten findfreepascal, moved checkstack code elsewhere
koda
parents: 8659
diff changeset
   228
#TODO: find out why we need this...
3ff8694d9e22 rewritten findfreepascal, moved checkstack code elsewhere
koda
parents: 8659
diff changeset
   229
include(CheckCSourceCompiles)
3ff8694d9e22 rewritten findfreepascal, moved checkstack code elsewhere
koda
parents: 8659
diff changeset
   230
set(CMAKE_REQUIRED_FLAG "-Wl,-z -Wl,noexecstack")
3ff8694d9e22 rewritten findfreepascal, moved checkstack code elsewhere
koda
parents: 8659
diff changeset
   231
check_c_source_compiles("int main(void) { return 0; }" HAVE_NOEXECSTACK)
3ff8694d9e22 rewritten findfreepascal, moved checkstack code elsewhere
koda
parents: 8659
diff changeset
   232
if(HAVE_NOEXECSTACK)
3ff8694d9e22 rewritten findfreepascal, moved checkstack code elsewhere
koda
parents: 8659
diff changeset
   233
    list(APPEND pascal_flags "-k-z" "-knoexecstack")
3ff8694d9e22 rewritten findfreepascal, moved checkstack code elsewhere
koda
parents: 8659
diff changeset
   234
    if(NOT ${MINIMAL_FLAGS})
3ff8694d9e22 rewritten findfreepascal, moved checkstack code elsewhere
koda
parents: 8659
diff changeset
   235
        set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_REQUIRED_FLAG}")
3ff8694d9e22 rewritten findfreepascal, moved checkstack code elsewhere
koda
parents: 8659
diff changeset
   236
    endif()
3ff8694d9e22 rewritten findfreepascal, moved checkstack code elsewhere
koda
parents: 8659
diff changeset
   237
endif()
3ff8694d9e22 rewritten findfreepascal, moved checkstack code elsewhere
koda
parents: 8659
diff changeset
   238
unset(CMAKE_REQUIRED_FLAG)
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
   239
7397
833fc211ca2d allow FPFLAGS and GHFLAGS only in cmakes able to support them
koda
parents: 7264
diff changeset
   240
#parse additional parameters
833fc211ca2d allow FPFLAGS and GHFLAGS only in cmakes able to support them
koda
parents: 7264
diff changeset
   241
if(FPFLAGS OR GHFLAGS)
8611
90f445317e8a support WARNING message status on cmake 2.6 (bug 524)
koda
parents: 8597
diff changeset
   242
    if(${allow_parse_args})
90f445317e8a support WARNING message status on cmake 2.6 (bug 524)
koda
parents: 8597
diff changeset
   243
        message(${WARNING} "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
   244
    else()
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   245
        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
   246
        separate_arguments(ghflags_parsed UNIX_COMMAND ${GHFLAGS})
7397
833fc211ca2d allow FPFLAGS and GHFLAGS only in cmakes able to support them
koda
parents: 7264
diff changeset
   247
    endif()
833fc211ca2d allow FPFLAGS and GHFLAGS only in cmakes able to support them
koda
parents: 7264
diff changeset
   248
endif()
833fc211ca2d allow FPFLAGS and GHFLAGS only in cmakes able to support them
koda
parents: 7264
diff changeset
   249
8597
00adaf34d2a3 physfs strikes back
koda
parents: 8558
diff changeset
   250
list(APPEND pascal_flags ${fpflags_parsed}        # user flags
00adaf34d2a3 physfs strikes back
koda
parents: 8558
diff changeset
   251
                 "-vm4079,4080,4081"              # fpc output format
00adaf34d2a3 physfs strikes back
koda
parents: 8558
diff changeset
   252
                 "-B"                             # compile all units
00adaf34d2a3 physfs strikes back
koda
parents: 8558
diff changeset
   253
                 "-FE${PROJECT_BINARY_DIR}/bin"   # fpc output directory
00adaf34d2a3 physfs strikes back
koda
parents: 8558
diff changeset
   254
                 "-Fl${PROJECT_BINARY_DIR}/bin"   # fpc linking directory (win/unix)
00adaf34d2a3 physfs strikes back
koda
parents: 8558
diff changeset
   255
                 "-k-L${PROJECT_BINARY_DIR}/bin"  # ld linking directory (unix/osx)
00adaf34d2a3 physfs strikes back
koda
parents: 8558
diff changeset
   256
                 "-Cs2000000"                     # stack size
00adaf34d2a3 physfs strikes back
koda
parents: 8558
diff changeset
   257
                 "-vewnq"                         # fpc output verbosity
00adaf34d2a3 physfs strikes back
koda
parents: 8558
diff changeset
   258
                 "-dDEBUGFILE"                    # macro for engine output
8283
af97cdbb7713 cmake verbosity/documentation/cleanup/formatting
koda
parents: 8279
diff changeset
   259
                 )
8644
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   260
list(APPEND haskell_flags ${ghflags_parsed}       # user flags
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   261
                 "-O2"                            # optimise for faster code
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   262
                 )
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   263
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
   264
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   265
#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
   266
message(STATUS "Using ${CMAKE_BUILD_TYPE} configuration")
7709
631852904cee only accept RELASE and DEBUG build type configuration
koda
parents: 7705
diff changeset
   267
if(CMAKE_BUILD_TYPE MATCHES "DEBUG")
8644
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   268
    list(APPEND pascal_flags "-O-"                # disable all optimisations
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   269
                             "-g"                 # enable debug symbols
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   270
                             "-gl"                # add line info to bt
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   271
                             "-gv"                # allow valgrind
8555
342f7af2eea5 moar docs update
koda
parents: 8549
diff changeset
   272
                             )
8644
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   273
    list(APPEND haskell_flags "-Wall"             # all warnings
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   274
                              "-debug"            # debug mode
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   275
                              "-dcore-lint"       # internal sanity check
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   276
                              )
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   277
else()
8644
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   278
    list(APPEND pascal_flags "-Os"                # optimise for size
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   279
                             "-Xs"                # strip binary
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   280
                             "-Si"                # turn on inlining
8555
342f7af2eea5 moar docs update
koda
parents: 8549
diff changeset
   281
                             )
8644
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   282
    list(APPEND haskell_flags "-w"                # no warnings
62756eb6fe9c typo and doc
koda
parents: 8642
diff changeset
   283
                              )
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   284
endif()
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   285
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   286
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
   287
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   288
#server discovery
7223
b554726ff468 uniform NOPNG and NOSERVER cmake symbols
koda
parents: 7220
diff changeset
   289
if(NOT NOSERVER)
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   290
    if(GHC)
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   291
        set(ghc_executable ${GHC})
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   292
    else()
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   293
        find_program(ghc_executable ghc)
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   294
    endif()
5053
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   295
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   296
    if(ghc_executable)
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   297
        add_subdirectory(gameServer)
7718
97ba379164ec use cmake OPTION for arguments and further cleanup on CMakeFiles
koda
parents: 7709
diff changeset
   298
        message(STATUS "Found GHC: ${ghc_executable}")
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   299
    else()
8611
90f445317e8a support WARNING message status on cmake 2.6 (bug 524)
koda
parents: 8597
diff changeset
   300
        message(${WARNING} "Could NOT find GHC, server will not be built")
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   301
        set(HAVE_NETSERVER false)
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   302
    endif()
7223
b554726ff468 uniform NOPNG and NOSERVER cmake symbols
koda
parents: 7220
diff changeset
   303
else()
b554726ff468 uniform NOPNG and NOSERVER cmake symbols
koda
parents: 7220
diff changeset
   304
    message(STATUS "Server will not be built per user request")
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   305
    set(HAVE_NETSERVER false)
7223
b554726ff468 uniform NOPNG and NOSERVER cmake symbols
koda
parents: 7220
diff changeset
   306
endif()
1415
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1370
diff changeset
   307
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   308
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   309
#lua discovery
7031
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7030
diff changeset
   310
find_package(Lua)
7233
225179f64fd8 LUA_FOUND should surely be set only if the system lua was found.
nemo
parents: 7226
diff changeset
   311
if(LUA_FOUND)
7817
6cc558a69b58 countless small optimisation for cmake, output messages are now coherent (mostly) and the options get fully respected (eg. skipping library search if not activated)
koda
parents: 7816
diff changeset
   312
    message(STATUS "Found LUA: ${LUA_DEFAULT}")
7223
b554726ff468 uniform NOPNG and NOSERVER cmake symbols
koda
parents: 7220
diff changeset
   313
else()
7817
6cc558a69b58 countless small optimisation for cmake, output messages are now coherent (mostly) and the options get fully respected (eg. skipping library search if not activated)
koda
parents: 7816
diff changeset
   314
    message(STATUS "LUA will be provided by the bundled sources")
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   315
    add_subdirectory(misc/liblua)
8093
2286a39140da moar cmake cleanup, use message(WARNING ...) where appropriate
koda
parents: 8090
diff changeset
   316
    #linking with liblua.a requires system readline
8347
716c05f19401 GCI2012: CMake List Append
Willie Zhu
parents: 8333
diff changeset
   317
    list(APPEND pascal_flags "-k${EXECUTABLE_OUTPUT_PATH}/lib${LUA_LIBRARY}.a" "-k-lreadline")
7031
d5ea24399a48 when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents: 7030
diff changeset
   318
endif()
7223
b554726ff468 uniform NOPNG and NOSERVER cmake symbols
koda
parents: 7220
diff changeset
   319
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   320
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
   321
#physfs discovery
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
   322
if (${SYSTEM_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
   323
    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
   324
        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
   325
    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
   326
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
   327
    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
   328
    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
   329
        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
   330
        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
   331
        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
   332
        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
   333
        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
   334
        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
   335
        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
   336
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
   337
        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
   338
            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
   339
            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
   340
        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
   341
    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
   342
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
   343
    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
   344
        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
   345
    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
   346
else()
8528
ffd71e99a4f0 and now compile and link properly
koda
parents: 8522
diff changeset
   347
    message(STATUS "PhysFS will be provided by the bundled sources")
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
   348
    set(physfs_output_name "hw_physfs")
8528
ffd71e99a4f0 and now compile and link properly
koda
parents: 8522
diff changeset
   349
    add_subdirectory(misc/libphysfs)
8558
e96bf10216ef on windows fpc-linking is the funniest of all
koda
parents: 8555
diff changeset
   350
    #-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
   351
    #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
   352
    #(should be harmless on other platforms)
e96bf10216ef on windows fpc-linking is the funniest of all
koda
parents: 8555
diff changeset
   353
    list(APPEND pascal_flags "-XLAphysfs=${physfs_output_name}" "-dPHYSFS_INTERNAL")
8528
ffd71e99a4f0 and now compile and link properly
koda
parents: 8522
diff changeset
   354
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
   355
8666
1652c1d9adc8 rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents: 8665
diff changeset
   356
if(NOT ${NOVIDEOREC})
1652c1d9adc8 rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents: 8665
diff changeset
   357
    find_package(FFMPEG)
1652c1d9adc8 rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents: 8665
diff changeset
   358
    if(NOT ${FFMPEG_FOUND})
1652c1d9adc8 rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents: 8665
diff changeset
   359
        message(FATAL_ERROR "Missing FFMPEG/Libav! Rerun cmake with -DNOVIDEOREC=on to disable video recording")
1652c1d9adc8 rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents: 8665
diff changeset
   360
    endif()
1652c1d9adc8 rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents: 8665
diff changeset
   361
else()
1652c1d9adc8 rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents: 8665
diff changeset
   362
    set(FFMPEG_FOUND false)
1652c1d9adc8 rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents: 8665
diff changeset
   363
endif()
1652c1d9adc8 rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents: 8665
diff changeset
   364
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
   365
#
8528
ffd71e99a4f0 and now compile and link properly
koda
parents: 8522
diff changeset
   366
add_subdirectory(misc/libphyslayer)
8283
af97cdbb7713 cmake verbosity/documentation/cleanup/formatting
koda
parents: 8279
diff changeset
   367
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   368
#main engine
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   369
add_subdirectory(hedgewars)
5053
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   370
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   371
#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
   372
if(ANDROID)
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   373
    #run cmake -DANDROID=1 to enable this
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   374
    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
   375
endif()
5381
8f95038f3f75 Removed protocol check, using CMake now to setup the building scripts using Templates/* removed old scripts
Xeli
parents: 5223
diff changeset
   376
7705
15f5d3cd35c6 force a DEBUG build when HW_DEV is true, some CMakeLists.txt cleanup/commenting
koda
parents: 7704
diff changeset
   377
#TODO: when ANDROID, BUILD_ENGINE_LIBRARY should be set
8082
675372256a01 lotsa hackery to get frontend somehow link libengine...
koda
parents: 8078
diff changeset
   378
if(NOT ANDROID)
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   379
    add_subdirectory(bin)
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   380
    add_subdirectory(QTfrontend)
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   381
    add_subdirectory(share)
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   382
    add_subdirectory(tools)
3515
3e8635f43972 fix cmakefiles to work with mercurial
koda
parents: 3495
diff changeset
   383
endif()
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   384
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   385
8614
5f74a047cf2c drop useless option, automatically set revision and debug info
koda
parents: 8613
diff changeset
   386
5405
5b17e1b3e0d5 better variable grouping...
koda
parents: 5223
diff changeset
   387
# CPack variables
3338
dee9beba85cc patch by raptor (polished by me) to allow tiger/xcode24 compilation
koda
parents: 3306
diff changeset
   388
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Hedgewars, a free turn-based strategy")
2827
45817d8386c7 Engine:
smxx
parents: 2822
diff changeset
   389
set(CPACK_PACKAGE_VENDOR "Hedgewars Project")
907
a5b0b93a39c8 Use constant generated by cmake for version string
unc0rr
parents: 904
diff changeset
   390
set(CPACK_PACKAGE_FILE_NAME "hedgewars-${HEDGEWARS_VERSION}")
a5b0b93a39c8 Use constant generated by cmake for version string
unc0rr
parents: 904
diff changeset
   391
set(CPACK_SOURCE_PACKAGE_FILE_NAME "hedgewars-src-${HEDGEWARS_VERSION}")
1459
cf6fa7c9cf45 Fix generator name (TBZ2 instead of BZ2)
unc0rr
parents: 1458
diff changeset
   392
set(CPACK_SOURCE_GENERATOR "TBZ2")
1173
70b0acd4548c Revert accidental nsis installer generator regression
unc0rr
parents: 1159
diff changeset
   393
set(CPACK_PACKAGE_EXECUTABLES "hedgewars" "hedgewars")
458
5880af7b530a Fix build
unc0rr
parents: 360
diff changeset
   394
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
907
a5b0b93a39c8 Use constant generated by cmake for version string
unc0rr
parents: 904
diff changeset
   395
set(CPACK_PACKAGE_INSTALL_DIRECTORY "Hedgewars ${HEDGEWARS_VERSION}")
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   396
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   397
if(WIN32 AND NOT UNIX)
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   398
    set(CPACK_NSIS_DISPLAY_NAME "Hedgewars")
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   399
    set(CPACK_NSIS_HELP_LINK "http://www.hedgewars.org/")
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   400
    set(CPACK_NSIS_URL_INFO_ABOUT "http://www.hedgewars.org/")
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   401
    set(CPACK_NSIS_CONTACT "unC0Rr@gmail.com")
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   402
    set(CPACK_NSIS_MODIFY_PATH OFF)
8316
89232b2fa1d6 cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents: 8313
diff changeset
   403
    set(CPACK_NSIS_EXECUTABLES_DIRECTORY "${target_binary_install_dir}")
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   404
    set(CPACK_GENERATOR "ZIP;NSIS")
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   405
    set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "hedgewars")
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   406
else(WIN32 AND NOT UNIX)
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   407
    set(CPACK_STRIP_FILES "bin/hedgewars;bin/hwengine")
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   408
endif(WIN32 AND NOT UNIX)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   409
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   410
set(CPACK_SOURCE_IGNORE_FILES
8640
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   411
    #temporary files
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   412
    "~"
8640
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   413
    ".swp"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   414
    #version control
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   415
    "\\\\.hg"
8640
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   416
    #output binary/library
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   417
    "\\\\.exe$"
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   418
    "\\\\.a$"
8640
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   419
    "\\\\.so$"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   420
    "\\\\.dylib$"
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   421
    "\\\\.dll$"
8640
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   422
    "\\\\.ppu$"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   423
    "\\\\.o$"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   424
    "\\\\.cxx$"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   425
    #graphics
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   426
    "\\\\.xcf$"
8640
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   427
    "\\\\.svg$"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   428
    "\\\\.svgz$"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   429
    "\\\\.psd$"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   430
    "\\\\.sifz$"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   431
    #misc
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   432
    "\\\\.core$"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   433
    "\\\\.sh$"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   434
    "\\\\.orig$"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   435
    "\\\\.layout$"
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   436
    "\\\\.db$"
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   437
    "\\\\.dof$"
8640
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   438
    #archives
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   439
    "\\\\.zip$"
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   440
    "\\\\.gz$"
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   441
    "\\\\.bz2$"
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   442
    "\\\\.tmp$"
8640
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   443
    #cmake-configured files
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   444
    "hwconsts\\\\.cpp$"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   445
    "config\\\\.inc$"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   446
    "hwengine\\\\.desktop$"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   447
    "Info\\\\.plist$"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   448
    #other cmake generated files
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   449
    "Makefile"
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   450
    "Doxyfile"
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   451
    "CMakeFiles"
8640
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   452
    "[dD]ebug$"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   453
    "[rR]elease$"
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   454
    "CPack"
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   455
    "cmake_install\\\\.cmake$"
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   456
    "CMakeCache\\\\.txt$"
8640
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   457
#    "^${CMAKE_CURRENT_SOURCE_DIR}/misc/libtremor"
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   458
#    "^${CMAKE_CURRENT_SOURCE_DIR}/misc/libfreetype"
8640
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   459
#    "^${CMAKE_CURRENT_SOURCE_DIR}/misc/liblua"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   460
    "^${CMAKE_CURRENT_SOURCE_DIR}/misc/libopenalbridge"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   461
    "^${CMAKE_CURRENT_SOURCE_DIR}/project_files/frontlib"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   462
    "^${CMAKE_CURRENT_SOURCE_DIR}/project_files/promotional_art"
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   463
    "^${CMAKE_CURRENT_SOURCE_DIR}/project_files/cmdlineClient"
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   464
    "^${CMAKE_CURRENT_SOURCE_DIR}/tools/templates"
8640
75d42abc9375 adjust cpack ignored files (libraries, mobile project files and win res files are still necessary)
koda
parents: 8636
diff changeset
   465
    "^${CMAKE_CURRENT_SOURCE_DIR}/bin/checkstack*"
7220
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   466
    "^${CMAKE_CURRENT_SOURCE_DIR}/doc"
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   467
    "^${CMAKE_CURRENT_SOURCE_DIR}/templates"
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   468
    "^${CMAKE_CURRENT_SOURCE_DIR}/tmp"
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   469
    "^${CMAKE_CURRENT_SOURCE_DIR}/utils"
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   470
    "^${CMAKE_CURRENT_SOURCE_DIR}/share/hedgewars/Data/Maps/test"
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   471
    "^${CMAKE_CURRENT_SOURCE_DIR}/install_manifest.txt"
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   472
    "^${CMAKE_CURRENT_SOURCE_DIR}/CMakeCache.txt"
dfe678f129e4 sed 's/\t/ /g' CMakeLists.txt
koda
parents: 7114
diff changeset
   473
    "^${CMAKE_CURRENT_SOURCE_DIR}/hedgewars\\\\."
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   474
)
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   475
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   476
include(CPack)
5407
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
   477