Merge topic 'osx-implicit-link-dirs'
cc676c3
OS X: Detect implicit linker framework search paths2dd67c7
OS X: Detect implicit link directories on modern toolchainsba58d0c
OS X: Link with all framework search paths, not just the last
This commit is contained in:
commit
c2cde7f104
|
@ -50,6 +50,7 @@ endif()
|
|||
|
||||
set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "@CMAKE_C_IMPLICIT_LINK_LIBRARIES@")
|
||||
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "@CMAKE_C_IMPLICIT_LINK_DIRECTORIES@")
|
||||
set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
|
||||
|
||||
@SET_CMAKE_CMCLDEPS_EXECUTABLE@
|
||||
@SET_CMAKE_CL_SHOWINCLUDE_PREFIX@
|
||||
|
|
|
@ -51,6 +51,7 @@ endif()
|
|||
|
||||
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "@CMAKE_CXX_IMPLICIT_LINK_LIBRARIES@")
|
||||
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "@CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES@")
|
||||
set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
|
||||
|
||||
@SET_CMAKE_CMCLDEPS_EXECUTABLE@
|
||||
@SET_CMAKE_CL_SHOWINCLUDE_PREFIX@
|
||||
|
|
|
@ -72,19 +72,9 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
|
|||
# Parse implicit linker information for this language, if available.
|
||||
set(implicit_dirs "")
|
||||
set(implicit_libs "")
|
||||
set(MULTI_ARCH FALSE)
|
||||
if(DEFINED CMAKE_OSX_ARCHITECTURES)
|
||||
if( "${CMAKE_OSX_ARCHITECTURES}" MATCHES ";" )
|
||||
set(MULTI_ARCH TRUE)
|
||||
endif()
|
||||
endif()
|
||||
if(CMAKE_${lang}_VERBOSE_FLAG
|
||||
# Implicit link information cannot be used explicitly for
|
||||
# multiple OS X architectures, so we skip it.
|
||||
AND NOT MULTI_ARCH
|
||||
# Skip this with Xcode for now.
|
||||
AND NOT "${CMAKE_GENERATOR}" MATCHES Xcode)
|
||||
CMAKE_PARSE_IMPLICIT_LINK_INFO("${OUTPUT}" implicit_libs implicit_dirs log
|
||||
set(implicit_fwks "")
|
||||
if(CMAKE_${lang}_VERBOSE_FLAG)
|
||||
CMAKE_PARSE_IMPLICIT_LINK_INFO("${OUTPUT}" implicit_libs implicit_dirs implicit_fwks log
|
||||
"${CMAKE_${lang}_IMPLICIT_OBJECT_REGEX}")
|
||||
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
||||
"Parsed ${lang} implicit link information from above output:\n${log}\n\n")
|
||||
|
@ -112,8 +102,17 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
|
|||
message(STATUS "${_desc}")
|
||||
endif()
|
||||
|
||||
# Implicit link libraries cannot be used explicitly for multiple
|
||||
# OS X architectures, so we skip it.
|
||||
if(DEFINED CMAKE_OSX_ARCHITECTURES)
|
||||
if("${CMAKE_OSX_ARCHITECTURES}" MATCHES ";")
|
||||
set(implicit_libs "")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(CMAKE_${lang}_IMPLICIT_LINK_LIBRARIES "${implicit_libs}" PARENT_SCOPE)
|
||||
set(CMAKE_${lang}_IMPLICIT_LINK_DIRECTORIES "${implicit_dirs}" PARENT_SCOPE)
|
||||
set(CMAKE_${lang}_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "${implicit_fwks}" PARENT_SCOPE)
|
||||
|
||||
# Detect library architecture directory name.
|
||||
if(CMAKE_LIBRARY_ARCHITECTURE_REGEX)
|
||||
|
|
|
@ -52,3 +52,4 @@ endif()
|
|||
|
||||
set(CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES "@CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES@")
|
||||
set(CMAKE_Fortran_IMPLICIT_LINK_DIRECTORIES "@CMAKE_Fortran_IMPLICIT_LINK_DIRECTORIES@")
|
||||
set(CMAKE_Fortran_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_Fortran_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
|
||||
|
|
|
@ -16,9 +16,10 @@
|
|||
# This is used internally by CMake and should not be included by user
|
||||
# code.
|
||||
|
||||
function(CMAKE_PARSE_IMPLICIT_LINK_INFO text lib_var dir_var log_var obj_regex)
|
||||
function(CMAKE_PARSE_IMPLICIT_LINK_INFO text lib_var dir_var fwk_var log_var obj_regex)
|
||||
set(implicit_libs_tmp "")
|
||||
set(implicit_dirs_tmp)
|
||||
set(implicit_fwks_tmp)
|
||||
set(log "")
|
||||
|
||||
# Parse implicit linker arguments.
|
||||
|
@ -36,6 +37,16 @@ function(CMAKE_PARSE_IMPLICIT_LINK_INFO text lib_var dir_var log_var obj_regex)
|
|||
set(cmd)
|
||||
if("${line}" MATCHES "${linker_regex}" AND
|
||||
NOT "${line}" MATCHES "${linker_exclude_regex}")
|
||||
if(XCODE)
|
||||
# Xcode unconditionally adds a path under the project build tree and
|
||||
# on older versions it is not reported with proper quotes. Remove it.
|
||||
string(REGEX REPLACE "([][+.*()^])" "\\\\\\1" _dir_regex "${CMAKE_BINARY_DIR}")
|
||||
string(REGEX REPLACE " -[FL]${_dir_regex}/([^ ]| [^-])+( |$)" " " xline "${line}")
|
||||
if(NOT "x${xline}" STREQUAL "x${line}")
|
||||
set(log "${log} reduced line: [${line}]\n to: [${xline}]\n")
|
||||
set(line "${xline}")
|
||||
endif()
|
||||
endif()
|
||||
if(UNIX)
|
||||
separate_arguments(args UNIX_COMMAND "${line}")
|
||||
else()
|
||||
|
@ -97,6 +108,18 @@ function(CMAKE_PARSE_IMPLICIT_LINK_INFO text lib_var dir_var log_var obj_regex)
|
|||
endif()
|
||||
endforeach()
|
||||
|
||||
# Look for library search paths reported by linker.
|
||||
if("${output_lines}" MATCHES ";Library search paths:((;\t[^;]+)+)")
|
||||
string(REPLACE ";\t" ";" implicit_dirs_match "${CMAKE_MATCH_1}")
|
||||
set(log "${log} Library search paths: [${implicit_dirs_match}]\n")
|
||||
list(APPEND implicit_dirs_tmp ${implicit_dirs_match})
|
||||
endif()
|
||||
if("${output_lines}" MATCHES ";Framework search paths:((;\t[^;]+)+)")
|
||||
string(REPLACE ";\t" ";" implicit_fwks_match "${CMAKE_MATCH_1}")
|
||||
set(log "${log} Framework search paths: [${implicit_fwks_match}]\n")
|
||||
list(APPEND implicit_fwks_tmp ${implicit_fwks_match})
|
||||
endif()
|
||||
|
||||
# Cleanup list of libraries and flags.
|
||||
# We remove items that are not language-specific.
|
||||
set(implicit_libs "")
|
||||
|
@ -108,21 +131,33 @@ function(CMAKE_PARSE_IMPLICIT_LINK_INFO text lib_var dir_var log_var obj_regex)
|
|||
endif()
|
||||
endforeach()
|
||||
|
||||
# Cleanup list of directories.
|
||||
set(implicit_dirs "")
|
||||
foreach(d IN LISTS implicit_dirs_tmp)
|
||||
get_filename_component(dir "${d}" ABSOLUTE)
|
||||
list(APPEND implicit_dirs "${dir}")
|
||||
set(log "${log} collapse dir [${d}] ==> [${dir}]\n")
|
||||
# Cleanup list of library and framework directories.
|
||||
set(desc_dirs "library")
|
||||
set(desc_fwks "framework")
|
||||
foreach(t dirs fwks)
|
||||
set(implicit_${t} "")
|
||||
foreach(d IN LISTS implicit_${t}_tmp)
|
||||
get_filename_component(dir "${d}" ABSOLUTE)
|
||||
string(FIND "${dir}" "${CMAKE_FILES_DIRECTORY}/" pos)
|
||||
if(NOT pos LESS 0)
|
||||
set(msg ", skipping non-system directory")
|
||||
else()
|
||||
set(msg "")
|
||||
list(APPEND implicit_${t} "${dir}")
|
||||
endif()
|
||||
set(log "${log} collapse ${desc_${t}} dir [${d}] ==> [${dir}]${msg}\n")
|
||||
endforeach()
|
||||
list(REMOVE_DUPLICATES implicit_${t})
|
||||
endforeach()
|
||||
list(REMOVE_DUPLICATES implicit_dirs)
|
||||
|
||||
# Log results.
|
||||
set(log "${log} implicit libs: [${implicit_libs}]\n")
|
||||
set(log "${log} implicit dirs: [${implicit_dirs}]\n")
|
||||
set(log "${log} implicit fwks: [${implicit_fwks}]\n")
|
||||
|
||||
# Return results.
|
||||
set(${lib_var} "${implicit_libs}" PARENT_SCOPE)
|
||||
set(${dir_var} "${implicit_dirs}" PARENT_SCOPE)
|
||||
set(${fwk_var} "${implicit_fwks}" PARENT_SCOPE)
|
||||
set(${log_var} "${log}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
|
|
@ -19,6 +19,7 @@ endif()
|
|||
set(__DARWIN_COMPILER_CLANG 1)
|
||||
|
||||
macro(__darwin_compiler_clang lang)
|
||||
set(CMAKE_${lang}_VERBOSE_FLAG "-v -Wl,-v") # also tell linker to print verbose output
|
||||
set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-dynamiclib -Wl,-headerpad_max_install_names")
|
||||
set(CMAKE_SHARED_MODULE_CREATE_${lang}_FLAGS "-bundle -Wl,-headerpad_max_install_names")
|
||||
set(CMAKE_${lang}_SYSROOT_FLAG "-isysroot")
|
||||
|
|
|
@ -19,6 +19,7 @@ endif()
|
|||
set(__DARWIN_COMPILER_GNU 1)
|
||||
|
||||
macro(__darwin_compiler_gnu lang)
|
||||
set(CMAKE_${lang}_VERBOSE_FLAG "-v -Wl,-v") # also tell linker to print verbose output
|
||||
# GNU does not have -shared on OS X
|
||||
set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-dynamiclib -Wl,-headerpad_max_install_names")
|
||||
set(CMAKE_SHARED_MODULE_CREATE_${lang}_FLAGS "-bundle -Wl,-headerpad_max_install_names")
|
||||
|
|
|
@ -256,6 +256,24 @@ set(CMAKE_CXX_CREATE_MACOSX_FRAMEWORK
|
|||
if(NOT DEFINED CMAKE_FIND_FRAMEWORK)
|
||||
set(CMAKE_FIND_FRAMEWORK FIRST)
|
||||
endif()
|
||||
|
||||
# Older OS X linkers do not report their framework search path
|
||||
# with -v but "man ld" documents the following locations.
|
||||
set(CMAKE_PLATFORM_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
|
||||
${_CMAKE_OSX_SYSROOT_PATH}/Library/Frameworks
|
||||
${_CMAKE_OSX_SYSROOT_PATH}/System/Library/Frameworks
|
||||
)
|
||||
if(_CMAKE_OSX_SYSROOT_PATH)
|
||||
# Treat some paths as implicit so we do not override the SDK versions.
|
||||
list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
|
||||
/System/Library/Frameworks)
|
||||
endif()
|
||||
if("${_CURRENT_OSX_VERSION}" VERSION_LESS "10.5")
|
||||
# Older OS X tools had more implicit paths.
|
||||
list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
|
||||
${_CMAKE_OSX_SYSROOT_PATH}/Network/Library/Frameworks)
|
||||
endif()
|
||||
|
||||
# set up the default search directories for frameworks
|
||||
set(CMAKE_SYSTEM_FRAMEWORK_PATH
|
||||
~/Library/Frameworks
|
||||
|
|
|
@ -1376,10 +1376,31 @@ void cmComputeLinkInformation::DropDirectoryItem(std::string const& item)
|
|||
//----------------------------------------------------------------------------
|
||||
void cmComputeLinkInformation::ComputeFrameworkInfo()
|
||||
{
|
||||
// Avoid adding system framework paths. See "man ld" on OS X.
|
||||
this->FrameworkPathsEmmitted.insert("/Library/Frameworks");
|
||||
this->FrameworkPathsEmmitted.insert("/Network/Library/Frameworks");
|
||||
this->FrameworkPathsEmmitted.insert("/System/Library/Frameworks");
|
||||
// Avoid adding implicit framework paths.
|
||||
std::vector<std::string> implicitDirVec;
|
||||
|
||||
// Get platform-wide implicit directories.
|
||||
if(const char* implicitLinks = this->Makefile->GetDefinition
|
||||
("CMAKE_PLATFORM_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES"))
|
||||
{
|
||||
cmSystemTools::ExpandListArgument(implicitLinks, implicitDirVec);
|
||||
}
|
||||
|
||||
// Get language-specific implicit directories.
|
||||
std::string implicitDirVar = "CMAKE_";
|
||||
implicitDirVar += this->LinkLanguage;
|
||||
implicitDirVar += "_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES";
|
||||
if(const char* implicitDirs =
|
||||
this->Makefile->GetDefinition(implicitDirVar.c_str()))
|
||||
{
|
||||
cmSystemTools::ExpandListArgument(implicitDirs, implicitDirVec);
|
||||
}
|
||||
|
||||
for(std::vector<std::string>::const_iterator i = implicitDirVec.begin();
|
||||
i != implicitDirVec.end(); ++i)
|
||||
{
|
||||
this->FrameworkPathsEmmitted.insert(*i);
|
||||
}
|
||||
|
||||
// Regular expression to extract a framework path and name.
|
||||
this->SplitFramework.compile("(.*)/(.*)\\.framework$");
|
||||
|
|
|
@ -1641,6 +1641,15 @@ void cmDocumentVariables::DefineVariables(cmake* cm)
|
|||
"consistent when operating in a given build tree.",false,
|
||||
"Variables for Languages");
|
||||
|
||||
cm->DefineProperty
|
||||
("CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES", cmProperty::VARIABLE,
|
||||
"Implicit linker framework search path detected for language <LANG>.",
|
||||
"These paths are implicit linker framework search directories for "
|
||||
"the compiler's language. "
|
||||
"CMake automatically detects these directories for each language and "
|
||||
"reports the results in this variable.", false,
|
||||
"Variables for Languages");
|
||||
|
||||
cm->DefineProperty
|
||||
("CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES", cmProperty::VARIABLE,
|
||||
"Implicit link libraries and flags detected for language <LANG>.",
|
||||
|
|
|
@ -1708,7 +1708,7 @@ void cmLocalGenerator::OutputLinkLibraries(std::string& linkLibraries,
|
|||
for(std::vector<std::string>::const_iterator fdi = fwDirs.begin();
|
||||
fdi != fwDirs.end(); ++fdi)
|
||||
{
|
||||
frameworkPath = " -F";
|
||||
frameworkPath += "-F";
|
||||
frameworkPath += this->Convert(fdi->c_str(), NONE, SHELL, false);
|
||||
frameworkPath += " ";
|
||||
}
|
||||
|
|
|
@ -102,30 +102,132 @@ list(APPEND platforms linux64_test1)
|
|||
#-----------------------------------------------------------------------------
|
||||
# Mac
|
||||
|
||||
# gcc -arch i686 dummy.c -v -Wl,-v
|
||||
set(mac_i686_gcc_Wlv_text " /usr/libexec/gcc/i686-apple-darwin10/4.2.1/collect2 -dynamic -arch i386 -macosx_version_min 10.6.0 -weak_reference_mismatches non-weak -o a.out -lcrt1.10.6.o -L/usr/lib/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../../i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../.. /var/tmp//ccnhXAGL.o -lSystem -lgcc -lSystem
|
||||
collect2 version 4.2.1 (Apple Inc. build 5646) (i686 Darwin)
|
||||
/usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld -dynamic -arch i386 -macosx_version_min 10.6.0 -weak_reference_mismatches non-weak -o a.out -lcrt1.10.6.o -L/usr/lib/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../../i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../.. /var/tmp//ccSiuUhD.o -v -lSystem -lgcc -lSystem
|
||||
@(#)PROGRAM:ld PROJECT:ld64-95.2.12
|
||||
Library search paths:
|
||||
/usr/lib/i686-apple-darwin10/4.2.1
|
||||
/usr/lib/gcc/i686-apple-darwin10/4.2.1
|
||||
/usr/lib/gcc/i686-apple-darwin10/4.2.1
|
||||
/usr/lib/i686-apple-darwin10/4.2.1
|
||||
/usr/lib
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
Framework search paths:
|
||||
/Library/Frameworks/
|
||||
/System/Library/Frameworks/")
|
||||
set(mac_i686_gcc_Wlv_libs "")
|
||||
set(mac_i686_gcc_Wlv_dirs "/usr/lib/i686-apple-darwin10/4.2.1;/usr/lib/gcc/i686-apple-darwin10/4.2.1;/usr/lib;/usr/local/lib")
|
||||
set(mac_i686_gcc_Wlv_fwks "/Library/Frameworks;/System/Library/Frameworks")
|
||||
list(APPEND platforms mac_i686_gcc_Wlv)
|
||||
|
||||
# gcc -arch i686 dummy.c -v
|
||||
set(mac_i686_gcc_text " /usr/libexec/gcc/i686-apple-darwin10/4.2.1/collect2 -dynamic -arch i386 -macosx_version_min 10.6.0 -weak_reference_mismatches non-weak -o a.out -lcrt1.10.6.o -L/usr/lib/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../../i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../.. /var/tmp//ccnhXAGL.o -lSystem -lgcc -lSystem")
|
||||
set(mac_i686_gcc_libs "")
|
||||
set(mac_i686_gcc_dirs "/usr/lib/i686-apple-darwin10/4.2.1;/usr/lib/gcc/i686-apple-darwin10/4.2.1;/usr/lib")
|
||||
list(APPEND platforms mac_i686_gcc)
|
||||
|
||||
# g++ -arch i686 dummy.cxx -v -Wl,-v
|
||||
set(mac_i686_g++_Wlv_text " /usr/libexec/gcc/i686-apple-darwin10/4.2.1/collect2 -dynamic -arch i386 -macosx_version_min 10.6.0 -weak_reference_mismatches non-weak -o a.out -lcrt1.10.6.o -L/usr/lib/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../../i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../.. /var/tmp//ccEXXICh.o -lstdc++ -lSystem -lgcc -lSystem
|
||||
collect2 version 4.2.1 (Apple Inc. build 5646) (i686 Darwin)
|
||||
/usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld -dynamic -arch i386 -macosx_version_min 10.6.0 -weak_reference_mismatches non-weak -o a.out -lcrt1.10.6.o -L/usr/lib/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../../i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../.. /var/tmp//ccWrBoVl.o -v -lstdc++ -lSystem -lgcc -lSystem
|
||||
@(#)PROGRAM:ld PROJECT:ld64-95.2.12
|
||||
Library search paths:
|
||||
/usr/lib/i686-apple-darwin10/4.2.1
|
||||
/usr/lib/gcc/i686-apple-darwin10/4.2.1
|
||||
/usr/lib/gcc/i686-apple-darwin10/4.2.1
|
||||
/usr/lib/i686-apple-darwin10/4.2.1
|
||||
/usr/lib
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
Framework search paths:
|
||||
/Library/Frameworks/
|
||||
/System/Library/Frameworks/")
|
||||
set(mac_i686_g++_Wlv_libs "stdc++")
|
||||
set(mac_i686_g++_Wlv_dirs "/usr/lib/i686-apple-darwin10/4.2.1;/usr/lib/gcc/i686-apple-darwin10/4.2.1;/usr/lib;/usr/local/lib")
|
||||
set(mac_i686_g++_Wlv_fwks "/Library/Frameworks;/System/Library/Frameworks")
|
||||
list(APPEND platforms mac_i686_g++_Wlv)
|
||||
|
||||
# g++ -arch i686 dummy.cxx -v
|
||||
set(mac_i686_g++_text " /usr/libexec/gcc/i686-apple-darwin10/4.2.1/collect2 -dynamic -arch i386 -macosx_version_min 10.6.0 -weak_reference_mismatches non-weak -o a.out -lcrt1.10.6.o -L/usr/lib/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../../i686-apple-darwin10/4.2.1 -L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../.. /var/tmp//ccEXXICh.o -lstdc++ -lSystem -lgcc -lSystem")
|
||||
set(mac_i686_g++_libs "stdc++")
|
||||
set(mac_i686_g++_dirs "/usr/lib/i686-apple-darwin10/4.2.1;/usr/lib/gcc/i686-apple-darwin10/4.2.1;/usr/lib")
|
||||
list(APPEND platforms mac_i686_g++)
|
||||
|
||||
# gfortran dummy.f -v -Wl,-v
|
||||
set(mac_i686_gfortran_Wlv_text " /usr/local/libexec/gcc/i386-apple-darwin9.7.0/4.4.1/collect2 -dynamic -arch i386 -macosx_version_min 10.6.0 -weak_reference_mismatches non-weak -o a.out -lcrt1.10.5.o -L/usr/local/lib/gcc/i386-apple-darwin9.7.0/4.4.1 -L/usr/local/lib/gcc/i386-apple-darwin9.7.0/4.4.1/../../.. /var/tmp//cc9zXNax.o -v -lgfortranbegin -lgfortran -lgcc_s.10.5 -lgcc -lSystem
|
||||
collect2 version 4.4.1 20090623 (prerelease) (i686 Darwin)
|
||||
/usr/bin/ld -dynamic -arch i386 -macosx_version_min 10.6.0 -weak_reference_mismatches non-weak -o a.out -lcrt1.10.5.o -L/usr/local/lib/gcc/i386-apple-darwin9.7.0/4.4.1 -L/usr/local/lib/gcc/i386-apple-darwin9.7.0/4.4.1/../../.. /var/tmp//cc9zXNax.o -v -lgfortranbegin -lgfortran -lgcc_s.10.5 -lgcc -lSystem
|
||||
@(#)PROGRAM:ld PROJECT:ld64-95.2.12
|
||||
Library search paths:
|
||||
/usr/local/lib/gcc/i386-apple-darwin9.7.0/4.4.1
|
||||
/usr/local/lib
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
Framework search paths:
|
||||
/Library/Frameworks/
|
||||
/System/Library/Frameworks/")
|
||||
set(mac_i686_gfortran_Wlv_libs "gfortranbegin;gfortran")
|
||||
set(mac_i686_gfortran_Wlv_dirs "/usr/local/lib/gcc/i386-apple-darwin9.7.0/4.4.1;/usr/local/lib;/usr/lib")
|
||||
set(mac_i686_gfortran_Wlv_fwks "/Library/Frameworks;/System/Library/Frameworks")
|
||||
list(APPEND platforms mac_i686_gfortran_Wlv)
|
||||
|
||||
# gfortran dummy.f -v
|
||||
set(mac_i686_gfortran_text " /usr/libexec/gcc/i386-apple-darwin9.7.0/4.4.1/collect2 -dynamic -arch i386 -macosx_version_min 10.6.0 -weak_reference_mismatches non-weak -o a.out -lcrt1.10.5.o -L/usr/lib/gcc/i386-apple-darwin9.7.0/4.4.1 -L/usr/lib/gcc -L/usr/lib/gcc/i386-apple-darwin9.7.0/4.4.1/../../.. /var/tmp//ccgqbX5P.o -lgfortranbegin -lgfortran -lgcc_s.10.5 -lgcc -lSystem")
|
||||
set(mac_i686_gfortran_libs "gfortranbegin;gfortran")
|
||||
set(mac_i686_gfortran_dirs "/usr/lib/gcc/i386-apple-darwin9.7.0/4.4.1;/usr/lib/gcc;/usr/lib")
|
||||
list(APPEND platforms mac_i686_gfortran)
|
||||
|
||||
# gcc -arch ppc dummy.c -v -Wl,-v
|
||||
set(mac_ppc_gcc_Wlv_text " /usr/libexec/gcc/powerpc-apple-darwin10/4.2.1/collect2 -dynamic -arch ppc -macosx_version_min 10.6.0 -weak_reference_mismatches non-weak -o a.out -lcrt1.10.5.o -L/usr/lib/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1/../../../powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1/../../.. /var/tmp//cclziQY4.o -v -lgcc -lSystemStubs -lSystem
|
||||
collect2 version 4.2.1 (Apple Inc. build 5646) (Darwin/PowerPC)
|
||||
/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1/ld -dynamic -arch ppc -macosx_version_min 10.6.0 -weak_reference_mismatches non-weak -o a.out -lcrt1.10.5.o -L/usr/lib/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1/../../../powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1/../../.. /var/tmp//cclziQY4.o -v -lgcc -lSystemStubs -lSystem
|
||||
@(#)PROGRAM:ld PROJECT:ld64-95.2.12
|
||||
Library search paths:
|
||||
/usr/lib/powerpc-apple-darwin10/4.2.1
|
||||
/usr/lib/gcc/powerpc-apple-darwin10/4.2.1
|
||||
/usr/lib/gcc/powerpc-apple-darwin10/4.2.1
|
||||
/usr/lib/powerpc-apple-darwin10/4.2.1
|
||||
/usr/lib
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
Framework search paths:
|
||||
/Library/Frameworks/
|
||||
/System/Library/Frameworks/")
|
||||
set(mac_ppc_gcc_Wlv_libs "")
|
||||
set(mac_ppc_gcc_Wlv_dirs "/usr/lib/powerpc-apple-darwin10/4.2.1;/usr/lib/gcc/powerpc-apple-darwin10/4.2.1;/usr/lib;/usr/local/lib")
|
||||
set(mac_ppc_gcc_Wlv_fwks "/Library/Frameworks;/System/Library/Frameworks")
|
||||
list(APPEND platforms mac_ppc_gcc_Wlv)
|
||||
|
||||
# gcc -arch ppc dummy.c -v
|
||||
set(mac_ppc_gcc_text " /usr/libexec/gcc/powerpc-apple-darwin10/4.2.1/collect2 -dynamic -arch ppc -macosx_version_min 10.6.0 -weak_reference_mismatches non-weak -o a.out -lcrt1.10.5.o -L/usr/lib/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1/../../../powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1/../../.. /var/tmp//ccdcolsP.o -lgcc -lSystemStubs -lSystem")
|
||||
set(mac_ppc_gcc_libs "")
|
||||
set(mac_ppc_gcc_dirs "/usr/lib/powerpc-apple-darwin10/4.2.1;/usr/lib/gcc/powerpc-apple-darwin10/4.2.1;/usr/lib")
|
||||
list(APPEND platforms mac_ppc_gcc)
|
||||
|
||||
# g++ -arch ppc dummy.cxx -v -Wl,-v
|
||||
set(mac_ppc_g++_Wlv_text " /usr/libexec/gcc/powerpc-apple-darwin10/4.2.1/collect2 -dynamic -arch ppc -macosx_version_min 10.6.0 -weak_reference_mismatches non-weak -o a.out -lcrt1.10.5.o -L/usr/lib/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1/../../../powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1/../../.. /var/tmp//ccaFTkwq.o -v -lstdc++ -lgcc -lSystemStubs -lSystem
|
||||
collect2 version 4.2.1 (Apple Inc. build 5646) (Darwin/PowerPC)
|
||||
/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1/ld -dynamic -arch ppc -macosx_version_min 10.6.0 -weak_reference_mismatches non-weak -o a.out -lcrt1.10.5.o -L/usr/lib/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1/../../../powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1/../../.. /var/tmp//ccaFTkwq.o -v -lstdc++ -lgcc -lSystemStubs -lSystem
|
||||
@(#)PROGRAM:ld PROJECT:ld64-95.2.12
|
||||
Library search paths:
|
||||
/usr/lib/powerpc-apple-darwin10/4.2.1
|
||||
/usr/lib/gcc/powerpc-apple-darwin10/4.2.1
|
||||
/usr/lib/gcc/powerpc-apple-darwin10/4.2.1
|
||||
/usr/lib/powerpc-apple-darwin10/4.2.1
|
||||
/usr/lib
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
Framework search paths:
|
||||
/Library/Frameworks/
|
||||
/System/Library/Frameworks/")
|
||||
set(mac_ppc_g++_Wlv_libs "stdc++")
|
||||
set(mac_ppc_g++_Wlv_dirs "/usr/lib/powerpc-apple-darwin10/4.2.1;/usr/lib/gcc/powerpc-apple-darwin10/4.2.1;/usr/lib;/usr/local/lib")
|
||||
set(mac_ppc_g++_Wlv_fwks "/Library/Frameworks;/System/Library/Frameworks")
|
||||
list(APPEND platforms mac_ppc_g++_Wlv)
|
||||
|
||||
# g++ -arch ppc dummy.cxx -v
|
||||
set(mac_ppc_g++_text " /usr/libexec/gcc/powerpc-apple-darwin10/4.2.1/collect2 -dynamic -arch ppc -macosx_version_min 10.6.0 -weak_reference_mismatches non-weak -o a.out -lcrt1.10.5.o -L/usr/lib/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1/../../../powerpc-apple-darwin10/4.2.1 -L/usr/lib/gcc/powerpc-apple-darwin10/4.2.1/../../.. /var/tmp//ccbjB6Lj.o -lstdc++ -lgcc -lSystemStubs -lSystem")
|
||||
set(mac_ppc_g++_libs "stdc++")
|
||||
|
@ -402,10 +504,10 @@ list(APPEND platforms msys_g77)
|
|||
# Test parsing for all above examples.
|
||||
|
||||
foreach(p IN LISTS platforms)
|
||||
cmake_parse_implicit_link_info("${${p}_text}" libs dirs log "${${p}_obj_regex}")
|
||||
cmake_parse_implicit_link_info("${${p}_text}" libs dirs fwks log "${${p}_obj_regex}")
|
||||
|
||||
foreach(v libs dirs)
|
||||
if(NOT "${${v}}" STREQUAL "${${p}_${v}}")
|
||||
foreach(v libs dirs fwks)
|
||||
if(DEFINED "${p}_${v}" AND NOT "${${v}}" STREQUAL "${${p}_${v}}")
|
||||
message(FATAL_ERROR
|
||||
"cmake_parse_implicit_link_info failed\n"
|
||||
"Expected '${p}' implicit ${v}\n"
|
||||
|
|
|
@ -96,7 +96,9 @@ CMAKE_CXX_LINK_EXECUTABLE == "${CMAKE_CXX_LINK_EXECUTABLE}"
|
|||
// implicit link info
|
||||
CMAKE_C_IMPLICIT_LINK_LIBRARIES == "${CMAKE_C_IMPLICIT_LINK_LIBRARIES}"
|
||||
CMAKE_C_IMPLICIT_LINK_DIRECTORIES == "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}"
|
||||
CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES == "${CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES}"
|
||||
CMAKE_CXX_IMPLICIT_LINK_LIBRARIES == "${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES}"
|
||||
CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES == "${CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES}"
|
||||
CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES == "${CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES}"
|
||||
|
||||
XCODE_VERSION == "${XCODE_VERSION}"
|
||||
|
|
Loading…
Reference in New Issue