tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
llvmPackages_git: Fix the libcxx and libcxxabi builds
Michael Weiss
4 years ago
83bf3464
2bbf6c86
+52
-69
4 changed files
expand all
collapse all
unified
split
pkgs
development
compilers
llvm
git
libcxx
default.nix
gnu-install-dirs.patch
libcxxabi
default.nix
gnu-install-dirs.patch
+1
-4
pkgs/development/compilers/llvm/git/libcxx/default.nix
···
1
1
-
{ lib, stdenv, llvm_meta, src, cmake, python3, libcxxabi, fixDarwinDylibNames, version
1
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
27
-
buildInputs = [ libcxxabi ];
28
28
-
29
27
cmakeFlags = [
30
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
2
-
index 9bf1a02f0908..612cd4aab76c 100644
2
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
12
-
set(PACKAGE_VERSION 12.0.0)
12
12
+
set(PACKAGE_VERSION 13.0.0git)
13
13
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
14
14
-
@@ -402,7 +404,7 @@ endif ()
15
15
-
if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
16
16
-
set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
17
17
-
set(LIBCXX_HEADER_DIR ${LLVM_BINARY_DIR})
18
18
-
- set(LIBCXX_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
19
19
-
+ set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
14
14
+
@@ -409,7 +411,7 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
15
15
+
set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE})
16
16
+
set(LIBCXX_GENERATED_INCLUDE_DIR "${LLVM_BINARY_DIR}/include/c++/v1")
17
17
+
set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LLVM_BINARY_DIR}/include/${LLVM_DEFAULT_TARGET_TRIPLE}/c++/v1")
18
18
+
- set(LIBCXX_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE})
19
19
+
+ set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE})
20
20
+
set(LIBCXX_INSTALL_INCLUDE_DIR "include/c++/v1")
21
21
+
set(LIBCXX_INSTALL_INCLUDE_TARGET_DIR "include/${LLVM_DEFAULT_TARGET_TRIPLE}/c++/v1")
20
22
if(LIBCXX_LIBDIR_SUBDIR)
21
21
-
string(APPEND LIBCXX_LIBRARY_DIR /${LIBCXX_LIBDIR_SUBDIR})
22
22
-
string(APPEND LIBCXX_INSTALL_LIBRARY_DIR /${LIBCXX_LIBDIR_SUBDIR})
23
23
-
@@ -410,11 +412,11 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
24
24
-
elseif(LLVM_LIBRARY_OUTPUT_INTDIR)
23
23
+
@@ -420,14 +422,14 @@ elseif(LLVM_LIBRARY_OUTPUT_INTDIR)
25
24
set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR})
26
26
-
set(LIBCXX_HEADER_DIR ${LLVM_BINARY_DIR})
25
25
+
set(LIBCXX_GENERATED_INCLUDE_DIR "${LLVM_BINARY_DIR}/include/c++/v1")
26
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
29
+
set(LIBCXX_INSTALL_INCLUDE_DIR "include/c++/v1")
30
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
31
-
set(LIBCXX_HEADER_DIR ${CMAKE_BINARY_DIR})
33
33
+
set(LIBCXX_GENERATED_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include/c++/v1")
34
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
37
+
set(LIBCXX_INSTALL_INCLUDE_DIR "include/c++/v1")
38
38
+
set(LIBCXX_INSTALL_INCLUDE_TARGET_DIR "${LIBCXX_INSTALL_INCLUDE_DIR}")
34
39
endif()
35
35
-
36
36
-
file(MAKE_DIRECTORY "${LIBCXX_BINARY_INCLUDE_DIR}")
37
40
diff --git a/cmake/Modules/HandleLibCXXABI.cmake b/cmake/Modules/HandleLibCXXABI.cmake
38
38
-
index 5d2764e870e9..bb1ec5de6ca2 100644
41
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
45
-
- DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1/${dstdir}
46
46
-
+ DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}${CMAKE_INSTALL_INCLUDEDIR}/c++/v1/${dstdir}
48
48
+
- DESTINATION include/c++/v1/${dstdir}
49
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
50
-
diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
51
51
-
index 29a317b8ae9a..4747263cfd1b 100644
52
52
-
--- a/include/CMakeLists.txt
53
53
-
+++ b/include/CMakeLists.txt
54
54
-
@@ -252,7 +252,7 @@ if (LIBCXX_INSTALL_HEADERS)
55
55
-
foreach(file ${files})
56
56
-
get_filename_component(dir ${file} DIRECTORY)
57
57
-
install(FILES ${file}
58
58
-
- DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1/${dir}
59
59
-
+ DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}${CMAKE_INSTALL_INCLUDEDIR}/c++/v1/${dir}
60
60
-
COMPONENT cxx-headers
61
61
-
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
62
62
-
)
63
63
-
@@ -260,7 +260,7 @@ if (LIBCXX_INSTALL_HEADERS)
64
64
-
65
65
-
# Install the generated header as __config.
66
66
-
install(FILES ${LIBCXX_BINARY_DIR}/__generated_config
67
67
-
- DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1
68
68
-
+ DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}${CMAKE_INSTALL_INCLUDEDIR}/c++/v1
69
69
-
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
70
70
-
RENAME __config
71
71
-
COMPONENT cxx-headers)
72
53
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
73
73
-
index 9965104cb5b2..9b55dbb1d822 100644
54
54
+
index 87b71f7ba334..d20a783079b7 100644
74
55
--- a/src/CMakeLists.txt
75
56
+++ b/src/CMakeLists.txt
76
76
-
@@ -352,21 +352,21 @@ if (LIBCXX_INSTALL_SHARED_LIBRARY)
57
57
+
@@ -369,21 +369,21 @@ if (LIBCXX_INSTALL_SHARED_LIBRARY)
77
58
install(TARGETS cxx_shared
78
78
-
ARCHIVE DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
79
79
-
LIBRARY DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
80
80
-
- RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}bin COMPONENT cxx)
81
81
-
+ RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}${CMAKE_INSTALL_BINDIR} COMPONENT cxx)
59
59
+
ARCHIVE DESTINATION ${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
60
60
+
LIBRARY DESTINATION ${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
61
61
+
- RUNTIME DESTINATION bin COMPONENT cxx)
62
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
86
-
ARCHIVE DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
87
87
-
LIBRARY DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
88
88
-
- RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}bin COMPONENT cxx)
89
89
-
+ RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}${CMAKE_INSTALL_BINDIR} COMPONENT cxx)
67
67
+
ARCHIVE DESTINATION ${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
68
68
+
LIBRARY DESTINATION ${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
69
69
+
- RUNTIME DESTINATION bin COMPONENT cxx)
70
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
94
-
LIBRARY DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
95
95
-
ARCHIVE DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
96
96
-
- RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}bin COMPONENT cxx)
97
97
-
+ RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}${CMAKE_INSTALL_BINDIR} COMPONENT cxx)
75
75
+
LIBRARY DESTINATION ${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
76
76
+
ARCHIVE DESTINATION ${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
77
77
+
- RUNTIME DESTINATION bin COMPONENT cxx)
78
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
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
29
-
cmakeFlags = lib.optionals (stdenv.hostPlatform.useLLVM or false) [
30
30
+
cmakeFlags = [
31
31
+
"-DLIBCXXABI_LIBCXX_INCLUDES=${libcxx.dev}/include/c++/v1"
32
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
2
-
index 426c855288fc..a9812a994f53 100644
2
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
12
-
set(PACKAGE_VERSION 11.0.0)
12
12
+
set(PACKAGE_VERSION 11.0.0git)
13
13
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
14
14
-
@@ -180,17 +182,17 @@ set(CMAKE_MODULE_PATH
15
15
-
14
14
+
@@ -196,7 +198,7 @@ set(CMAKE_MODULE_PATH
16
15
if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
17
17
-
set(LIBCXXABI_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
18
18
-
- set(LIBCXXABI_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
19
19
-
+ set(LIBCXXABI_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
16
16
+
set(LIBCXXABI_HEADER_DIR ${LLVM_BINARY_DIR})
17
17
+
set(LIBCXXABI_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE})
18
18
+
- set(LIBCXXABI_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE})
19
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
23
-
endif()
23
23
+
@@ -204,11 +206,11 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
24
24
elseif(LLVM_LIBRARY_OUTPUT_INTDIR)
25
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
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
34
-
set(LIBCXXABI_INSTALL_PREFIX "" CACHE STRING "Define libc++abi destination prefix.")
36
36
+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBCXXABI_LIBRARY_DIR})