cmake_modules/platform.cmake
author Wuzzy <Wuzzy2@mail.ru>
Mon, 16 Sep 2019 17:33:49 +0200
changeset 15410 8504fee3b601
parent 15312 5b2dec63f4cf
permissions -rw-r--r--
Racer: Fix weird water splashes after waypoint placement Does not affect official racer, as only waypoint placement is touched. The reason was that the air attack gear sometimes was not deleted fast enough so it might occassionally drop some air bombs (these are deleted now). Also, the airplane position was set to water level, which caused another water splash.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
     1
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
     2
if(APPLE)
15312
5b2dec63f4cf Fix compiling on MacOS X by requiring c++11 standard. Building now requires MacOS X 10.8+ and CMake 3.9+
raptor <buckyballreaction@gmail.com>
parents: 11362
diff changeset
     3
    #minimum for macOS.  sorry!
5b2dec63f4cf Fix compiling on MacOS X by requiring c++11 standard. Building now requires MacOS X 10.8+ and CMake 3.9+
raptor <buckyballreaction@gmail.com>
parents: 11362
diff changeset
     4
    cmake_minimum_required(VERSION 3.9.0)
5b2dec63f4cf Fix compiling on MacOS X by requiring c++11 standard. Building now requires MacOS X 10.8+ and CMake 3.9+
raptor <buckyballreaction@gmail.com>
parents: 11362
diff changeset
     5
5b2dec63f4cf Fix compiling on MacOS X by requiring c++11 standard. Building now requires MacOS X 10.8+ and CMake 3.9+
raptor <buckyballreaction@gmail.com>
parents: 11362
diff changeset
     6
    #set c++11 standard for QT requirements
5b2dec63f4cf Fix compiling on MacOS X by requiring c++11 standard. Building now requires MacOS X 10.8+ and CMake 3.9+
raptor <buckyballreaction@gmail.com>
parents: 11362
diff changeset
     7
    set(CMAKE_CXX_STANDARD 11)
5b2dec63f4cf Fix compiling on MacOS X by requiring c++11 standard. Building now requires MacOS X 10.8+ and CMake 3.9+
raptor <buckyballreaction@gmail.com>
parents: 11362
diff changeset
     8
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
5b2dec63f4cf Fix compiling on MacOS X by requiring c++11 standard. Building now requires MacOS X 10.8+ and CMake 3.9+
raptor <buckyballreaction@gmail.com>
parents: 11362
diff changeset
     9
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++")
9517
217eacb69395 fail early when an incompatible cmake version is found
koda
parents: 9339
diff changeset
    10
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    11
    set(CMAKE_FIND_FRAMEWORK "FIRST")
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    12
9268
8a9075ed0aab use add_flag_append more, correctly set a few flags
koda
parents: 9219
diff changeset
    13
    #what system are we building for
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    14
    set(minimum_macosx_version $ENV{MACOSX_DEPLOYMENT_TARGET})
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    15
9268
8a9075ed0aab use add_flag_append more, correctly set a few flags
koda
parents: 9219
diff changeset
    16
    #detect on which system we are: if sw_vers cannot be found for any reason (re)use minimum_macosx_version
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    17
    find_program(sw_vers sw_vers)
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    18
    if(sw_vers)
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    19
        execute_process(COMMAND ${sw_vers} "-productVersion"
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    20
                        OUTPUT_VARIABLE current_macosx_version
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    21
                        OUTPUT_STRIP_TRAILING_WHITESPACE)
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    22
        string(REGEX REPLACE "([0-9]+.[0-9]+).[0-9]+" "\\1" current_macosx_version ${current_macosx_version})
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    23
    else()
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    24
        if(NOT minimum_macosx_version)
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    25
            message(FATAL_ERROR "sw_vers not found! Need explicit MACOSX_DEPLOYMENT_TARGET variable set")
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    26
        else()
9151
1d2df388fcc6 simplify cmake message syntax a little bit
koda
parents: 9150
diff changeset
    27
            message("*** sw_vers not found! Fallback to MACOSX_DEPLOYMENT_TARGET variable ***")
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    28
            set(current_macosx_version ${minimum_macosx_version})
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    29
        endif()
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    30
    endif()
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    31
9268
8a9075ed0aab use add_flag_append more, correctly set a few flags
koda
parents: 9219
diff changeset
    32
    #if nothing is set, we deploy only for the current system
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    33
    if(NOT minimum_macosx_version)
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    34
        set(minimum_macosx_version ${current_macosx_version})
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    35
    endif()
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    36
15312
5b2dec63f4cf Fix compiling on MacOS X by requiring c++11 standard. Building now requires MacOS X 10.8+ and CMake 3.9+
raptor <buckyballreaction@gmail.com>
parents: 11362
diff changeset
    37
    #minimum OSX version is 10.8.  Earlier versions cannot compile some dependencies anymore
5b2dec63f4cf Fix compiling on MacOS X by requiring c++11 standard. Building now requires MacOS X 10.8+ and CMake 3.9+
raptor <buckyballreaction@gmail.com>
parents: 11362
diff changeset
    38
    #(like ffmpeg/libav)
5b2dec63f4cf Fix compiling on MacOS X by requiring c++11 standard. Building now requires MacOS X 10.8+ and CMake 3.9+
raptor <buckyballreaction@gmail.com>
parents: 11362
diff changeset
    39
    if(minimum_macosx_version VERSION_LESS "10.8")
5b2dec63f4cf Fix compiling on MacOS X by requiring c++11 standard. Building now requires MacOS X 10.8+ and CMake 3.9+
raptor <buckyballreaction@gmail.com>
parents: 11362
diff changeset
    40
        message(FATAL_ERROR "Hedgewars is unsupported on your platform and requires Mac OS X 10.8+")
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    41
    endif()
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    42
9271
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    43
    #parse this system variable and adjust only the powerpc syntax to be compatible with -P
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    44
    if(CMAKE_OSX_ARCHITECTURES)
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    45
        string(REGEX MATCH "[pP][pP][cC]+" powerpc_build "${CMAKE_OSX_ARCHITECTURES}")
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    46
        string(REGEX MATCH "[iI]386+" i386_build "${CMAKE_OSX_ARCHITECTURES}")
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    47
        string(REGEX MATCH "[xX]86_64+" x86_64_build "${CMAKE_OSX_ARCHITECTURES}")
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    48
        if(x86_64_build)
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    49
            add_flag_prepend(CMAKE_Pascal_FLAGS -Px86_64)
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    50
        elseif(i386_build)
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    51
            add_flag_prepend(CMAKE_Pascal_FLAGS -Pi386)
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    52
        elseif(powerpc_build)
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    53
            add_flag_prepend(CMAKE_Pascal_FLAGS -Ppowerpc)
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    54
        else()
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    55
            message(FATAL_ERROR "Unknown architecture present in CMAKE_OSX_ARCHITECTURES (${CMAKE_OSX_ARCHITECTURES})")
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    56
        endif()
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    57
        list(LENGTH CMAKE_OSX_ARCHITECTURES num_of_archs)
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    58
        if(num_of_archs GREATER 1)
9889
54b49e8d8bfa remove one spurious WARNING tag from cmake message
koda
parents: 9887
diff changeset
    59
            message("*** Only one architecture in CMAKE_OSX_ARCHITECTURES is supported, picking the first one ***")
9271
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    60
        endif()
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    61
    elseif(CMAKE_SIZEOF_VOID_P MATCHES "8")
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    62
        #if that variable is not set check if we are on x86_64 and if so force it, else use default
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    63
        add_flag_prepend(CMAKE_Pascal_FLAGS -Px86_64)
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    64
    endif()
118cc5c1f677 move some osx only configuration code
koda
parents: 9268
diff changeset
    65
9268
8a9075ed0aab use add_flag_append more, correctly set a few flags
koda
parents: 9219
diff changeset
    66
    #CMAKE_OSX_SYSROOT is set at the system version we are supposed to build on
8a9075ed0aab use add_flag_append more, correctly set a few flags
koda
parents: 9219
diff changeset
    67
    #we need to provide the correct one when host and target differ
9940
fb1023bcd74f allow specifying a different CMAKE_OSX_SYSROOT
koda
parents: 9921
diff changeset
    68
    if(NOT CMAKE_OSX_SYSROOT AND
fb1023bcd74f allow specifying a different CMAKE_OSX_SYSROOT
koda
parents: 9921
diff changeset
    69
       NOT ${minimum_macosx_version} VERSION_EQUAL ${current_macosx_version})
9887
6add6157b58e improve OSX SDK selection when build and deploy target don't match
koda
parents: 9860
diff changeset
    70
        find_program(xcrun xcrun)
6add6157b58e improve OSX SDK selection when build and deploy target don't match
koda
parents: 9860
diff changeset
    71
        if(xcrun)
6add6157b58e improve OSX SDK selection when build and deploy target don't match
koda
parents: 9860
diff changeset
    72
            execute_process(COMMAND ${xcrun} "--show-sdk-path"
6add6157b58e improve OSX SDK selection when build and deploy target don't match
koda
parents: 9860
diff changeset
    73
                            OUTPUT_VARIABLE current_sdk_path
6add6157b58e improve OSX SDK selection when build and deploy target don't match
koda
parents: 9860
diff changeset
    74
                            OUTPUT_STRIP_TRAILING_WHITESPACE)
6add6157b58e improve OSX SDK selection when build and deploy target don't match
koda
parents: 9860
diff changeset
    75
            string(REPLACE "${current_macosx_version}"
6add6157b58e improve OSX SDK selection when build and deploy target don't match
koda
parents: 9860
diff changeset
    76
                           "${minimum_macosx_version}"
6add6157b58e improve OSX SDK selection when build and deploy target don't match
koda
parents: 9860
diff changeset
    77
                           CMAKE_OSX_SYSROOT
6add6157b58e improve OSX SDK selection when build and deploy target don't match
koda
parents: 9860
diff changeset
    78
                           "${current_sdk_path}")
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    79
        else()
9887
6add6157b58e improve OSX SDK selection when build and deploy target don't match
koda
parents: 9860
diff changeset
    80
            message("*** xcrun not found! Build will work on ${current_macosx_version} only ***")
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    81
        endif()
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    82
    endif()
9940
fb1023bcd74f allow specifying a different CMAKE_OSX_SYSROOT
koda
parents: 9921
diff changeset
    83
    if(CMAKE_OSX_SYSROOT)
9268
8a9075ed0aab use add_flag_append more, correctly set a few flags
koda
parents: 9219
diff changeset
    84
        add_flag_append(CMAKE_Pascal_FLAGS "-XR${CMAKE_OSX_SYSROOT}")
8a9075ed0aab use add_flag_append more, correctly set a few flags
koda
parents: 9219
diff changeset
    85
        add_flag_append(CMAKE_Pascal_FLAGS "-k-macosx_version_min -k${minimum_macosx_version}")
9941
d33d4727b39e explicitly set linker library path for pascal when deploying an older version
koda
parents: 9940
diff changeset
    86
        add_flag_append(CMAKE_Pascal_FLAGS "-k-L${LIBRARY_OUTPUT_PATH} -Fl${LIBRARY_OUTPUT_PATH}")
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    87
    endif()
9339
14f5f3a1e2f7 some work on cmake_pascal files to better support flags we use, make engine compile as library again
koda
parents: 9297
diff changeset
    88
14f5f3a1e2f7 some work on cmake_pascal files to better support flags we use, make engine compile as library again
koda
parents: 9297
diff changeset
    89
    #add user framework directory
14f5f3a1e2f7 some work on cmake_pascal files to better support flags we use, make engine compile as library again
koda
parents: 9297
diff changeset
    90
    add_flag_append(CMAKE_Pascal_FLAGS "-Ff~/Library/Frameworks")
9705
322fe1736347 fix linking on osx by hardcoding the default library output path
koda
parents: 9673
diff changeset
    91
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    92
endif(APPLE)
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    93
9210
31fedd5ef878 freepascal on windows only supports shared libraries
koda
parents: 9151
diff changeset
    94
if(MINGW)
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    95
    #this flags prevents a few dll hell problems
9268
8a9075ed0aab use add_flag_append more, correctly set a few flags
koda
parents: 9219
diff changeset
    96
    add_flag_append(CMAKE_C_FLAGS "-static-libgcc")
8a9075ed0aab use add_flag_append more, correctly set a few flags
koda
parents: 9219
diff changeset
    97
    add_flag_append(CMAKE_CXX_FLAGS "-static-libgcc")
9210
31fedd5ef878 freepascal on windows only supports shared libraries
koda
parents: 9151
diff changeset
    98
endif(MINGW)
9150
79c58ff0d4b1 move platform specific and revision info code into separate cmake modules
koda
parents:
diff changeset
    99
9210
31fedd5ef878 freepascal on windows only supports shared libraries
koda
parents: 9151
diff changeset
   100
if(WIN32)
9218
673bf356ad8c another code typo
koda
parents: 9211
diff changeset
   101
    if(NOT ${BUILD_SHARED_LIB})
9210
31fedd5ef878 freepascal on windows only supports shared libraries
koda
parents: 9151
diff changeset
   102
        message(FATAL_ERROR "Static linking is not supported on Windows")
31fedd5ef878 freepascal on windows only supports shared libraries
koda
parents: 9151
diff changeset
   103
    endif()
31fedd5ef878 freepascal on windows only supports shared libraries
koda
parents: 9151
diff changeset
   104
endif(WIN32)
9673
5be4de0eb4b0 enable -fPIC on UNIX only
koda
parents: 9517
diff changeset
   105
5be4de0eb4b0 enable -fPIC on UNIX only
koda
parents: 9517
diff changeset
   106
if(UNIX)
5be4de0eb4b0 enable -fPIC on UNIX only
koda
parents: 9517
diff changeset
   107
    add_flag_append(CMAKE_C_FLAGS "-fPIC")
5be4de0eb4b0 enable -fPIC on UNIX only
koda
parents: 9517
diff changeset
   108
    add_flag_append(CMAKE_CXX_FLAGS "-fPIC")
5be4de0eb4b0 enable -fPIC on UNIX only
koda
parents: 9517
diff changeset
   109
endif(UNIX)