Hi thakis,
The Autoconf build already does this, but it was never ported to CMake. The
host linker version affects the flags that Clang pass to the linker, notably
whether it passes -demangle or not.
http://reviews.llvm.org/D6239
Files:
CMakeLists.txt
include/clang/Config/config.h.cmake
include/clang/Config/config.h.in
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 <path> to all compiler invocations for --sysroot=<path>. */
#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
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits