Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)

Merge pull request #182840 from doyougnu/bump_llvm_git

llvmPackages_git: 2022-01-07 -> 2022-25-07, add README

authored by John Ericson and committed by GitHub ede46e4f 12b0f884

+448 -740
+79
pkgs/development/compilers/llvm/README.md
···
··· 1 + ## How to upgrade llvm_git 2 + 3 + - Run `update-git.py`. 4 + This will set the github revision and sha256 for `llvmPackages_git.llvm` to whatever the latest chromium build is using. 5 + For a more recent, commit run `nix-prefetch-github` and change the rev and sha256 accordingly. 6 + 7 + - That was the easy part. 8 + The hard part is updating the patch files. 9 + 10 + The general process is: 11 + 12 + 1. Try to build `llvmPackages_git.llvm` and associated packages such as 13 + `clang` and `compiler-rt`. You can use the `-L` and `--keep-failed` flags to make 14 + debugging patch errors easy, e.g., `nix build .#llvmPackages_git.clang -L --keep-failed` 15 + 16 + 2. The build will error out with something similar to this: 17 + ```sh 18 + ... 19 + clang-unstable> patching sources 20 + clang-unstable> applying patch /nix/store/nndv6gq6w608n197fndvv5my4a5zg2qi-purity.patch 21 + clang-unstable> patching file lib/Driver/ToolChains/Gnu.cpp 22 + clang-unstable> Hunk #1 FAILED at 487. 23 + clang-unstable> 1 out of 1 hunk FAILED -- saving rejects to file lib/Driver/ToolChains/Gnu.cpp.rej 24 + note: keeping build directory '/tmp/nix-build-clang-unstable-2022-25-07.drv-17' 25 + error: builder for '/nix/store/zwi123kpkyz52fy7p6v23azixd807r8c-clang-unstable-2022-25-07.drv' failed with exit code 1; 26 + last 8 log lines: 27 + > unpacking sources 28 + > unpacking source archive /nix/store/mrxadx11wv1ckjr2208qgxp472pmmg6g-clang-src-unstable-2022-25-07 29 + > source root is clang-src-unstable-2022-25-07/clang 30 + > patching sources 31 + > applying patch /nix/store/nndv6gq6w608n197fndvv5my4a5zg2qi-purity.patch 32 + > patching file lib/Driver/ToolChains/Gnu.cpp 33 + > Hunk #1 FAILED at 487. 34 + > 1 out of 1 hunk FAILED -- saving rejects to file lib/Driver/ToolChains/Gnu.cpp.rej 35 + For full logs, run 'nix log /nix/store/zwi123kpkyz52fy7p6v23azixd807r8c-clang-unstable-2022-25-07.drv'. 36 + note: keeping build directory '/tmp/nix-build-compiler-rt-libc-unstable-2022-25-07.drv-20' 37 + error: 1 dependencies of derivation '/nix/store/ndbbh3wrl0l39b22azf46f1n7zlqwmag-clang-wrapper-unstable-2022-25-07.drv' failed to build 38 + ``` 39 + 40 + Notice the `Hunk #1 Failed at 487` line. 41 + The lines above show us that the `purity.patch` failed on `lib/Driver/ToolChains/Gnu.cpp` when compiling `clang`. 42 + 43 + 3. The task now is to cross reference the hunks in the purity patch with 44 + `lib/Driver/ToolCahins/Gnu.cpp.orig` to see why the patch failed. 45 + The `.orig` file will be in the build directory referenced in the line `note: keeping build directory ...`; 46 + this message results from the `--keep-failed` flag. 47 + 48 + 4. Now you should be able to open whichever patch failed, and the `foo.orig` file that it failed on. 49 + Correct the patch by adapting it to the new code and be mindful of whitespace; 50 + which can be an easily missed reason for failures. 51 + For cases where the hunk is no longer needed you can simply remove it from the patch. 52 + 53 + This is fine for small corrections, but when more serious changes are needed its better to use git. 54 + 55 + 1. Clone the LLVM monorepo at https://github.com/llvm/llvm-project/ 56 + 57 + 2. Check out the revision we were using before. 58 + 59 + 3. Use `patch -p1 < path/to-path` in the project subdirectories to apply the patches and commit. 60 + 61 + 4. Use `git rebase HEAD^ --onto <dest>` to rebase the patches onto the new revision we are trying to build, and fix all conflicts. 62 + 63 + 5. Use `git diff HEAD^:<project> HEAD:<project>` to get subdir diff to write back to Nixpkgs. 64 + 65 + ## Information on our current patch sets 66 + 67 + ### "GNU Install Dirs" patches 68 + 69 + Use CMake's [`GNUInstallDirs`](https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html) to support multiple outputs. 70 + 71 + Previously, LLVM Just hard-coded `bin`, `include`, and `lib${LLVM_TARGET_PREFIX}`. 72 + We are making it use these variables. 73 + 74 + For the older LLVM versions, these patches live in https://github.com/Ericson2314/llvm-project branches `split-prefix`. 75 + Instead of applying the patches to the worktree per the above instructions, one can checkout those directly and rebase those instead. 76 + 77 + For newer LLVM versions, enough has has been upstreamed, 78 + (see https://reviews.llvm.org/differential/query/5UAfpj_9zHwY/ for my progress upstreaming), 79 + that I have just assembled new gnu-install-dirs patches from the remaining unmerged patches instead of rebasing from the prior LLVM's gnu install dirs patch.
+3 -1
pkgs/development/compilers/llvm/git/clang/default.nix
··· 15 mkdir -p "$out" 16 cp -r ${monorepoSrc}/cmake "$out" 17 cp -r ${monorepoSrc}/${pname} "$out" 18 ''; 19 20 sourceRoot = "${src.name}/${pname}"; ··· 26 buildInputs = [ libxml2 libllvm ]; 27 28 cmakeFlags = [ 29 "-DCMAKE_CXX_FLAGS=-std=c++14" 30 "-DCLANGD_BUILD_XPC=OFF" 31 "-DLLVM_ENABLE_RTTI=ON" ··· 71 # Move libclang to 'lib' output 72 moveToOutput "lib/libclang.*" "$lib" 73 moveToOutput "lib/libclang-cpp.*" "$lib" 74 - substituteInPlace $out/lib/cmake/clang/ClangTargets-release.cmake \ 75 --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." \ 76 --replace "\''${_IMPORT_PREFIX}/lib/libclang-cpp." "$lib/lib/libclang-cpp." 77
··· 15 mkdir -p "$out" 16 cp -r ${monorepoSrc}/cmake "$out" 17 cp -r ${monorepoSrc}/${pname} "$out" 18 + cp -r ${monorepoSrc}/clang-tools-extra "$out" 19 ''; 20 21 sourceRoot = "${src.name}/${pname}"; ··· 27 buildInputs = [ libxml2 libllvm ]; 28 29 cmakeFlags = [ 30 + "-DCLANG_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/clang" 31 "-DCMAKE_CXX_FLAGS=-std=c++14" 32 "-DCLANGD_BUILD_XPC=OFF" 33 "-DLLVM_ENABLE_RTTI=ON" ··· 73 # Move libclang to 'lib' output 74 moveToOutput "lib/libclang.*" "$lib" 75 moveToOutput "lib/libclang-cpp.*" "$lib" 76 + substituteInPlace $dev/lib/cmake/clang/ClangTargets-release.cmake \ 77 --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." \ 78 --replace "\''${_IMPORT_PREFIX}/lib/libclang-cpp." "$lib/lib/libclang-cpp." 79
+68 -198
pkgs/development/compilers/llvm/git/clang/gnu-install-dirs.patch
··· 1 diff --git a/CMakeLists.txt b/CMakeLists.txt 2 - index 7ea37850ad60..ac0f2d4f60b4 100644 3 --- a/CMakeLists.txt 4 +++ b/CMakeLists.txt 5 - @@ -5,6 +5,8 @@ cmake_minimum_required(VERSION 3.13.4) 6 - if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) 7 - project(Clang) 8 9 - + include(GNUInstallDirs) 10 - + 11 - set(CMAKE_CXX_STANDARD 14 CACHE STRING "C++ standard to conform to") 12 - set(CMAKE_CXX_STANDARD_REQUIRED YES) 13 - set(CMAKE_CXX_EXTENSIONS NO) 14 - @@ -424,7 +426,7 @@ include_directories(BEFORE 15 16 - if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) 17 - install(DIRECTORY include/clang include/clang-c 18 - - DESTINATION include 19 - + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} 20 - COMPONENT clang-headers 21 - FILES_MATCHING 22 - PATTERN "*.def" 23 - @@ -433,7 +435,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) 24 - ) 25 26 - install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/clang 27 - - DESTINATION include 28 - + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} 29 - COMPONENT clang-headers 30 - FILES_MATCHING 31 - PATTERN "CMakeFiles" EXCLUDE 32 - @@ -453,7 +455,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) 33 - 34 - add_custom_target(bash-autocomplete DEPENDS utils/bash-autocomplete.sh) 35 - install(PROGRAMS utils/bash-autocomplete.sh 36 - - DESTINATION share/clang 37 - + DESTINATION ${CMAKE_INSTALL_DATADIR}/clang 38 - COMPONENT bash-autocomplete) 39 - if(NOT LLVM_ENABLE_IDE) 40 - add_llvm_install_targets(install-bash-autocomplete 41 diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake 42 - index 5752f4277444..5bf08dbf5e83 100644 43 --- a/cmake/modules/AddClang.cmake 44 +++ b/cmake/modules/AddClang.cmake 45 - @@ -118,9 +118,9 @@ macro(add_clang_library name) 46 install(TARGETS ${lib} 47 COMPONENT ${lib} 48 ${export_to_clangtargets} 49 - LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} 50 - ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} 51 - - RUNTIME DESTINATION bin) 52 - + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} 53 - + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} 54 - + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 55 56 if (NOT LLVM_ENABLE_IDE) 57 - add_llvm_install_targets(install-${lib} 58 - @@ -159,7 +159,7 @@ macro(add_clang_tool name) 59 - get_target_export_arg(${name} Clang export_to_clangtargets) 60 - install(TARGETS ${name} 61 - ${export_to_clangtargets} 62 - - RUNTIME DESTINATION bin 63 - + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 64 - COMPONENT ${name}) 65 - 66 - if(NOT LLVM_ENABLE_IDE) 67 - @@ -174,7 +174,7 @@ endmacro() 68 - macro(add_clang_symlink name dest) 69 - add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE) 70 - # Always generate install targets 71 - - llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE) 72 - + llvm_install_symlink(${name} ${dest} ${CMAKE_INSTALL_FULL_BINDIR} ALWAYS_GENERATE) 73 - endmacro() 74 - 75 - function(clang_target_link_libraries target type) 76 diff --git a/lib/Headers/CMakeLists.txt b/lib/Headers/CMakeLists.txt 77 - index 078988980c52..14b58614b40a 100644 78 --- a/lib/Headers/CMakeLists.txt 79 +++ b/lib/Headers/CMakeLists.txt 80 - @@ -234,7 +234,7 @@ set_target_properties(clang-resource-headers PROPERTIES 81 - FOLDER "Misc" 82 - RUNTIME_OUTPUT_DIRECTORY "${output_dir}") 83 84 -set(header_install_dir lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include) 85 +set(header_install_dir ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include) 86 87 - install( 88 - FILES ${files} ${generated_files} 89 - diff --git a/tools/c-index-test/CMakeLists.txt b/tools/c-index-test/CMakeLists.txt 90 - index 99c6081db2d6..0887102febb3 100644 91 - --- a/tools/c-index-test/CMakeLists.txt 92 - +++ b/tools/c-index-test/CMakeLists.txt 93 - @@ -49,7 +49,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) 94 - set_property(TARGET c-index-test APPEND PROPERTY INSTALL_RPATH 95 - "@executable_path/../../lib") 96 - else() 97 - - set(INSTALL_DESTINATION bin) 98 - + set(INSTALL_DESTINATION ${CMAKE_INSTALL_BINDIR}) 99 - endif() 100 - 101 - install(TARGETS c-index-test 102 - diff --git a/tools/clang-format/CMakeLists.txt b/tools/clang-format/CMakeLists.txt 103 - index 35ecdb11253c..d77d75de0094 100644 104 - --- a/tools/clang-format/CMakeLists.txt 105 - +++ b/tools/clang-format/CMakeLists.txt 106 - @@ -21,20 +21,20 @@ if( LLVM_LIB_FUZZING_ENGINE OR LLVM_USE_SANITIZE_COVERAGE ) 107 - endif() 108 - 109 - install(PROGRAMS clang-format-bbedit.applescript 110 - - DESTINATION share/clang 111 - + DESTINATION ${CMAKE_INSTALL_DATADIR}/clang 112 - COMPONENT clang-format) 113 - install(PROGRAMS clang-format-diff.py 114 - - DESTINATION share/clang 115 - + DESTINATION ${CMAKE_INSTALL_DATADIR}/clang 116 - COMPONENT clang-format) 117 - install(PROGRAMS clang-format-sublime.py 118 - - DESTINATION share/clang 119 - + DESTINATION ${CMAKE_INSTALL_DATADIR}/clang 120 - COMPONENT clang-format) 121 - install(PROGRAMS clang-format.el 122 - - DESTINATION share/clang 123 - + DESTINATION ${CMAKE_INSTALL_DATADIR}/clang 124 - COMPONENT clang-format) 125 - install(PROGRAMS clang-format.py 126 - - DESTINATION share/clang 127 - + DESTINATION ${CMAKE_INSTALL_DATADIR}/clang 128 - COMPONENT clang-format) 129 - install(PROGRAMS git-clang-format 130 - - DESTINATION bin 131 - + DESTINATION ${CMAKE_INSTALL_BINDIR} 132 - COMPONENT clang-format) 133 - diff --git a/tools/clang-rename/CMakeLists.txt b/tools/clang-rename/CMakeLists.txt 134 - index cda8e29ec5b1..0134d8ccd70b 100644 135 - --- a/tools/clang-rename/CMakeLists.txt 136 - +++ b/tools/clang-rename/CMakeLists.txt 137 - @@ -19,8 +19,8 @@ clang_target_link_libraries(clang-rename 138 - ) 139 - 140 - install(PROGRAMS clang-rename.py 141 - - DESTINATION share/clang 142 - + DESTINATION ${CMAKE_INSTALL_DATADIR}/clang 143 - COMPONENT clang-rename) 144 - install(PROGRAMS clang-rename.el 145 - - DESTINATION share/clang 146 - + DESTINATION ${CMAKE_INSTALL_DATADIR}/clang 147 - COMPONENT clang-rename) 148 diff --git a/tools/libclang/CMakeLists.txt b/tools/libclang/CMakeLists.txt 149 - index bf88dca0a34b..7a10181e7738 100644 150 --- a/tools/libclang/CMakeLists.txt 151 +++ b/tools/libclang/CMakeLists.txt 152 - @@ -186,7 +186,7 @@ endif() 153 - if(INTERNAL_INSTALL_PREFIX) 154 - set(LIBCLANG_HEADERS_INSTALL_DESTINATION "${INTERNAL_INSTALL_PREFIX}/include") 155 - else() 156 - - set(LIBCLANG_HEADERS_INSTALL_DESTINATION include) 157 - + set(LIBCLANG_HEADERS_INSTALL_DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) 158 - endif() 159 - 160 - install(DIRECTORY ../../include/clang-c 161 - @@ -216,7 +216,7 @@ foreach(PythonVersion ${CLANG_PYTHON_BINDINGS_VERSIONS}) 162 COMPONENT 163 libclang-python-bindings 164 DESTINATION ··· 167 endforeach() 168 if(NOT LLVM_ENABLE_IDE) 169 add_custom_target(libclang-python-bindings) 170 - diff --git a/tools/scan-build/CMakeLists.txt b/tools/scan-build/CMakeLists.txt 171 - index 74334e53c9b1..ebaae33e4324 100644 172 - --- a/tools/scan-build/CMakeLists.txt 173 - +++ b/tools/scan-build/CMakeLists.txt 174 - @@ -47,7 +47,7 @@ if(CLANG_INSTALL_SCANBUILD) 175 - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile}) 176 - list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile}) 177 - install(PROGRAMS bin/${BinFile} 178 - - DESTINATION bin 179 - + DESTINATION ${CMAKE_INSTALL_BINDIR} 180 - COMPONENT scan-build) 181 - endforeach() 182 183 - @@ -61,7 +61,7 @@ if(CLANG_INSTALL_SCANBUILD) 184 - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${LibexecFile}) 185 - list(APPEND Depends ${CMAKE_BINARY_DIR}/libexec/${LibexecFile}) 186 - install(PROGRAMS libexec/${LibexecFile} 187 - - DESTINATION libexec 188 - + DESTINATION ${CMAKE_INSTALL_LIBEXECDIR} 189 - COMPONENT scan-build) 190 - endforeach() 191 - 192 - @@ -89,7 +89,7 @@ if(CLANG_INSTALL_SCANBUILD) 193 - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/scan-build/${ShareFile}) 194 - list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-build/${ShareFile}) 195 - install(FILES share/scan-build/${ShareFile} 196 - - DESTINATION share/scan-build 197 - + DESTINATION ${CMAKE_INSTALL_DATADIR}/scan-build 198 - COMPONENT scan-build) 199 - endforeach() 200 - 201 - diff --git a/tools/scan-view/CMakeLists.txt b/tools/scan-view/CMakeLists.txt 202 - index eccc6b83195b..ff72d9cf0666 100644 203 - --- a/tools/scan-view/CMakeLists.txt 204 - +++ b/tools/scan-view/CMakeLists.txt 205 - @@ -20,7 +20,7 @@ if(CLANG_INSTALL_SCANVIEW) 206 - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile}) 207 - list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile}) 208 - install(PROGRAMS bin/${BinFile} 209 - - DESTINATION bin 210 - + DESTINATION ${CMAKE_INSTALL_BINDIR} 211 - COMPONENT scan-view) 212 - endforeach() 213 - 214 - @@ -34,7 +34,7 @@ if(CLANG_INSTALL_SCANVIEW) 215 - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/${ShareFile}) 216 - list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-view/${ShareFile}) 217 - install(FILES share/${ShareFile} 218 - - DESTINATION share/scan-view 219 - + DESTINATION ${CMAKE_INSTALL_DATADIR}/scan-view 220 - COMPONENT scan-view) 221 - endforeach() 222 223 - diff --git a/utils/hmaptool/CMakeLists.txt b/utils/hmaptool/CMakeLists.txt 224 - index 62f2de0cb15c..6aa66825b6ec 100644 225 - --- a/utils/hmaptool/CMakeLists.txt 226 - +++ b/utils/hmaptool/CMakeLists.txt 227 - @@ -10,7 +10,7 @@ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/${CLANG_HM 228 - 229 - list(APPEND Depends ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/${CLANG_HMAPTOOL}) 230 - install(PROGRAMS ${CLANG_HMAPTOOL} 231 - - DESTINATION bin 232 - + DESTINATION ${CMAKE_INSTALL_BINDIR} 233 - COMPONENT hmaptool) 234 235 - add_custom_target(hmaptool ALL DEPENDS ${Depends})
··· 1 diff --git a/CMakeLists.txt b/CMakeLists.txt 2 + index c27beec313d7..480f13e73c9f 100644 3 --- a/CMakeLists.txt 4 +++ b/CMakeLists.txt 5 + @@ -78,15 +78,17 @@ if(CLANG_BUILT_STANDALONE) 6 + if (NOT LLVM_CONFIG_FOUND) 7 + # Pull values from LLVMConfig.cmake. We can drop this once the llvm-config 8 + # path is removed. 9 + - set(MAIN_INCLUDE_DIR "${LLVM_INCLUDE_DIR}") 10 + + set(INCLUDE_DIRS ${LLVM_INCLUDE_DIRS}) 11 + set(LLVM_OBJ_DIR "${LLVM_BINARY_DIR}") 12 + # N.B. this is just a default value, the CACHE PATHs below can be overriden. 13 + set(MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm") 14 + set(TOOLS_BINARY_DIR "${LLVM_TOOLS_BINARY_DIR}") 15 + set(LIBRARY_DIR "${LLVM_LIBRARY_DIR}") 16 + + else() 17 + + set(INCLUDE_DIRS "${LLVM_BINARY_DIR}/include" "${MAIN_INCLUDE_DIR}") 18 + endif() 19 20 + - set(LLVM_MAIN_INCLUDE_DIR "${MAIN_INCLUDE_DIR}" CACHE PATH "Path to llvm/include") 21 + + set(LLVM_INCLUDE_DIRS ${INCLUDE_DIRS} CACHE PATH "Path to llvm/include and any other header dirs needed") 22 + set(LLVM_BINARY_DIR "${LLVM_OBJ_ROOT}" CACHE PATH "Path to LLVM build tree") 23 + set(LLVM_MAIN_SRC_DIR "${MAIN_SRC_DIR}" CACHE PATH "Path to LLVM source tree") 24 + set(LLVM_TOOLS_BINARY_DIR "${TOOLS_BINARY_DIR}" CACHE PATH "Path to llvm/bin") 25 + @@ -128,7 +130,7 @@ if(CLANG_BUILT_STANDALONE) 26 + set(LLVM_INCLUDE_TESTS ON) 27 + endif() 28 29 + - include_directories("${LLVM_BINARY_DIR}/include" "${LLVM_MAIN_INCLUDE_DIR}") 30 + + include_directories(${LLVM_INCLUDE_DIRS}) 31 + link_directories("${LLVM_LIBRARY_DIR}") 32 33 + set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin ) 34 diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake 35 + index 21ac332e4f5f..b16c314bd1e2 100644 36 --- a/cmake/modules/AddClang.cmake 37 +++ b/cmake/modules/AddClang.cmake 38 + @@ -119,8 +119,8 @@ macro(add_clang_library name) 39 install(TARGETS ${lib} 40 COMPONENT ${lib} 41 ${export_to_clangtargets} 42 - LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} 43 - ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} 44 + + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" 45 + + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" 46 + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") 47 48 if (NOT LLVM_ENABLE_IDE) 49 diff --git a/lib/Headers/CMakeLists.txt b/lib/Headers/CMakeLists.txt 50 + index 6e2060991b92..b9bc930d26b8 100644 51 --- a/lib/Headers/CMakeLists.txt 52 +++ b/lib/Headers/CMakeLists.txt 53 + @@ -420,7 +420,7 @@ add_header_target("openmp-resource-headers" ${openmp_wrapper_files}) 54 + add_header_target("windows-resource-headers" ${windows_only_files}) 55 + add_header_target("utility-resource-headers" ${utility_files}) 56 57 -set(header_install_dir lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include) 58 +set(header_install_dir ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include) 59 60 + ############################################################# 61 + # Install rules for the catch-all clang-resource-headers target 62 diff --git a/tools/libclang/CMakeLists.txt b/tools/libclang/CMakeLists.txt 63 + index 8d95d0900e8c..ebc70ff7526d 100644 64 --- a/tools/libclang/CMakeLists.txt 65 +++ b/tools/libclang/CMakeLists.txt 66 + @@ -180,7 +180,7 @@ foreach(PythonVersion ${CLANG_PYTHON_BINDINGS_VERSIONS}) 67 COMPONENT 68 libclang-python-bindings 69 DESTINATION ··· 72 endforeach() 73 if(NOT LLVM_ENABLE_IDE) 74 add_custom_target(libclang-python-bindings) 75 + diff --git a/tools/scan-build-py/CMakeLists.txt b/tools/scan-build-py/CMakeLists.txt 76 + index 061dc7ef4dd9..adc54b2edc32 100644 77 + --- a/tools/scan-build-py/CMakeLists.txt 78 + +++ b/tools/scan-build-py/CMakeLists.txt 79 + @@ -88,7 +88,7 @@ foreach(lib ${LibScanbuild}) 80 + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/${lib}) 81 + list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/${lib}) 82 + install(PROGRAMS lib/libscanbuild/${lib} 83 + - DESTINATION lib/libscanbuild 84 + + DESTINATION "${CMAKE_INSTALL_LIBDIR}/libscanbuild" 85 + COMPONENT scan-build-py) 86 + endforeach() 87 88 + @@ -106,7 +106,7 @@ foreach(resource ${LibScanbuildResources}) 89 + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/resources/${resource}) 90 + list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources/${resource}) 91 + install(PROGRAMS lib/libscanbuild/resources/${resource} 92 + - DESTINATION lib/libscanbuild/resources 93 + + DESTINATION "${CMAKE_INSTALL_LIBDIR}/libscanbuild/resources" 94 + COMPONENT scan-build-py) 95 + endforeach() 96 97 + @@ -122,7 +122,7 @@ foreach(lib ${LibEar}) 98 + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libear/${lib}) 99 + list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libear/${lib}) 100 + install(PROGRAMS lib/libear/${lib} 101 + - DESTINATION lib/libear 102 + + DESTINATION "${CMAKE_INSTALL_LIBDIR}/libear" 103 + COMPONENT scan-build-py) 104 + endforeach() 105
+5 -4
pkgs/development/compilers/llvm/git/clang/purity.patch
··· 11 index fe3c0191bb..c6a482bece 100644 12 --- a/lib/Driver/ToolChains/Gnu.cpp 13 +++ b/lib/Driver/ToolChains/Gnu.cpp 14 - @@ -487,12 +487,6 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, 15 - if (!IsStatic) { 16 if (Args.hasArg(options::OPT_rdynamic)) 17 CmdArgs.push_back("-export-dynamic"); 18 - - 19 - - if (!Args.hasArg(options::OPT_shared) && !IsStaticPIE) { 20 - CmdArgs.push_back("-dynamic-linker"); 21 - CmdArgs.push_back(Args.MakeArgString(Twine(D.DyldPrefix) + 22 - ToolChain.getDynamicLinker(Args)));
··· 11 index fe3c0191bb..c6a482bece 100644 12 --- a/lib/Driver/ToolChains/Gnu.cpp 13 +++ b/lib/Driver/ToolChains/Gnu.cpp 14 + @@ -487,13 +487,7 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, 15 + } else { 16 if (Args.hasArg(options::OPT_rdynamic)) 17 CmdArgs.push_back("-export-dynamic"); 18 + 19 + - if (!Args.hasArg(options::OPT_shared) && !IsStaticPIE && 20 + - !Args.hasArg(options::OPT_r)) { 21 - CmdArgs.push_back("-dynamic-linker"); 22 - CmdArgs.push_back(Args.MakeArgString(Twine(D.DyldPrefix) + 23 - ToolChain.getDynamicLinker(Args)));
+2 -2
pkgs/development/compilers/llvm/git/compiler-rt/X86-support-extension.patch
··· 2 index 3a66dd9c3fb..7efc85d9f9f 100644 3 --- a/lib/builtins/CMakeLists.txt 4 +++ b/lib/builtins/CMakeLists.txt 5 - @@ -345,4 +345,8 @@ if (NOT MSVC) 6 7 + set(i486_SOURCES ${i386_SOURCES}) 8 + set(i586_SOURCES ${i386_SOURCES}) ··· 11 if (WIN32) 12 set(i386_SOURCES 13 ${i386_SOURCES} 14 - @@ -608,6 +612,7 @@ else () 15 endif() 16 17 foreach (arch ${BUILTIN_SUPPORTED_ARCH})
··· 2 index 3a66dd9c3fb..7efc85d9f9f 100644 3 --- a/lib/builtins/CMakeLists.txt 4 +++ b/lib/builtins/CMakeLists.txt 5 + @@ -348,4 +348,8 @@ if (NOT MSVC) 6 7 + set(i486_SOURCES ${i386_SOURCES}) 8 + set(i586_SOURCES ${i386_SOURCES}) ··· 11 if (WIN32) 12 set(i386_SOURCES 13 ${i386_SOURCES} 14 + @@ -723,6 +723,7 @@ else () 15 endif() 16 17 foreach (arch ${BUILTIN_SUPPORTED_ARCH})
-1
pkgs/development/compilers/llvm/git/compiler-rt/default.nix
··· 66 outputs = [ "out" "dev" ]; 67 68 patches = [ 69 - ./codesign.patch # Revert compiler-rt commit that makes codesign mandatory 70 ./X86-support-extension.patch # Add support for i486 i586 i686 by reusing i386 config 71 ./gnu-install-dirs.patch 72 # ld-wrapper dislikes `-rpath-link //nix/store`, so we normalize away the
··· 66 outputs = [ "out" "dev" ]; 67 68 patches = [ 69 ./X86-support-extension.patch # Add support for i486 i586 i686 by reusing i386 config 70 ./gnu-install-dirs.patch 71 # ld-wrapper dislikes `-rpath-link //nix/store`, so we normalize away the
+2 -37
pkgs/development/compilers/llvm/git/compiler-rt/gnu-install-dirs.patch
··· 1 - diff --git a/CMakeLists.txt b/CMakeLists.txt 2 - index c5003b5efa1d..4fffb9721284 100644 3 - --- a/CMakeLists.txt 4 - +++ b/CMakeLists.txt 5 - @@ -5,6 +5,8 @@ 6 - 7 - cmake_minimum_required(VERSION 3.13.4) 8 - 9 - +include(GNUInstallDirs) 10 - + 11 - # Check if compiler-rt is built as a standalone project. 12 - if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR COMPILER_RT_STANDALONE_BUILD) 13 - project(CompilerRT C CXX ASM) 14 diff --git a/cmake/base-config-ix.cmake b/cmake/base-config-ix.cmake 15 - index 1ada0ab30ba0..b4be6c4a3c73 100644 16 --- a/cmake/base-config-ix.cmake 17 +++ b/cmake/base-config-ix.cmake 18 - @@ -66,7 +66,7 @@ if (LLVM_TREE_AVAILABLE) 19 - else() 20 - # Take output dir and install path from the user. 21 - set(COMPILER_RT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH 22 - - "Path where built compiler-rt libraries should be stored.") 23 - + "Path where built compiler-rt build artifacts should be stored.") 24 - set(COMPILER_RT_EXEC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin CACHE PATH 25 - "Path where built compiler-rt executables should be stored.") 26 - set(COMPILER_RT_INSTALL_PATH "" CACHE PATH 27 - @@ -98,23 +98,23 @@ endif() 28 if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) 29 set(COMPILER_RT_OUTPUT_LIBRARY_DIR 30 ${COMPILER_RT_OUTPUT_DIR}/lib) ··· 40 set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH 41 "Path where built compiler-rt libraries should be installed.") 42 endif() 43 - -extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" bin) 44 - +extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_BINDIR}") 45 - set(COMPILER_RT_INSTALL_BINARY_DIR "${default_install_path}" CACHE PATH 46 - "Path where built compiler-rt executables should be installed.") 47 - -extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" include) 48 - +extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_INCLUDEDIR}") 49 - set(COMPILER_RT_INSTALL_INCLUDE_DIR "${default_install_path}" CACHE PATH 50 - "Path where compiler-rt headers should be installed.") 51 - -extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" share) 52 - +extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_DATADIR}") 53 - set(COMPILER_RT_INSTALL_DATA_DIR "${default_install_path}" CACHE PATH 54 - "Path where compiler-rt data files should be installed.") 55 -
··· 1 diff --git a/cmake/base-config-ix.cmake b/cmake/base-config-ix.cmake 2 + index 8a6219568b3f..30ee68a47ccf 100644 3 --- a/cmake/base-config-ix.cmake 4 +++ b/cmake/base-config-ix.cmake 5 + @@ -100,13 +100,13 @@ endif() 6 if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) 7 set(COMPILER_RT_OUTPUT_LIBRARY_DIR 8 ${COMPILER_RT_OUTPUT_DIR}/lib) ··· 18 set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH 19 "Path where built compiler-rt libraries should be installed.") 20 endif()
+28 -26
pkgs/development/compilers/llvm/git/default.nix
··· 18 }: 19 20 let 21 - release_version = "14.0.0"; 22 candidate = ""; # empty or "rcN" 23 dash-candidate = lib.optionalString (candidate != "") "-${candidate}"; 24 - rev = "fb1582f6c54422995c6fb61ba4c55126b357f64e"; # When using a Git commit 25 - rev-version = "unstable-2022-01-07"; # When using a Git commit 26 version = if rev != "" then rev-version else "${release_version}${dash-candidate}"; 27 targetConfig = stdenv.targetPlatform.config; 28 ··· 30 owner = "llvm"; 31 repo = "llvm-project"; 32 rev = if rev != "" then rev else "llvmorg-${version}"; 33 - sha256 = "1pkgdsscvf59i22ix763lp2z3sg0v2z2ywh0n07k3ki7q1qpqbhk"; 34 }; 35 36 llvm_meta = { ··· 158 ] ++ lib.optionals (!stdenv.targetPlatform.isWasm) [ 159 targetLlvmLibraries.libunwind 160 ]; 161 - extraBuildCommands = '' 162 - echo "-rtlib=compiler-rt -Wno-unused-command-line-argument" >> $out/nix-support/cc-cflags 163 - echo "-B${targetLlvmLibraries.compiler-rt}/lib" >> $out/nix-support/cc-cflags 164 - '' + lib.optionalString (!stdenv.targetPlatform.isWasm) '' 165 - echo "--unwindlib=libunwind" >> $out/nix-support/cc-cflags 166 - '' + lib.optionalString (!stdenv.targetPlatform.isWasm && stdenv.targetPlatform.useLLVM or false) '' 167 - echo "-lunwind" >> $out/nix-support/cc-ldflags 168 - '' + lib.optionalString stdenv.targetPlatform.isWasm '' 169 - echo "-fno-exceptions" >> $out/nix-support/cc-cflags 170 - '' + mkExtraBuildCommands cc; 171 }; 172 173 clangNoLibcxx = wrapCCWith rec { ··· 177 extraPackages = [ 178 targetLlvmLibraries.compiler-rt 179 ]; 180 - extraBuildCommands = '' 181 - echo "-rtlib=compiler-rt" >> $out/nix-support/cc-cflags 182 - echo "-B${targetLlvmLibraries.compiler-rt}/lib" >> $out/nix-support/cc-cflags 183 - echo "-nostdlib++" >> $out/nix-support/cc-cflags 184 - '' + mkExtraBuildCommands cc; 185 }; 186 187 clangNoLibc = wrapCCWith rec { ··· 191 extraPackages = [ 192 targetLlvmLibraries.compiler-rt 193 ]; 194 - extraBuildCommands = '' 195 - echo "-rtlib=compiler-rt" >> $out/nix-support/cc-cflags 196 - echo "-B${targetLlvmLibraries.compiler-rt}/lib" >> $out/nix-support/cc-cflags 197 - '' + mkExtraBuildCommands cc; 198 }; 199 200 clangNoCompilerRt = wrapCCWith rec { ··· 202 libcxx = null; 203 bintools = bintoolsNoLibc'; 204 extraPackages = [ ]; 205 - extraBuildCommands = '' 206 - echo "-nostartfiles" >> $out/nix-support/cc-cflags 207 - '' + mkExtraBuildCommands0 cc; 208 }; 209 210 clangNoCompilerRtWithLibc = wrapCCWith rec {
··· 18 }: 19 20 let 21 + release_version = "15.0.0"; 22 candidate = ""; # empty or "rcN" 23 dash-candidate = lib.optionalString (candidate != "") "-${candidate}"; 24 + rev = "a5640968f2f7485b2aa4919f5fa68fd8f23e2d1f"; # When using a Git commit 25 + rev-version = "unstable-2022-26-07"; # When using a Git commit 26 version = if rev != "" then rev-version else "${release_version}${dash-candidate}"; 27 targetConfig = stdenv.targetPlatform.config; 28 ··· 30 owner = "llvm"; 31 repo = "llvm-project"; 32 rev = if rev != "" then rev else "llvmorg-${version}"; 33 + sha256 = "1sh5xihdfdn2hp7ds3lkaq1bfrl4alj36gl1aidmhlw65p5rdvl7"; 34 }; 35 36 llvm_meta = { ··· 158 ] ++ lib.optionals (!stdenv.targetPlatform.isWasm) [ 159 targetLlvmLibraries.libunwind 160 ]; 161 + extraBuildCommands = mkExtraBuildCommands cc; 162 + nixSupport.cc-cflags = 163 + [ "-rtlib=compiler-rt" 164 + "-Wno-unused-command-line-argument" 165 + "-B${targetLlvmLibraries.compiler-rt}/lib" 166 + ] 167 + ++ lib.optional (!stdenv.targetPlatform.isWasm) "--unwindlib=libunwind" 168 + ++ lib.optional 169 + (!stdenv.targetPlatform.isWasm && stdenv.targetPlatform.useLLVM or false) 170 + "-lunwind" 171 + ++ lib.optional stdenv.targetPlatform.isWasm "-fno-exceptions"; 172 }; 173 174 clangNoLibcxx = wrapCCWith rec { ··· 178 extraPackages = [ 179 targetLlvmLibraries.compiler-rt 180 ]; 181 + extraBuildCommands = mkExtraBuildCommands cc; 182 + nixSupport.cc-cflags = [ 183 + "-rtlib=compiler-rt" 184 + "-B${targetLlvmLibraries.compiler-rt}/lib" 185 + "-nostdlib++" 186 + ]; 187 }; 188 189 clangNoLibc = wrapCCWith rec { ··· 193 extraPackages = [ 194 targetLlvmLibraries.compiler-rt 195 ]; 196 + extraBuildCommands = mkExtraBuildCommands cc; 197 + nixSupport.cc-cflags = [ 198 + "-rtlib=compiler-rt" 199 + "-B${targetLlvmLibraries.compiler-rt}/lib" 200 + ]; 201 }; 202 203 clangNoCompilerRt = wrapCCWith rec { ··· 205 libcxx = null; 206 bintools = bintoolsNoLibc'; 207 extraPackages = [ ]; 208 + extraBuildCommands = mkExtraBuildCommands0 cc; 209 + nixSupport.cc-cflags = [ "-nostartfiles" ]; 210 }; 211 212 clangNoCompilerRtWithLibc = wrapCCWith rec {
+16 -11
pkgs/development/compilers/llvm/git/libcxx/default.nix
··· 29 mkdir -p "$out/llvm" 30 cp -r ${monorepoSrc}/llvm/cmake "$out/llvm" 31 cp -r ${monorepoSrc}/llvm/utils "$out/llvm" 32 ''; 33 34 - sourceRoot = "${src.name}/${basename}"; 35 36 outputs = [ "out" ] ++ lib.optional (!headersOnly) "dev"; 37 38 patches = [ 39 ./gnu-install-dirs.patch 40 ] ++ lib.optionals stdenv.hostPlatform.isMusl [ 41 ../../libcxx-0001-musl-hacks.patch 42 ]; 43 44 preConfigure = lib.optionalString stdenv.hostPlatform.isMusl '' 45 patchShebangs utils/cat_files.py 46 ''; ··· 50 51 buildInputs = lib.optionals (!headersOnly) [ libcxxabi ]; 52 53 - cmakeFlags = [ "-DLIBCXX_CXX_ABI=libcxxabi" ] 54 ++ lib.optional (stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isWasi) "-DLIBCXX_HAS_MUSL_LIBC=1" 55 ++ lib.optional (stdenv.hostPlatform.useLLVM or false) "-DLIBCXX_USE_COMPILER_RT=ON" 56 ++ lib.optionals stdenv.hostPlatform.isWasm [ ··· 61 62 buildFlags = lib.optional headersOnly "generate-cxx-headers"; 63 installTargets = lib.optional headersOnly "install-cxx-headers"; 64 - 65 - # At this point, cxxabi headers would be installed in the dev output, which 66 - # prevents moveToOutput from doing its job later in the build process. 67 - postInstall = lib.optionalString (!headersOnly) '' 68 - mv "$dev/include/c++/v1/"* "$out/include/c++/v1/" 69 - pushd "$dev" 70 - rmdir -p include/c++/v1 71 - popd 72 - ''; 73 74 passthru = { 75 isLLVM = true;
··· 29 mkdir -p "$out/llvm" 30 cp -r ${monorepoSrc}/llvm/cmake "$out/llvm" 31 cp -r ${monorepoSrc}/llvm/utils "$out/llvm" 32 + cp -r ${monorepoSrc}/third-party "$out" 33 + cp -r ${monorepoSrc}/runtimes "$out" 34 ''; 35 36 + sourceRoot = "${src.name}/runtimes"; 37 38 outputs = [ "out" ] ++ lib.optional (!headersOnly) "dev"; 39 40 + prePatch = '' 41 + cd ../${basename} 42 + chmod -R u+w . 43 + ''; 44 + 45 patches = [ 46 ./gnu-install-dirs.patch 47 ] ++ lib.optionals stdenv.hostPlatform.isMusl [ 48 ../../libcxx-0001-musl-hacks.patch 49 ]; 50 51 + postPatch = '' 52 + cd ../runtimes 53 + ''; 54 + 55 preConfigure = lib.optionalString stdenv.hostPlatform.isMusl '' 56 patchShebangs utils/cat_files.py 57 ''; ··· 61 62 buildInputs = lib.optionals (!headersOnly) [ libcxxabi ]; 63 64 + cmakeFlags = [ 65 + "-DLLVM_ENABLE_RUNTIMES=libcxx" 66 + "-DLIBCXX_CXX_ABI=${lib.optionalString (!headersOnly) "system-"}libcxxabi" 67 + ] ++ lib.optional (!headersOnly) "-DLIBCXX_CXX_ABI_INCLUDE_PATHS=${libcxxabi.dev}/include/c++/v1" 68 ++ lib.optional (stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isWasi) "-DLIBCXX_HAS_MUSL_LIBC=1" 69 ++ lib.optional (stdenv.hostPlatform.useLLVM or false) "-DLIBCXX_USE_COMPILER_RT=ON" 70 ++ lib.optionals stdenv.hostPlatform.isWasm [ ··· 75 76 buildFlags = lib.optional headersOnly "generate-cxx-headers"; 77 installTargets = lib.optional headersOnly "install-cxx-headers"; 78 79 passthru = { 80 isLLVM = true;
+7 -70
pkgs/development/compilers/llvm/git/libcxx/gnu-install-dirs.patch
··· 1 diff --git a/CMakeLists.txt b/CMakeLists.txt 2 - index b0569a4a54ca..7d665f5a3258 100644 3 --- a/CMakeLists.txt 4 +++ b/CMakeLists.txt 5 - @@ -10,6 +10,8 @@ endif() 6 - #=============================================================================== 7 - cmake_minimum_required(VERSION 3.13.4) 8 - 9 - +include(GNUInstallDirs) 10 - + 11 - set(LLVM_COMMON_CMAKE_UTILS "${CMAKE_CURRENT_SOURCE_DIR}/../cmake") 12 - 13 - # Add path for custom modules 14 - @@ -415,13 +417,13 @@ 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} CACHE PATH 19 - + set(LIBCXX_INSTALL_LIBRARY_DIR "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}" CACHE PATH 20 "Path where built libc++ libraries should be installed.") 21 - - set(LIBCXX_INSTALL_RUNTIME_DIR bin CACHE PATH 22 - + set(LIBCXX_INSTALL_RUNTIME_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH 23 - "Path where built libc++ runtime libraries should be installed.") 24 - - set(LIBCXX_INSTALL_INCLUDE_DIR "include/c++/v1" CACHE PATH 25 - + set(LIBCXX_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR}/c++/v1" CACHE PATH 26 - "Path where target-agnostic libc++ headers should be installed.") 27 - - set(LIBCXX_INSTALL_INCLUDE_TARGET_DIR "include/${LLVM_DEFAULT_TARGET_TRIPLE}/c++/v1" CACHE PATH 28 - + set(LIBCXX_INSTALL_INCLUDE_TARGET_DIR "${CMAKE_INSTALL_INCLUDEDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++/v1" CACHE PATH 29 "Path where target-specific libc++ headers should be installed.") 30 - if(LIBCXX_LIBDIR_SUBDIR) 31 - string(APPEND LIBCXX_LIBRARY_DIR /${LIBCXX_LIBDIR_SUBDIR}) 32 - @@ -431,11 +433,11 @@ elseif(LLVM_LIBRARY_OUTPUT_INTDIR) 33 - set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}) 34 - set(LIBCXX_GENERATED_INCLUDE_DIR "${LLVM_BINARY_DIR}/include/c++/v1") 35 set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LIBCXX_GENERATED_INCLUDE_DIR}") 36 - set(LIBCXX_INSTALL_LIBRARY_DIR lib${LIBCXX_LIBDIR_SUFFIX} CACHE PATH 37 + set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXX_LIBDIR_SUFFIX} CACHE PATH 38 "Path where built libc++ libraries should be installed.") 39 - - set(LIBCXX_INSTALL_RUNTIME_DIR bin CACHE PATH 40 - + set(LIBCXX_INSTALL_RUNTIME_DIR "${CMAKE_INSTALL_BINDIR}/c++/v1" CACHE PATH 41 - "Path where built libc++ runtime libraries should be installed.") 42 - - set(LIBCXX_INSTALL_INCLUDE_DIR "include/c++/v1" CACHE PATH 43 - + set(LIBCXX_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR}/c++/v1" CACHE PATH 44 - "Path where target-agnostic libc++ headers should be installed.") 45 set(LIBCXX_INSTALL_INCLUDE_TARGET_DIR "${LIBCXX_INSTALL_INCLUDE_DIR}" CACHE PATH 46 "Path where target-specific libc++ headers should be installed.") 47 - @@ -443,11 +445,11 @@ else() 48 - set(LIBCXX_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX}) 49 - set(LIBCXX_GENERATED_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include/c++/v1") 50 - set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LIBCXX_GENERATED_INCLUDE_DIR}") 51 - - set(LIBCXX_INSTALL_LIBRARY_DIR lib${LIBCXX_LIBDIR_SUFFIX} CACHE PATH 52 - + set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXX_LIBDIR_SUFFIX} CACHE PATH 53 - "Path where built libc++ libraries should be installed.") 54 - - set(LIBCXX_INSTALL_RUNTIME_DIR bin CACHE PATH 55 - + set(LIBCXX_INSTALL_RUNTIME_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH 56 - "Path where built libc++ runtime libraries should be installed.") 57 - - set(LIBCXX_INSTALL_INCLUDE_DIR "include/c++/v1" CACHE PATH 58 - + set(LIBCXX_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR}/c++/v1" CACHE PATH 59 - "Path where target-agnostic libc++ headers should be installed.") 60 - set(LIBCXX_INSTALL_INCLUDE_TARGET_DIR "${LIBCXX_INSTALL_INCLUDE_DIR}" CACHE PATH 61 - "Path where target-specific libc++ headers should be installed.") 62 - diff --git a/cmake/Modules/HandleLibCXXABI.cmake b/cmake/Modules/HandleLibCXXABI.cmake 63 - index 5a8a4a270a1a..d69405ddeeac 100644 64 - --- a/cmake/Modules/HandleLibCXXABI.cmake 65 - +++ b/cmake/Modules/HandleLibCXXABI.cmake 66 - @@ -1,8 +1,9 @@ 67 - - 68 - #=============================================================================== 69 - # Add an ABI library if appropriate 70 - #=============================================================================== 71 - 72 - +include(GNUInstallDirs) 73 - + 74 - # 75 - # _setup_abi: Set up the build to use an ABI library 76 - # 77 - @@ -63,7 +64,7 @@ macro(setup_abi_lib abidefines abishared abistatic abifiles abidirs) 78 - 79 - if (LIBCXX_INSTALL_HEADERS) 80 - install(FILES "${LIBCXX_BINARY_INCLUDE_DIR}/${fpath}" 81 - - DESTINATION include/c++/v1/${dstdir} 82 - + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/c++/v1/${dstdir}" 83 - COMPONENT cxx-headers 84 - PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ 85 - )
··· 1 diff --git a/CMakeLists.txt b/CMakeLists.txt 2 + index 74eff2002fc9..c935d10878bb 100644 3 --- a/CMakeLists.txt 4 +++ b/CMakeLists.txt 5 + @@ -419,7 +419,7 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) 6 set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}) 7 set(LIBCXX_GENERATED_INCLUDE_DIR "${LLVM_BINARY_DIR}/include/c++/v1") 8 set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LLVM_BINARY_DIR}/include/${LLVM_DEFAULT_TARGET_TRIPLE}/c++/v1") 9 - set(LIBCXX_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH 10 + + set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH 11 "Path where built libc++ libraries should be installed.") 12 + set(LIBCXX_INSTALL_INCLUDE_TARGET_DIR "${CMAKE_INSTALL_INCLUDEDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++/v1" CACHE PATH 13 "Path where target-specific libc++ headers should be installed.") 14 + @@ -436,7 +436,7 @@ else() 15 + set(LIBCXX_GENERATED_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include/c++/v1") 16 + endif() 17 set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LIBCXX_GENERATED_INCLUDE_DIR}") 18 - set(LIBCXX_INSTALL_LIBRARY_DIR lib${LIBCXX_LIBDIR_SUFFIX} CACHE PATH 19 + set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXX_LIBDIR_SUFFIX} CACHE PATH 20 "Path where built libc++ libraries should be installed.") 21 set(LIBCXX_INSTALL_INCLUDE_TARGET_DIR "${LIBCXX_INSTALL_INCLUDE_DIR}" CACHE PATH 22 "Path where target-specific libc++ headers should be installed.")
+28 -23
pkgs/development/compilers/llvm/git/libcxxabi/default.nix
··· 18 cp -r ${monorepoSrc}/libcxx/src/include "$out/libcxx/src" 19 mkdir -p "$out/llvm" 20 cp -r ${monorepoSrc}/llvm/cmake "$out/llvm" 21 ''; 22 23 - sourceRoot = "${src.name}/${pname}"; 24 25 outputs = [ "out" "dev" ]; 26 ··· 30 patch -p1 -d llvm -i ${./wasm.patch} 31 ''; 32 33 patches = [ 34 ./gnu-install-dirs.patch 35 ]; 36 37 nativeBuildInputs = [ cmake python3 ]; 38 buildInputs = lib.optional (!stdenv.isDarwin && !stdenv.isFreeBSD && !stdenv.hostPlatform.isWasm) libunwind; 39 40 cmakeFlags = [ 41 "-DLIBCXXABI_LIBCXX_INCLUDES=${cxx-headers}/include/c++/v1" 42 ] ++ lib.optionals (stdenv.hostPlatform.useLLVM or false) [ 43 "-DLLVM_ENABLE_LIBCXX=ON" ··· 49 "-DLIBCXXABI_ENABLE_SHARED=OFF" 50 ]; 51 52 - installPhase = if stdenv.isDarwin 53 - then '' 54 - for file in lib/*.dylib; do 55 - # this should be done in CMake, but having trouble figuring out 56 - # the magic combination of necessary CMake variables 57 - # if you fancy a try, take a look at 58 - # https://gitlab.kitware.com/cmake/community/-/wikis/doc/cmake/RPATH-handling 59 - install_name_tool -id $out/$file $file 60 - done 61 - make install 62 - install -d 755 $out/include 63 - install -m 644 ../include/*.h $out/include 64 - '' 65 - else '' 66 - install -d -m 755 $out/include $out/lib 67 - install -m 644 lib/libc++abi.a $out/lib 68 - install -m 644 ../include/cxxabi.h $out/include 69 - '' + lib.optionalString enableShared '' 70 - install -m 644 lib/libc++abi.so.1.0 $out/lib 71 - ln -s libc++abi.so.1.0 $out/lib/libc++abi.so 72 - ln -s libc++abi.so.1.0 $out/lib/libc++abi.so.1 73 - ''; 74 75 meta = llvm_meta // { 76 homepage = "https://libcxxabi.llvm.org/";
··· 18 cp -r ${monorepoSrc}/libcxx/src/include "$out/libcxx/src" 19 mkdir -p "$out/llvm" 20 cp -r ${monorepoSrc}/llvm/cmake "$out/llvm" 21 + cp -r ${monorepoSrc}/llvm/utils "$out/llvm" 22 + cp -r ${monorepoSrc}/runtimes "$out" 23 ''; 24 25 + sourceRoot = "${src.name}/runtimes"; 26 27 outputs = [ "out" "dev" ]; 28 ··· 32 patch -p1 -d llvm -i ${./wasm.patch} 33 ''; 34 35 + prePatch = '' 36 + cd ../${pname} 37 + chmod -R u+w . 38 + ''; 39 + 40 patches = [ 41 ./gnu-install-dirs.patch 42 + ./skip-other-project-tests.patch 43 ]; 44 45 + postPatch = '' 46 + cd ../runtimes 47 + ''; 48 + 49 nativeBuildInputs = [ cmake python3 ]; 50 buildInputs = lib.optional (!stdenv.isDarwin && !stdenv.isFreeBSD && !stdenv.hostPlatform.isWasm) libunwind; 51 52 cmakeFlags = [ 53 + "-DLLVM_ENABLE_RUNTIMES=libcxxabi" 54 "-DLIBCXXABI_LIBCXX_INCLUDES=${cxx-headers}/include/c++/v1" 55 ] ++ lib.optionals (stdenv.hostPlatform.useLLVM or false) [ 56 "-DLLVM_ENABLE_LIBCXX=ON" ··· 62 "-DLIBCXXABI_ENABLE_SHARED=OFF" 63 ]; 64 65 + preInstall = lib.optionalString stdenv.isDarwin '' 66 + for file in lib/*.dylib; do 67 + # this should be done in CMake, but having trouble figuring out 68 + # the magic combination of necessary CMake variables 69 + # if you fancy a try, take a look at 70 + # https://gitlab.kitware.com/cmake/community/-/wikis/doc/cmake/RPATH-handling 71 + install_name_tool -id $out/$file $file 72 + done 73 + ''; 74 + 75 + postInstall = '' 76 + mkdir -p "$dev/include" 77 + install -m 644 ../../${pname}/include/${if stdenv.isDarwin then "*" else "cxxabi.h"} "$dev/include" 78 + ''; 79 80 meta = llvm_meta // { 81 homepage = "https://libcxxabi.llvm.org/";
+6 -30
pkgs/development/compilers/llvm/git/libcxxabi/gnu-install-dirs.patch
··· 1 diff --git a/CMakeLists.txt b/CMakeLists.txt 2 - index 858f5d5cfd7f..16c67d7062be 100644 3 --- a/CMakeLists.txt 4 +++ b/CMakeLists.txt 5 - @@ -10,6 +10,8 @@ endif() 6 - 7 - cmake_minimum_required(VERSION 3.13.4) 8 - 9 - +include(GNUInstallDirs) 10 - + 11 - set(LLVM_COMMON_CMAKE_UTILS "${CMAKE_CURRENT_SOURCE_DIR}/../cmake") 12 - 13 - # Add path for custom modules 14 - @@ -213,9 +215,9 @@ set(CMAKE_MODULE_PATH 15 if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) 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} CACHE PATH 19 + set(LIBCXXABI_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH 20 "Path where built libc++abi libraries should be installed.") 21 - - set(LIBCXXABI_INSTALL_RUNTIME_DIR bin CACHE PATH 22 - + set(LIBCXXABI_INSTALL_RUNTIME_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH 23 - "Path where built libc++abi runtime libraries should be installed.") 24 if(LIBCXX_LIBDIR_SUBDIR) 25 string(APPEND LIBCXXABI_LIBRARY_DIR /${LIBCXXABI_LIBDIR_SUBDIR}) 26 - @@ -224,16 +226,16 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) 27 - elseif(LLVM_LIBRARY_OUTPUT_INTDIR) 28 - set(LIBCXXABI_HEADER_DIR ${LLVM_BINARY_DIR}) 29 - set(LIBCXXABI_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}) 30 - - set(LIBCXXABI_INSTALL_LIBRARY_DIR lib${LIBCXXABI_LIBDIR_SUFFIX} CACHE PATH 31 - + set(LIBCXXABI_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXXABI_LIBDIR_SUFFIX} CACHE PATH 32 - "Path where built libc++abi libraries should be installed.") 33 - - set(LIBCXXABI_INSTALL_RUNTIME_DIR bin CACHE PATH 34 - + set(LIBCXXABI_INSTALL_RUNTIME_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH 35 - "Path where built libc++abi runtime libraries should be installed.") 36 - else() 37 - set(LIBCXXABI_HEADER_DIR ${CMAKE_BINARY_DIR}) 38 - set(LIBCXXABI_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXXABI_LIBDIR_SUFFIX}) 39 - set(LIBCXXABI_INSTALL_LIBRARY_DIR lib${LIBCXXABI_LIBDIR_SUFFIX} CACHE PATH 40 + set(LIBCXXABI_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXXABI_LIBDIR_SUFFIX} CACHE PATH 41 "Path where built libc++abi libraries should be installed.") 42 - - set(LIBCXXABI_INSTALL_RUNTIME_DIR bin CACHE PATH 43 - + set(LIBCXXABI_INSTALL_RUNTIME_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH 44 - "Path where built libc++abi runtime libraries should be installed.") 45 endif() 46
··· 1 diff --git a/CMakeLists.txt b/CMakeLists.txt 2 + index b8326d08d23a..a1e36f713161 100644 3 --- a/CMakeLists.txt 4 +++ b/CMakeLists.txt 5 + @@ -187,7 +187,7 @@ set(LIBCXXABI_INSTALL_RUNTIME_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH 6 if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) 7 set(LIBCXXABI_HEADER_DIR ${LLVM_BINARY_DIR}) 8 set(LIBCXXABI_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}) 9 - set(LIBCXXABI_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH 10 + set(LIBCXXABI_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH 11 "Path where built libc++abi libraries should be installed.") 12 if(LIBCXX_LIBDIR_SUBDIR) 13 string(APPEND LIBCXXABI_LIBRARY_DIR /${LIBCXXABI_LIBDIR_SUBDIR}) 14 + @@ -201,7 +201,7 @@ else() 15 + set(LIBCXXABI_HEADER_DIR ${CMAKE_BINARY_DIR}) 16 + set(LIBCXXABI_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXXABI_LIBDIR_SUFFIX}) 17 + endif() 18 - set(LIBCXXABI_INSTALL_LIBRARY_DIR lib${LIBCXXABI_LIBDIR_SUFFIX} CACHE PATH 19 + set(LIBCXXABI_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXXABI_LIBDIR_SUFFIX} CACHE PATH 20 "Path where built libc++abi libraries should be installed.") 21 endif() 22
+45
pkgs/development/compilers/llvm/git/libcxxabi/skip-other-project-tests.patch
···
··· 1 + --- a/CMakeLists.txt 2 + +++ b/CMakeLists.txt 3 + @@ -131,10 +131,21 @@ if (NOT LIBCXXABI_ENABLE_SHARED AND NOT LIBCXXABI_ENABLE_STATIC) 4 + message(FATAL_ERROR "libc++abi must be built as either a shared or static library.") 5 + endif() 6 + 7 + -# TODO: Remove this, which shouldn't be necessary since we know we're being built 8 + -# side-by-side with libc++. 9 + set(LIBCXXABI_LIBCXX_INCLUDES "" CACHE PATH 10 + "Specify path to libc++ includes.") 11 + +if (NOT libcxx IN_LIST LLVM_ENABLE_RUNTIMES) 12 + + if (NOT IS_DIRECTORY ${LIBCXXABI_LIBCXX_INCLUDES}) 13 + + message(FATAL_ERROR 14 + + "LIBCXXABI_LIBCXX_INCLUDES=${LIBCXXABI_LIBCXX_INCLUDES} is not a valid directory. " 15 + + "Please provide the path to where the libc++ headers have been installed.") 16 + + endif() 17 + + add_library(cxx-headers INTERFACE) 18 + + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" OR "${CMAKE_CXX_SIMULATE_ID}" STREQUAL "MSVC") 19 + + target_compile_options(cxx-headers INTERFACE /I "${LIBCXXABI_LIBCXX_INCLUDES}") 20 + + else() 21 + + target_compile_options(cxx-headers INTERFACE -I "${LIBCXXABI_LIBCXX_INCLUDES}") 22 + + endif() 23 + +endif() 24 + 25 + set(LIBCXXABI_HERMETIC_STATIC_LIBRARY_DEFAULT OFF) 26 + if (WIN32) 27 + --- a/test/CMakeLists.txt 28 + +++ b/test/CMakeLists.txt 29 + @@ -61,9 +61,13 @@ if (LIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY) 30 + list(APPEND LIBCXXABI_TEST_DEPS cxx_external_threads) 31 + endif() 32 + 33 + -list(APPEND LIBCXXABI_TEST_DEPS cxx) 34 + -if (LIBCXXABI_USE_LLVM_UNWINDER AND TARGET unwind) 35 + - list(APPEND LIBCXXABI_TEST_DEPS unwind) 36 + +if(libcxx IN_LIST LLVM_ENABLE_RUNTIMES) 37 + + list(APPEND LIBCXXABI_TEST_DEPS cxx) 38 + +endif() 39 + +if(libunwind IN_LIST LLVM_ENABLE_RUNTIMES) 40 + + if (LIBCXXABI_USE_LLVM_UNWINDER AND TARGET unwind) 41 + + list(APPEND LIBCXXABI_TEST_DEPS unwind) 42 + + endif() 43 + endif() 44 + 45 + set(AUTO_GEN_COMMENT "## Autogenerated by libcxxabi configuration.\n# Do not edit!")
+17 -3
pkgs/development/compilers/llvm/git/libunwind/default.nix
··· 1 { lib, stdenv, llvm_meta, version 2 , monorepoSrc, runCommand 3 , cmake 4 , enableShared ? !stdenv.hostPlatform.isStatic 5 }: 6 ··· 19 cp -r ${monorepoSrc}/libcxx/utils "$out/libcxx" 20 mkdir -p "$out/llvm" 21 cp -r ${monorepoSrc}/llvm/cmake "$out/llvm" 22 ''; 23 24 - sourceRoot = "${src.name}/${pname}"; 25 26 patches = [ 27 ./gnu-install-dirs.patch 28 ]; 29 30 outputs = [ "out" "dev" ]; 31 32 - nativeBuildInputs = [ cmake ]; 33 34 - cmakeFlags = lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF"; 35 36 meta = llvm_meta // { 37 # Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst
··· 1 { lib, stdenv, llvm_meta, version 2 , monorepoSrc, runCommand 3 , cmake 4 + , python3 5 , enableShared ? !stdenv.hostPlatform.isStatic 6 }: 7 ··· 20 cp -r ${monorepoSrc}/libcxx/utils "$out/libcxx" 21 mkdir -p "$out/llvm" 22 cp -r ${monorepoSrc}/llvm/cmake "$out/llvm" 23 + cp -r ${monorepoSrc}/llvm/utils "$out/llvm" 24 + cp -r ${monorepoSrc}/runtimes "$out" 25 ''; 26 27 + sourceRoot = "${src.name}/runtimes"; 28 + 29 + prePatch = '' 30 + cd ../${pname} 31 + chmod -R u+w . 32 + ''; 33 34 patches = [ 35 ./gnu-install-dirs.patch 36 ]; 37 38 + postPatch = '' 39 + cd ../runtimes 40 + ''; 41 + 42 outputs = [ "out" "dev" ]; 43 44 + nativeBuildInputs = [ cmake python3 ]; 45 46 + cmakeFlags = [ 47 + "-DLLVM_ENABLE_RUNTIMES=libunwind" 48 + ] ++ lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF"; 49 50 meta = llvm_meta // { 51 # Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst
+5 -48
pkgs/development/compilers/llvm/git/libunwind/gnu-install-dirs.patch
··· 1 diff --git a/CMakeLists.txt b/CMakeLists.txt 2 - index e3cc66dd2226..1299b596ce0d 100644 3 --- a/CMakeLists.txt 4 +++ b/CMakeLists.txt 5 - @@ -8,6 +8,8 @@ endif() 6 - 7 - cmake_minimum_required(VERSION 3.13.4) 8 - 9 - +include(GNUInstallDirs) 10 - + 11 - set(LLVM_COMMON_CMAKE_UTILS "${CMAKE_CURRENT_SOURCE_DIR}/../cmake") 12 - 13 - # Add path for custom modules 14 - @@ -139,25 +141,27 @@ set(CMAKE_MODULE_PATH 15 16 if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) 17 set(LIBUNWIND_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}) 18 - set(LIBUNWIND_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH 19 - + set(LIBUNWIND_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}" CACHE PATH 20 - + "Path where built libunwind headers should be installed.") 21 + set(LIBUNWIND_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH 22 "Path where built libunwind libraries should be installed.") 23 - - set(LIBUNWIND_INSTALL_RUNTIME_DIR bin CACHE PATH 24 - + set(LIBUNWIND_INSTALL_RUNTIME_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH 25 - "Path where built libunwind runtime libraries should be installed.") 26 if(LIBCXX_LIBDIR_SUBDIR) 27 string(APPEND LIBUNWIND_LIBRARY_DIR /${LIBUNWIND_LIBDIR_SUBDIR}) 28 - string(APPEND LIBUNWIND_INSTALL_LIBRARY_DIR /${LIBUNWIND_LIBDIR_SUBDIR}) 29 endif() 30 - -elseif(LLVM_LIBRARY_OUTPUT_INTDIR) 31 - - set(LIBUNWIND_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}) 32 - set(LIBUNWIND_INSTALL_LIBRARY_DIR lib${LIBUNWIND_LIBDIR_SUFFIX} CACHE PATH 33 - - "Path where built libunwind libraries should be installed.") 34 - - set(LIBUNWIND_INSTALL_RUNTIME_DIR bin CACHE PATH 35 - - "Path where built libunwind runtime libraries should be installed.") 36 - else() 37 - - set(LIBUNWIND_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBUNWIND_LIBDIR_SUFFIX}) 38 - - set(LIBUNWIND_INSTALL_LIBRARY_DIR lib${LIBUNWIND_LIBDIR_SUFFIX} CACHE PATH 39 - + if(LLVM_LIBRARY_OUTPUT_INTDIR) 40 - + set(LIBUNWIND_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}) 41 - + else() 42 - + set(LIBUNWIND_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBUNWIND_LIBDIR_SUFFIX}) 43 - + endif() 44 - + set(LIBUNWIND_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR}" CACHE PATH 45 - + "Path where built libunwind headers should be installed.") 46 + set(LIBUNWIND_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBUNWIND_LIBDIR_SUFFIX} CACHE PATH 47 "Path where built libunwind libraries should be installed.") 48 - - set(LIBUNWIND_INSTALL_RUNTIME_DIR bin CACHE PATH 49 - + set(LIBUNWIND_INSTALL_RUNTIME_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH 50 - "Path where built libunwind runtime libraries should be installed.") 51 endif() 52 53 - diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt 54 - index c3bb1dd0f69f..adf1766c44cb 100644 55 - --- a/include/CMakeLists.txt 56 - +++ b/include/CMakeLists.txt 57 - @@ -14,7 +14,7 @@ if(LIBUNWIND_INSTALL_HEADERS) 58 - foreach(file ${files}) 59 - get_filename_component(dir ${file} DIRECTORY) 60 - install(FILES ${file} 61 - - DESTINATION "include/${dir}" 62 - + DESTINATION "${LIBUNWIND_INSTALL_INCLUDE_DIR}/${dir}" 63 - COMPONENT unwind-headers 64 - PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ 65 - )
··· 1 diff --git a/CMakeLists.txt b/CMakeLists.txt 2 + index 5a06805f05f1..86a50329e6a8 100644 3 --- a/CMakeLists.txt 4 +++ b/CMakeLists.txt 5 + @@ -117,7 +117,7 @@ set(LIBUNWIND_INSTALL_RUNTIME_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH 6 7 if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) 8 set(LIBUNWIND_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}) 9 - set(LIBUNWIND_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH 10 + set(LIBUNWIND_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH 11 "Path where built libunwind libraries should be installed.") 12 if(LIBCXX_LIBDIR_SUBDIR) 13 string(APPEND LIBUNWIND_LIBRARY_DIR /${LIBUNWIND_LIBDIR_SUBDIR}) 14 + @@ -129,7 +129,7 @@ else() 15 + else() 16 + set(LIBUNWIND_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBUNWIND_LIBDIR_SUFFIX}) 17 endif() 18 - set(LIBUNWIND_INSTALL_LIBRARY_DIR lib${LIBUNWIND_LIBDIR_SUFFIX} CACHE PATH 19 + set(LIBUNWIND_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBUNWIND_LIBDIR_SUFFIX} CACHE PATH 20 "Path where built libunwind libraries should be installed.") 21 endif() 22
+3 -5
pkgs/development/compilers/llvm/git/lld/default.nix
··· 25 26 patches = [ 27 ./gnu-install-dirs.patch 28 - # On Darwin the llvm-config is perhaps not working fine as the 29 - # LLVM_MAIN_SRC_DIR is not getting set correctly, and the build fails as 30 - # the include path is not correct. 31 - ./fix-root-src-dir.patch 32 ]; 33 34 nativeBuildInputs = [ cmake ]; 35 buildInputs = [ libllvm libxml2 ]; 36 37 - cmakeFlags = lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ 38 "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen" 39 ]; 40
··· 25 26 patches = [ 27 ./gnu-install-dirs.patch 28 ]; 29 30 nativeBuildInputs = [ cmake ]; 31 buildInputs = [ libllvm libxml2 ]; 32 33 + cmakeFlags = [ 34 + "-DLLD_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/lld" 35 + ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ 36 "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen" 37 ]; 38
-13
pkgs/development/compilers/llvm/git/lld/fix-root-src-dir.patch
··· 1 - diff --git a/lld/CMakeLists.txt b/lld/CMakeLists.txt 2 - index e1a29b884d17..9d542f8fbfc1 100644 3 - --- a/CMakeLists.txt 4 - +++ b/CMakeLists.txt 5 - @@ -64,7 +64,7 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) 6 - 7 - set(LLVM_MAIN_INCLUDE_DIR ${MAIN_INCLUDE_DIR} CACHE PATH "Path to llvm/include") 8 - set(LLVM_BINARY_DIR ${LLVM_OBJ_ROOT} CACHE PATH "Path to LLVM build tree") 9 - - set(LLVM_MAIN_SRC_DIR ${MAIN_SRC_DIR} CACHE PATH "Path to LLVM source tree") 10 - + set(LLVM_MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm" CACHE PATH "Path to LLVM source tree") 11 - 12 - find_program(LLVM_TABLEGEN_EXE "llvm-tblgen" ${LLVM_TOOLS_BINARY_DIR} 13 - NO_DEFAULT_PATH)
···
+32 -8
pkgs/development/compilers/llvm/git/lld/gnu-install-dirs.patch
··· 1 diff --git a/cmake/modules/AddLLD.cmake b/cmake/modules/AddLLD.cmake 2 - index dd2898ce6236..ebbea040ff54 100644 3 --- a/cmake/modules/AddLLD.cmake 4 +++ b/cmake/modules/AddLLD.cmake 5 @@ -18,8 +18,8 @@ macro(add_lld_library name) ··· 13 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") 14 15 if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES) 16 - @@ -62,5 +62,5 @@ endmacro() 17 - macro(add_lld_symlink name dest) 18 - add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE) 19 - # Always generate install targets 20 - - llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE) 21 - + llvm_install_symlink(${name} ${dest} ${CMAKE_INSTALL_FULL_BINDIR} ALWAYS_GENERATE) 22 - endmacro()
··· 1 + diff --git a/CMakeLists.txt b/CMakeLists.txt 2 + index dcc649629a4b..58dca54642e4 100644 3 + --- a/CMakeLists.txt 4 + +++ b/CMakeLists.txt 5 + @@ -70,13 +70,15 @@ if(LLD_BUILT_STANDALONE) 6 + if (NOT LLVM_CONFIG_FOUND) 7 + # Pull values from LLVMConfig.cmake. We can drop this once the llvm-config 8 + # path is removed. 9 + - set(MAIN_INCLUDE_DIR "${LLVM_INCLUDE_DIR}") 10 + + set(INCLUDE_DIRS ${LLVM_INCLUDE_DIRS}) 11 + set(LLVM_OBJ_DIR "${LLVM_BINARY_DIR}") 12 + # N.B. this is just a default value, the CACHE PATHs below can be overridden. 13 + set(MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm") 14 + + else() 15 + + set(INCLUDE_DIRS "${LLVM_BINARY_DIR}/include" "${MAIN_INCLUDE_DIR}") 16 + endif() 17 + 18 + - set(LLVM_MAIN_INCLUDE_DIR "${MAIN_INCLUDE_DIR}" CACHE PATH "Path to llvm/include") 19 + + set(LLVM_INCLUDE_DIRS ${INCLUDE_DIRS} CACHE PATH "Path to llvm/include and any other header dirs needed") 20 + set(LLVM_BINARY_DIR "${LLVM_OBJ_ROOT}" CACHE PATH "Path to LLVM build tree") 21 + set(LLVM_MAIN_SRC_DIR "${MAIN_SRC_DIR}" CACHE PATH "Path to LLVM source tree") 22 + 23 + @@ -95,7 +97,7 @@ if(LLD_BUILT_STANDALONE) 24 + 25 + set(PACKAGE_VERSION "${LLVM_PACKAGE_VERSION}") 26 + 27 + - include_directories("${LLVM_BINARY_DIR}/include" ${LLVM_INCLUDE_DIRS}) 28 + + include_directories(${LLVM_INCLUDE_DIRS}) 29 + link_directories(${LLVM_LIBRARY_DIRS}) 30 + 31 + if(LLVM_INCLUDE_TESTS) 32 diff --git a/cmake/modules/AddLLD.cmake b/cmake/modules/AddLLD.cmake 33 + index d3924f7243d4..42a7cd62281c 100644 34 --- a/cmake/modules/AddLLD.cmake 35 +++ b/cmake/modules/AddLLD.cmake 36 @@ -18,8 +18,8 @@ macro(add_lld_library name) ··· 44 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") 45 46 if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES)
-13
pkgs/development/compilers/llvm/git/lldb/gnu-install-dirs.patch
··· 1 - diff --git a/CMakeLists.txt b/CMakeLists.txt 2 - index 79d451965ed4..78188978d6de 100644 3 - --- a/CMakeLists.txt 4 - +++ b/CMakeLists.txt 5 - @@ -12,6 +12,8 @@ set(CMAKE_MODULE_PATH 6 - # If we are not building as part of LLVM, build LLDB as a standalone project, 7 - # using LLVM as an external library. 8 - if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) 9 - + include(GNUInstallDirs) 10 - + 11 - project(lldb) 12 - include(LLDBStandalone) 13 - 14 diff --git a/cmake/modules/AddLLDB.cmake b/cmake/modules/AddLLDB.cmake 15 index 3291a7c808e1..b27d27ce6a87 100644 16 --- a/cmake/modules/AddLLDB.cmake
··· 1 diff --git a/cmake/modules/AddLLDB.cmake b/cmake/modules/AddLLDB.cmake 2 index 3291a7c808e1..b27d27ce6a87 100644 3 --- a/cmake/modules/AddLLDB.cmake
+10 -1
pkgs/development/compilers/llvm/git/lldb/procfs.patch
··· 1 --- a/source/Plugins/Process/Linux/Procfs.h 2 +++ b/source/Plugins/Process/Linux/Procfs.h 3 - @@ -11,21 +11,12 @@ 4 // sys/procfs.h on Android/Linux for all supported architectures. 5 6 #include <sys/ptrace.h> 7 +#include <asm/ptrace.h> 8 9 -#ifdef __ANDROID__ 10 -#if defined(__arm64__) || defined(__aarch64__) ··· 29 #include <sys/procfs.h> 30 -#endif // __ANDROID__ 31 +#endif
··· 1 --- a/source/Plugins/Process/Linux/Procfs.h 2 +++ b/source/Plugins/Process/Linux/Procfs.h 3 + @@ -10,6 +10,7 @@ 4 // sys/procfs.h on Android/Linux for all supported architectures. 5 6 #include <sys/ptrace.h> 7 +#include <asm/ptrace.h> 8 + 9 + #include "lldb/lldb-types.h" 10 + 11 + @@ -17,23 +18,13 @@ 12 + 13 + #include <vector> 14 15 -#ifdef __ANDROID__ 16 -#if defined(__arm64__) || defined(__aarch64__) ··· 35 #include <sys/procfs.h> 36 -#endif // __ANDROID__ 37 +#endif 38 + 39 + namespace lldb_private { 40 + namespace process_linux {
+8 -2
pkgs/development/compilers/llvm/git/llvm/default.nix
··· 89 rm test/DebugInfo/X86/convert-inlined.ll 90 rm test/DebugInfo/X86/convert-linked.ll 91 rm test/tools/dsymutil/X86/op-convert.test 92 '' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") '' 93 # Seems to require certain floating point hardware (NEON?) 94 rm test/ExecutionEngine/frem.ll ··· 114 # Some flags don't need to be repassed because LLVM already does so (like 115 # CMAKE_BUILD_TYPE), others are irrelevant to the result. 116 flagsForLlvmConfig = [ 117 - "-DLLVM_INSTALL_CMAKE_DIR=${placeholder "dev"}/lib/cmake/llvm/" 118 "-DLLVM_ENABLE_RTTI=ON" 119 ] ++ optionals enableSharedLibraries [ 120 "-DLLVM_LINK_LLVM_DYLIB=ON" ··· 194 --replace "\''${_IMPORT_PREFIX}/lib/lib" "$lib/lib/lib" \ 195 --replace "$out/bin/llvm-config" "$dev/bin/llvm-config" 196 substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ 197 - --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}'"$lib"'")' 198 '' 199 + optionalString (stdenv.isDarwin && enableSharedLibraries) '' 200 ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib ··· 208 && (stdenv.hostPlatform == stdenv.buildPlatform); 209 210 checkTarget = "check-all"; 211 212 requiredSystemFeatures = [ "big-parallel" ]; 213 meta = llvm_meta // {
··· 89 rm test/DebugInfo/X86/convert-inlined.ll 90 rm test/DebugInfo/X86/convert-linked.ll 91 rm test/tools/dsymutil/X86/op-convert.test 92 + rm test/tools/gold/X86/split-dwarf.ll 93 + rm test/tools/llvm-dwarfdump/X86/prettyprint_types.s 94 + rm test/tools/llvm-dwarfdump/X86/simplified-template-names.s 95 '' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") '' 96 # Seems to require certain floating point hardware (NEON?) 97 rm test/ExecutionEngine/frem.ll ··· 117 # Some flags don't need to be repassed because LLVM already does so (like 118 # CMAKE_BUILD_TYPE), others are irrelevant to the result. 119 flagsForLlvmConfig = [ 120 + "-DLLVM_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/llvm" 121 "-DLLVM_ENABLE_RTTI=ON" 122 ] ++ optionals enableSharedLibraries [ 123 "-DLLVM_LINK_LLVM_DYLIB=ON" ··· 197 --replace "\''${_IMPORT_PREFIX}/lib/lib" "$lib/lib/lib" \ 198 --replace "$out/bin/llvm-config" "$dev/bin/llvm-config" 199 substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ 200 + --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")' 201 '' 202 + optionalString (stdenv.isDarwin && enableSharedLibraries) '' 203 ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib ··· 211 && (stdenv.hostPlatform == stdenv.buildPlatform); 212 213 checkTarget = "check-all"; 214 + 215 + # For the update script: 216 + passthru.monorepoSrc = monorepoSrc; 217 218 requiredSystemFeatures = [ "big-parallel" ]; 219 meta = llvm_meta // {
+44 -126
pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs.patch
··· 1 diff --git a/CMakeLists.txt b/CMakeLists.txt 2 - index fec956091cd5..5a766f5c5d7c 100644 3 --- a/CMakeLists.txt 4 +++ b/CMakeLists.txt 5 - @@ -303,6 +303,9 @@ set(LLVM_EXAMPLES_INSTALL_DIR "examples" CACHE STRING 6 - "Path for examples subdirectory (enabled by LLVM_BUILD_EXAMPLES=ON) (defaults to 'examples')") 7 - mark_as_advanced(LLVM_EXAMPLES_INSTALL_DIR) 8 - 9 - +set(LLVM_INSTALL_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/cmake/llvm" CACHE STRING 10 - + "Path for CMake subdirectory (defaults to lib/cmake/llvm)" ) 11 - + 12 - # They are used as destination of target generators. 13 - set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin) 14 - set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX}) 15 diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake 16 - index fed1fec7d72e..4baed19b9e98 100644 17 --- a/cmake/modules/AddLLVM.cmake 18 +++ b/cmake/modules/AddLLVM.cmake 19 - @@ -838,8 +838,8 @@ macro(add_llvm_library name) 20 get_target_export_arg(${name} LLVM export_to_llvmexports ${umbrella}) 21 install(TARGETS ${name} 22 ${export_to_llvmexports} ··· 27 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT ${name}) 28 29 if (NOT LLVM_ENABLE_IDE) 30 - @@ -1056,7 +1056,7 @@ function(process_llvm_pass_plugins) 31 - "set(LLVM_STATIC_EXTENSIONS ${LLVM_STATIC_EXTENSIONS})") 32 - install(FILES 33 - ${llvm_cmake_builddir}/LLVMConfigExtensions.cmake 34 - - DESTINATION ${LLVM_INSTALL_PACKAGE_DIR} 35 - + DESTINATION ${LLVM_INSTALL_CMAKE_DIR} 36 - COMPONENT cmake-exports) 37 - 38 - set(ExtensionDef "${LLVM_BINARY_DIR}/include/llvm/Support/Extension.def") 39 - @@ -1902,7 +1902,7 @@ function(llvm_install_library_symlink name dest type) 40 set(full_name ${CMAKE_${type}_LIBRARY_PREFIX}${name}${CMAKE_${type}_LIBRARY_SUFFIX}) 41 set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX}) 42 43 - set(output_dir lib${LLVM_LIBDIR_SUFFIX}) 44 + set(output_dir ${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX}) 45 if(WIN32 AND "${type}" STREQUAL "SHARED") 46 - set(output_dir bin) 47 endif() 48 - @@ -1913,7 +1913,7 @@ function(llvm_install_library_symlink name dest type) 49 50 - endfunction() 51 - 52 - -function(llvm_install_symlink name dest) 53 - +function(llvm_install_symlink name dest output_dir) 54 - cmake_parse_arguments(ARG "ALWAYS_GENERATE" "COMPONENT" "" ${ARGN}) 55 - foreach(path ${CMAKE_MODULE_PATH}) 56 - if(EXISTS ${path}/LLVMInstallSymlink.cmake) 57 - @@ -1936,7 +1936,7 @@ function(llvm_install_symlink name dest) 58 - set(full_dest ${dest}${CMAKE_EXECUTABLE_SUFFIX}) 59 - 60 - install(SCRIPT ${INSTALL_SYMLINK} 61 - - CODE "install_symlink(${full_name} ${full_dest} ${LLVM_TOOLS_INSTALL_DIR})" 62 - + CODE "install_symlink(${full_name} ${full_dest} ${output_dir})" 63 - COMPONENT ${component}) 64 - 65 - if (NOT LLVM_ENABLE_IDE AND NOT ARG_ALWAYS_GENERATE) 66 - @@ -2019,7 +2019,8 @@ function(add_llvm_tool_symlink link_name target) 67 - endif() 68 - 69 - if ((TOOL_IS_TOOLCHAIN OR NOT LLVM_INSTALL_TOOLCHAIN_ONLY) AND LLVM_BUILD_TOOLS) 70 - - llvm_install_symlink(${link_name} ${target}) 71 - + GNUInstallDirs_get_absolute_install_dir(output_dir LLVM_TOOLS_INSTALL_DIR) 72 - + llvm_install_symlink(${link_name} ${target} ${output_dir}) 73 - endif() 74 - endif() 75 - endfunction() 76 - @@ -2148,9 +2149,9 @@ function(llvm_setup_rpath name) 77 # Since BUILD_SHARED_LIBS is only recommended for use by developers, 78 # hardcode the rpath to build/install lib dir first in this mode. 79 # FIXME: update this when there is better solution. 80 - set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) 81 - + set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) 82 elseif(UNIX) 83 - set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) 84 + set(_install_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) ··· 102 list(APPEND ocaml_flags "-ldopt" "-Wl,-rpath,${ocaml_rpath}") 103 104 diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt 105 - index cea0c1df0a14..eedcd9450312 100644 106 --- a/cmake/modules/CMakeLists.txt 107 +++ b/cmake/modules/CMakeLists.txt 108 - @@ -2,7 +2,7 @@ include(ExtendPath) 109 - include(LLVMDistributionSupport) 110 - include(FindPrefixFromConfig) 111 - 112 - -set(LLVM_INSTALL_PACKAGE_DIR lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm) 113 - +set(LLVM_INSTALL_PACKAGE_DIR ${LLVM_INSTALL_CMAKE_DIR} CACHE STRING "Path for CMake subdirectory (defaults to 'cmake/llvm')") 114 - set(llvm_cmake_builddir "${LLVM_BINARY_DIR}/${LLVM_INSTALL_PACKAGE_DIR}") 115 - 116 - # First for users who use an installed LLVM, create the LLVMExports.cmake file. 117 - @@ -122,7 +122,7 @@ set(LLVM_CONFIG_INCLUDE_DIRS 118 ) 119 list(REMOVE_DUPLICATES LLVM_CONFIG_INCLUDE_DIRS) 120 ··· 123 set(LLVM_CONFIG_LIBRARY_DIRS 124 "${LLVM_CONFIG_LIBRARY_DIR}" 125 # FIXME: Should there be other entries here? 126 - diff --git a/cmake/modules/LLVMInstallSymlink.cmake b/cmake/modules/LLVMInstallSymlink.cmake 127 - index b5c35f706cb7..9261ab797de6 100644 128 - --- a/cmake/modules/LLVMInstallSymlink.cmake 129 - +++ b/cmake/modules/LLVMInstallSymlink.cmake 130 - @@ -6,7 +6,7 @@ include(GNUInstallDirs) 131 - 132 - function(install_symlink name target outdir) 133 - set(DESTDIR $ENV{DESTDIR}) 134 - - set(bindir "${DESTDIR}${CMAKE_INSTALL_PREFIX}/${outdir}") 135 - + set(bindir "${DESTDIR}${outdir}/") 136 - 137 - message(STATUS "Creating ${name}") 138 - 139 diff --git a/docs/CMake.rst b/docs/CMake.rst 140 - index 044ec8a4d39d..504d0eac3ade 100644 141 --- a/docs/CMake.rst 142 +++ b/docs/CMake.rst 143 - @@ -224,7 +224,7 @@ description is in `LLVM-related variables`_ below. 144 **LLVM_LIBDIR_SUFFIX**:STRING 145 Extra suffix to append to the directory where libraries are to be 146 installed. On a 64-bit architecture, one could use ``-DLLVM_LIBDIR_SUFFIX=64`` ··· 149 150 **LLVM_PARALLEL_{COMPILE,LINK}_JOBS**:STRING 151 Building the llvm toolchain can use a lot of resources, particularly 152 - @@ -910,9 +910,11 @@ the ``cmake`` command or by setting it directly in ``ccmake`` or ``cmake-gui``). 153 154 - This file is available in two different locations. 155 - 156 - -* ``<INSTALL_PREFIX>/lib/cmake/llvm/LLVMConfig.cmake`` where 157 - - ``<INSTALL_PREFIX>`` is the install prefix of an installed version of LLVM. 158 - - On Linux typically this is ``/usr/lib/cmake/llvm/LLVMConfig.cmake``. 159 - +* ``<LLVM_INSTALL_PACKAGE_DIR>LLVMConfig.cmake`` where 160 - + ``<LLVM_INSTALL_PACKAGE_DIR>`` is the location where LLVM CMake modules are 161 - + installed as part of an installed version of LLVM. This is typically 162 - + ``cmake/llvm/`` within the lib directory. On Linux, this is typically 163 - + ``/usr/lib/cmake/llvm/LLVMConfig.cmake``. 164 - 165 - * ``<LLVM_BUILD_ROOT>/lib/cmake/llvm/LLVMConfig.cmake`` where 166 - ``<LLVM_BUILD_ROOT>`` is the root of the LLVM build tree. **Note: this is only 167 - diff --git a/include/llvm/CMakeLists.txt b/include/llvm/CMakeLists.txt 168 - index b46319f24fc8..2feabd1954e4 100644 169 - --- a/include/llvm/CMakeLists.txt 170 - +++ b/include/llvm/CMakeLists.txt 171 - @@ -5,5 +5,5 @@ add_subdirectory(Frontend) 172 - # If we're doing an out-of-tree build, copy a module map for generated 173 - # header files into the build area. 174 - if (NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") 175 - - configure_file(module.modulemap.build module.modulemap COPYONLY) 176 - + configure_file(module.modulemap.build ${LLVM_INCLUDE_DIR}/module.modulemap COPYONLY) 177 - endif (NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") 178 diff --git a/tools/llvm-config/BuildVariables.inc.in b/tools/llvm-config/BuildVariables.inc.in 179 - index abbb8a450da6..70c497be12f5 100644 180 --- a/tools/llvm-config/BuildVariables.inc.in 181 +++ b/tools/llvm-config/BuildVariables.inc.in 182 - @@ -23,7 +23,10 @@ 183 #define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@" 184 #define LLVM_BUILDMODE "@LLVM_BUILDMODE@" 185 #define LLVM_LIBDIR_SUFFIX "@LLVM_LIBDIR_SUFFIX@" 186 - +#define LLVM_INSTALL_BINDIR "@CMAKE_INSTALL_BINDIR@" 187 +#define LLVM_INSTALL_LIBDIR "@CMAKE_INSTALL_LIBDIR@" 188 #define LLVM_INSTALL_INCLUDEDIR "@CMAKE_INSTALL_INCLUDEDIR@" 189 - +#define LLVM_INSTALL_CMAKEDIR "@LLVM_INSTALL_CMAKE_DIR@" 190 #define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@" 191 - #define LLVM_SYSTEM_LIBS "@LLVM_SYSTEM_LIBS@" 192 - #define LLVM_BUILD_SYSTEM "@LLVM_BUILD_SYSTEM@" 193 diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp 194 - index 8ed88f33ead4..5e7184bab90d 100644 195 --- a/tools/llvm-config/llvm-config.cpp 196 +++ b/tools/llvm-config/llvm-config.cpp 197 - @@ -363,12 +363,20 @@ int main(int argc, char **argv) { 198 - ActiveIncludeDir = std::string(Path.str()); 199 - } 200 - { 201 - - SmallString<256> Path(LLVM_TOOLS_INSTALL_DIR); 202 - + SmallString<256> Path(LLVM_INSTALL_BINDIR); 203 sys::fs::make_absolute(ActivePrefix, Path); 204 ActiveBinDir = std::string(Path.str()); 205 } 206 - ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX; 207 - - ActiveCMakeDir = ActiveLibDir + "/cmake/llvm"; 208 + { 209 + SmallString<256> Path(LLVM_INSTALL_LIBDIR LLVM_LIBDIR_SUFFIX); 210 + sys::fs::make_absolute(ActivePrefix, Path); 211 + ActiveLibDir = std::string(Path.str()); 212 + } 213 - + { 214 - + SmallString<256> Path(LLVM_INSTALL_CMAKEDIR); 215 - + sys::fs::make_absolute(ActivePrefix, Path); 216 - + ActiveCMakeDir = std::string(Path.str()); 217 - + } 218 - ActiveIncludeOption = "-I" + ActiveIncludeDir; 219 - } 220 -
··· 1 diff --git a/CMakeLists.txt b/CMakeLists.txt 2 + index 45399dc0537e..5d946e9e6583 100644 3 --- a/CMakeLists.txt 4 +++ b/CMakeLists.txt 5 + @@ -942,7 +942,7 @@ if (NOT TENSORFLOW_AOT_PATH STREQUAL "") 6 + add_subdirectory(${TENSORFLOW_AOT_PATH}/xla_aot_runtime_src 7 + ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/tf_runtime) 8 + install(TARGETS tf_xla_runtime EXPORT LLVMExports 9 + - ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime) 10 + + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime) 11 + set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS tf_xla_runtime) 12 + # Once we add more modules, we should handle this more automatically. 13 + if (DEFINED LLVM_OVERRIDE_MODEL_HEADER_INLINERSIZEMODEL) 14 diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake 15 + index 057431208322..56f0dcb258da 100644 16 --- a/cmake/modules/AddLLVM.cmake 17 +++ b/cmake/modules/AddLLVM.cmake 18 + @@ -844,8 +844,8 @@ macro(add_llvm_library name) 19 get_target_export_arg(${name} LLVM export_to_llvmexports ${umbrella}) 20 install(TARGETS ${name} 21 ${export_to_llvmexports} ··· 26 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT ${name}) 27 28 if (NOT LLVM_ENABLE_IDE) 29 + @@ -2007,7 +2007,7 @@ function(llvm_install_library_symlink name dest type) 30 set(full_name ${CMAKE_${type}_LIBRARY_PREFIX}${name}${CMAKE_${type}_LIBRARY_SUFFIX}) 31 set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX}) 32 33 - set(output_dir lib${LLVM_LIBDIR_SUFFIX}) 34 + set(output_dir ${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX}) 35 if(WIN32 AND "${type}" STREQUAL "SHARED") 36 + set(output_dir "${CMAKE_INSTALL_BINDIR}") 37 endif() 38 + @@ -2271,15 +2271,15 @@ function(llvm_setup_rpath name) 39 40 + if (APPLE) 41 + set(_install_name_dir INSTALL_NAME_DIR "@rpath") 42 + - set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) 43 + + set(_install_rpath "@loader_path/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) 44 + elseif(${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND BUILD_SHARED_LIBS) 45 + # $ORIGIN is not interpreted at link time by aix ld. 46 # Since BUILD_SHARED_LIBS is only recommended for use by developers, 47 # hardcode the rpath to build/install lib dir first in this mode. 48 # FIXME: update this when there is better solution. 49 - set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) 50 + + set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) 51 elseif(UNIX) 52 - set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) 53 + set(_install_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) ··· 71 list(APPEND ocaml_flags "-ldopt" "-Wl,-rpath,${ocaml_rpath}") 72 73 diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt 74 + index d4b0ab959148..26ed981fd09f 100644 75 --- a/cmake/modules/CMakeLists.txt 76 +++ b/cmake/modules/CMakeLists.txt 77 + @@ -128,7 +128,7 @@ set(LLVM_CONFIG_INCLUDE_DIRS 78 ) 79 list(REMOVE_DUPLICATES LLVM_CONFIG_INCLUDE_DIRS) 80 ··· 83 set(LLVM_CONFIG_LIBRARY_DIRS 84 "${LLVM_CONFIG_LIBRARY_DIR}" 85 # FIXME: Should there be other entries here? 86 diff --git a/docs/CMake.rst b/docs/CMake.rst 87 + index 879b7b231d4c..9c31d14e8950 100644 88 --- a/docs/CMake.rst 89 +++ b/docs/CMake.rst 90 + @@ -250,7 +250,7 @@ description is in `LLVM-related variables`_ below. 91 **LLVM_LIBDIR_SUFFIX**:STRING 92 Extra suffix to append to the directory where libraries are to be 93 installed. On a 64-bit architecture, one could use ``-DLLVM_LIBDIR_SUFFIX=64`` ··· 96 97 **LLVM_PARALLEL_{COMPILE,LINK}_JOBS**:STRING 98 Building the llvm toolchain can use a lot of resources, particularly 99 + @@ -284,6 +284,10 @@ manual, or execute ``cmake --help-variable VARIABLE_NAME``. 100 + The path to install executables, relative to the *CMAKE_INSTALL_PREFIX*. 101 + Defaults to "bin". 102 103 + +**CMAKE_INSTALL_LIBDIR**:PATH 104 + + The path to install libraries, relative to the *CMAKE_INSTALL_PREFIX*. 105 + + Defaults to "lib". 106 + + 107 + **CMAKE_INSTALL_INCLUDEDIR**:PATH 108 + The path to install header files, relative to the *CMAKE_INSTALL_PREFIX*. 109 + Defaults to "include". 110 diff --git a/tools/llvm-config/BuildVariables.inc.in b/tools/llvm-config/BuildVariables.inc.in 111 + index 370005cd8d7d..7e790bc52111 100644 112 --- a/tools/llvm-config/BuildVariables.inc.in 113 +++ b/tools/llvm-config/BuildVariables.inc.in 114 + @@ -23,6 +23,7 @@ 115 #define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@" 116 #define LLVM_BUILDMODE "@LLVM_BUILDMODE@" 117 #define LLVM_LIBDIR_SUFFIX "@LLVM_LIBDIR_SUFFIX@" 118 +#define LLVM_INSTALL_LIBDIR "@CMAKE_INSTALL_LIBDIR@" 119 #define LLVM_INSTALL_INCLUDEDIR "@CMAKE_INSTALL_INCLUDEDIR@" 120 + #define LLVM_INSTALL_PACKAGE_DIR "@LLVM_INSTALL_PACKAGE_DIR@" 121 #define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@" 122 diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp 123 + index 2c6c55f89d38..f6d2068a0827 100644 124 --- a/tools/llvm-config/llvm-config.cpp 125 +++ b/tools/llvm-config/llvm-config.cpp 126 + @@ -369,7 +369,11 @@ int main(int argc, char **argv) { 127 sys::fs::make_absolute(ActivePrefix, Path); 128 ActiveBinDir = std::string(Path.str()); 129 } 130 - ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX; 131 + { 132 + SmallString<256> Path(LLVM_INSTALL_LIBDIR LLVM_LIBDIR_SUFFIX); 133 + sys::fs::make_absolute(ActivePrefix, Path); 134 + ActiveLibDir = std::string(Path.str()); 135 + } 136 + { 137 + SmallString<256> Path(LLVM_INSTALL_PACKAGE_DIR); 138 + sys::fs::make_absolute(ActivePrefix, Path);
+16 -3
pkgs/development/compilers/llvm/git/openmp/default.nix
··· 5 , runCommand 6 , cmake 7 , llvm 8 , clang-unwrapped 9 , perl 10 , pkg-config ··· 24 sourceRoot = "${src.name}/${pname}"; 25 26 patches = [ 27 ./gnu-install-dirs.patch 28 - ./fix-find-tool.patch 29 ]; 30 31 outputs = [ "out" "dev" ]; 32 33 - nativeBuildInputs = [ cmake perl pkg-config clang-unwrapped ]; 34 buildInputs = [ llvm ]; 35 36 cmakeFlags = [ 37 - "-DLIBOMPTARGET_BUILD_AMDGCN_BCLIB=OFF" # Building the AMDGCN device RTL currently fails 38 ]; 39 40 meta = llvm_meta // {
··· 5 , runCommand 6 , cmake 7 , llvm 8 + , lit 9 , clang-unwrapped 10 , perl 11 , pkg-config ··· 25 sourceRoot = "${src.name}/${pname}"; 26 27 patches = [ 28 + ./fix-find-tool.patch 29 ./gnu-install-dirs.patch 30 + ./run-lit-directly.patch 31 ]; 32 33 outputs = [ "out" "dev" ]; 34 35 + nativeBuildInputs = [ cmake perl pkg-config lit ]; 36 buildInputs = [ llvm ]; 37 38 + # Unsup:Pass:XFail:Fail 39 + # 26:267:16:8 40 + doCheck = false; 41 + checkTarget = "check-openmp"; 42 + 43 + preCheck = '' 44 + patchShebangs ../tools/archer/tests/deflake.bash 45 + ''; 46 + 47 cmakeFlags = [ 48 + "-DCLANG_TOOL=${clang-unwrapped}/bin/clang" 49 + "-DOPT_TOOL=${llvm}/bin/opt" 50 + "-DLINK_TOOL=${llvm}/bin/llvm-link" 51 ]; 52 53 meta = llvm_meta // {
+9 -45
pkgs/development/compilers/llvm/git/openmp/fix-find-tool.patch
··· 1 diff --git a/libomptarget/DeviceRTL/CMakeLists.txt b/libomptarget/DeviceRTL/CMakeLists.txt 2 - index 242df638f80d..a4654e96371f 100644 3 --- a/libomptarget/DeviceRTL/CMakeLists.txt 4 +++ b/libomptarget/DeviceRTL/CMakeLists.txt 5 - @@ -25,16 +25,16 @@ endif() 6 - 7 - if (LLVM_DIR) 8 - # Builds that use pre-installed LLVM have LLVM_DIR set. 9 - - find_program(CLANG_TOOL clang PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH) 10 - + find_program(CLANG_TOOL clang PATHS ${LLVM_TOOLS_BINARY_DIR} REQUIRED) 11 - find_program(LINK_TOOL llvm-link PATHS ${LLVM_TOOLS_BINARY_DIR} 12 - - NO_DEFAULT_PATH) 13 - - find_program(OPT_TOOL opt PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH) 14 - + REQUIRED) 15 - + find_program(OPT_TOOL opt PATHS ${LLVM_TOOLS_BINARY_DIR} REQUIRED) 16 - libomptarget_say("Building DeviceRTL. Using clang: ${CLANG_TOOL}") 17 - elseif (LLVM_TOOL_CLANG_BUILD AND NOT CMAKE_CROSSCOMPILING AND NOT OPENMP_STANDALONE_BUILD) 18 - # LLVM in-tree builds may use CMake target names to discover the tools. 19 - - set(CLANG_TOOL $<TARGET_FILE:clang>) 20 - - set(LINK_TOOL $<TARGET_FILE:llvm-link>) 21 - - set(OPT_TOOL $<TARGET_FILE:opt>) 22 - + set(CLANG_TOOL $<TARGET_FILE:clang> REQUIRED) 23 - + set(LINK_TOOL $<TARGET_FILE:llvm-link> REQUIRED) 24 - + set(OPT_TOOL $<TARGET_FILE:opt> REQUIRED) 25 - libomptarget_say("Building DeviceRTL. Using clang from in-tree build") 26 - else() 27 - libomptarget_say("Not building DeviceRTL. No appropriate clang found") 28 - diff --git a/libomptarget/deviceRTLs/amdgcn/CMakeLists.txt b/libomptarget/deviceRTLs/amdgcn/CMakeLists.txt 29 - index 3f4c02671aeb..be9f4677d7b5 100644 30 - --- a/libomptarget/deviceRTLs/amdgcn/CMakeLists.txt 31 - +++ b/libomptarget/deviceRTLs/amdgcn/CMakeLists.txt 32 - @@ -38,16 +38,16 @@ endif() 33 - 34 if (LLVM_DIR) 35 # Builds that use pre-installed LLVM have LLVM_DIR set. 36 - find_program(CLANG_TOOL clang PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH) 37 - + find_program(CLANG_TOOL clang PATHS ${LLVM_TOOLS_BINARY_DIR} REQUIRED) 38 find_program(LINK_TOOL llvm-link PATHS ${LLVM_TOOLS_BINARY_DIR} 39 - NO_DEFAULT_PATH) 40 - find_program(OPT_TOOL opt PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH) 41 - + REQUIRED) 42 - + find_program(OPT_TOOL opt PATHS ${LLVM_TOOLS_BINARY_DIR} REQUIRED) 43 - libomptarget_say("Building AMDGCN device RTL. Using clang: ${CLANG_TOOL}") 44 - elseif (LLVM_TOOL_CLANG_BUILD AND NOT CMAKE_CROSSCOMPILING AND NOT OPENMP_STANDALONE_BUILD) 45 - # LLVM in-tree builds may use CMake target names to discover the tools. 46 - - set(CLANG_TOOL $<TARGET_FILE:clang>) 47 - - set(LINK_TOOL $<TARGET_FILE:llvm-link>) 48 - - set(OPT_TOOL $<TARGET_FILE:opt>) 49 - + set(CLANG_TOOL $<TARGET_FILE:clang> REQUIRED) 50 - + set(LINK_TOOL $<TARGET_FILE:llvm-link> REQUIRED) 51 - + set(OPT_TOOL $<TARGET_FILE:opt> REQUIRED) 52 - libomptarget_say("Building AMDGCN device RTL. Using clang from in-tree build") 53 - else() 54 - libomptarget_say("Not building AMDGCN device RTL. No appropriate clang found")
··· 1 diff --git a/libomptarget/DeviceRTL/CMakeLists.txt b/libomptarget/DeviceRTL/CMakeLists.txt 2 + index ce66214822a2..6ab7b33c95da 100644 3 --- a/libomptarget/DeviceRTL/CMakeLists.txt 4 +++ b/libomptarget/DeviceRTL/CMakeLists.txt 5 + @@ -27,10 +27,10 @@ endif() 6 if (LLVM_DIR) 7 # Builds that use pre-installed LLVM have LLVM_DIR set. 8 + # A standalone or LLVM_ENABLE_RUNTIMES=openmp build takes this route 9 - find_program(CLANG_TOOL clang PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH) 10 + + find_program(CLANG_TOOL clang PATHS ${LLVM_TOOLS_BINARY_DIR}) 11 find_program(LINK_TOOL llvm-link PATHS ${LLVM_TOOLS_BINARY_DIR} 12 - NO_DEFAULT_PATH) 13 - find_program(OPT_TOOL opt PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH) 14 + + ) 15 + + find_program(OPT_TOOL opt PATHS ${LLVM_TOOLS_BINARY_DIR}) 16 + if ((NOT CLANG_TOOL) OR (NOT LINK_TOOL) OR (NOT OPT_TOOL)) 17 + libomptarget_say("Not building DeviceRTL. Missing clang: ${CLANG_TOOL}, llvm-link: ${LINK_TOOL} or opt: ${OPT_TOOL}") 18 + return()
+3 -70
pkgs/development/compilers/llvm/git/openmp/gnu-install-dirs.patch
··· 1 diff --git a/CMakeLists.txt b/CMakeLists.txt 2 - index 7f11a05f5622..fb90f8f6a49b 100644 3 --- a/CMakeLists.txt 4 +++ b/CMakeLists.txt 5 - @@ -8,6 +8,8 @@ if (OPENMP_STANDALONE_BUILD OR "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_S 6 - set(OPENMP_STANDALONE_BUILD TRUE) 7 - project(openmp C CXX) 8 - 9 - + include(GNUInstallDirs) 10 - + 11 - # CMAKE_BUILD_TYPE was not set, default to Release. 12 - if (NOT CMAKE_BUILD_TYPE) 13 - set(CMAKE_BUILD_TYPE Release) 14 - @@ -19,7 +21,7 @@ if (OPENMP_STANDALONE_BUILD OR "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_S 15 set(OPENMP_LIBDIR_SUFFIX "" CACHE STRING 16 "Suffix of lib installation directory, e.g. 64 => lib64") 17 # Do not use OPENMP_LIBDIR_SUFFIX directly, use OPENMP_INSTALL_LIBDIR. ··· 20 21 # Group test settings. 22 set(OPENMP_TEST_C_COMPILER ${CMAKE_C_COMPILER} CACHE STRING 23 - @@ -30,7 +32,7 @@ if (OPENMP_STANDALONE_BUILD OR "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_S 24 else() 25 set(OPENMP_ENABLE_WERROR ${LLVM_ENABLE_WERROR}) 26 # If building in tree, we honor the same install suffix LLVM uses. ··· 29 30 if (NOT MSVC) 31 set(OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang) 32 - index 0e1ce2afd154..8b3810f83713 100644 33 - --- a/libomptarget/plugins/amdgpu/CMakeLists.txt 34 - +++ b/libomptarget/plugins/amdgpu/CMakeLists.txt 35 - @@ -80,7 +80,7 @@ add_library(omptarget.rtl.amdgpu SHARED 36 - 37 - # Install plugin under the lib destination folder. 38 - # When we build for debug, OPENMP_LIBDIR_SUFFIX get set to -debug 39 - -install(TARGETS omptarget.rtl.amdgpu LIBRARY DESTINATION "lib${OPENMP_LIBDIR_SUFFIX}") 40 - +install(TARGETS omptarget.rtl.amdgpu LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${OPENMP_LIBDIR_SUFFIX}") 41 - set_property(TARGET omptarget.rtl.amdgpu PROPERTY INSTALL_RPATH_USE_LINK_PATH ON) 42 - 43 - if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") 44 - diff --git a/libomptarget/plugins/ve/CMakeLists.txt b/libomptarget/plugins/ve/CMakeLists.txt 45 - index 16ce0891ca23..db30ee9c769f 100644 46 - --- a/libomptarget/plugins/ve/CMakeLists.txt 47 - +++ b/libomptarget/plugins/ve/CMakeLists.txt 48 - @@ -32,7 +32,7 @@ if(${LIBOMPTARGET_DEP_VEO_FOUND}) 49 - 50 - # Install plugin under the lib destination folder. 51 - install(TARGETS "omptarget.rtl.${tmachine_libname}" 52 - - LIBRARY DESTINATION lib${OPENMP_LIBDIR_SUFFIX}) 53 - + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${OPENMP_LIBDIR_SUFFIX}) 54 - 55 - target_link_libraries( 56 - "omptarget.rtl.${tmachine_libname}" 57 - diff --git a/runtime/src/CMakeLists.txt b/runtime/src/CMakeLists.txt 58 - index e4f4e6e1e73f..1164b3b22b0e 100644 59 - --- a/runtime/src/CMakeLists.txt 60 - +++ b/runtime/src/CMakeLists.txt 61 - @@ -346,13 +346,13 @@ add_dependencies(libomp-micro-tests libomp-test-deps) 62 - # We want to install libomp in DESTDIR/CMAKE_INSTALL_PREFIX/lib 63 - # We want to install headers in DESTDIR/CMAKE_INSTALL_PREFIX/include 64 - if(${OPENMP_STANDALONE_BUILD}) 65 - - set(LIBOMP_HEADERS_INSTALL_PATH include) 66 - + set(LIBOMP_HEADERS_INSTALL_PATH "${CMAKE_INSTALL_INCLUDEDIR}") 67 - else() 68 - string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION ${PACKAGE_VERSION}) 69 - set(LIBOMP_HEADERS_INSTALL_PATH "${OPENMP_INSTALL_LIBDIR}/clang/${CLANG_VERSION}/include") 70 - endif() 71 - if(WIN32) 72 - - install(TARGETS omp RUNTIME DESTINATION bin) 73 - + install(TARGETS omp RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 74 - install(TARGETS ${LIBOMP_IMP_LIB_TARGET} ARCHIVE DESTINATION "${OPENMP_INSTALL_LIBDIR}") 75 - # Create aliases (regular copies) of the library for backwards compatibility 76 - set(LIBOMP_ALIASES "libiomp5md") 77 - diff --git a/tools/multiplex/CMakeLists.txt b/tools/multiplex/CMakeLists.txt 78 - index 64317c112176..4002784da736 100644 79 - --- a/tools/multiplex/CMakeLists.txt 80 - +++ b/tools/multiplex/CMakeLists.txt 81 - @@ -4,7 +4,7 @@ if(LIBOMP_OMPT_SUPPORT) 82 - add_library(ompt-multiplex INTERFACE) 83 - target_include_directories(ompt-multiplex INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) 84 - 85 - - install(FILES ompt-multiplex.h DESTINATION include) 86 - + install(FILES ompt-multiplex.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) 87 - 88 - add_subdirectory(tests) 89 - endif()
··· 1 diff --git a/CMakeLists.txt b/CMakeLists.txt 2 + index b6ddbe90516d..311ab1d50e7f 100644 3 --- a/CMakeLists.txt 4 +++ b/CMakeLists.txt 5 + @@ -29,7 +29,7 @@ if (OPENMP_STANDALONE_BUILD) 6 set(OPENMP_LIBDIR_SUFFIX "" CACHE STRING 7 "Suffix of lib installation directory, e.g. 64 => lib64") 8 # Do not use OPENMP_LIBDIR_SUFFIX directly, use OPENMP_INSTALL_LIBDIR. ··· 11 12 # Group test settings. 13 set(OPENMP_TEST_C_COMPILER ${CMAKE_C_COMPILER} CACHE STRING 14 + @@ -40,7 +40,7 @@ if (OPENMP_STANDALONE_BUILD) 15 else() 16 set(OPENMP_ENABLE_WERROR ${LLVM_ENABLE_WERROR}) 17 # If building in tree, we honor the same install suffix LLVM uses. ··· 20 21 if (NOT MSVC) 22 set(OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang)
+12
pkgs/development/compilers/llvm/git/openmp/run-lit-directly.patch
···
··· 1 + diff --git a/cmake/OpenMPTesting.cmake b/cmake/OpenMPTesting.cmake 2 + --- a/cmake/OpenMPTesting.cmake 3 + +++ b/cmake/OpenMPTesting.cmake 4 + @@ -185,7 +185,7 @@ function(add_openmp_testsuite target comment) 5 + if (${OPENMP_STANDALONE_BUILD}) 6 + set(LIT_ARGS ${OPENMP_LIT_ARGS} ${ARG_ARGS}) 7 + add_custom_target(${target} 8 + - COMMAND ${PYTHON_EXECUTABLE} ${OPENMP_LLVM_LIT_EXECUTABLE} ${LIT_ARGS} ${ARG_UNPARSED_ARGUMENTS} 9 + + COMMAND ${OPENMP_LLVM_LIT_EXECUTABLE} ${LIT_ARGS} ${ARG_UNPARSED_ARGUMENTS} 10 + COMMENT ${comment} 11 + DEPENDS ${ARG_DEPENDS} 12 + USES_TERMINAL