@@ -133,7 +133,6 @@ set(USED_CMAKE_GENERATOR "${CMAKE_GENERATOR}" CACHE STRING "Expose CMAKE_GENERAT
133133
134134if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.14" )
135135 set (MODERN_CMAKE YES )
136- message (STATUS "Merging integrated CMake 3.14+ iOS,tvOS,watchOS,macOS toolchain(s) with this toolchain!" )
137136endif ()
138137
139138# Get the Xcode version being used.
@@ -143,7 +142,6 @@ execute_process(COMMAND xcodebuild -version
143142 OUTPUT_STRIP_TRAILING_WHITESPACE)
144143string (REGEX MATCH "Xcode [0-9\\ .]+" XCODE_VERSION "${XCODE_VERSION} " )
145144string (REGEX REPLACE "Xcode ([0-9\\ .]+)" "\\ 1" XCODE_VERSION "${XCODE_VERSION} " )
146- message (STATUS "Building with Xcode version: ${XCODE_VERSION} " )
147145
148146######## ALIASES (DEPRECATION WARNINGS)
149147
@@ -304,7 +302,6 @@ elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS")
304302else ()
305303 message (FATAL_ERROR "Invalid PLATFORM: ${PLATFORM_INT} " )
306304endif ()
307- message (STATUS "Configuring ${SDK_NAME} build for platform: ${PLATFORM_INT} , architecture(s): ${ARCHS} " )
308305
309306if (MODERN_CMAKE AND PLATFORM_INT MATCHES ".*COMBINED" AND NOT USED_CMAKE_GENERATOR MATCHES "Xcode" )
310307 message (FATAL_ERROR "The COMBINED options only work with Xcode generator, -G Xcode" )
@@ -322,18 +319,15 @@ if (NOT DEFINED CMAKE_OSX_SYSROOT_INT AND NOT DEFINED CMAKE_OSX_SYSROOT)
322319 "and see if that fixes the problem for you." )
323320 message (FATAL_ERROR "Invalid CMAKE_OSX_SYSROOT: ${CMAKE_OSX_SYSROOT} "
324321 "does not exist." )
325- elseif (DEFINED CMAKE_OSX_SYSROOT)
326- message (STATUS "Using SDK: ${CMAKE_OSX_SYSROOT} for platform: ${PLATFORM_INT} when checking compatibility" )
327322elseif (DEFINED CMAKE_OSX_SYSROOT_INT)
328- message (STATUS "Using SDK: ${CMAKE_OSX_SYSROOT_INT} for platform: ${PLATFORM_INT} " )
329323 set (CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT_INT} " CACHE INTERNAL "" )
330324endif ()
331325
332326# Set Xcode property for SDKROOT as well if Xcode generator is used
333327if (USED_CMAKE_GENERATOR MATCHES "Xcode" )
334328 set (CMAKE_OSX_SYSROOT "${SDK_NAME} " CACHE INTERNAL "" )
335329 if (NOT DEFINED CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM)
336- set (CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM 123456789A CACHE INTERNAL "" )
330+ set (CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM " 123456789A" CACHE INTERNAL "" )
337331 endif ()
338332endif ()
339333
@@ -350,6 +344,7 @@ if(NOT DEFINED DEPLOYMENT_TARGET)
350344 endif ()
351345 message (STATUS "Using the default min-version since DEPLOYMENT_TARGET not provided!" )
352346endif ()
347+
353348# Use bitcode or not
354349if (NOT DEFINED ENABLE_BITCODE AND NOT ARCHS MATCHES "((^|;|, )(i386|x86_64))+" )
355350 # Unless specified, enable bitcode support by default
@@ -435,7 +430,6 @@ if(NOT CMAKE_INSTALL_NAME_TOOL)
435430 ERROR_QUIET
436431 OUTPUT_STRIP_TRAILING_WHITESPACE)
437432 set (CMAKE_INSTALL_NAME_TOOL ${CMAKE_INSTALL_NAME_TOOL_INT} CACHE STRING "" ${FORCE_CACHE} )
438- message (STATUS "Using install_name_tool: ${CMAKE_INSTALL_NAME_TOOL} " )
439433endif ()
440434# Get the version of Darwin (OS X) of the host.
441435execute_process (COMMAND uname -r
@@ -454,7 +448,7 @@ if(MODERN_CMAKE)
454448 endif ()
455449 # Provide flags for a combined FAT library build on newer CMake versions
456450 if (PLATFORM_INT MATCHES ".*COMBINED" )
457- set (CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH NO CACHE INTERNAL "" ${FORCE_CACHE} )
451+ set (CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH "NO" CACHE INTERNAL "" ${FORCE_CACHE} )
458452 set (CMAKE_IOS_INSTALL_COMBINED YES CACHE INTERNAL "" ${FORCE_CACHE} )
459453 message (STATUS "Will combine built (static) artifacts into FAT lib..." )
460454 endif ()
@@ -504,110 +498,140 @@ if(ARCHS MATCHES "((^|;|, )(arm64|arm64e|x86_64))+")
504498 else ()
505499 set (CMAKE_SYSTEM_PROCESSOR "x86_64" )
506500 endif ()
507- message (STATUS "Using a data_ptr size of 8" )
508501else ()
509502 set (CMAKE_C_SIZEOF_DATA_PTR 4)
510503 set (CMAKE_CXX_SIZEOF_DATA_PTR 4)
511504 set (CMAKE_SYSTEM_PROCESSOR "arm" )
512- message (STATUS "Using a data_ptr size of 4" )
513505endif ()
514506
515- message (STATUS "Building for minimum ${SDK_NAME} version: ${DEPLOYMENT_TARGET} "
516- " (SDK version: ${SDK_VERSION} )" )
517507# Note that only Xcode 7+ supports the newer more specific:
518508# -m${SDK_NAME}-version-min flags, older versions of Xcode use:
519509# -m(ios/ios-simulator)-version-min instead.
520- if (PLATFORM_INT STREQUAL "OS" OR PLATFORM_INT STREQUAL "OS64" )
521- if (XCODE_VERSION VERSION_LESS 7.0)
510+ if (${CMAKE_VERSION} VERSION_LESS "3.11" )
511+ if (PLATFORM_INT STREQUAL "OS" OR PLATFORM_INT STREQUAL "OS64" )
512+ if (XCODE_VERSION VERSION_LESS 7.0)
513+ set (SDK_NAME_VERSION_FLAGS
514+ "-mios-version-min=${DEPLOYMENT_TARGET} " )
515+ else ()
516+ # Xcode 7.0+ uses flags we can build directly from SDK_NAME.
517+ set (SDK_NAME_VERSION_FLAGS
518+ "-m${SDK_NAME} -version-min=${DEPLOYMENT_TARGET} " )
519+ endif ()
520+ elseif (PLATFORM_INT STREQUAL "TVOS" )
522521 set (SDK_NAME_VERSION_FLAGS
523- "-mios-version-min=${DEPLOYMENT_TARGET} " )
522+ "-mtvos-version-min=${DEPLOYMENT_TARGET} " )
523+ elseif (PLATFORM_INT STREQUAL "SIMULATOR_TVOS" )
524+ set (SDK_NAME_VERSION_FLAGS
525+ "-mtvos-simulator-version-min=${DEPLOYMENT_TARGET} " )
526+ elseif (PLATFORM_INT STREQUAL "WATCHOS" )
527+ set (SDK_NAME_VERSION_FLAGS
528+ "-mwatchos-version-min=${DEPLOYMENT_TARGET} " )
529+ elseif (PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS" )
530+ set (SDK_NAME_VERSION_FLAGS
531+ "-mwatchos-simulator-version-min=${DEPLOYMENT_TARGET} " )
524532 else ()
525- # Xcode 7.0+ uses flags we can build directly from SDK_NAME .
533+ # SIMULATOR or SIMULATOR64 both use -mios-simulator-version-min .
526534 set (SDK_NAME_VERSION_FLAGS
527- "-m ${SDK_NAME} -version-min=${DEPLOYMENT_TARGET} " )
535+ "-mios-simulator -version-min=${DEPLOYMENT_TARGET} " )
528536 endif ()
529- elseif (PLATFORM_INT STREQUAL "TVOS" )
530- set (SDK_NAME_VERSION_FLAGS
531- "-mtvos-version-min=${DEPLOYMENT_TARGET} " )
532- elseif (PLATFORM_INT STREQUAL "SIMULATOR_TVOS" )
533- set (SDK_NAME_VERSION_FLAGS
534- "-mtvos-simulator-version-min=${DEPLOYMENT_TARGET} " )
535- elseif (PLATFORM_INT STREQUAL "WATCHOS" )
536- set (SDK_NAME_VERSION_FLAGS
537- "-mwatchos-version-min=${DEPLOYMENT_TARGET} " )
538- elseif (PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS" )
539- set (SDK_NAME_VERSION_FLAGS
540- "-mwatchos-simulator-version-min=${DEPLOYMENT_TARGET} " )
541537else ()
542- # SIMULATOR or SIMULATOR64 both use -mios-simulator- version- min.
543- set (SDK_NAME_VERSION_FLAGS
544- "-mios-simulator-version-min= ${DEPLOYMENT_TARGET} " )
538+ # Newer versions of CMake sets the version min flags correctly
539+ set (CMAKE_OSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET} CACHE STRING
540+ "Set CMake deployment target" ${FORCE_CACHE} )
545541endif ()
546- message (STATUS "Version flags set to: ${SDK_NAME_VERSION_FLAGS} " )
547- set (CMAKE_OSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET} CACHE STRING
548- "Set CMake deployment target" ${FORCE_CACHE} )
542+
549543
550544if (ENABLE_BITCODE_INT)
551545 set (BITCODE "-fembed-bitcode" )
552- set (CMAKE_XCODE_ATTRIBUTE_BITCODE_GENERATION_MODE bitcode CACHE INTERNAL "" )
553- message ( STATUS "Enabling bitcode support. " )
546+ set (CMAKE_XCODE_ATTRIBUTE_BITCODE_GENERATION_MODE " bitcode" CACHE INTERNAL "" )
547+ set (CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "YES" CACHE INTERNAL " " )
554548else ()
555549 set (BITCODE "" )
556- set (CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE NO CACHE INTERNAL "" )
557- message (STATUS "Disabling bitcode support." )
550+ set (CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO" CACHE INTERNAL "" )
558551endif ()
559552
560553if (ENABLE_ARC_INT)
561554 set (FOBJC_ARC "-fobjc-arc" )
562- set (CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES CACHE INTERNAL "" )
563- message (STATUS "Enabling ARC support." )
555+ set (CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "YES" CACHE INTERNAL "" )
564556else ()
565557 set (FOBJC_ARC "-fno-objc-arc" )
566- set (CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC NO CACHE INTERNAL "" )
567- message (STATUS "Disabling ARC support." )
558+ set (CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "NO" CACHE INTERNAL "" )
568559endif ()
569560
570561if (NOT ENABLE_VISIBILITY_INT)
571562 set (VISIBILITY "-fvisibility=hidden" )
572- set (CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN YES CACHE INTERNAL "" )
573- message (STATUS "Hiding symbols (-fvisibility=hidden)." )
563+ set (CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "YES" CACHE INTERNAL "" )
574564else ()
575565 set (VISIBILITY "" )
576- set (CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN NO CACHE INTERNAL "" )
566+ set (CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "NO" CACHE INTERNAL "" )
577567endif ()
578568
579- #Check if Xcode generator is used, since that will handle these flags automagically
580- if (USED_CMAKE_GENERATOR MATCHES "Xcode" )
581- message (STATUS "Not setting any manual command-line buildflags, since Xcode is selected as generator." )
582- else ()
583- set (CMAKE_C_FLAGS
584- "${SDK_NAME_VERSION_FLAGS} ${BITCODE} -fobjc-abi-version=2 ${FOBJC_ARC} ${CMAKE_C_FLAGS} " )
585- # Hidden visibilty is required for C++ on iOS.
586- set (CMAKE_CXX_FLAGS
587- "${SDK_NAME_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} -fvisibility-inlines-hidden -fobjc-abi-version=2 ${FOBJC_ARC} ${CMAKE_CXX_FLAGS} " )
588- set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -O0 -g ${CMAKE_CXX_FLAGS_DEBUG} " )
589- set (CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS} -DNDEBUG -Os -ffast-math ${CMAKE_CXX_FLAGS_MINSIZEREL} " )
590- set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} -DNDEBUG -O2 -g -ffast-math ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} " )
591- set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -DNDEBUG -O3 -ffast-math ${CMAKE_CXX_FLAGS_RELEASE} " )
592- set (CMAKE_C_LINK_FLAGS "${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS} " )
593- set (CMAKE_CXX_LINK_FLAGS "${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS} " )
594- SET (CMAKE_ASM_FLAGS "${CFLAGS} -x assembler-with-cpp" )
595-
596- # In order to ensure that the updated compiler flags are used in try_compile()
597- # tests, we have to forcibly set them in the CMake cache, not merely set them
598- # in the local scope.
599- list (APPEND VARS_TO_FORCE_IN_CACHE
600- CMAKE_C_FLAGS
601- CMAKE_CXX_FLAGS
602- CMAKE_CXX_FLAGS_DEBUG
603- CMAKE_CXX_FLAGS_RELWITHDEBINFO
604- CMAKE_CXX_FLAGS_MINSIZEREL
605- CMAKE_CXX_FLAGS_RELEASE
606- CMAKE_C_LINK_FLAGS
607- CMAKE_CXX_LINK_FLAGS)
608- foreach (VAR_TO_FORCE ${VARS_TO_FORCE_IN_CACHE} )
609- set (${VAR_TO_FORCE} "${${VAR_TO_FORCE} }" CACHE STRING "" )
610- endforeach ()
569+ if (NOT IOS_TOOLCHAIN_HAS_RUN)
570+ #Check if Xcode generator is used, since that will handle these flags automagically
571+ if (USED_CMAKE_GENERATOR MATCHES "Xcode" )
572+ message (STATUS "Not setting any manual command-line buildflags, since Xcode is selected as generator." )
573+ else ()
574+ set (CMAKE_C_FLAGS
575+ "${SDK_NAME_VERSION_FLAGS} ${BITCODE} -fobjc-abi-version=2 ${FOBJC_ARC} ${CMAKE_C_FLAGS} " )
576+ # Hidden visibilty is required for C++ on iOS.
577+ set (CMAKE_CXX_FLAGS
578+ "${SDK_NAME_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} -fvisibility-inlines-hidden -fobjc-abi-version=2 ${FOBJC_ARC} ${CMAKE_CXX_FLAGS} " )
579+ set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -O0 -g ${CMAKE_CXX_FLAGS_DEBUG} " )
580+ set (CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS} -DNDEBUG -Os -ffast-math ${CMAKE_CXX_FLAGS_MINSIZEREL} " )
581+ set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} -DNDEBUG -O2 -g -ffast-math ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} " )
582+ set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -DNDEBUG -O3 -ffast-math ${CMAKE_CXX_FLAGS_RELEASE} " )
583+ set (CMAKE_C_LINK_FLAGS "${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS} " )
584+ set (CMAKE_CXX_LINK_FLAGS "${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS} " )
585+ set (CMAKE_ASM_FLAGS "${CFLAGS} -x assembler-with-cpp" )
586+
587+ # In order to ensure that the updated compiler flags are used in try_compile()
588+ # tests, we have to forcibly set them in the CMake cache, not merely set them
589+ # in the local scope.
590+ set (VARS_TO_FORCE_IN_CACHE
591+ CMAKE_C_FLAGS
592+ CMAKE_CXX_FLAGS
593+ CMAKE_CXX_FLAGS_DEBUG
594+ CMAKE_CXX_FLAGS_RELWITHDEBINFO
595+ CMAKE_CXX_FLAGS_MINSIZEREL
596+ CMAKE_CXX_FLAGS_RELEASE
597+ CMAKE_C_LINK_FLAGS
598+ CMAKE_CXX_LINK_FLAGS)
599+ foreach (VAR_TO_FORCE ${VARS_TO_FORCE_IN_CACHE} )
600+ set (${VAR_TO_FORCE} "${${VAR_TO_FORCE} }" CACHE STRING "" ${FORCE_CACHE} )
601+ endforeach ()
602+ endif ()
603+
604+ ## Print status messages to inform of the current state
605+ message (STATUS "Configuring ${SDK_NAME} build for platform: ${PLATFORM_INT} , architecture(s): ${ARCHS} " )
606+ message (STATUS "Using SDK: ${CMAKE_OSX_SYSROOT_INT} " )
607+ message (STATUS "Using minimum deployment version: ${DEPLOYMENT_TARGET} "
608+ " (SDK version: ${SDK_VERSION} )" )
609+ if (MODERN_CMAKE)
610+ message (STATUS "Merging integrated CMake 3.14+ iOS,tvOS,watchOS,macOS toolchain(s) with this toolchain!" )
611+ endif ()
612+ if (USED_CMAKE_GENERATOR MATCHES "Xcode" )
613+ message (STATUS "Using Xcode version: ${XCODE_VERSION} " )
614+ endif ()
615+ if (DEFINED SDK_NAME_VERSION_FLAGS)
616+ message (STATUS "Using version flags: ${SDK_NAME_VERSION_FLAGS} " )
617+ endif ()
618+ message (STATUS "Using a data_ptr size of: ${CMAKE_CXX_SIZEOF_DATA_PTR} " )
619+ message (STATUS "Using install_name_tool: ${CMAKE_INSTALL_NAME_TOOL} " )
620+ if (ENABLE_BITCODE_INT)
621+ message (STATUS "Enabling bitcode support." )
622+ else ()
623+ message (STATUS "Disabling bitcode support." )
624+ endif ()
625+
626+ if (ENABLE_ARC_INT)
627+ message (STATUS "Enabling ARC support." )
628+ else ()
629+ message (STATUS "Disabling ARC support." )
630+ endif ()
631+
632+ if (NOT ENABLE_VISIBILITY_INT)
633+ message (STATUS "Hiding symbols (-fvisibility=hidden)." )
634+ endif ()
611635endif ()
612636
613637set (CMAKE_PLATFORM_HAS_INSTALLNAME 1)
@@ -630,6 +654,8 @@ set(CMAKE_FRAMEWORK_PATH
630654 ${CMAKE_OSX_SYSROOT_INT} /System /Library/Frameworks
631655 ${CMAKE_FRAMEWORK_PATH} CACHE STRING "Frameworks search paths" ${FORCE_CACHE} )
632656
657+ set (IOS_TOOLCHAIN_HAS_RUN TRUE CACHE BOOL "Has the CMake toolchain run already?" ${FORCE_CACHE} )
658+
633659# By default, search both the specified iOS SDK and the remainder of the host filesystem.
634660if (NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM)
635661 set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH CACHE STRING "" ${FORCE_CACHE} )
0 commit comments