57 set(CMAKE_INSTALL_PREFIX ${bundle_name}/Contents/MacOS/) |
58 set(CMAKE_INSTALL_PREFIX ${bundle_name}/Contents/MacOS/) |
58 set(DATA_INSTALL_DIR "../Resources/") |
59 set(DATA_INSTALL_DIR "../Resources/") |
59 set(target_dir ".") |
60 set(target_dir ".") |
60 |
61 |
61 #what system are we building for |
62 #what system are we building for |
62 set(minimum_macosx $ENV{MACOSX_DEPLOYMENT_TARGET}) |
63 set(minimum_macosx_version $ENV{MACOSX_DEPLOYMENT_TARGET}) |
63 |
64 |
64 #detect on which system are we |
65 #detect on which system are we |
65 EXEC_PROGRAM("/usr/bin/sw_vers" ARGS "-productVersion" OUTPUT_VARIABLE current_macosx_version) |
66 EXEC_PROGRAM("/usr/bin/sw_vers" ARGS "-productVersion" OUTPUT_VARIABLE current_macosx_version) |
66 STRING(REGEX REPLACE "([0-9]+.[0-9]+).[0-9]+" "\\1" current_macosx_version ${current_macosx_version}) |
67 STRING(REGEX REPLACE "([0-9]+.[0-9]+).[0-9]+" "\\1" current_macosx_version ${current_macosx_version}) |
67 |
68 |
68 #if nothing is set, we deploy only for the current system |
69 #if nothing is set, we deploy only for the current system |
69 if(NOT minimum_macosx) |
70 if(NOT minimum_macosx_version) |
70 set(minimum_macosx ${current_macosx_version}) |
71 set(minimum_macosx_version ${current_macosx_version}) |
71 endif() |
72 endif() |
72 |
73 |
73 if (minimum_macosx LESS "10.4") |
74 #who uses them anyway? |
74 set(FATAL "Hedgewars is not supported for pre-10.4 systems") |
75 if (minimum_macosx_version LESS "10.4") |
|
76 message(FATAL_ERROR "Hedgewars is not supported on Mac OS X pre-10.4") |
75 endif() |
77 endif() |
76 |
78 |
77 #this variable needs to be set for frapascal universal binary |
79 #this variable needs to be set for frapascal universal binary |
78 if(NOT CMAKE_OSX_ARCHITECTURES) |
80 if(NOT CMAKE_OSX_ARCHITECTURES) |
79 if(current_macosx_version MATCHES "10.6") |
81 if(current_macosx_version LESS "10.6") |
80 set(CMAKE_OSX_ARCHITECTURES "x86_64;i386") |
82 if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "powerpc*") |
|
83 set(CMAKE_OSX_ARCHITECTURES "ppc7400") |
|
84 else() |
|
85 set(CMAKE_OSX_ARCHITECTURES "i386") |
|
86 endif() |
81 else() |
87 else() |
82 set(CMAKE_OSX_ARCHITECTURES "i386;ppc7400") |
88 set(CMAKE_OSX_ARCHITECTURES "x86_64") |
83 endif() |
89 endif() |
84 endif() |
90 endif() |
85 |
91 |
86 message(STATUS "Build system: Mac OS X ${current_macosx_version} - Target ${minimum_macosx} ${CMAKE_OSX_ARCHITECTURES}") |
|
87 |
|
88 #be sure to select ppc-compatible toolchains just in case |
92 #be sure to select ppc-compatible toolchains just in case |
89 if(NOT minimum_macosx MATCHES "10.6") |
93 if(minimum_macosx_version LESS "10.6") |
90 set(CMAKE_C_COMPILER "gcc-4.0") |
94 set(CMAKE_C_COMPILER "gcc-4.0") |
91 set(CMAKE_CXX_COMPILER "g++-4.0") |
95 set(CMAKE_CXX_COMPILER "g++-4.0") |
92 endif() |
96 endif() |
93 |
97 |
94 if(minimum_macosx MATCHES "10.4") |
98 if(minimum_macosx_version MATCHES "10.4") |
95 set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.4u.sdk/") |
99 set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.4u.sdk/") |
|
100 #workaround for http://playcontrol.net/ewing/jibberjabber/big_behind-the-scenes_chang.html#SDL_mixer (Update 2) |
96 if(current_macosx_version MATCHES "10.4") |
101 if(current_macosx_version MATCHES "10.4") |
97 find_package(SDL_mixer REQUIRED) |
102 find_package(SDL_mixer REQUIRED) |
98 set(pascal_compiler_flags_cmn "-k-dylib_file @loader_path/Frameworks/smpeg.framework/Versions/A/smpeg:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/smpeg.framework/Versions/A/smpeg" "-k-dylib_file @loader_path/Frameworks/mikmod.framework/Versions/A/mikmod:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/mikmod.framework/Versions/A/mikmod" ${pascal_compiler_flags_cmn}) |
103 set(pascal_compiler_flags_cmn "-k-dylib_file @loader_path/Frameworks/smpeg.framework/Versions/A/smpeg:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/smpeg.framework/Versions/A/smpeg" "-k-dylib_file @loader_path/Frameworks/mikmod.framework/Versions/A/mikmod:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/mikmod.framework/Versions/A/mikmod" ${pascal_compiler_flags_cmn}) |
99 set(CMAKE_C_FLAGS "-dylib_file @loader_path/Frameworks/smpeg.framework/Versions/A/smpeg:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/smpeg.framework/Versions/A/smpeg -dylib_file @loader_path/Frameworks/mikmod.framework/Versions/A/mikmod:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/mikmod.framework/Versions/A/mikmod") |
104 set(CMAKE_C_FLAGS "-dylib_file @loader_path/Frameworks/smpeg.framework/Versions/A/smpeg:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/smpeg.framework/Versions/A/smpeg -dylib_file @loader_path/Frameworks/mikmod.framework/Versions/A/mikmod:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/mikmod.framework/Versions/A/mikmod") |
100 endif() |
105 endif() |
101 else() |
106 else() |
102 set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX${minimum_macosx}.sdk/") |
107 STRING(REGEX REPLACE "([0-9]+.[0-9]+).[0-9]+" "\\1" sdk_version ${minimum_macosx_version}) |
103 endif() |
108 set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX${sdk_version}.sdk/") |
104 |
109 endif() |
105 #1.set deployment target; 2.link with libsdlmain.a (when building an executable); 3.link with liblua.a (which requires readline) |
110 |
106 set(pascal_compiler_flags_cmn "-k-macosx_version_min" "-k${minimum_macosx}" "-XR${CMAKE_OSX_SYSROOT}" ${pascal_compiler_flags_cmn}) |
111 #set deployment target |
|
112 set(pascal_compiler_flags_cmn "-k-macosx_version_min" "-k${minimum_macosx_version}" "-XR${CMAKE_OSX_SYSROOT}" ${pascal_compiler_flags_cmn}) |
|
113 #link with liblua.a (which requires readline) |
|
114 set(pascal_compiler_flags_cmn "-k${CMAKE_BINARY_DIR}/bin/liblua.a" "-k-lreadline" ${pascal_compiler_flags_cmn}) |
|
115 #link with libsdlmain.a (when building an executable) |
107 if(NOT BUILD_ENGINE_LIBRARY) |
116 if(NOT BUILD_ENGINE_LIBRARY) |
108 set(pascal_compiler_flags_cmn "-k${CMAKE_BINARY_DIR}/bin/libSDLmain.a" ${pascal_compiler_flags_cmn}) |
117 set(pascal_compiler_flags_cmn "-k${CMAKE_BINARY_DIR}/bin/libSDLmain.a" ${pascal_compiler_flags_cmn}) |
109 endif() |
118 endif() |
110 set(pascal_compiler_flags_cmn "-k${CMAKE_BINARY_DIR}/bin/liblua.a" "-k-lreadline" ${pascal_compiler_flags_cmn}) |
119 |
111 else(APPLE) |
120 message(STATUS "Build system: Mac OS X ${current_macosx_version} with GCC:${CMAKE_C_COMPILER}") |
112 set(target_dir "bin") |
121 message(STATUS "Target system: Mac OS X ${minimum_macosx_version} for architecture(s):${CMAKE_OSX_ARCHITECTURES}") |
113 endif(APPLE) |
122 endif(APPLE) |
114 |
123 |
115 |
124 |
116 #this snippet sets "Release" mode by default |
125 #this snippet sets "Release" mode by default |
117 if (NOT CMAKE_BUILD_TYPE) |
126 if (NOT CMAKE_BUILD_TYPE) |