diff options
Diffstat (limited to 'pkgs/development/compilers/llvm/6/lld')
| -rw-r--r-- | pkgs/development/compilers/llvm/6/lld/default.nix | 20 | ||||
| -rw-r--r-- | pkgs/development/compilers/llvm/6/lld/gnu-install-dirs.patch | 68 |
2 files changed, 81 insertions, 7 deletions
diff --git a/pkgs/development/compilers/llvm/6/lld/default.nix b/pkgs/development/compilers/llvm/6/lld/default.nix index b80385248059..5bfd5f60e92f 100644 --- a/pkgs/development/compilers/llvm/6/lld/default.nix +++ b/pkgs/development/compilers/llvm/6/lld/default.nix @@ -1,8 +1,9 @@ { lib, stdenv +, buildLlvmTools , fetch , cmake , libxml2 -, llvm +, libllvm , version }: @@ -12,15 +13,20 @@ stdenv.mkDerivation { src = fetch "lld" "04afcfq2h7ysyqxxhyhb7ig4p0vdw7mi63kh8mffl74j0rc781p7"; + patches = [ + ./gnu-install-dirs.patch + ]; + nativeBuildInputs = [ cmake ]; - buildInputs = [ llvm libxml2 ]; + buildInputs = [ libllvm libxml2 ]; - outputs = [ "out" "dev" ]; + cmakeFlags = [ + "-DLLVM_CONFIG_PATH=${libllvm.dev}/bin/llvm-config${lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) "-native"}" + ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ + "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen" + ]; - postInstall = '' - moveToOutput include "$dev" - moveToOutput lib "$dev" - ''; + outputs = [ "out" "lib" "dev" ]; meta = { description = "The LLVM Linker"; diff --git a/pkgs/development/compilers/llvm/6/lld/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/6/lld/gnu-install-dirs.patch new file mode 100644 index 000000000000..8c6886c68907 --- /dev/null +++ b/pkgs/development/compilers/llvm/6/lld/gnu-install-dirs.patch @@ -0,0 +1,68 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e2fbdbfbbb47..d601b231ebb8 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -6,6 +6,8 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + set(CMAKE_INCLUDE_CURRENT_DIR ON) + set(LLD_BUILT_STANDALONE TRUE) + ++ include(GNUInstallDirs) ++ + find_program(LLVM_CONFIG_PATH "llvm-config" DOC "Path to llvm-config binary") + if(NOT LLVM_CONFIG_PATH) + message(FATAL_ERROR "llvm-config not found: specify LLVM_CONFIG_PATH") +@@ -203,7 +205,7 @@ include_directories(BEFORE + + if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) + install(DIRECTORY include/ +- DESTINATION include ++ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + FILES_MATCHING + PATTERN "*.h" + PATTERN ".svn" EXCLUDE +diff --git a/cmake/modules/AddLLD.cmake b/cmake/modules/AddLLD.cmake +index 0d951799cdfe..7d8546ba87f8 100644 +--- a/cmake/modules/AddLLD.cmake ++++ b/cmake/modules/AddLLD.cmake +@@ -20,9 +20,9 @@ macro(add_lld_library name) + install(TARGETS ${name} + COMPONENT ${name} + ${export_to_lldtargets} +- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} +- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} +- RUNTIME DESTINATION bin) ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + + if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES) + add_llvm_install_targets(install-${name} +@@ -54,7 +54,7 @@ macro(add_lld_tool name) + + install(TARGETS ${name} + ${export_to_lldtargets} +- RUNTIME DESTINATION bin ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + COMPONENT ${name}) + + if(NOT CMAKE_CONFIGURATION_TYPES) +@@ -69,5 +69,5 @@ endmacro() + macro(add_lld_symlink name dest) + add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE) + # Always generate install targets +- llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE) ++ llvm_install_symlink(${name} ${dest} ${CMAKE_INSTALL_FULL_BINDIR} ALWAYS_GENERATE) + endmacro() +diff --git a/tools/lld/CMakeLists.txt b/tools/lld/CMakeLists.txt +index d8829493fc22..df748a0e749b 100644 +--- a/tools/lld/CMakeLists.txt ++++ b/tools/lld/CMakeLists.txt +@@ -16,7 +16,7 @@ target_link_libraries(lld + ) + + install(TARGETS lld +- RUNTIME DESTINATION bin) ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + + if(NOT LLD_SYMLINKS_TO_CREATE) + set(LLD_SYMLINKS_TO_CREATE lld-link ld.lld ld64.lld wasm-ld) |
