Kaynağa Gözat

Xcode: Detect CURRENT_ARCH for use by generator

During compiler identification, extract the Xcode `CURRENT_ARCH` value
and save it for later use by the Xcode generator in an internal compiler
information variable.  This will be useful to know the locations of
object files when only one architecture is built.
Brad King 8 yıl önce
ebeveyn
işleme
a122190509

+ 1 - 0
Modules/CMakeCCompiler.cmake.in

@@ -13,6 +13,7 @@ set(CMAKE_C_PLATFORM_ID "@CMAKE_C_PLATFORM_ID@")
 set(CMAKE_C_SIMULATE_ID "@CMAKE_C_SIMULATE_ID@")
 set(CMAKE_C_SIMULATE_VERSION "@CMAKE_C_SIMULATE_VERSION@")
 @SET_MSVC_C_ARCHITECTURE_ID@
+@SET_CMAKE_XCODE_CURRENT_ARCH@
 set(CMAKE_AR "@CMAKE_AR@")
 set(CMAKE_GCC_AR "@CMAKE_GCC_AR@")
 set(CMAKE_RANLIB "@CMAKE_RANLIB@")

+ 1 - 0
Modules/CMakeCXXCompiler.cmake.in

@@ -14,6 +14,7 @@ set(CMAKE_CXX_PLATFORM_ID "@CMAKE_CXX_PLATFORM_ID@")
 set(CMAKE_CXX_SIMULATE_ID "@CMAKE_CXX_SIMULATE_ID@")
 set(CMAKE_CXX_SIMULATE_VERSION "@CMAKE_CXX_SIMULATE_VERSION@")
 @SET_MSVC_CXX_ARCHITECTURE_ID@
+@SET_CMAKE_XCODE_CURRENT_ARCH@
 set(CMAKE_AR "@CMAKE_AR@")
 set(CMAKE_GCC_AR "@CMAKE_GCC_AR@")
 set(CMAKE_RANLIB "@CMAKE_RANLIB@")

+ 5 - 0
Modules/CMakeDetermineCCompiler.cmake

@@ -175,6 +175,11 @@ if(MSVC_C_ARCHITECTURE_ID)
     "set(MSVC_C_ARCHITECTURE_ID ${MSVC_C_ARCHITECTURE_ID})")
 endif()
 
+if(CMAKE_C_XCODE_CURRENT_ARCH)
+  set(SET_CMAKE_XCODE_CURRENT_ARCH
+    "set(CMAKE_XCODE_CURRENT_ARCH ${CMAKE_C_XCODE_CURRENT_ARCH})")
+endif()
+
 # configure variables set in this file for fast reload later on
 configure_file(${CMAKE_ROOT}/Modules/CMakeCCompiler.cmake.in
   ${CMAKE_PLATFORM_INFO_DIR}/CMakeCCompiler.cmake

+ 5 - 0
Modules/CMakeDetermineCXXCompiler.cmake

@@ -170,6 +170,11 @@ if(MSVC_CXX_ARCHITECTURE_ID)
     "set(MSVC_CXX_ARCHITECTURE_ID ${MSVC_CXX_ARCHITECTURE_ID})")
 endif()
 
+if(CMAKE_CXX_XCODE_CURRENT_ARCH)
+  set(SET_CMAKE_XCODE_CURRENT_ARCH
+    "set(CMAKE_XCODE_CURRENT_ARCH ${CMAKE_CXX_XCODE_CURRENT_ARCH})")
+endif()
+
 # configure all variables set in this file
 configure_file(${CMAKE_ROOT}/Modules/CMakeCXXCompiler.cmake.in
   ${CMAKE_PLATFORM_INFO_DIR}/CMakeCXXCompiler.cmake

+ 4 - 0
Modules/CMakeDetermineCompilerId.cmake

@@ -104,6 +104,7 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src)
   set(CMAKE_${lang}_PLATFORM_ID "${CMAKE_${lang}_PLATFORM_ID}" PARENT_SCOPE)
   set(MSVC_${lang}_ARCHITECTURE_ID "${MSVC_${lang}_ARCHITECTURE_ID}"
     PARENT_SCOPE)
+  set(CMAKE_${lang}_XCODE_CURRENT_ARCH "${CMAKE_${lang}_XCODE_CURRENT_ARCH}" PARENT_SCOPE)
   set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "${CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX}" PARENT_SCOPE)
   set(CMAKE_${lang}_COMPILER_VERSION "${CMAKE_${lang}_COMPILER_VERSION}" PARENT_SCOPE)
   set(CMAKE_${lang}_COMPILER_WRAPPER "${CMAKE_${lang}_COMPILER_WRAPPER}" PARENT_SCOPE)
@@ -358,6 +359,9 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS}
         endif()
       endif()
     endif()
+    if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "CURRENT_ARCH=([^%\r\n]+)[\r\n]")
+      set(CMAKE_${lang}_XCODE_CURRENT_ARCH "${CMAKE_MATCH_1}" PARENT_SCOPE)
+    endif()
   else()
     execute_process(
       COMMAND "${CMAKE_${lang}_COMPILER}"

+ 1 - 1
Modules/CompilerId/Xcode-3.pbxproj.in

@@ -58,7 +58,7 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "echo \"GCC_VERSION=$GCC_VERSION\"";
+			shellScript = "echo \"GCC_VERSION=$GCC_VERSION\" ; echo \"CURRENT_ARCH=$CURRENT_ARCH\"";
 			showEnvVarsInLog = 0;
 		};
 		2C18F0B515DC1DCE00593670 = {