SET ( APPLE 1 )
# Darwin versions:
# 6.x == Mac OSX 10.2
# 7.x == Mac OSX 10.3
# 8.x == Mac OSX 10.4
# 9.x == Mac OSX 10.5
STRING ( REGEX REPLACE "^([0-9]+)\\.([0-9]+).*$" "\\1" DARWIN_MAJOR_VERSION "${CMAKE_SYSTEM_VERSION}" )
STRING ( REGEX REPLACE "^([0-9]+)\\.([0-9]+).*$" "\\2" DARWIN_MINOR_VERSION "${CMAKE_SYSTEM_VERSION}" )
# Do not use the "-Wl,-search_paths_first" flag with the OSX 10.2 compiler.
# Done this way because it is too early to do a TRY_COMPILE.
IF ( NOT DEFINED HAVE_FLAG_SEARCH_PATHS_FIRST )
SET ( HAVE_FLAG_SEARCH_PATHS_FIRST 0 )
IF ( "${DARWIN_MAJOR_VERSION}" GREATER 6 )
SET ( HAVE_FLAG_SEARCH_PATHS_FIRST 1 )
ENDIF ( "${DARWIN_MAJOR_VERSION}" GREATER 6 )
ENDIF ( NOT DEFINED HAVE_FLAG_SEARCH_PATHS_FIRST )
# More desirable, but does not work:
#INCLUDE(CheckCXXCompilerFlag)
#CHECK_CXX_COMPILER_FLAG("-Wl,-search_paths_first" HAVE_FLAG_SEARCH_PATHS_FIRST)
SET ( CMAKE_SHARED_LIBRARY_PREFIX "lib" )
SET ( CMAKE_SHARED_LIBRARY_SUFFIX ".dylib" )
SET ( CMAKE_SHARED_MODULE_PREFIX "lib" )
SET ( CMAKE_SHARED_MODULE_SUFFIX ".so" )
SET ( CMAKE_MODULE_EXISTS 1 )
SET ( CMAKE_DL_LIBS "" )
SET ( CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version " )
SET ( CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version " )
SET ( CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}" )
SET ( CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}" )
SET ( CMAKE_C_LINK_FLAGS "-headerpad_max_install_names" )
SET ( CMAKE_CXX_LINK_FLAGS "-headerpad_max_install_names" )
IF ( HAVE_FLAG_SEARCH_PATHS_FIRST )
SET ( CMAKE_C_LINK_FLAGS "-Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}" )
SET ( CMAKE_CXX_LINK_FLAGS "-Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}" )
ENDIF ( HAVE_FLAG_SEARCH_PATHS_FIRST )
SET ( CMAKE_PLATFORM_HAS_INSTALLNAME 1 )
SET ( CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib -headerpad_max_install_names" )
SET ( CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle -headerpad_max_install_names" )
SET ( CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader," )
SET ( CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader," )
SET ( CMAKE_FIND_LIBRARY_SUFFIXES ".dylib" ".so" ".a" )
# hack: if a new cmake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old build tree
# (where install_name_tool was hardcoded) and where CMAKE_INSTALL_NAME_TOOL isn't in the cache
# and still cmake didn't fail in CMakeFindBinUtils.cmake (because it isn't rerun)
# hardcode CMAKE_INSTALL_NAME_TOOL here to install_name_tool, so it behaves as it did before, Alex
IF ( NOT DEFINED CMAKE_INSTALL_NAME_TOOL )
FIND_PROGRAM ( CMAKE_INSTALL_NAME_TOOL install_name_tool )
ENDIF ( NOT DEFINED CMAKE_INSTALL_NAME_TOOL )
# Set the assumed (Pre 10.5 or Default) location of the developer tools
SET ( OSX_DEVELOPER_ROOT "/Developer" )
# Find installed SDKs
FILE ( GLOB _CMAKE_OSX_SDKS "${OSX_DEVELOPER_ROOT}/SDKs/*" )
# If nothing is found there, then try locating the dev tools based on the xcode-select tool
# (available in Xcode >= 3.0 installations)
IF ( NOT _CMAKE_OSX_SDKS )
FIND_PROGRAM ( CMAKE_XCODE_SELECT xcode-select )
IF ( CMAKE_XCODE_SELECT )
EXECUTE_PROCESS ( COMMAND ${ CMAKE_XCODE_SELECT } "-print-path"
O U T P U T _ V A R I A B L E O S X _ D E V E L O P E R _ R O O T )
FILE ( GLOB _CMAKE_OSX_SDKS "${OSX_DEVELOPER_ROOT}/SDKs/*" )
ENDIF ( CMAKE_XCODE_SELECT )
ENDIF ( NOT _CMAKE_OSX_SDKS )
# Set CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT to the current version of OS X
EXECUTE_PROCESS ( COMMAND sw_vers -productVersion OUTPUT_VARIABLE CURRENT_OSX_VERSION )
STRING ( REGEX REPLACE "^.*(10)\\.([0-9]+)\\.*([0-9]+)*.*$" "\\1.\\2"
C M A K E _ O S X _ D E P L O Y M E N T _ T A R G E T _ D E F A U L T $ { C U R R E N T _ O S X _ V E R S I O N } )
# Set CMAKE_OSX_SYSROOT_DEFAULT based on CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT.
# This next block assumes that Apple will start being consistent with
# its SDK names from here on out...
IF ( CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT GREATER "10.4" )
SET ( CMAKE_OSX_SYSROOT_DEFAULT
" $ { O S X _ D E V E L O P E R _ R O O T } / S D K s / M a c O S X $ { C M A K E _ O S X _ D E P L O Y M E N T _ T A R G E T _ D E F A U L T } . s d k " )
ENDIF ( CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT GREATER "10.4" )
IF ( CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT EQUAL "10.4" )
SET ( CMAKE_OSX_SYSROOT_DEFAULT
" $ { O S X _ D E V E L O P E R _ R O O T } / S D K s / M a c O S X 1 0 . 4 u . s d k " )
ENDIF ( CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT EQUAL "10.4" )
IF ( CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT EQUAL "10.3" )
SET ( CMAKE_OSX_SYSROOT_DEFAULT
" $ { O S X _ D E V E L O P E R _ R O O T } / S D K s / M a c O S X 1 0 . 3 . 9 . s d k " )
ENDIF ( CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT EQUAL "10.3" )
# Allow environment variables set by the user to override our defaults.
# Use the same environment variables that Xcode uses.
SET ( ENV_MACOSX_DEPLOYMENT_TARGET "$ENV{MACOSX_DEPLOYMENT_TARGET}" )
SET ( ENV_SDKROOT "$ENV{SDKROOT}" )
# See if we need to override the default SDK or Deployment target with the
# environment variables
IF ( NOT ENV_MACOSX_DEPLOYMENT_TARGET STREQUAL "" )
SET ( CMAKE_OSX_DEPLOYMENT_TARGET_VALUE ${ ENV_MACOSX_DEPLOYMENT_TARGET } )
ELSE ( NOT ENV_MACOSX_DEPLOYMENT_TARGET STREQUAL "" )
SET ( CMAKE_OSX_DEPLOYMENT_TARGET_VALUE ${ CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT } )
ENDIF ( NOT ENV_MACOSX_DEPLOYMENT_TARGET STREQUAL "" )
IF ( NOT ENV_SDKROOT STREQUAL "" )
SET ( CMAKE_OSX_SYSROOT_VALUE ${ ENV_SDKROOT } )
ELSE ( NOT ENV_SDKROOT STREQUAL "" )
SET ( CMAKE_OSX_SYSROOT_VALUE ${ CMAKE_OSX_SYSROOT_DEFAULT } )
ENDIF ( NOT ENV_SDKROOT STREQUAL "" )
# Set cache variables - end user may change these during ccmake or cmake-gui configure.
IF ( CURRENT_OSX_VERSION GREATER 10.3 )
SET ( CMAKE_OSX_DEPLOYMENT_TARGET ${ CMAKE_OSX_DEPLOYMENT_TARGET_VALUE } CACHE STRING
" M i n i m u m O S X v e r s i o n t o t a r g e t f o r deployment ( at runtime ) ; n e w e r A P I s w e a k l i n k e d . S e t t o e m p t y s t r i n g f o r d e f a u l t v a l u e . " )
ENDIF ( CURRENT_OSX_VERSION GREATER 10.3 )
SET ( CMAKE_OSX_SYSROOT ${ CMAKE_OSX_SYSROOT_VALUE } CACHE PATH
" T h e p r o d u c t w i l l b e b u i l t a g a i n s t t h e h e a d e r s a n d l i b r a r i e s l o c a t e d i n s i d e t h e i n d i c a t e d S D K . " )
#----------------------------------------------------------------------------
function ( SanityCheckSDKAndDeployTarget _sdk_path _deploy )
if ( _deploy STREQUAL "" )
return ( )
endif ( )
string ( REGEX REPLACE "(.*MacOSX*)(....)(.*\\.sdk)" "\\2" SDK ${ _sdk_path } )
if ( _deploy GREATER SDK )
message ( FATAL_ERROR "CMAKE_OSX_DEPLOYMENT_TARGET (${_deploy}) is greater than CMAKE_OSX_SYSROOT SDK (${_sdk_path}). Please set CMAKE_OSX_DEPLOYMENT_TARGET to ${SDK}" )
endif ( _deploy GREATER SDK )
endfunction ( SanityCheckSDKAndDeployTarget _sdk_path _deploy )
#----------------------------------------------------------------------------
# Make sure the combination of SDK and Deployment Target are allowed
SanityCheckSDKAndDeployTarget ( "${CMAKE_OSX_SYSROOT}" "${CMAKE_OSX_DEPLOYMENT_TARGET}" )
# set _CMAKE_OSX_MACHINE to uname -m
EXECUTE_PROCESS ( COMMAND uname -m
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E
O U T P U T _ V A R I A B L E _ C M A K E _ O S X _ M A C H I N E )
# check for Power PC and change to ppc
IF ( _CMAKE_OSX_MACHINE MATCHES "Power" )
SET ( _CMAKE_OSX_MACHINE ppc )
ENDIF ( _CMAKE_OSX_MACHINE MATCHES "Power" )
# check for environment variable CMAKE_OSX_ARCHITECTURES
# if it is set.
IF ( NOT "$ENV{CMAKE_OSX_ARCHITECTURES}" STREQUAL "" )
SET ( CMAKE_OSX_ARCHITECTURES_VALUE "$ENV{CMAKE_OSX_ARCHITECTURES}" )
ELSE ( NOT "$ENV{CMAKE_OSX_ARCHITECTURES}" STREQUAL "" )
SET ( CMAKE_OSX_ARCHITECTURES_VALUE "" )
ENDIF ( NOT "$ENV{CMAKE_OSX_ARCHITECTURES}" STREQUAL "" )
# now put _CMAKE_OSX_MACHINE into the cache
SET ( CMAKE_OSX_ARCHITECTURES ${ CMAKE_OSX_ARCHITECTURES_VALUE } CACHE STRING
" B u i l d a r c h i t e c t u r e s f o r O S X " )
IF ( "${CMAKE_BACKWARDS_COMPATIBILITY}" MATCHES "^1\\.[0-6]$" )
SET ( CMAKE_SHARED_MODULE_CREATE_C_FLAGS
" $ { C M A K E _ S H A R E D _ M O D U L E _ C R E A T E _ C _ F L A G S } - f l a t _ n a m e s p a c e - u n d e f i n e d s u p p r e s s " )
ENDIF ( "${CMAKE_BACKWARDS_COMPATIBILITY}" MATCHES "^1\\.[0-6]$" )
IF ( NOT XCODE )
# Enable shared library versioning. This flag is not actually referenced
# but the fact that the setting exists will cause the generators to support
# soname computation.
SET ( CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-install_name" )
SET ( CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-install_name" )
SET ( CMAKE_SHARED_LIBRARY_SONAME_Fortran_FLAG "-install_name" )
ENDIF ( NOT XCODE )
# Xcode does not support -isystem yet.
IF ( XCODE )
SET ( CMAKE_INCLUDE_SYSTEM_FLAG_C )
SET ( CMAKE_INCLUDE_SYSTEM_FLAG_CXX )
ENDIF ( XCODE )
# Need to list dependent shared libraries on link line. When building
# with -isysroot (for universal binaries), the linker always looks for
# dependent libraries under the sysroot. Listing them on the link
# line works around the problem.
SET ( CMAKE_LINK_DEPENDENT_LIBRARY_FILES 1 )
SET ( CMAKE_C_CREATE_SHARED_LIBRARY_FORBIDDEN_FLAGS -w )
SET ( CMAKE_CXX_CREATE_SHARED_LIBRARY_FORBIDDEN_FLAGS -w )
SET ( CMAKE_C_CREATE_SHARED_LIBRARY
" < C M A K E _ C _ C O M P I L E R > < L A N G U A G E _ C O M P I L E _ F L A G S > < C M A K E _ S H A R E D _ L I B R A R Y _ C R E A T E _ C _ F L A G S > < L I N K _ F L A G S > - o < T A R G E T > - i n s t a l l _ n a m e < T A R G E T _ I N S T A L L N A M E _ D I R > < T A R G E T _ S O N A M E > < O B J E C T S > < L I N K _ L I B R A R I E S > " )
SET ( CMAKE_CXX_CREATE_SHARED_LIBRARY
" < C M A K E _ C X X _ C O M P I L E R > < L A N G U A G E _ C O M P I L E _ F L A G S > < C M A K E _ S H A R E D _ L I B R A R Y _ C R E A T E _ C X X _ F L A G S > < L I N K _ F L A G S > - o < T A R G E T > - i n s t a l l _ n a m e < T A R G E T _ I N S T A L L N A M E _ D I R > < T A R G E T _ S O N A M E > < O B J E C T S > < L I N K _ L I B R A R I E S > " )
SET ( CMAKE_Fortran_CREATE_SHARED_LIBRARY
" < C M A K E _ F o r t r a n _ C O M P I L E R > < L A N G U A G E _ C O M P I L E _ F L A G S > < C M A K E _ S H A R E D _ L I B R A R Y _ C R E A T E _ F o r t r a n _ F L A G S > < L I N K _ F L A G S > - o < T A R G E T > - i n s t a l l _ n a m e < T A R G E T _ I N S T A L L N A M E _ D I R > < T A R G E T _ S O N A M E > < O B J E C T S > < L I N K _ L I B R A R I E S > " )
SET ( CMAKE_CXX_CREATE_SHARED_MODULE
" < C M A K E _ C X X _ C O M P I L E R > < L A N G U A G E _ C O M P I L E _ F L A G S > < C M A K E _ S H A R E D _ M O D U L E _ C R E A T E _ C X X _ F L A G S > < L I N K _ F L A G S > - o < T A R G E T > < O B J E C T S > < L I N K _ L I B R A R I E S > " )
SET ( CMAKE_C_CREATE_SHARED_MODULE
" < C M A K E _ C _ C O M P I L E R > < L A N G U A G E _ C O M P I L E _ F L A G S > < C M A K E _ S H A R E D _ M O D U L E _ C R E A T E _ C _ F L A G S > < L I N K _ F L A G S > - o < T A R G E T > < O B J E C T S > < L I N K _ L I B R A R I E S > " )
SET ( CMAKE_Fortran_CREATE_SHARED_MODULE
" < C M A K E _ F o r t r a n _ C O M P I L E R > < L A N G U A G E _ C O M P I L E _ F L A G S > < C M A K E _ S H A R E D _ M O D U L E _ C R E A T E _ F o r t r a n _ F L A G S > < L I N K _ F L A G S > - o < T A R G E T > < O B J E C T S > < L I N K _ L I B R A R I E S > " )
SET ( CMAKE_C_CREATE_MACOSX_FRAMEWORK
" < C M A K E _ C _ C O M P I L E R > < L A N G U A G E _ C O M P I L E _ F L A G S > < C M A K E _ S H A R E D _ L I B R A R Y _ C R E A T E _ C _ F L A G S > < L I N K _ F L A G S > - o < T A R G E T > - i n s t a l l _ n a m e < T A R G E T _ I N S T A L L N A M E _ D I R > < T A R G E T _ S O N A M E > < O B J E C T S > < L I N K _ L I B R A R I E S > " )
SET ( CMAKE_CXX_CREATE_MACOSX_FRAMEWORK
" < C M A K E _ C X X _ C O M P I L E R > < L A N G U A G E _ C O M P I L E _ F L A G S > < C M A K E _ S H A R E D _ L I B R A R Y _ C R E A T E _ C X X _ F L A G S > < L I N K _ F L A G S > - o < T A R G E T > - i n s t a l l _ n a m e < T A R G E T _ I N S T A L L N A M E _ D I R > < T A R G E T _ S O N A M E > < O B J E C T S > < L I N K _ L I B R A R I E S > " )
# default to searching for frameworks first
SET ( CMAKE_FIND_FRAMEWORK FIRST )
# set up the default search directories for frameworks
SET ( CMAKE_SYSTEM_FRAMEWORK_PATH
~ / L i b r a r y / F r a m e w o r k s
/ L i b r a r y / F r a m e w o r k s
/ N e t w o r k / L i b r a r y / F r a m e w o r k s
/ S y s t e m / L i b r a r y / F r a m e w o r k s )
# default to searching for application bundles first
SET ( CMAKE_FIND_APPBUNDLE FIRST )
# set up the default search directories for application bundles
SET ( CMAKE_SYSTEM_APPBUNDLE_PATH
~ / A p p l i c a t i o n s
/ A p p l i c a t i o n s
/ D e v e l o p e r / A p p l i c a t i o n s )
INCLUDE ( Platform/UnixPaths )
LIST ( APPEND CMAKE_SYSTEM_PREFIX_PATH /sw )