Explorar el Código

Skip implicit link info for multiple OS X archs

Implicit link information contains architecture-specific libraries and
directories.  The link information cannot be explicitly specified safely
when CMAKE_OSX_ARCHITECTURES contains more than one architecture.

As a result, we currently cannot support mixed-language C++/Fortran
targets and OS X universal binaries simultaneously.  In order to avoid
conflicts for simple C/C++ cases, we now simply skip detection of
implicit link information in this case.
Brad King hace 16 años
padre
commit
5195a664b9
Se han modificado 1 ficheros con 6 adiciones y 2 borrados
  1. 6 2
      Modules/CMakeDetermineCompilerABI.cmake

+ 6 - 2
Modules/CMakeDetermineCompilerABI.cmake

@@ -45,10 +45,14 @@ FUNCTION(CMAKE_DETERMINE_COMPILER_ABI lang src)
       ENDIF(ABI_NAME)
       ENDIF(ABI_NAME)
 
 
       # Parse implicit linker information for this language, if available.
       # Parse implicit linker information for this language, if available.
-      # Skip this with Xcode for now.
       SET(implicit_dirs "")
       SET(implicit_dirs "")
       SET(implicit_libs "")
       SET(implicit_libs "")
-      IF(CMAKE_${lang}_VERBOSE_FLAG AND NOT "${CMAKE_GENERATOR}" MATCHES Xcode)
+      IF(CMAKE_${lang}_VERBOSE_FLAG
+          # Implicit link information cannot be used explicitly for
+          # multiple OS X architectures, so we skip it.
+          AND NOT "${CMAKE_OSX_ARCHITECTURES}" MATCHES ";"
+          # Skip this with Xcode for now.
+          AND NOT "${CMAKE_GENERATOR}" MATCHES Xcode)
         CMAKE_PARSE_IMPLICIT_LINK_INFO("${OUTPUT}" implicit_libs implicit_dirs)
         CMAKE_PARSE_IMPLICIT_LINK_INFO("${OUTPUT}" implicit_libs implicit_dirs)
       ENDIF()
       ENDIF()
       SET(CMAKE_${lang}_IMPLICIT_LINK_LIBRARIES "${implicit_libs}" PARENT_SCOPE)
       SET(CMAKE_${lang}_IMPLICIT_LINK_LIBRARIES "${implicit_libs}" PARENT_SCOPE)