[mlpack-git] master: Link against libc++ when using clang on OSX. (8aa3abb)

gitdub at big.cc.gt.atl.ga.us gitdub at big.cc.gt.atl.ga.us
Mon Mar 30 13:34:47 EDT 2015


Repository : https://github.com/mlpack/mlpack

On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/3a364a74c9496d57a5fbf1d99aa5fdce3214b681...8aa3abb00dd303a686db7dbc9896fef65961a738

>---------------------------------------------------------------

commit 8aa3abb00dd303a686db7dbc9896fef65961a738
Author: Marcus Edel <marcus.edel at fu-berlin.de>
Date:   Mon Mar 30 19:34:25 2015 +0200

    Link against libc++ when using clang on OSX.


>---------------------------------------------------------------

8aa3abb00dd303a686db7dbc9896fef65961a738
 CMakeLists.txt | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index cca3b59..d5079c9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -31,13 +31,24 @@ if(CMAKE_COMPILER_IS_GNUCC OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra")
 endif(CMAKE_COMPILER_IS_GNUCC OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
 
-# If using clang, we have to link against libstdc++ (at least on some systems).
-# Further, gcc sometimes optimizes calls to math.h functions, making -lm
-# unnecessary with gcc, but it may still be necessary with clang.
+# If using clang, we have to link against libstdc++ or libc++ depending on the
+# OS (at least on some systems). Further, gcc sometimes optimizes calls to
+# math.h functions, making -lm unnecessary with gcc, but it may still be
+# necessary with clang.
 if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lstdc++ -lm")
-  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lstdc++ -lm")
-  set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -lstdc++ -lm")
+  # Linking against libc++ instead of the GNU libstdc++ on OSX.
+  if(APPLE)
+    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ -lm")
+    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}
+        -stdlib=libc++ -lm")
+    set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS}
+        -stdlib=libc++ -lm")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
+  else(APPLE)
+    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lstdc++ -lm")
+    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lstdc++ -lm")
+    set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -lstdc++ -lm")
+  endif(APPLE)
 endif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
 
 # Debugging CFLAGS.  Turn optimizations off; turn debugging symbols on.



More information about the mlpack-git mailing list