Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -253,6 +253,26 @@ endif() endif () +# Determine HOST_LINK_VERSION on Darwin. +set(HOST_LINK_VERSION) +if (APPLE) + set(LD_V_OUTPUT) + execute_process( + COMMAND sh -c "${CMAKE_LINKER} -v 2>&1 | head -1" + RESULT_VARIABLE HAD_ERROR + OUTPUT_VARIABLE LD_V_OUTPUT + ) + if (NOT HAD_ERROR) + if ("${LD_V_OUTPUT}" MATCHES ".*ld64.*") + string(REGEX REPLACE ".*ld64-([0-9.]*).*" "\\1" HOST_LINK_VERSION ${LD_V_OUTPUT}) + else() + string(REGEX REPLACE "[^0-9]*([0-9.]*).*" "\\1" HOST_LINK_VERSION ${LD_V_OUTPUT}) + endif() + else() + message(FATAL_ERROR "${CMAKE_LINKER} failed with status ${HAD_ERROR}") + endif() +endif() + configure_file( ${CLANG_SOURCE_DIR}/include/clang/Config/config.h.cmake ${CLANG_BINARY_DIR}/include/clang/Config/config.h) Index: include/clang/Config/config.h.cmake =================================================================== --- include/clang/Config/config.h.cmake +++ include/clang/Config/config.h.cmake @@ -26,4 +26,7 @@ /* The LLVM product name and version */ #define BACKEND_PACKAGE_STRING "${BACKEND_PACKAGE_STRING}" +/* Linker version detected at compile time. */ +#cmakedefine HOST_LINK_VERSION "${HOST_LINK_VERSION}" + #endif Index: include/clang/Config/config.h.in =================================================================== --- include/clang/Config/config.h.in +++ include/clang/Config/config.h.in @@ -14,9 +14,6 @@ /* Directories clang will search for headers */ #undef C_INCLUDE_DIRS -/* Linker version detected at compile time. */ -#undef HOST_LINK_VERSION - /* Default to all compiler invocations for --sysroot=. */ #undef DEFAULT_SYSROOT @@ -31,4 +28,7 @@ /* The LLVM product name and version */ #define BACKEND_PACKAGE_STRING PACKAGE_STRING +/* Linker version detected at compile time. */ +#undef HOST_LINK_VERSION + #endif