Enhance check for presence of static-libstdc++
authorBrenden Blanco <bblanco@plumgrid.com>
Thu, 3 Sep 2015 18:12:17 +0000 (11:12 -0700)
committerBrenden Blanco <bblanco@plumgrid.com>
Thu, 3 Sep 2015 18:12:17 +0000 (11:12 -0700)
* Fixes a link error on Ubuntu when static-libstdc++ is not installed.

Reported-by: Denis V. Lunev <den@openvz.org>
Signed-off-by: Brenden Blanco <bblanco@plumgrid.com>
src/cc/CMakeLists.txt

index 4be7784..a69fe4e 100644 (file)
@@ -22,7 +22,13 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
 if (CMAKE_COMPILER_IS_GNUCC)
   execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
   if (GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9)
-    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libstdc++")
+    execute_process(COMMAND ${CMAKE_C_COMPILER} -print-libgcc-file-name OUTPUT_VARIABLE GCC_LIB)
+    get_filename_component(GCC_DIR "${GCC_LIB}" DIRECTORY)
+    find_library(GCC_LIBSTDCPP libstdc++.a PATHS "${GCC_DIR}" NO_DEFAULT_PATH)
+    if (GCC_LIBSTDCPP)
+      message(STATUS "Using static-libstdc++")
+      set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libstdc++")
+    endif()
   endif()
 endif()