[flang] To use LLVM's libc++ instead of GCC's libstdc++, define
authorSteve Scalpone <sscalpone@nvidia.com>
Mon, 11 Mar 2019 17:49:46 +0000 (10:49 -0700)
committerSteve Scalpone <sscalpone@nvidia.com>
Mon, 11 Mar 2019 17:49:46 +0000 (10:49 -0700)
BUILD_WITH_CLANG_LIBRARIES on the cmake command line to
be the path to a clang installation with bin, lib, etc.
For this to work, BUILD_WITH_CLANG must be defined too.

Original-commit: flang-compiler/f18@a36d5fee421f2e90293540335c5b887412e31383
Reviewed-on: https://github.com/flang-compiler/f18/pull/326

flang/CMakeLists.txt

index eed84ec..c07fe4d 100644 (file)
@@ -22,7 +22,7 @@ if( GCC )
   set(CMAKE_INSTALL_RPATH "${GCC}/lib64")
 endif()
 if(BUILD_WITH_CLANG)
-  set(CMAKE_CXX_COMPILER "${BUILD_WITH_CLANG}/bin/clang")
+  set(CMAKE_CXX_COMPILER "${BUILD_WITH_CLANG}/bin/clang++")
   set(CMAKE_CC_COMPILER "${BUILD_WITH_CLANG}/bin/clang")
   if(GCC)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --gcc-toolchain=${GCC}")
@@ -75,10 +75,15 @@ message(STATUS "LLVM libraries: ${LLVM_COMMON_LIBS}")
 
 if(CMAKE_COMPILER_IS_GNUCXX OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
    if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
-     set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lstdc++")
-     if(GCC)
-       set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --gcc-toolchain=${GCC}")
-     endif()
+      if(BUILD_WITH_CLANG_LIBRARIES)
+         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nostdinc++ -I${BUILD_WITH_CLANG_LIBRARIES}/include/c++/v1")
+         set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ -Wl,-rpath,${BUILD_WITH_CLANG_LIBRARIES}/lib -L${BUILD_WITH_CLANG_LIBRARIES}/lib")
+      else()
+         set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lstdc++")
+      endif()
+      if(GCC)
+         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --gcc-toolchain=${GCC}")
+      endif()
    endif()
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic")