CMakeLists.txt
changeset 5188 d0461bd6d45b
parent 5173 4056310a161a
child 5223 5730238e7ee6
equal deleted inserted replaced
5187:b01ab1ef01fb 5188:d0461bd6d45b
    44 	SET(WITH_SERVER 0)
    44 	SET(WITH_SERVER 0)
    45 ENDIF(NOT WITH_SERVER)
    45 ENDIF(NOT WITH_SERVER)
    46 IF(NOT BUILD_ENGINE_LIBRARY)
    46 IF(NOT BUILD_ENGINE_LIBRARY)
    47 	SET(BUILD_ENGINE_LIBRARY 0)
    47 	SET(BUILD_ENGINE_LIBRARY 0)
    48 ENDIF(NOT BUILD_ENGINE_LIBRARY)
    48 ENDIF(NOT BUILD_ENGINE_LIBRARY)
       
    49 set(target_dir "bin")
    49 
    50 
    50 
    51 
    51 if(APPLE)
    52 if(APPLE)
    52 	set(CMAKE_FIND_FRAMEWORK "FIRST")
    53 	set(CMAKE_FIND_FRAMEWORK "FIRST")
    53 
    54 
    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)