llvmPackages_git: Fix the libcxx and libcxxabi builds

+52 -69
+1 -4
pkgs/development/compilers/llvm/git/libcxx/default.nix
··· 1 - { lib, stdenv, llvm_meta, src, cmake, python3, libcxxabi, fixDarwinDylibNames, version 1 + { lib, stdenv, llvm_meta, src, cmake, python3, fixDarwinDylibNames, version 2 2 , enableShared ? !stdenv.hostPlatform.isStatic 3 3 }: 4 4 ··· 24 24 nativeBuildInputs = [ cmake python3 ] 25 25 ++ lib.optional stdenv.isDarwin fixDarwinDylibNames; 26 26 27 - buildInputs = [ libcxxabi ]; 28 - 29 27 cmakeFlags = [ 30 - "-DLIBCXX_CXX_ABI=libcxxabi" 31 28 ] ++ lib.optional (stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isWasi) "-DLIBCXX_HAS_MUSL_LIBC=1" 32 29 ++ lib.optional (stdenv.hostPlatform.useLLVM or false) "-DLIBCXX_USE_COMPILER_RT=ON" 33 30 ++ lib.optional stdenv.hostPlatform.isWasm [
+36 -55
pkgs/development/compilers/llvm/git/libcxx/gnu-install-dirs.patch
··· 1 1 diff --git a/CMakeLists.txt b/CMakeLists.txt 2 - index 9bf1a02f0908..612cd4aab76c 100644 2 + index 06ee1d74a03e..6c3c6f8f8d47 100644 3 3 --- a/CMakeLists.txt 4 4 +++ b/CMakeLists.txt 5 5 @@ -28,6 +28,8 @@ set(LIBCXX_BINARY_INCLUDE_DIR "${LIBCXX_BINARY_DIR}/include/c++build") ··· 9 9 + include(GNUInstallDirs) 10 10 + 11 11 set(PACKAGE_NAME libcxx) 12 - set(PACKAGE_VERSION 12.0.0) 12 + set(PACKAGE_VERSION 13.0.0git) 13 13 set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") 14 - @@ -402,7 +404,7 @@ endif () 15 - if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) 16 - set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++) 17 - set(LIBCXX_HEADER_DIR ${LLVM_BINARY_DIR}) 18 - - set(LIBCXX_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++) 19 - + set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++) 14 + @@ -409,7 +411,7 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) 15 + set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}) 16 + set(LIBCXX_GENERATED_INCLUDE_DIR "${LLVM_BINARY_DIR}/include/c++/v1") 17 + set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LLVM_BINARY_DIR}/include/${LLVM_DEFAULT_TARGET_TRIPLE}/c++/v1") 18 + - set(LIBCXX_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}) 19 + + set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}) 20 + set(LIBCXX_INSTALL_INCLUDE_DIR "include/c++/v1") 21 + set(LIBCXX_INSTALL_INCLUDE_TARGET_DIR "include/${LLVM_DEFAULT_TARGET_TRIPLE}/c++/v1") 20 22 if(LIBCXX_LIBDIR_SUBDIR) 21 - string(APPEND LIBCXX_LIBRARY_DIR /${LIBCXX_LIBDIR_SUBDIR}) 22 - string(APPEND LIBCXX_INSTALL_LIBRARY_DIR /${LIBCXX_LIBDIR_SUBDIR}) 23 - @@ -410,11 +412,11 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) 24 - elseif(LLVM_LIBRARY_OUTPUT_INTDIR) 23 + @@ -420,14 +422,14 @@ elseif(LLVM_LIBRARY_OUTPUT_INTDIR) 25 24 set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}) 26 - set(LIBCXX_HEADER_DIR ${LLVM_BINARY_DIR}) 25 + set(LIBCXX_GENERATED_INCLUDE_DIR "${LLVM_BINARY_DIR}/include/c++/v1") 26 + set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LIBCXX_GENERATED_INCLUDE_DIR}") 27 27 - set(LIBCXX_INSTALL_LIBRARY_DIR lib${LIBCXX_LIBDIR_SUFFIX}) 28 28 + set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXX_LIBDIR_SUFFIX}) 29 + set(LIBCXX_INSTALL_INCLUDE_DIR "include/c++/v1") 30 + set(LIBCXX_INSTALL_INCLUDE_TARGET_DIR "${LIBCXX_INSTALL_INCLUDE_DIR}") 29 31 else() 30 32 set(LIBCXX_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX}) 31 - set(LIBCXX_HEADER_DIR ${CMAKE_BINARY_DIR}) 33 + set(LIBCXX_GENERATED_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include/c++/v1") 34 + set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LIBCXX_GENERATED_INCLUDE_DIR}") 32 35 - set(LIBCXX_INSTALL_LIBRARY_DIR lib${LIBCXX_LIBDIR_SUFFIX}) 33 36 + set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXX_LIBDIR_SUFFIX}) 37 + set(LIBCXX_INSTALL_INCLUDE_DIR "include/c++/v1") 38 + set(LIBCXX_INSTALL_INCLUDE_TARGET_DIR "${LIBCXX_INSTALL_INCLUDE_DIR}") 34 39 endif() 35 - 36 - file(MAKE_DIRECTORY "${LIBCXX_BINARY_INCLUDE_DIR}") 37 40 diff --git a/cmake/Modules/HandleLibCXXABI.cmake b/cmake/Modules/HandleLibCXXABI.cmake 38 - index 5d2764e870e9..bb1ec5de6ca2 100644 41 + index 5a8a4a270a1a..c06bae0001aa 100644 39 42 --- a/cmake/Modules/HandleLibCXXABI.cmake 40 43 +++ b/cmake/Modules/HandleLibCXXABI.cmake 41 44 @@ -63,7 +63,7 @@ macro(setup_abi_lib abidefines abishared abistatic abifiles abidirs) 42 45 43 46 if (LIBCXX_INSTALL_HEADERS) 44 47 install(FILES "${LIBCXX_BINARY_INCLUDE_DIR}/${fpath}" 45 - - DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1/${dstdir} 46 - + DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}${CMAKE_INSTALL_INCLUDEDIR}/c++/v1/${dstdir} 48 + - DESTINATION include/c++/v1/${dstdir} 49 + + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/c++/v1/${dstdir} 47 50 COMPONENT cxx-headers 48 51 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ 49 52 ) 50 - diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt 51 - index 29a317b8ae9a..4747263cfd1b 100644 52 - --- a/include/CMakeLists.txt 53 - +++ b/include/CMakeLists.txt 54 - @@ -252,7 +252,7 @@ if (LIBCXX_INSTALL_HEADERS) 55 - foreach(file ${files}) 56 - get_filename_component(dir ${file} DIRECTORY) 57 - install(FILES ${file} 58 - - DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1/${dir} 59 - + DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}${CMAKE_INSTALL_INCLUDEDIR}/c++/v1/${dir} 60 - COMPONENT cxx-headers 61 - PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ 62 - ) 63 - @@ -260,7 +260,7 @@ if (LIBCXX_INSTALL_HEADERS) 64 - 65 - # Install the generated header as __config. 66 - install(FILES ${LIBCXX_BINARY_DIR}/__generated_config 67 - - DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1 68 - + DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}${CMAKE_INSTALL_INCLUDEDIR}/c++/v1 69 - PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ 70 - RENAME __config 71 - COMPONENT cxx-headers) 72 53 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt 73 - index 9965104cb5b2..9b55dbb1d822 100644 54 + index 87b71f7ba334..d20a783079b7 100644 74 55 --- a/src/CMakeLists.txt 75 56 +++ b/src/CMakeLists.txt 76 - @@ -352,21 +352,21 @@ if (LIBCXX_INSTALL_SHARED_LIBRARY) 57 + @@ -369,21 +369,21 @@ if (LIBCXX_INSTALL_SHARED_LIBRARY) 77 58 install(TARGETS cxx_shared 78 - ARCHIVE DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx 79 - LIBRARY DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx 80 - - RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}bin COMPONENT cxx) 81 - + RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}${CMAKE_INSTALL_BINDIR} COMPONENT cxx) 59 + ARCHIVE DESTINATION ${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx 60 + LIBRARY DESTINATION ${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx 61 + - RUNTIME DESTINATION bin COMPONENT cxx) 62 + + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT cxx) 82 63 endif() 83 64 84 65 if (LIBCXX_INSTALL_STATIC_LIBRARY) 85 66 install(TARGETS cxx_static 86 - ARCHIVE DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx 87 - LIBRARY DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx 88 - - RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}bin COMPONENT cxx) 89 - + RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}${CMAKE_INSTALL_BINDIR} COMPONENT cxx) 67 + ARCHIVE DESTINATION ${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx 68 + LIBRARY DESTINATION ${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx 69 + - RUNTIME DESTINATION bin COMPONENT cxx) 70 + + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT cxx) 90 71 endif() 91 72 92 73 if(LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY) 93 74 install(TARGETS cxx_experimental 94 - LIBRARY DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx 95 - ARCHIVE DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx 96 - - RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}bin COMPONENT cxx) 97 - + RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}${CMAKE_INSTALL_BINDIR} COMPONENT cxx) 75 + LIBRARY DESTINATION ${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx 76 + ARCHIVE DESTINATION ${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx 77 + - RUNTIME DESTINATION bin COMPONENT cxx) 78 + + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT cxx) 98 79 endif() 99 80 100 81 # NOTE: This install command must go after the cxx install command otherwise
+4 -1
pkgs/development/compilers/llvm/git/libcxxabi/default.nix
··· 1 1 { lib, stdenv, llvm_meta, cmake, python3, src, libunwind, version 2 2 , enableShared ? !stdenv.hostPlatform.isStatic 3 + , libcxx 3 4 }: 4 5 5 6 stdenv.mkDerivation rec { ··· 26 27 nativeBuildInputs = [ cmake python3 ]; 27 28 buildInputs = lib.optional (!stdenv.isDarwin && !stdenv.isFreeBSD && !stdenv.hostPlatform.isWasm) libunwind; 28 29 29 - cmakeFlags = lib.optionals (stdenv.hostPlatform.useLLVM or false) [ 30 + cmakeFlags = [ 31 + "-DLIBCXXABI_LIBCXX_INCLUDES=${libcxx.dev}/include/c++/v1" 32 + ] ++ lib.optionals (stdenv.hostPlatform.useLLVM or false) [ 30 33 "-DLLVM_ENABLE_LIBCXX=ON" 31 34 "-DLIBCXXABI_USE_LLVM_UNWINDER=ON" 32 35 ] ++ lib.optionals stdenv.hostPlatform.isWasm [
+11 -9
pkgs/development/compilers/llvm/git/libcxxabi/gnu-install-dirs.patch
··· 1 1 diff --git a/CMakeLists.txt b/CMakeLists.txt 2 - index 426c855288fc..a9812a994f53 100644 2 + index 1e8b73aa38cc..6f7b2a25d205 100644 3 3 --- a/CMakeLists.txt 4 4 +++ b/CMakeLists.txt 5 5 @@ -27,6 +27,8 @@ set(LIBCXXABI_LIBCXX_PATH "${CMAKE_CURRENT_LIST_DIR}/../libcxx" CACHE PATH ··· 9 9 + include(GNUInstallDirs) 10 10 + 11 11 set(PACKAGE_NAME libcxxabi) 12 - set(PACKAGE_VERSION 11.0.0) 12 + set(PACKAGE_VERSION 11.0.0git) 13 13 set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") 14 - @@ -180,17 +182,17 @@ set(CMAKE_MODULE_PATH 15 - 14 + @@ -196,7 +198,7 @@ set(CMAKE_MODULE_PATH 16 15 if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) 17 - set(LIBCXXABI_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++) 18 - - set(LIBCXXABI_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++) 19 - + set(LIBCXXABI_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++) 16 + set(LIBCXXABI_HEADER_DIR ${LLVM_BINARY_DIR}) 17 + set(LIBCXXABI_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}) 18 + - set(LIBCXXABI_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}) 19 + + set(LIBCXXABI_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}) 20 20 if(LIBCXX_LIBDIR_SUBDIR) 21 21 string(APPEND LIBCXXABI_LIBRARY_DIR /${LIBCXXABI_LIBDIR_SUBDIR}) 22 22 string(APPEND LIBCXXABI_INSTALL_LIBRARY_DIR /${LIBCXXABI_LIBDIR_SUBDIR}) 23 - endif() 23 + @@ -204,11 +206,11 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) 24 24 elseif(LLVM_LIBRARY_OUTPUT_INTDIR) 25 + set(LIBCXXABI_HEADER_DIR ${LLVM_BINARY_DIR}) 25 26 set(LIBCXXABI_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}) 26 27 - set(LIBCXXABI_INSTALL_LIBRARY_DIR lib${LIBCXXABI_LIBDIR_SUFFIX}) 27 28 + set(LIBCXXABI_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXXABI_LIBDIR_SUFFIX}) 28 29 else() 30 + set(LIBCXXABI_HEADER_DIR ${CMAKE_BINARY_DIR}) 29 31 set(LIBCXXABI_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXXABI_LIBDIR_SUFFIX}) 30 32 - set(LIBCXXABI_INSTALL_LIBRARY_DIR lib${LIBCXXABI_LIBDIR_SUFFIX}) 31 33 + set(LIBCXXABI_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXXABI_LIBDIR_SUFFIX}) 32 34 endif() 33 35 34 - set(LIBCXXABI_INSTALL_PREFIX "" CACHE STRING "Define libc++abi destination prefix.") 36 + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBCXXABI_LIBRARY_DIR})