LLVM 11 nixpkgs overlay
This commit is contained in:
commit
586ade8b2c
|
@ -0,0 +1,8 @@
|
||||||
|
self: super:
|
||||||
|
{
|
||||||
|
llvmPackages_11 = super.recurseIntoAttrs (super.callPackage ./llvm/11 ({
|
||||||
|
inherit (super.stdenvAdapters) overrideCC;
|
||||||
|
buildLlvmTools = super.llvmPackages_11.tools;
|
||||||
|
targetLlvm = super.llvmPackages_11.llvm;
|
||||||
|
}));
|
||||||
|
}
|
|
@ -0,0 +1,138 @@
|
||||||
|
{ lib, stdenv, llvm_meta, fetch, substituteAll, cmake, libxml2, libllvm, version, clang-tools-extra_src, python3
|
||||||
|
, buildLlvmTools
|
||||||
|
, fixDarwinDylibNames
|
||||||
|
, enableManpages ? false
|
||||||
|
, enablePolly ? false
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
self = stdenv.mkDerivation ({
|
||||||
|
pname = "clang";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = fetch "clang" "12sm91qx2m79cvj75a9aazf2x8xybjbd593dv6v7rxficpq8i0ha";
|
||||||
|
inherit clang-tools-extra_src;
|
||||||
|
|
||||||
|
unpackPhase = ''
|
||||||
|
unpackFile $src
|
||||||
|
mv clang-* clang
|
||||||
|
sourceRoot=$PWD/clang
|
||||||
|
unpackFile ${clang-tools-extra_src}
|
||||||
|
mv clang-tools-extra-* $sourceRoot/tools/extra
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [ cmake python3 ]
|
||||||
|
++ lib.optional enableManpages python3.pkgs.sphinx
|
||||||
|
++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
|
||||||
|
|
||||||
|
buildInputs = [ libxml2 libllvm ];
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
"-DCLANGD_BUILD_XPC=OFF"
|
||||||
|
"-DLLVM_ENABLE_RTTI=ON"
|
||||||
|
] ++ lib.optionals enableManpages [
|
||||||
|
"-DCLANG_INCLUDE_DOCS=ON"
|
||||||
|
"-DLLVM_ENABLE_SPHINX=ON"
|
||||||
|
"-DSPHINX_OUTPUT_MAN=ON"
|
||||||
|
"-DSPHINX_OUTPUT_HTML=OFF"
|
||||||
|
"-DSPHINX_WARNINGS_AS_ERRORS=OFF"
|
||||||
|
] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
|
||||||
|
"-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
|
||||||
|
"-DCLANG_TABLEGEN=${buildLlvmTools.libclang.dev}/bin/clang-tblgen"
|
||||||
|
] ++ lib.optionals enablePolly [
|
||||||
|
"-DWITH_POLLY=ON"
|
||||||
|
"-DLINK_POLLY_INTO_TOOLS=ON"
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
./purity.patch
|
||||||
|
# https://reviews.llvm.org/D51899
|
||||||
|
./gnu-install-dirs.patch
|
||||||
|
(substituteAll {
|
||||||
|
src = ../../common/clang/clang-11-15-LLVMgold-path.patch;
|
||||||
|
libllvmLibdir = "${libllvm.lib}/lib";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
sed -i -e 's/DriverArgs.hasArg(options::OPT_nostdlibinc)/true/' \
|
||||||
|
-e 's/Args.hasArg(options::OPT_nostdlibinc)/true/' \
|
||||||
|
lib/Driver/ToolChains/*.cpp
|
||||||
|
'' + lib.optionalString stdenv.hostPlatform.isMusl ''
|
||||||
|
sed -i -e 's/lgcc_s/lgcc_eh/' lib/Driver/ToolChains/*.cpp
|
||||||
|
'' + lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||||
|
substituteInPlace tools/extra/clangd/CMakeLists.txt \
|
||||||
|
--replace "NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB" FALSE
|
||||||
|
'';
|
||||||
|
|
||||||
|
outputs = [ "out" "lib" "dev" "python" ];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
ln -sv $out/bin/clang $out/bin/cpp
|
||||||
|
|
||||||
|
# Move libclang to 'lib' output
|
||||||
|
moveToOutput "lib/libclang.*" "$lib"
|
||||||
|
moveToOutput "lib/libclang-cpp.*" "$lib"
|
||||||
|
substituteInPlace $out/lib/cmake/clang/ClangTargets-release.cmake \
|
||||||
|
--replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." \
|
||||||
|
--replace "\''${_IMPORT_PREFIX}/lib/libclang-cpp." "$lib/lib/libclang-cpp."
|
||||||
|
|
||||||
|
mkdir -p $python/bin $python/share/{clang,scan-view}
|
||||||
|
mv $out/bin/{git-clang-format,scan-view} $python/bin
|
||||||
|
if [ -e $out/bin/set-xcode-analyzer ]; then
|
||||||
|
mv $out/bin/set-xcode-analyzer $python/bin
|
||||||
|
fi
|
||||||
|
mv $out/share/clang/*.py $python/share/clang
|
||||||
|
mv $out/share/scan-view/*.py $python/share/scan-view
|
||||||
|
rm $out/bin/c-index-test
|
||||||
|
patchShebangs $python/bin
|
||||||
|
|
||||||
|
mkdir -p $dev/bin
|
||||||
|
cp bin/clang-tblgen $dev/bin
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
inherit libllvm;
|
||||||
|
isClang = true;
|
||||||
|
hardeningUnsupportedFlags = [ "fortify3" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = llvm_meta // {
|
||||||
|
homepage = "https://clang.llvm.org/";
|
||||||
|
description = "A C language family frontend for LLVM";
|
||||||
|
longDescription = ''
|
||||||
|
The Clang project provides a language front-end and tooling
|
||||||
|
infrastructure for languages in the C language family (C, C++, Objective
|
||||||
|
C/C++, OpenCL, CUDA, and RenderScript) for the LLVM project.
|
||||||
|
It aims to deliver amazingly fast compiles, extremely useful error and
|
||||||
|
warning messages and to provide a platform for building great source
|
||||||
|
level tools. The Clang Static Analyzer and clang-tidy are tools that
|
||||||
|
automatically find bugs in your code, and are great examples of the sort
|
||||||
|
of tools that can be built using the Clang frontend as a library to
|
||||||
|
parse C/C++ code.
|
||||||
|
'';
|
||||||
|
mainProgram = "clang";
|
||||||
|
};
|
||||||
|
} // lib.optionalAttrs enableManpages {
|
||||||
|
pname = "clang-manpages";
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
make docs-clang-man
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/share/man/man1
|
||||||
|
# Manually install clang manpage
|
||||||
|
cp docs/man/*.1 $out/share/man/man1/
|
||||||
|
'';
|
||||||
|
|
||||||
|
outputs = [ "out" ];
|
||||||
|
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
|
meta = llvm_meta // {
|
||||||
|
description = "man page for Clang ${version}";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
in self
|
|
@ -0,0 +1,235 @@
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index bb4b801f01c8..77a8b43b22c8 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -9,6 +9,8 @@ endif()
|
||||||
|
if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR )
|
||||||
|
project(Clang)
|
||||||
|
|
||||||
|
+ include(GNUInstallDirs)
|
||||||
|
+
|
||||||
|
set(CMAKE_CXX_STANDARD 14 CACHE STRING "C++ standard to conform to")
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED YES)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS NO)
|
||||||
|
@@ -447,7 +449,7 @@ include_directories(BEFORE
|
||||||
|
|
||||||
|
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||||
|
install(DIRECTORY include/clang include/clang-c
|
||||||
|
- DESTINATION include
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
|
COMPONENT clang-headers
|
||||||
|
FILES_MATCHING
|
||||||
|
PATTERN "*.def"
|
||||||
|
@@ -457,7 +459,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||||
|
)
|
||||||
|
|
||||||
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/clang
|
||||||
|
- DESTINATION include
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
|
COMPONENT clang-headers
|
||||||
|
FILES_MATCHING
|
||||||
|
PATTERN "CMakeFiles" EXCLUDE
|
||||||
|
@@ -477,7 +479,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||||
|
|
||||||
|
add_custom_target(bash-autocomplete DEPENDS utils/bash-autocomplete.sh)
|
||||||
|
install(PROGRAMS utils/bash-autocomplete.sh
|
||||||
|
- DESTINATION share/clang
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
|
||||||
|
COMPONENT bash-autocomplete)
|
||||||
|
if(NOT LLVM_ENABLE_IDE)
|
||||||
|
add_llvm_install_targets(install-bash-autocomplete
|
||||||
|
diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake
|
||||||
|
index 704278a0e93b..d25c8d325c71 100644
|
||||||
|
--- a/cmake/modules/AddClang.cmake
|
||||||
|
+++ b/cmake/modules/AddClang.cmake
|
||||||
|
@@ -123,9 +123,9 @@ macro(add_clang_library name)
|
||||||
|
install(TARGETS ${lib}
|
||||||
|
COMPONENT ${lib}
|
||||||
|
${export_to_clangtargets}
|
||||||
|
- 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 (NOT LLVM_ENABLE_IDE)
|
||||||
|
add_llvm_install_targets(install-${lib}
|
||||||
|
@@ -170,7 +170,7 @@ macro(add_clang_tool name)
|
||||||
|
|
||||||
|
install(TARGETS ${name}
|
||||||
|
${export_to_clangtargets}
|
||||||
|
- RUNTIME DESTINATION bin
|
||||||
|
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
COMPONENT ${name})
|
||||||
|
|
||||||
|
if(NOT LLVM_ENABLE_IDE)
|
||||||
|
@@ -185,7 +185,7 @@ endmacro()
|
||||||
|
macro(add_clang_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()
|
||||||
|
|
||||||
|
function(clang_target_link_libraries target type)
|
||||||
|
diff --git a/lib/Headers/CMakeLists.txt b/lib/Headers/CMakeLists.txt
|
||||||
|
index 0692fe75a441..6f201e7207d0 100644
|
||||||
|
--- a/lib/Headers/CMakeLists.txt
|
||||||
|
+++ b/lib/Headers/CMakeLists.txt
|
||||||
|
@@ -208,7 +208,7 @@ set_target_properties(clang-resource-headers PROPERTIES
|
||||||
|
FOLDER "Misc"
|
||||||
|
RUNTIME_OUTPUT_DIRECTORY "${output_dir}")
|
||||||
|
|
||||||
|
-set(header_install_dir lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include)
|
||||||
|
+set(header_install_dir ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include)
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES ${files} ${generated_files}
|
||||||
|
diff --git a/tools/c-index-test/CMakeLists.txt b/tools/c-index-test/CMakeLists.txt
|
||||||
|
index ceef4b08637c..8efad5520ca4 100644
|
||||||
|
--- a/tools/c-index-test/CMakeLists.txt
|
||||||
|
+++ b/tools/c-index-test/CMakeLists.txt
|
||||||
|
@@ -54,7 +54,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||||
|
set_property(TARGET c-index-test APPEND PROPERTY INSTALL_RPATH
|
||||||
|
"@executable_path/../../lib")
|
||||||
|
else()
|
||||||
|
- set(INSTALL_DESTINATION bin)
|
||||||
|
+ set(INSTALL_DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
install(TARGETS c-index-test
|
||||||
|
diff --git a/tools/clang-format/CMakeLists.txt b/tools/clang-format/CMakeLists.txt
|
||||||
|
index 35ecdb11253c..d77d75de0094 100644
|
||||||
|
--- a/tools/clang-format/CMakeLists.txt
|
||||||
|
+++ b/tools/clang-format/CMakeLists.txt
|
||||||
|
@@ -21,20 +21,20 @@ if( LLVM_LIB_FUZZING_ENGINE OR LLVM_USE_SANITIZE_COVERAGE )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
install(PROGRAMS clang-format-bbedit.applescript
|
||||||
|
- DESTINATION share/clang
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
|
||||||
|
COMPONENT clang-format)
|
||||||
|
install(PROGRAMS clang-format-diff.py
|
||||||
|
- DESTINATION share/clang
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
|
||||||
|
COMPONENT clang-format)
|
||||||
|
install(PROGRAMS clang-format-sublime.py
|
||||||
|
- DESTINATION share/clang
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
|
||||||
|
COMPONENT clang-format)
|
||||||
|
install(PROGRAMS clang-format.el
|
||||||
|
- DESTINATION share/clang
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
|
||||||
|
COMPONENT clang-format)
|
||||||
|
install(PROGRAMS clang-format.py
|
||||||
|
- DESTINATION share/clang
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
|
||||||
|
COMPONENT clang-format)
|
||||||
|
install(PROGRAMS git-clang-format
|
||||||
|
- DESTINATION bin
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
COMPONENT clang-format)
|
||||||
|
diff --git a/tools/clang-rename/CMakeLists.txt b/tools/clang-rename/CMakeLists.txt
|
||||||
|
index cda8e29ec5b1..0134d8ccd70b 100644
|
||||||
|
--- a/tools/clang-rename/CMakeLists.txt
|
||||||
|
+++ b/tools/clang-rename/CMakeLists.txt
|
||||||
|
@@ -19,8 +19,8 @@ clang_target_link_libraries(clang-rename
|
||||||
|
)
|
||||||
|
|
||||||
|
install(PROGRAMS clang-rename.py
|
||||||
|
- DESTINATION share/clang
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
|
||||||
|
COMPONENT clang-rename)
|
||||||
|
install(PROGRAMS clang-rename.el
|
||||||
|
- DESTINATION share/clang
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
|
||||||
|
COMPONENT clang-rename)
|
||||||
|
diff --git a/tools/libclang/CMakeLists.txt b/tools/libclang/CMakeLists.txt
|
||||||
|
index 5cd9ac5cddc1..a197676fedbd 100644
|
||||||
|
--- a/tools/libclang/CMakeLists.txt
|
||||||
|
+++ b/tools/libclang/CMakeLists.txt
|
||||||
|
@@ -165,7 +165,7 @@ endif()
|
||||||
|
if(INTERNAL_INSTALL_PREFIX)
|
||||||
|
set(LIBCLANG_HEADERS_INSTALL_DESTINATION "${INTERNAL_INSTALL_PREFIX}/include")
|
||||||
|
else()
|
||||||
|
- set(LIBCLANG_HEADERS_INSTALL_DESTINATION include)
|
||||||
|
+ set(LIBCLANG_HEADERS_INSTALL_DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
install(DIRECTORY ../../include/clang-c
|
||||||
|
@@ -196,7 +196,7 @@ foreach(PythonVersion ${CLANG_PYTHON_BINDINGS_VERSIONS})
|
||||||
|
COMPONENT
|
||||||
|
libclang-python-bindings
|
||||||
|
DESTINATION
|
||||||
|
- "lib${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages")
|
||||||
|
+ "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages")
|
||||||
|
endforeach()
|
||||||
|
if(NOT LLVM_ENABLE_IDE)
|
||||||
|
add_custom_target(libclang-python-bindings)
|
||||||
|
diff --git a/tools/scan-build/CMakeLists.txt b/tools/scan-build/CMakeLists.txt
|
||||||
|
index ec0702d76f18..d25d982f51da 100644
|
||||||
|
--- a/tools/scan-build/CMakeLists.txt
|
||||||
|
+++ b/tools/scan-build/CMakeLists.txt
|
||||||
|
@@ -47,7 +47,7 @@ if(CLANG_INSTALL_SCANBUILD)
|
||||||
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
|
||||||
|
list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
|
||||||
|
install(PROGRAMS bin/${BinFile}
|
||||||
|
- DESTINATION bin
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
COMPONENT scan-build)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
@@ -61,7 +61,7 @@ if(CLANG_INSTALL_SCANBUILD)
|
||||||
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${LibexecFile})
|
||||||
|
list(APPEND Depends ${CMAKE_BINARY_DIR}/libexec/${LibexecFile})
|
||||||
|
install(PROGRAMS libexec/${LibexecFile}
|
||||||
|
- DESTINATION libexec
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}
|
||||||
|
COMPONENT scan-build)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
@@ -89,7 +89,7 @@ if(CLANG_INSTALL_SCANBUILD)
|
||||||
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/scan-build/${ShareFile})
|
||||||
|
list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-build/${ShareFile})
|
||||||
|
install(FILES share/scan-build/${ShareFile}
|
||||||
|
- DESTINATION share/scan-build
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/scan-build
|
||||||
|
COMPONENT scan-build)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
diff --git a/tools/scan-view/CMakeLists.txt b/tools/scan-view/CMakeLists.txt
|
||||||
|
index 22edb974bac7..9f140a9a4538 100644
|
||||||
|
--- a/tools/scan-view/CMakeLists.txt
|
||||||
|
+++ b/tools/scan-view/CMakeLists.txt
|
||||||
|
@@ -22,7 +22,7 @@ if(CLANG_INSTALL_SCANVIEW)
|
||||||
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
|
||||||
|
list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
|
||||||
|
install(PROGRAMS bin/${BinFile}
|
||||||
|
- DESTINATION bin
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
COMPONENT scan-view)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
@@ -36,7 +36,7 @@ if(CLANG_INSTALL_SCANVIEW)
|
||||||
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/${ShareFile})
|
||||||
|
list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-view/${ShareFile})
|
||||||
|
install(FILES share/${ShareFile}
|
||||||
|
- DESTINATION share/scan-view
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/scan-view
|
||||||
|
COMPONENT scan-view)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
diff --git a/utils/hmaptool/CMakeLists.txt b/utils/hmaptool/CMakeLists.txt
|
||||||
|
index 62f2de0cb15c..6aa66825b6ec 100644
|
||||||
|
--- a/utils/hmaptool/CMakeLists.txt
|
||||||
|
+++ b/utils/hmaptool/CMakeLists.txt
|
||||||
|
@@ -10,7 +10,7 @@ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/${CLANG_HM
|
||||||
|
|
||||||
|
list(APPEND Depends ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/${CLANG_HMAPTOOL})
|
||||||
|
install(PROGRAMS ${CLANG_HMAPTOOL}
|
||||||
|
- DESTINATION bin
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
COMPONENT hmaptool)
|
||||||
|
|
||||||
|
add_custom_target(hmaptool ALL DEPENDS ${Depends})
|
|
@ -0,0 +1,28 @@
|
||||||
|
From 4add81bba40dcec62c4ea4481be8e35ac53e89d8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Will Dietz <w@wdtz.org>
|
||||||
|
Date: Thu, 18 May 2017 11:56:12 -0500
|
||||||
|
Subject: [PATCH] "purity" patch for 5.0
|
||||||
|
|
||||||
|
---
|
||||||
|
lib/Driver/ToolChains/Gnu.cpp | 7 -------
|
||||||
|
1 file changed, 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp
|
||||||
|
index fe3c0191bb..c6a482bece 100644
|
||||||
|
--- a/lib/Driver/ToolChains/Gnu.cpp
|
||||||
|
+++ b/lib/Driver/ToolChains/Gnu.cpp
|
||||||
|
@@ -487,12 +487,6 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||||
|
if (!IsStatic) {
|
||||||
|
if (Args.hasArg(options::OPT_rdynamic))
|
||||||
|
CmdArgs.push_back("-export-dynamic");
|
||||||
|
-
|
||||||
|
- if (!Args.hasArg(options::OPT_shared) && !IsStaticPIE) {
|
||||||
|
- CmdArgs.push_back("-dynamic-linker");
|
||||||
|
- CmdArgs.push_back(Args.MakeArgString(Twine(D.DyldPrefix) +
|
||||||
|
- ToolChain.getDynamicLinker(Args)));
|
||||||
|
- }
|
||||||
|
}
|
||||||
|
|
||||||
|
CmdArgs.push_back("-o");
|
||||||
|
--
|
||||||
|
2.11.0
|
|
@ -0,0 +1,96 @@
|
||||||
|
{ lowPrio, newScope, pkgs, lib, stdenv, cmake
|
||||||
|
, preLibcCrossHeaders
|
||||||
|
, libxml2, python3, isl, fetchurl, overrideCC, wrapCCWith, wrapBintoolsWith
|
||||||
|
, buildLlvmTools # tools, but from the previous stage, for cross
|
||||||
|
, targetLlvm
|
||||||
|
# This is the default binutils, but with *this* version of LLD rather
|
||||||
|
# than the default LLVM version's, if LLD is the choice. We use these for
|
||||||
|
# the `useLLVM` bootstrapping below.
|
||||||
|
, bootBintoolsNoLibc ?
|
||||||
|
if stdenv.targetPlatform.linker == "lld"
|
||||||
|
then null
|
||||||
|
else pkgs.bintoolsNoLibc
|
||||||
|
, bootBintools ?
|
||||||
|
if stdenv.targetPlatform.linker == "lld"
|
||||||
|
then null
|
||||||
|
else pkgs.bintools
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
release_version = "11.1.0";
|
||||||
|
candidate = ""; # empty or "rcN"
|
||||||
|
dash-candidate = lib.optionalString (candidate != "") "-${candidate}";
|
||||||
|
version = "${release_version}${dash-candidate}"; # differentiating these (variables) is important for RCs
|
||||||
|
|
||||||
|
fetch = name: sha256: fetchurl {
|
||||||
|
url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/${name}-${release_version}${candidate}.src.tar.xz";
|
||||||
|
inherit sha256;
|
||||||
|
};
|
||||||
|
|
||||||
|
clang-tools-extra_src = fetch "clang-tools-extra" "18n1w1hkv931xzq02b34wglbv6zd6sd0r5kb8piwvag7klj7qw3n";
|
||||||
|
|
||||||
|
inherit (import ../common/common-let.nix { inherit lib release_version; }) llvm_meta;
|
||||||
|
|
||||||
|
tools = lib.makeExtensible (tools: let
|
||||||
|
callPackage = newScope (tools // { inherit stdenv cmake libxml2 python3 isl release_version version fetch buildLlvmTools; });
|
||||||
|
mkExtraBuildCommands0 = cc: ''
|
||||||
|
rsrc="$out/resource-root"
|
||||||
|
mkdir "$rsrc"
|
||||||
|
ln -s "${cc.lib}/lib/clang/${release_version}/include" "$rsrc"
|
||||||
|
echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags
|
||||||
|
'';
|
||||||
|
|
||||||
|
bintoolsNoLibc' =
|
||||||
|
if bootBintoolsNoLibc == null
|
||||||
|
then tools.bintoolsNoLibc
|
||||||
|
else bootBintoolsNoLibc;
|
||||||
|
bintools' =
|
||||||
|
if bootBintools == null
|
||||||
|
then tools.bintools
|
||||||
|
else bootBintools;
|
||||||
|
|
||||||
|
in {
|
||||||
|
|
||||||
|
libllvm = callPackage ./llvm {
|
||||||
|
inherit llvm_meta;
|
||||||
|
};
|
||||||
|
|
||||||
|
# `llvm` historically had the binaries. When choosing an output explicitly,
|
||||||
|
# we need to reintroduce `outputSpecified` to get the expected behavior e.g. of lib.get*
|
||||||
|
llvm = tools.libllvm;
|
||||||
|
|
||||||
|
libllvm-polly = callPackage ./llvm {
|
||||||
|
inherit llvm_meta;
|
||||||
|
enablePolly = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
llvm-polly = tools.libllvm-polly.lib // { outputSpecified = false; };
|
||||||
|
|
||||||
|
libclang = callPackage ./clang {
|
||||||
|
inherit clang-tools-extra_src llvm_meta;
|
||||||
|
};
|
||||||
|
|
||||||
|
clang-unwrapped = tools.libclang;
|
||||||
|
|
||||||
|
clang-polly-unwrapped = callPackage ./clang {
|
||||||
|
inherit llvm_meta;
|
||||||
|
inherit clang-tools-extra_src;
|
||||||
|
libllvm = tools.libllvm-polly;
|
||||||
|
enablePolly = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
llvm-manpages = lowPrio (tools.libllvm.override {
|
||||||
|
enableManpages = true;
|
||||||
|
python3 = pkgs.python3; # don't use python-boot
|
||||||
|
});
|
||||||
|
|
||||||
|
clang-manpages = lowPrio (tools.libclang.override {
|
||||||
|
enableManpages = true;
|
||||||
|
python3 = pkgs.python3; # don't use python-boot
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
noExtend = extensible: lib.attrsets.removeAttrs extensible [ "extend" ];
|
||||||
|
|
||||||
|
in { inherit tools release_version; } // (noExtend tools)
|
|
@ -0,0 +1,363 @@
|
||||||
|
{ lib, stdenv, llvm_meta
|
||||||
|
, pkgsBuildBuild
|
||||||
|
, fetch
|
||||||
|
, fetchpatch
|
||||||
|
, cmake
|
||||||
|
, python3
|
||||||
|
, libffi
|
||||||
|
, enableGoldPlugin ? libbfd.hasPluginAPI
|
||||||
|
, libbfd
|
||||||
|
, libpfm
|
||||||
|
, libxml2
|
||||||
|
, ncurses
|
||||||
|
, version
|
||||||
|
, release_version
|
||||||
|
, zlib
|
||||||
|
, buildLlvmTools
|
||||||
|
, debugVersion ? false
|
||||||
|
, doCheck ? stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl) && (!stdenv.hostPlatform.isRiscV)
|
||||||
|
&& (stdenv.hostPlatform == stdenv.buildPlatform)
|
||||||
|
, enableManpages ? false
|
||||||
|
, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
|
||||||
|
# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
|
||||||
|
# broken for the armv7l builder
|
||||||
|
, enablePFM ? stdenv.isLinux && !stdenv.hostPlatform.isAarch
|
||||||
|
, enablePolly ? false # TODO should be on by default
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib) optional optionals optionalString;
|
||||||
|
|
||||||
|
# Used when creating a version-suffixed symlink of libLLVM.dylib
|
||||||
|
shortVersion = with lib;
|
||||||
|
concatStringsSep "." (take 1 (splitString "." release_version));
|
||||||
|
|
||||||
|
# Ordinarily we would just the `doCheck` and `checkDeps` functionality
|
||||||
|
# `mkDerivation` gives us to manage our test dependencies (instead of breaking
|
||||||
|
# out `doCheck` as a package level attribute).
|
||||||
|
#
|
||||||
|
# Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
|
||||||
|
# particular the children it uses to do feature detection.
|
||||||
|
#
|
||||||
|
# This means that python deps we add to `checkDeps` (which the python
|
||||||
|
# interpreter is made aware of via `$PYTHONPATH` – populated by the python
|
||||||
|
# setup hook) are not picked up by `lit` which causes it to skip tests.
|
||||||
|
#
|
||||||
|
# Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
|
||||||
|
# because this package is shadowed in `$PATH` by the regular `python3`
|
||||||
|
# package.
|
||||||
|
#
|
||||||
|
# So, we "manually" assemble one python derivation for the package to depend
|
||||||
|
# on, taking into account whether checks are enabled or not:
|
||||||
|
python = if doCheck then
|
||||||
|
let
|
||||||
|
checkDeps = ps: with ps; [ psutil ];
|
||||||
|
in python3.withPackages checkDeps
|
||||||
|
else python3;
|
||||||
|
|
||||||
|
in stdenv.mkDerivation (rec {
|
||||||
|
pname = "llvm";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = fetch pname "199yq3a214avcbi4kk2q0ajriifkvsr0l2dkx3a666m033ihi1ff";
|
||||||
|
polly_src = fetch "polly" "031r23ijhx7v93a5n33m2nc0x9xyqmx0d8xg80z7q971p6qd63sq";
|
||||||
|
|
||||||
|
unpackPhase = ''
|
||||||
|
unpackFile $src
|
||||||
|
mv llvm-${release_version}* llvm
|
||||||
|
sourceRoot=$PWD/llvm
|
||||||
|
'' + optionalString enablePolly ''
|
||||||
|
unpackFile $polly_src
|
||||||
|
mv polly-* $sourceRoot/tools/polly
|
||||||
|
'';
|
||||||
|
|
||||||
|
outputs = [ "out" "lib" "dev" "python" ];
|
||||||
|
|
||||||
|
nativeBuildInputs = [ cmake python ]
|
||||||
|
++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ];
|
||||||
|
|
||||||
|
buildInputs = [ libxml2 libffi ]
|
||||||
|
++ optional enablePFM libpfm; # exegesis
|
||||||
|
|
||||||
|
propagatedBuildInputs = [ ncurses zlib ];
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# When cross-compiling we configure llvm-config-native with an approximation
|
||||||
|
# of the flags used for the normal LLVM build. To avoid the need for building
|
||||||
|
# a native libLLVM.so (which would fail) we force llvm-config to be linked
|
||||||
|
# statically against the necessary LLVM components always.
|
||||||
|
../../common/llvm/llvm-config-link-static.patch
|
||||||
|
|
||||||
|
./gnu-install-dirs.patch
|
||||||
|
# On older CPUs (e.g. Hydra/wendy) we'd be getting an error in this test.
|
||||||
|
(fetchpatch {
|
||||||
|
name = "uops-CMOV16rm-noreg.diff";
|
||||||
|
url = "https://github.com/llvm/llvm-project/commit/9e9f991ac033.diff";
|
||||||
|
sha256 = "sha256:12s8vr6ibri8b48h2z38f3afhwam10arfiqfy4yg37bmc054p5hi";
|
||||||
|
stripLen = 1;
|
||||||
|
})
|
||||||
|
# gcc-11 compat upstream patch
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://github.com/llvm/llvm-project/commit/b498303066a63a203d24f739b2d2e0e56dca70d1.patch";
|
||||||
|
sha256 = "sha256:0nh123kld0dgz2h941lng331dkj3wbm5lfxm375k1f569gv83hlk";
|
||||||
|
stripLen = 1;
|
||||||
|
})
|
||||||
|
|
||||||
|
# Fix invalid std::string(nullptr) for GCC 12
|
||||||
|
(fetchpatch {
|
||||||
|
name = "nvptx-gcc-12.patch";
|
||||||
|
url = "https://github.com/llvm/llvm-project/commit/99e64623ec9b31def9375753491cc6093c831809.patch";
|
||||||
|
sha256 = "0zjfjgavqzi2ypqwqnlvy6flyvdz8hi1anwv0ybwnm2zqixg7za3";
|
||||||
|
stripLen = 1;
|
||||||
|
})
|
||||||
|
(fetchpatch {
|
||||||
|
name = "dfaemitter-gcc-12.patch";
|
||||||
|
url = "https://github.com/llvm/llvm-project/commit/0841916e87a39e3c223c986e8da31e4a9a1432e3.patch";
|
||||||
|
sha256 = "1kckghvsngs51mqm82asy0s9vr19h8aqbw43a0w44mccqw6bzrwf";
|
||||||
|
stripLen = 1;
|
||||||
|
})
|
||||||
|
|
||||||
|
# Fix musl build.
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://github.com/llvm/llvm-project/commit/5cd554303ead0f8891eee3cd6d25cb07f5a7bf67.patch";
|
||||||
|
relative = "llvm";
|
||||||
|
hash = "sha256-XPbvNJ45SzjMGlNUgt/IgEvM2dHQpDOe6woUJY+nUYA=";
|
||||||
|
})
|
||||||
|
|
||||||
|
# Backport gcc-13 fixes with missing includes.
|
||||||
|
(fetchpatch {
|
||||||
|
name = "signals-gcc-13.patch";
|
||||||
|
url = "https://github.com/llvm/llvm-project/commit/ff1681ddb303223973653f7f5f3f3435b48a1983.patch";
|
||||||
|
hash = "sha256-CXwYxQezTq5vdmc8Yn88BUAEly6YZ5VEIA6X3y5NNOs=";
|
||||||
|
stripLen = 1;
|
||||||
|
})
|
||||||
|
(fetchpatch {
|
||||||
|
name = "base64-gcc-13.patch";
|
||||||
|
url = "https://github.com/llvm/llvm-project/commit/5e9be93566f39ee6cecd579401e453eccfbe81e5.patch";
|
||||||
|
hash = "sha256-PAwrVrvffPd7tphpwCkYiz+67szPRzRB2TXBvKfzQ7U=";
|
||||||
|
stripLen = 1;
|
||||||
|
})
|
||||||
|
] ++ lib.optional enablePolly ./gnu-install-dirs-polly.patch;
|
||||||
|
|
||||||
|
postPatch = optionalString stdenv.isDarwin ''
|
||||||
|
substituteInPlace cmake/modules/AddLLVM.cmake \
|
||||||
|
--replace 'set(_install_name_dir INSTALL_NAME_DIR "@rpath")' "set(_install_name_dir)" \
|
||||||
|
--replace 'set(_install_rpath "@loader_path/../''${CMAKE_INSTALL_LIBDIR}''${LLVM_LIBDIR_SUFFIX}" ''${extra_libdir})' ""
|
||||||
|
'' + ''
|
||||||
|
# FileSystem permissions tests fail with various special bits
|
||||||
|
substituteInPlace unittests/Support/CMakeLists.txt \
|
||||||
|
--replace "Path.cpp" ""
|
||||||
|
rm unittests/Support/Path.cpp
|
||||||
|
'' + optionalString stdenv.hostPlatform.isMusl ''
|
||||||
|
patch -p1 -i ${../../common/llvm/TLI-musl.patch}
|
||||||
|
substituteInPlace unittests/Support/CMakeLists.txt \
|
||||||
|
--replace "add_subdirectory(DynamicLibrary)" ""
|
||||||
|
rm unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp
|
||||||
|
# valgrind unhappy with musl or glibc, but fails w/musl only
|
||||||
|
rm test/CodeGen/AArch64/wineh4.mir
|
||||||
|
'' + optionalString stdenv.hostPlatform.isAarch32 ''
|
||||||
|
# skip failing X86 test cases on 32-bit ARM
|
||||||
|
rm test/DebugInfo/X86/convert-debugloc.ll
|
||||||
|
rm test/DebugInfo/X86/convert-inlined.ll
|
||||||
|
rm test/DebugInfo/X86/convert-linked.ll
|
||||||
|
rm test/tools/dsymutil/X86/op-convert.test
|
||||||
|
rm test/tools/gold/X86/split-dwarf.ll
|
||||||
|
rm test/tools/llvm-readobj/ELF/dependent-libraries.test
|
||||||
|
'' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") ''
|
||||||
|
# Seems to require certain floating point hardware (NEON?)
|
||||||
|
rm test/ExecutionEngine/frem.ll
|
||||||
|
'' + ''
|
||||||
|
patchShebangs test/BugPoint/compile-custom.ll.py
|
||||||
|
'' + ''
|
||||||
|
# Tweak tests to ignore namespace part of type to support
|
||||||
|
# gcc-12: https://gcc.gnu.org/PR103598.
|
||||||
|
# The change below mangles strings like:
|
||||||
|
# CHECK-NEXT: Starting llvm::Function pass manager run.
|
||||||
|
# to:
|
||||||
|
# CHECK-NEXT: Starting {{.*}}Function pass manager run.
|
||||||
|
for f in \
|
||||||
|
test/Other/new-pass-manager.ll \
|
||||||
|
test/Other/new-pm-defaults.ll \
|
||||||
|
test/Other/new-pm-lto-defaults.ll \
|
||||||
|
test/Other/new-pm-thinlto-defaults.ll \
|
||||||
|
test/Other/pass-pipeline-parsing.ll \
|
||||||
|
test/Transforms/Inline/cgscc-incremental-invalidate.ll \
|
||||||
|
test/Transforms/Inline/clear-analyses.ll \
|
||||||
|
test/Transforms/LoopUnroll/unroll-loop-invalidation.ll \
|
||||||
|
test/Transforms/SCCP/ipsccp-preserve-analysis.ll \
|
||||||
|
test/Transforms/SCCP/preserve-analysis.ll \
|
||||||
|
test/Transforms/SROA/dead-inst.ll \
|
||||||
|
test/tools/gold/X86/new-pm.ll \
|
||||||
|
; do
|
||||||
|
echo "PATCH: $f"
|
||||||
|
substituteInPlace $f \
|
||||||
|
--replace 'Starting llvm::' 'Starting {{.*}}' \
|
||||||
|
--replace 'Finished llvm::' 'Finished {{.*}}'
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
# Workaround for configure flags that need to have spaces
|
||||||
|
cmakeFlagsArray+=(
|
||||||
|
-DLLVM_LIT_ARGS='-svj''${NIX_BUILD_CORES} --no-progress-bar'
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
|
||||||
|
# hacky fix: created binaries need to be run before installation
|
||||||
|
preBuild = ''
|
||||||
|
mkdir -p $out/
|
||||||
|
ln -sv $PWD/lib $out
|
||||||
|
'';
|
||||||
|
|
||||||
|
# E.g. mesa.drivers use the build-id as a cache key (see #93946):
|
||||||
|
LDFLAGS = optionalString (enableSharedLibraries && !stdenv.isDarwin) "-Wl,--build-id=sha1";
|
||||||
|
|
||||||
|
cmakeBuildType = if debugVersion then "Debug" else "Release";
|
||||||
|
|
||||||
|
cmakeFlags = with stdenv; let
|
||||||
|
# These flags influence llvm-config's BuildVariables.inc in addition to the
|
||||||
|
# general build. We need to make sure these are also passed via
|
||||||
|
# CROSS_TOOLCHAIN_FLAGS_NATIVE when cross-compiling or llvm-config-native
|
||||||
|
# will return different results from the cross llvm-config.
|
||||||
|
#
|
||||||
|
# Some flags don't need to be repassed because LLVM already does so (like
|
||||||
|
# CMAKE_BUILD_TYPE), others are irrelevant to the result.
|
||||||
|
flagsForLlvmConfig = [
|
||||||
|
"-DLLVM_INSTALL_CMAKE_DIR=${placeholder "dev"}/lib/cmake/llvm/"
|
||||||
|
"-DLLVM_ENABLE_RTTI=ON"
|
||||||
|
] ++ optionals enableSharedLibraries [
|
||||||
|
"-DLLVM_LINK_LLVM_DYLIB=ON"
|
||||||
|
];
|
||||||
|
in flagsForLlvmConfig ++ [
|
||||||
|
"-DLLVM_INSTALL_UTILS=ON" # Needed by rustc
|
||||||
|
"-DLLVM_BUILD_TESTS=${if doCheck then "ON" else "OFF"}"
|
||||||
|
"-DLLVM_ENABLE_FFI=ON"
|
||||||
|
"-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}"
|
||||||
|
"-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
|
||||||
|
"-DLLVM_ENABLE_DUMP=ON"
|
||||||
|
] ++ optionals stdenv.hostPlatform.isStatic [
|
||||||
|
# Disables building of shared libs, -fPIC is still injected by cc-wrapper
|
||||||
|
"-DLLVM_ENABLE_PIC=OFF"
|
||||||
|
"-DLLVM_BUILD_STATIC=ON"
|
||||||
|
# libxml2 needs to be disabled because the LLVM build system ignores its .la
|
||||||
|
# file and doesn't link zlib as well.
|
||||||
|
# https://github.com/ClangBuiltLinux/tc-build/issues/150#issuecomment-845418812
|
||||||
|
"-DLLVM_ENABLE_LIBXML2=OFF"
|
||||||
|
# This is a Shared Library not tied to LLVM_ENABLE_PIC
|
||||||
|
"-DLLVM_TOOL_REMARKS_SHLIB_BUILD=OFF"
|
||||||
|
] ++ optionals enableManpages [
|
||||||
|
"-DLLVM_BUILD_DOCS=ON"
|
||||||
|
"-DLLVM_ENABLE_SPHINX=ON"
|
||||||
|
"-DSPHINX_OUTPUT_MAN=ON"
|
||||||
|
"-DSPHINX_OUTPUT_HTML=OFF"
|
||||||
|
"-DSPHINX_WARNINGS_AS_ERRORS=OFF"
|
||||||
|
] ++ optionals (enableGoldPlugin) [
|
||||||
|
"-DLLVM_BINUTILS_INCDIR=${libbfd.dev}/include"
|
||||||
|
] ++ optionals isDarwin [
|
||||||
|
"-DLLVM_ENABLE_LIBCXX=ON"
|
||||||
|
"-DCAN_TARGET_i386=false"
|
||||||
|
] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
|
||||||
|
"-DCMAKE_CROSSCOMPILING=True"
|
||||||
|
"-DLLVM_TABLEGEN=${buildLlvmTools.llvm}/bin/llvm-tblgen"
|
||||||
|
(
|
||||||
|
let
|
||||||
|
nativeCC = pkgsBuildBuild.targetPackages.stdenv.cc;
|
||||||
|
nativeBintools = nativeCC.bintools.bintools;
|
||||||
|
nativeToolchainFlags = [
|
||||||
|
"-DCMAKE_C_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}cc"
|
||||||
|
"-DCMAKE_CXX_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}c++"
|
||||||
|
"-DCMAKE_AR=${nativeBintools}/bin/${nativeBintools.targetPrefix}ar"
|
||||||
|
"-DCMAKE_STRIP=${nativeBintools}/bin/${nativeBintools.targetPrefix}strip"
|
||||||
|
"-DCMAKE_RANLIB=${nativeBintools}/bin/${nativeBintools.targetPrefix}ranlib"
|
||||||
|
];
|
||||||
|
# We need to repass the custom GNUInstallDirs values, otherwise CMake
|
||||||
|
# will choose them for us, leading to wrong results in llvm-config-native
|
||||||
|
nativeInstallFlags = [
|
||||||
|
"-DCMAKE_INSTALL_PREFIX=${placeholder "out"}"
|
||||||
|
"-DCMAKE_INSTALL_BINDIR=${placeholder "out"}/bin"
|
||||||
|
"-DCMAKE_INSTALL_INCLUDEDIR=${placeholder "dev"}/include"
|
||||||
|
"-DCMAKE_INSTALL_LIBDIR=${placeholder "lib"}/lib"
|
||||||
|
"-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "lib"}/libexec"
|
||||||
|
];
|
||||||
|
in "-DCROSS_TOOLCHAIN_FLAGS_NATIVE:list="
|
||||||
|
+ lib.concatStringsSep ";" (lib.concatLists [
|
||||||
|
flagsForLlvmConfig
|
||||||
|
nativeToolchainFlags
|
||||||
|
nativeInstallFlags
|
||||||
|
])
|
||||||
|
)
|
||||||
|
];
|
||||||
|
|
||||||
|
postBuild = ''
|
||||||
|
rm -fR $out
|
||||||
|
'';
|
||||||
|
|
||||||
|
preCheck = ''
|
||||||
|
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
mkdir -p $python/share
|
||||||
|
mv $out/share/opt-viewer $python/share/opt-viewer
|
||||||
|
moveToOutput "bin/llvm-config*" "$dev"
|
||||||
|
substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \
|
||||||
|
--replace "\''${_IMPORT_PREFIX}/lib/lib" "$lib/lib/lib" \
|
||||||
|
--replace "$out/bin/llvm-config" "$dev/bin/llvm-config"
|
||||||
|
substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \
|
||||||
|
--replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}'"$lib"'")'
|
||||||
|
''
|
||||||
|
+ optionalString (stdenv.isDarwin && enableSharedLibraries) ''
|
||||||
|
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib
|
||||||
|
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib
|
||||||
|
''
|
||||||
|
+ optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
|
||||||
|
cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
|
||||||
|
'';
|
||||||
|
|
||||||
|
inherit doCheck;
|
||||||
|
|
||||||
|
checkTarget = "check-all";
|
||||||
|
|
||||||
|
requiredSystemFeatures = [ "big-parallel" ];
|
||||||
|
meta = llvm_meta // {
|
||||||
|
homepage = "https://llvm.org/";
|
||||||
|
description = "A collection of modular and reusable compiler and toolchain technologies";
|
||||||
|
longDescription = ''
|
||||||
|
The LLVM Project is a collection of modular and reusable compiler and
|
||||||
|
toolchain technologies. Despite its name, LLVM has little to do with
|
||||||
|
traditional virtual machines. The name "LLVM" itself is not an acronym; it
|
||||||
|
is the full name of the project.
|
||||||
|
LLVM began as a research project at the University of Illinois, with the
|
||||||
|
goal of providing a modern, SSA-based compilation strategy capable of
|
||||||
|
supporting both static and dynamic compilation of arbitrary programming
|
||||||
|
languages. Since then, LLVM has grown to be an umbrella project consisting
|
||||||
|
of a number of subprojects, many of which are being used in production by
|
||||||
|
a wide variety of commercial and open source projects as well as being
|
||||||
|
widely used in academic research. Code in the LLVM project is licensed
|
||||||
|
under the "Apache 2.0 License with LLVM exceptions".
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
} // lib.optionalAttrs enableManpages {
|
||||||
|
pname = "llvm-manpages";
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
make docs-llvm-man
|
||||||
|
'';
|
||||||
|
|
||||||
|
propagatedBuildInputs = [];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
make -C docs install
|
||||||
|
'';
|
||||||
|
|
||||||
|
postPatch = null;
|
||||||
|
postInstall = null;
|
||||||
|
|
||||||
|
outputs = [ "out" ];
|
||||||
|
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
|
meta = llvm_meta // {
|
||||||
|
description = "man pages for LLVM ${version}";
|
||||||
|
};
|
||||||
|
})
|
|
@ -0,0 +1,106 @@
|
||||||
|
diff --git a/tools/polly/CMakeLists.txt b/tools/polly/CMakeLists.txt
|
||||||
|
index 9939097f743e..8cc538da912a 100644
|
||||||
|
--- a/tools/polly/CMakeLists.txt
|
||||||
|
+++ b/tools/polly/CMakeLists.txt
|
||||||
|
@@ -2,7 +2,11 @@
|
||||||
|
if (NOT DEFINED LLVM_MAIN_SRC_DIR)
|
||||||
|
project(Polly)
|
||||||
|
cmake_minimum_required(VERSION 3.4.3)
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
+include(GNUInstallDirs)
|
||||||
|
|
||||||
|
+if (NOT DEFINED LLVM_MAIN_SRC_DIR)
|
||||||
|
# Where is LLVM installed?
|
||||||
|
find_package(LLVM CONFIG REQUIRED)
|
||||||
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${LLVM_CMAKE_DIR})
|
||||||
|
@@ -145,14 +149,14 @@ include_directories(
|
||||||
|
|
||||||
|
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||||
|
install(DIRECTORY include/
|
||||||
|
- DESTINATION include
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
|
FILES_MATCHING
|
||||||
|
PATTERN "*.h"
|
||||||
|
PATTERN ".svn" EXCLUDE
|
||||||
|
)
|
||||||
|
|
||||||
|
install(DIRECTORY ${POLLY_BINARY_DIR}/include/
|
||||||
|
- DESTINATION include
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
|
FILES_MATCHING
|
||||||
|
PATTERN "*.h"
|
||||||
|
PATTERN "CMakeFiles" EXCLUDE
|
||||||
|
diff --git a/tools/polly/cmake/CMakeLists.txt b/tools/polly/cmake/CMakeLists.txt
|
||||||
|
index 211f95512717..f9e04a4844b6 100644
|
||||||
|
--- a/tools/polly/cmake/CMakeLists.txt
|
||||||
|
+++ b/tools/polly/cmake/CMakeLists.txt
|
||||||
|
@@ -79,18 +79,18 @@ file(GENERATE
|
||||||
|
|
||||||
|
# Generate PollyConfig.cmake for the install tree.
|
||||||
|
unset(POLLY_EXPORTS)
|
||||||
|
-set(POLLY_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
|
||||||
|
+set(POLLY_INSTALL_PREFIX "")
|
||||||
|
set(POLLY_CONFIG_LLVM_CMAKE_DIR "${LLVM_BINARY_DIR}/${LLVM_INSTALL_PACKAGE_DIR}")
|
||||||
|
-set(POLLY_CONFIG_CMAKE_DIR "${POLLY_INSTALL_PREFIX}/${POLLY_INSTALL_PACKAGE_DIR}")
|
||||||
|
-set(POLLY_CONFIG_LIBRARY_DIRS "${POLLY_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}")
|
||||||
|
+set(POLLY_CONFIG_CMAKE_DIR "${POLLY_INSTALL_PREFIX}${CMAKE_INSTALL_PREFIX}/${POLLY_INSTALL_PACKAGE_DIR}")
|
||||||
|
+set(POLLY_CONFIG_LIBRARY_DIRS "${POLLY_INSTALL_PREFIX}${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX}")
|
||||||
|
if (POLLY_BUNDLED_ISL)
|
||||||
|
set(POLLY_CONFIG_INCLUDE_DIRS
|
||||||
|
- "${POLLY_INSTALL_PREFIX}/include"
|
||||||
|
- "${POLLY_INSTALL_PREFIX}/include/polly"
|
||||||
|
+ "${POLLY_INSTALL_PREFIX}${CMAKE_INSTALL_FULL_LIBDIR}"
|
||||||
|
+ "${POLLY_INSTALL_PREFIX}${CMAKE_INSTALL_FULL_LIBDIR}/polly"
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
set(POLLY_CONFIG_INCLUDE_DIRS
|
||||||
|
- "${POLLY_INSTALL_PREFIX}/include"
|
||||||
|
+ "${POLLY_INSTALL_PREFIX}${CMAKE_INSTALL_FULL_INCLUDEDIR}"
|
||||||
|
${ISL_INCLUDE_DIRS}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
@@ -100,12 +100,12 @@ endif()
|
||||||
|
foreach(tgt IN LISTS POLLY_CONFIG_EXPORTED_TARGETS)
|
||||||
|
get_target_property(tgt_type ${tgt} TYPE)
|
||||||
|
if (tgt_type STREQUAL "EXECUTABLE")
|
||||||
|
- set(tgt_prefix "bin/")
|
||||||
|
+ set(tgt_prefix "${CMAKE_INSTALL_BINDIR}/")
|
||||||
|
else()
|
||||||
|
- set(tgt_prefix "lib/")
|
||||||
|
+ set(tgt_prefix "${CMAKE_INSTALL_LIBDIR}/")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
- set(tgt_path "${CMAKE_INSTALL_PREFIX}/${tgt_prefix}$<TARGET_FILE_NAME:${tgt}>")
|
||||||
|
+ set(tgt_path "${tgt_prefix}$<TARGET_FILE_NAME:${tgt}>")
|
||||||
|
file(RELATIVE_PATH tgt_path ${POLLY_CONFIG_CMAKE_DIR} ${tgt_path})
|
||||||
|
|
||||||
|
if (NOT tgt_type STREQUAL "INTERFACE_LIBRARY")
|
||||||
|
diff --git a/tools/polly/cmake/polly_macros.cmake b/tools/polly/cmake/polly_macros.cmake
|
||||||
|
index 86de6f10686e..91f30891ccbe 100644
|
||||||
|
--- a/tools/polly/cmake/polly_macros.cmake
|
||||||
|
+++ b/tools/polly/cmake/polly_macros.cmake
|
||||||
|
@@ -44,8 +44,8 @@ macro(add_polly_library name)
|
||||||
|
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "LLVMPolly")
|
||||||
|
install(TARGETS ${name}
|
||||||
|
EXPORT LLVMExports
|
||||||
|
- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
|
||||||
|
- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
|
||||||
|
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}
|
||||||
|
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
|
||||||
|
endif()
|
||||||
|
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
|
||||||
|
endmacro(add_polly_library)
|
||||||
|
diff --git a/tools/polly/lib/External/CMakeLists.txt b/tools/polly/lib/External/CMakeLists.txt
|
||||||
|
index 1039079cb49c..28b499ae1e9e 100644
|
||||||
|
--- a/tools/polly/lib/External/CMakeLists.txt
|
||||||
|
+++ b/tools/polly/lib/External/CMakeLists.txt
|
||||||
|
@@ -275,7 +275,7 @@ if (POLLY_BUNDLED_ISL)
|
||||||
|
install(DIRECTORY
|
||||||
|
${ISL_SOURCE_DIR}/include/
|
||||||
|
${ISL_BINARY_DIR}/include/
|
||||||
|
- DESTINATION include/polly
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/polly
|
||||||
|
FILES_MATCHING
|
||||||
|
PATTERN "*.h"
|
||||||
|
PATTERN "CMakeFiles" EXCLUDE
|
|
@ -0,0 +1,417 @@
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 247ad36d3845..815e2c4ba955 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -269,15 +269,21 @@ if (CMAKE_BUILD_TYPE AND
|
||||||
|
message(FATAL_ERROR "Invalid value for CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
+include(GNUInstallDirs)
|
||||||
|
+
|
||||||
|
set(LLVM_LIBDIR_SUFFIX "" CACHE STRING "Define suffix of library directory name (32/64)" )
|
||||||
|
|
||||||
|
-set(LLVM_TOOLS_INSTALL_DIR "bin" CACHE STRING "Path for binary subdirectory (defaults to 'bin')")
|
||||||
|
+set(LLVM_TOOLS_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}" CACHE STRING
|
||||||
|
+ "Path for binary subdirectory (defaults to 'bin')")
|
||||||
|
mark_as_advanced(LLVM_TOOLS_INSTALL_DIR)
|
||||||
|
|
||||||
|
set(LLVM_UTILS_INSTALL_DIR "${LLVM_TOOLS_INSTALL_DIR}" CACHE STRING
|
||||||
|
"Path to install LLVM utilities (enabled by LLVM_INSTALL_UTILS=ON) (defaults to LLVM_TOOLS_INSTALL_DIR)")
|
||||||
|
mark_as_advanced(LLVM_UTILS_INSTALL_DIR)
|
||||||
|
|
||||||
|
+set(LLVM_INSTALL_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/cmake/llvm" CACHE STRING
|
||||||
|
+ "Path for CMake subdirectory (defaults to lib/cmake/llvm)" )
|
||||||
|
+
|
||||||
|
# They are used as destination of target generators.
|
||||||
|
set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)
|
||||||
|
set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
|
||||||
|
@@ -559,9 +565,9 @@ option (LLVM_ENABLE_SPHINX "Use Sphinx to generate llvm documentation." OFF)
|
||||||
|
option (LLVM_ENABLE_OCAMLDOC "Build OCaml bindings documentation." ON)
|
||||||
|
option (LLVM_ENABLE_BINDINGS "Build bindings." ON)
|
||||||
|
|
||||||
|
-set(LLVM_INSTALL_DOXYGEN_HTML_DIR "share/doc/llvm/doxygen-html"
|
||||||
|
+set(LLVM_INSTALL_DOXYGEN_HTML_DIR "${CMAKE_INSTALL_DOCDIR}/${project}/doxygen-html"
|
||||||
|
CACHE STRING "Doxygen-generated HTML documentation install directory")
|
||||||
|
-set(LLVM_INSTALL_OCAMLDOC_HTML_DIR "share/doc/llvm/ocaml-html"
|
||||||
|
+set(LLVM_INSTALL_OCAMLDOC_HTML_DIR "${CMAKE_INSTALL_DOCDIR}/${project}/ocaml-html"
|
||||||
|
CACHE STRING "OCamldoc-generated HTML documentation install directory")
|
||||||
|
|
||||||
|
option (LLVM_BUILD_EXTERNAL_COMPILER_RT
|
||||||
|
@@ -1107,7 +1113,7 @@ endif()
|
||||||
|
|
||||||
|
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||||
|
install(DIRECTORY include/llvm include/llvm-c
|
||||||
|
- DESTINATION include
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
|
COMPONENT llvm-headers
|
||||||
|
FILES_MATCHING
|
||||||
|
PATTERN "*.def"
|
||||||
|
@@ -1119,7 +1125,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||||
|
)
|
||||||
|
|
||||||
|
install(DIRECTORY ${LLVM_INCLUDE_DIR}/llvm ${LLVM_INCLUDE_DIR}/llvm-c
|
||||||
|
- DESTINATION include
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
|
COMPONENT llvm-headers
|
||||||
|
FILES_MATCHING
|
||||||
|
PATTERN "*.def"
|
||||||
|
@@ -1134,13 +1140,13 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||||
|
|
||||||
|
if (LLVM_INSTALL_MODULEMAPS)
|
||||||
|
install(DIRECTORY include/llvm include/llvm-c
|
||||||
|
- DESTINATION include
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
|
COMPONENT llvm-headers
|
||||||
|
FILES_MATCHING
|
||||||
|
PATTERN "module.modulemap"
|
||||||
|
)
|
||||||
|
install(FILES include/llvm/module.install.modulemap
|
||||||
|
- DESTINATION include/llvm
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/llvm
|
||||||
|
COMPONENT llvm-headers
|
||||||
|
RENAME "module.extern.modulemap"
|
||||||
|
)
|
||||||
|
diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake
|
||||||
|
index b74adc11ade9..a5aa258cde30 100644
|
||||||
|
--- a/cmake/modules/AddLLVM.cmake
|
||||||
|
+++ b/cmake/modules/AddLLVM.cmake
|
||||||
|
@@ -766,9 +766,9 @@ macro(add_llvm_library name)
|
||||||
|
|
||||||
|
install(TARGETS ${name}
|
||||||
|
${export_to_llvmexports}
|
||||||
|
- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
|
||||||
|
- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
|
||||||
|
- RUNTIME DESTINATION bin COMPONENT ${name})
|
||||||
|
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
|
||||||
|
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
|
||||||
|
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${name})
|
||||||
|
|
||||||
|
if (NOT LLVM_ENABLE_IDE)
|
||||||
|
add_llvm_install_targets(install-${name}
|
||||||
|
@@ -981,7 +981,7 @@ function(process_llvm_pass_plugins)
|
||||||
|
"set(LLVM_STATIC_EXTENSIONS ${LLVM_STATIC_EXTENSIONS})")
|
||||||
|
install(FILES
|
||||||
|
${llvm_cmake_builddir}/LLVMConfigExtensions.cmake
|
||||||
|
- DESTINATION ${LLVM_INSTALL_PACKAGE_DIR}
|
||||||
|
+ DESTINATION ${LLVM_INSTALL_CMAKE_DIR}
|
||||||
|
COMPONENT cmake-exports)
|
||||||
|
|
||||||
|
set(ExtensionDef "${LLVM_BINARY_DIR}/include/llvm/Support/Extension.def")
|
||||||
|
@@ -1201,7 +1201,7 @@ macro(add_llvm_example name)
|
||||||
|
endif()
|
||||||
|
add_llvm_executable(${name} ${ARGN})
|
||||||
|
if( LLVM_BUILD_EXAMPLES )
|
||||||
|
- install(TARGETS ${name} RUNTIME DESTINATION examples)
|
||||||
|
+ install(TARGETS ${name} RUNTIME DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples)
|
||||||
|
endif()
|
||||||
|
set_target_properties(${name} PROPERTIES FOLDER "Examples")
|
||||||
|
endmacro(add_llvm_example name)
|
||||||
|
@@ -1819,7 +1819,7 @@ function(llvm_install_library_symlink name dest type)
|
||||||
|
set(full_name ${CMAKE_${type}_LIBRARY_PREFIX}${name}${CMAKE_${type}_LIBRARY_SUFFIX})
|
||||||
|
set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX})
|
||||||
|
|
||||||
|
- set(output_dir lib${LLVM_LIBDIR_SUFFIX})
|
||||||
|
+ set(output_dir ${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
|
||||||
|
if(WIN32 AND "${type}" STREQUAL "SHARED")
|
||||||
|
set(output_dir bin)
|
||||||
|
endif()
|
||||||
|
@@ -1836,7 +1836,7 @@ function(llvm_install_library_symlink name dest type)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
-function(llvm_install_symlink name dest)
|
||||||
|
+function(llvm_install_symlink name dest output_dir)
|
||||||
|
cmake_parse_arguments(ARG "ALWAYS_GENERATE" "COMPONENT" "" ${ARGN})
|
||||||
|
foreach(path ${CMAKE_MODULE_PATH})
|
||||||
|
if(EXISTS ${path}/LLVMInstallSymlink.cmake)
|
||||||
|
@@ -1859,7 +1859,7 @@ function(llvm_install_symlink name dest)
|
||||||
|
set(full_dest ${dest}${CMAKE_EXECUTABLE_SUFFIX})
|
||||||
|
|
||||||
|
install(SCRIPT ${INSTALL_SYMLINK}
|
||||||
|
- CODE "install_symlink(${full_name} ${full_dest} ${LLVM_TOOLS_INSTALL_DIR})"
|
||||||
|
+ CODE "install_symlink(${full_name} ${full_dest} ${output_dir})"
|
||||||
|
COMPONENT ${component})
|
||||||
|
|
||||||
|
if (NOT LLVM_ENABLE_IDE AND NOT ARG_ALWAYS_GENERATE)
|
||||||
|
@@ -1942,7 +1942,8 @@ function(add_llvm_tool_symlink link_name target)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if ((TOOL_IS_TOOLCHAIN OR NOT LLVM_INSTALL_TOOLCHAIN_ONLY) AND LLVM_BUILD_TOOLS)
|
||||||
|
- llvm_install_symlink(${link_name} ${target})
|
||||||
|
+ GNUInstallDirs_get_absolute_install_dir(output_dir LLVM_TOOLS_INSTALL_DIR)
|
||||||
|
+ llvm_install_symlink(${link_name} ${target} ${output_dir})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
@@ -2064,9 +2065,9 @@ function(llvm_setup_rpath name)
|
||||||
|
|
||||||
|
if (APPLE)
|
||||||
|
set(_install_name_dir INSTALL_NAME_DIR "@rpath")
|
||||||
|
- set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
|
||||||
|
+ set(_install_rpath "@loader_path/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
|
||||||
|
elseif(UNIX)
|
||||||
|
- set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
|
||||||
|
+ set(_install_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
|
||||||
|
if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")
|
||||||
|
set_property(TARGET ${name} APPEND_STRING PROPERTY
|
||||||
|
LINK_FLAGS " -Wl,-z,origin ")
|
||||||
|
diff --git a/cmake/modules/AddOCaml.cmake b/cmake/modules/AddOCaml.cmake
|
||||||
|
index 554046b20edf..4d1ad980641e 100644
|
||||||
|
--- a/cmake/modules/AddOCaml.cmake
|
||||||
|
+++ b/cmake/modules/AddOCaml.cmake
|
||||||
|
@@ -144,9 +144,9 @@ function(add_ocaml_library name)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
if( APPLE )
|
||||||
|
- set(ocaml_rpath "@executable_path/../../../lib${LLVM_LIBDIR_SUFFIX}")
|
||||||
|
+ set(ocaml_rpath "@executable_path/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}")
|
||||||
|
elseif( UNIX )
|
||||||
|
- set(ocaml_rpath "\\$ORIGIN/../../../lib${LLVM_LIBDIR_SUFFIX}")
|
||||||
|
+ set(ocaml_rpath "\\$ORIGIN/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}")
|
||||||
|
endif()
|
||||||
|
list(APPEND ocaml_flags "-ldopt" "-Wl,-rpath,${ocaml_rpath}")
|
||||||
|
|
||||||
|
diff --git a/cmake/modules/AddSphinxTarget.cmake b/cmake/modules/AddSphinxTarget.cmake
|
||||||
|
index b5babb30abcf..190b1222a9f9 100644
|
||||||
|
--- a/cmake/modules/AddSphinxTarget.cmake
|
||||||
|
+++ b/cmake/modules/AddSphinxTarget.cmake
|
||||||
|
@@ -84,7 +84,7 @@ function (add_sphinx_target builder project)
|
||||||
|
endif()
|
||||||
|
elseif (builder STREQUAL html)
|
||||||
|
string(TOUPPER "${project}" project_upper)
|
||||||
|
- set(${project_upper}_INSTALL_SPHINX_HTML_DIR "share/doc/${project}/html"
|
||||||
|
+ set(${project_upper}_INSTALL_SPHINX_HTML_DIR "${CMAKE_INSTALL_DOCDIR}/${project}/html"
|
||||||
|
CACHE STRING "HTML documentation install directory for ${project}")
|
||||||
|
|
||||||
|
# '/.' indicates: copy the contents of the directory directly into
|
||||||
|
diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt
|
||||||
|
index 4b8879f65fe4..f01920bcc60f 100644
|
||||||
|
--- a/cmake/modules/CMakeLists.txt
|
||||||
|
+++ b/cmake/modules/CMakeLists.txt
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-set(LLVM_INSTALL_PACKAGE_DIR lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm)
|
||||||
|
+set(LLVM_INSTALL_PACKAGE_DIR ${LLVM_INSTALL_CMAKE_DIR} CACHE STRING "Path for CMake subdirectory (defaults to 'cmake/llvm')")
|
||||||
|
set(llvm_cmake_builddir "${LLVM_BINARY_DIR}/${LLVM_INSTALL_PACKAGE_DIR}")
|
||||||
|
|
||||||
|
# First for users who use an installed LLVM, create the LLVMExports.cmake file.
|
||||||
|
@@ -108,13 +108,13 @@ foreach(p ${_count})
|
||||||
|
set(LLVM_CONFIG_CODE "${LLVM_CONFIG_CODE}
|
||||||
|
get_filename_component(LLVM_INSTALL_PREFIX \"\${LLVM_INSTALL_PREFIX}\" PATH)")
|
||||||
|
endforeach(p)
|
||||||
|
-set(LLVM_CONFIG_INCLUDE_DIRS "\${LLVM_INSTALL_PREFIX}/include")
|
||||||
|
+set(LLVM_CONFIG_INCLUDE_DIRS "\${LLVM_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")
|
||||||
|
set(LLVM_CONFIG_INCLUDE_DIR "${LLVM_CONFIG_INCLUDE_DIRS}")
|
||||||
|
set(LLVM_CONFIG_MAIN_INCLUDE_DIR "${LLVM_CONFIG_INCLUDE_DIRS}")
|
||||||
|
-set(LLVM_CONFIG_LIBRARY_DIRS "\${LLVM_INSTALL_PREFIX}/lib\${LLVM_LIBDIR_SUFFIX}")
|
||||||
|
+set(LLVM_CONFIG_LIBRARY_DIRS "\${LLVM_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}\${LLVM_LIBDIR_SUFFIX}")
|
||||||
|
set(LLVM_CONFIG_CMAKE_DIR "\${LLVM_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR}")
|
||||||
|
set(LLVM_CONFIG_BINARY_DIR "\${LLVM_INSTALL_PREFIX}")
|
||||||
|
-set(LLVM_CONFIG_TOOLS_BINARY_DIR "\${LLVM_INSTALL_PREFIX}/bin")
|
||||||
|
+set(LLVM_CONFIG_TOOLS_BINARY_DIR "\${LLVM_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
|
||||||
|
|
||||||
|
# Generate a default location for lit
|
||||||
|
if (LLVM_INSTALL_UTILS AND LLVM_BUILD_UTILS)
|
||||||
|
diff --git a/cmake/modules/LLVMInstallSymlink.cmake b/cmake/modules/LLVMInstallSymlink.cmake
|
||||||
|
index 09fed8085c23..aa79f192abf0 100644
|
||||||
|
--- a/cmake/modules/LLVMInstallSymlink.cmake
|
||||||
|
+++ b/cmake/modules/LLVMInstallSymlink.cmake
|
||||||
|
@@ -10,7 +10,7 @@ function(install_symlink name target outdir)
|
||||||
|
set(LINK_OR_COPY copy)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
- set(bindir "${DESTDIR}${CMAKE_INSTALL_PREFIX}/${outdir}/")
|
||||||
|
+ set(bindir "${DESTDIR}${outdir}/")
|
||||||
|
|
||||||
|
message(STATUS "Creating ${name}")
|
||||||
|
|
||||||
|
diff --git a/docs/CMake.rst b/docs/CMake.rst
|
||||||
|
index 1f908d3e95b1..1315e0aa40e1 100644
|
||||||
|
--- a/docs/CMake.rst
|
||||||
|
+++ b/docs/CMake.rst
|
||||||
|
@@ -196,7 +196,7 @@ CMake manual, or execute ``cmake --help-variable VARIABLE_NAME``.
|
||||||
|
**LLVM_LIBDIR_SUFFIX**:STRING
|
||||||
|
Extra suffix to append to the directory where libraries are to be
|
||||||
|
installed. On a 64-bit architecture, one could use ``-DLLVM_LIBDIR_SUFFIX=64``
|
||||||
|
- to install libraries to ``/usr/lib64``.
|
||||||
|
+ to install libraries to ``/usr/lib64``. See also ``CMAKE_INSTALL_LIBDIR``.
|
||||||
|
|
||||||
|
**CMAKE_C_FLAGS**:STRING
|
||||||
|
Extra flags to use when compiling C source files.
|
||||||
|
@@ -516,8 +516,8 @@ LLVM-specific variables
|
||||||
|
|
||||||
|
**LLVM_INSTALL_DOXYGEN_HTML_DIR**:STRING
|
||||||
|
The path to install Doxygen-generated HTML documentation to. This path can
|
||||||
|
- either be absolute or relative to the CMAKE_INSTALL_PREFIX. Defaults to
|
||||||
|
- `share/doc/llvm/doxygen-html`.
|
||||||
|
+ either be absolute or relative to the ``CMAKE_INSTALL_PREFIX``. Defaults to
|
||||||
|
+ `${CMAKE_INSTALL_DOCDIR}/${project}/doxygen-html`.
|
||||||
|
|
||||||
|
**LLVM_ENABLE_SPHINX**:BOOL
|
||||||
|
If specified, CMake will search for the ``sphinx-build`` executable and will make
|
||||||
|
@@ -548,13 +548,33 @@ LLVM-specific variables
|
||||||
|
|
||||||
|
**LLVM_INSTALL_SPHINX_HTML_DIR**:STRING
|
||||||
|
The path to install Sphinx-generated HTML documentation to. This path can
|
||||||
|
- either be absolute or relative to the CMAKE_INSTALL_PREFIX. Defaults to
|
||||||
|
- `share/doc/llvm/html`.
|
||||||
|
+ either be absolute or relative to the ``CMAKE_INSTALL_PREFIX``. Defaults to
|
||||||
|
+ `${CMAKE_INSTALL_DOCDIR}/${project}/html`.
|
||||||
|
|
||||||
|
**LLVM_INSTALL_OCAMLDOC_HTML_DIR**:STRING
|
||||||
|
The path to install OCamldoc-generated HTML documentation to. This path can
|
||||||
|
- either be absolute or relative to the CMAKE_INSTALL_PREFIX. Defaults to
|
||||||
|
- `share/doc/llvm/ocaml-html`.
|
||||||
|
+ either be absolute or relative to the ``CMAKE_INSTALL_PREFIX``. Defaults to
|
||||||
|
+ `${CMAKE_INSTALL_DOCDIR}/${project}/ocaml-html`.
|
||||||
|
+
|
||||||
|
+**CMAKE_INSTALL_BINDIR**:STRING
|
||||||
|
+ The path to install binary tools, relative to the ``CMAKE_INSTALL_PREFIX``.
|
||||||
|
+ Defaults to `bin`.
|
||||||
|
+
|
||||||
|
+**CMAKE_INSTALL_LIBDIR**:STRING
|
||||||
|
+ The path to install libraries, relative to the ``CMAKE_INSTALL_PREFIX``.
|
||||||
|
+ Defaults to `lib`.
|
||||||
|
+
|
||||||
|
+**CMAKE_INSTALL_INCLUDEDIR**:STRING
|
||||||
|
+ The path to install header files, relative to the ``CMAKE_INSTALL_PREFIX``.
|
||||||
|
+ Defaults to `include`.
|
||||||
|
+
|
||||||
|
+**CMAKE_INSTALL_DOCDIR**:STRING
|
||||||
|
+ The path to install documentation, relative to the ``CMAKE_INSTALL_PREFIX``.
|
||||||
|
+ Defaults to `share/doc`.
|
||||||
|
+
|
||||||
|
+**CMAKE_INSTALL_MANDIR**:STRING
|
||||||
|
+ The path to install manpage files, relative to the ``CMAKE_INSTALL_PREFIX``.
|
||||||
|
+ Defaults to `share/man`.
|
||||||
|
|
||||||
|
**LLVM_CREATE_XCODE_TOOLCHAIN**:BOOL
|
||||||
|
macOS Only: If enabled CMake will generate a target named
|
||||||
|
@@ -752,9 +772,11 @@ the ``cmake`` command or by setting it directly in ``ccmake`` or ``cmake-gui``).
|
||||||
|
|
||||||
|
This file is available in two different locations.
|
||||||
|
|
||||||
|
-* ``<INSTALL_PREFIX>/lib/cmake/llvm/LLVMConfig.cmake`` where
|
||||||
|
- ``<INSTALL_PREFIX>`` is the install prefix of an installed version of LLVM.
|
||||||
|
- On Linux typically this is ``/usr/lib/cmake/llvm/LLVMConfig.cmake``.
|
||||||
|
+* ``<LLVM_INSTALL_PACKAGE_DIR>LLVMConfig.cmake`` where
|
||||||
|
+ ``<LLVM_INSTALL_PACKAGE_DIR>`` is the location where LLVM CMake modules are
|
||||||
|
+ installed as part of an installed version of LLVM. This is typically
|
||||||
|
+ ``cmake/llvm/`` within the lib directory. On Linux, this is typically
|
||||||
|
+ ``/usr/lib/cmake/llvm/LLVMConfig.cmake``.
|
||||||
|
|
||||||
|
* ``<LLVM_BUILD_ROOT>/lib/cmake/llvm/LLVMConfig.cmake`` where
|
||||||
|
``<LLVM_BUILD_ROOT>`` is the root of the LLVM build tree. **Note: this is only
|
||||||
|
diff --git a/examples/Bye/CMakeLists.txt b/examples/Bye/CMakeLists.txt
|
||||||
|
index bb96edb4b4bf..678c22fb43c8 100644
|
||||||
|
--- a/examples/Bye/CMakeLists.txt
|
||||||
|
+++ b/examples/Bye/CMakeLists.txt
|
||||||
|
@@ -14,6 +14,6 @@ if (NOT WIN32)
|
||||||
|
BUILDTREE_ONLY
|
||||||
|
)
|
||||||
|
|
||||||
|
- install(TARGETS ${name} RUNTIME DESTINATION examples)
|
||||||
|
+ install(TARGETS ${name} RUNTIME DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples)
|
||||||
|
set_target_properties(${name} PROPERTIES FOLDER "Examples")
|
||||||
|
endif()
|
||||||
|
diff --git a/include/llvm/CMakeLists.txt b/include/llvm/CMakeLists.txt
|
||||||
|
index b46319f24fc8..2feabd1954e4 100644
|
||||||
|
--- a/include/llvm/CMakeLists.txt
|
||||||
|
+++ b/include/llvm/CMakeLists.txt
|
||||||
|
@@ -5,5 +5,5 @@ add_subdirectory(Frontend)
|
||||||
|
# If we're doing an out-of-tree build, copy a module map for generated
|
||||||
|
# header files into the build area.
|
||||||
|
if (NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
|
||||||
|
- configure_file(module.modulemap.build module.modulemap COPYONLY)
|
||||||
|
+ configure_file(module.modulemap.build ${LLVM_INCLUDE_DIR}/module.modulemap COPYONLY)
|
||||||
|
endif (NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
|
||||||
|
diff --git a/tools/llvm-config/BuildVariables.inc.in b/tools/llvm-config/BuildVariables.inc.in
|
||||||
|
index 63cef75368b7..6295478b1f3d 100644
|
||||||
|
--- a/tools/llvm-config/BuildVariables.inc.in
|
||||||
|
+++ b/tools/llvm-config/BuildVariables.inc.in
|
||||||
|
@@ -23,6 +23,10 @@
|
||||||
|
#define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@"
|
||||||
|
#define LLVM_BUILDMODE "@LLVM_BUILDMODE@"
|
||||||
|
#define LLVM_LIBDIR_SUFFIX "@LLVM_LIBDIR_SUFFIX@"
|
||||||
|
+#define LLVM_INSTALL_BINDIR "@CMAKE_INSTALL_BINDIR@"
|
||||||
|
+#define LLVM_INSTALL_LIBDIR "@CMAKE_INSTALL_LIBDIR@"
|
||||||
|
+#define LLVM_INSTALL_INCLUDEDIR "@CMAKE_INSTALL_INCLUDEDIR@"
|
||||||
|
+#define LLVM_INSTALL_CMAKEDIR "@LLVM_INSTALL_CMAKE_DIR@"
|
||||||
|
#define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@"
|
||||||
|
#define LLVM_SYSTEM_LIBS "@LLVM_SYSTEM_LIBS@"
|
||||||
|
#define LLVM_BUILD_SYSTEM "@LLVM_BUILD_SYSTEM@"
|
||||||
|
diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp
|
||||||
|
index 7e74b7c90816..f185e9283f83 100644
|
||||||
|
--- a/tools/llvm-config/llvm-config.cpp
|
||||||
|
+++ b/tools/llvm-config/llvm-config.cpp
|
||||||
|
@@ -358,12 +358,26 @@ int main(int argc, char **argv) {
|
||||||
|
("-I" + ActiveIncludeDir + " " + "-I" + ActiveObjRoot + "/include");
|
||||||
|
} else {
|
||||||
|
ActivePrefix = CurrentExecPrefix;
|
||||||
|
- ActiveIncludeDir = ActivePrefix + "/include";
|
||||||
|
- SmallString<256> path(StringRef(LLVM_TOOLS_INSTALL_DIR));
|
||||||
|
- sys::fs::make_absolute(ActivePrefix, path);
|
||||||
|
- ActiveBinDir = std::string(path.str());
|
||||||
|
- ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;
|
||||||
|
- ActiveCMakeDir = ActiveLibDir + "/cmake/llvm";
|
||||||
|
+ {
|
||||||
|
+ SmallString<256> path(StringRef(LLVM_INSTALL_INCLUDEDIR));
|
||||||
|
+ sys::fs::make_absolute(ActivePrefix, path);
|
||||||
|
+ ActiveIncludeDir = std::string(path.str());
|
||||||
|
+ }
|
||||||
|
+ {
|
||||||
|
+ SmallString<256> path(StringRef(LLVM_INSTALL_BINDIR));
|
||||||
|
+ sys::fs::make_absolute(ActivePrefix, path);
|
||||||
|
+ ActiveBinDir = std::string(path.str());
|
||||||
|
+ }
|
||||||
|
+ {
|
||||||
|
+ SmallString<256> path(StringRef(LLVM_INSTALL_LIBDIR LLVM_LIBDIR_SUFFIX));
|
||||||
|
+ sys::fs::make_absolute(ActivePrefix, path);
|
||||||
|
+ ActiveLibDir = std::string(path.str());
|
||||||
|
+ }
|
||||||
|
+ {
|
||||||
|
+ SmallString<256> path(StringRef(LLVM_INSTALL_CMAKEDIR));
|
||||||
|
+ sys::fs::make_absolute(ActivePrefix, path);
|
||||||
|
+ ActiveCMakeDir = std::string(path.str());
|
||||||
|
+ }
|
||||||
|
ActiveIncludeOption = "-I" + ActiveIncludeDir;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/tools/lto/CMakeLists.txt b/tools/lto/CMakeLists.txt
|
||||||
|
index 2963f97cad88..69d66c9c9ca1 100644
|
||||||
|
--- a/tools/lto/CMakeLists.txt
|
||||||
|
+++ b/tools/lto/CMakeLists.txt
|
||||||
|
@@ -25,7 +25,7 @@ add_llvm_library(LTO SHARED INSTALL_WITH_TOOLCHAIN ${SOURCES} DEPENDS
|
||||||
|
intrinsics_gen)
|
||||||
|
|
||||||
|
install(FILES ${LLVM_MAIN_INCLUDE_DIR}/llvm-c/lto.h
|
||||||
|
- DESTINATION include/llvm-c
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/llvm-c
|
||||||
|
COMPONENT LTO)
|
||||||
|
|
||||||
|
if (APPLE)
|
||||||
|
diff --git a/tools/opt-viewer/CMakeLists.txt b/tools/opt-viewer/CMakeLists.txt
|
||||||
|
index ead73ec13a8f..250362021f17 100644
|
||||||
|
--- a/tools/opt-viewer/CMakeLists.txt
|
||||||
|
+++ b/tools/opt-viewer/CMakeLists.txt
|
||||||
|
@@ -8,7 +8,7 @@ set (files
|
||||||
|
|
||||||
|
foreach (file ${files})
|
||||||
|
install(PROGRAMS ${file}
|
||||||
|
- DESTINATION share/opt-viewer
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/opt-viewer
|
||||||
|
COMPONENT opt-viewer)
|
||||||
|
endforeach (file)
|
||||||
|
|
||||||
|
diff --git a/tools/remarks-shlib/CMakeLists.txt b/tools/remarks-shlib/CMakeLists.txt
|
||||||
|
index e948496c603a..1f4df8a98b10 100644
|
||||||
|
--- a/tools/remarks-shlib/CMakeLists.txt
|
||||||
|
+++ b/tools/remarks-shlib/CMakeLists.txt
|
||||||
|
@@ -11,7 +11,7 @@ set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/Remarks.exports)
|
||||||
|
add_llvm_library(Remarks SHARED INSTALL_WITH_TOOLCHAIN ${SOURCES})
|
||||||
|
|
||||||
|
install(FILES ${LLVM_MAIN_INCLUDE_DIR}/llvm-c/Remarks.h
|
||||||
|
- DESTINATION include/llvm-c
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/llvm-c
|
||||||
|
COMPONENT Remarks)
|
||||||
|
|
||||||
|
if (APPLE)
|
|
@ -0,0 +1,29 @@
|
||||||
|
From 4add81bba40dcec62c4ea4481be8e35ac53e89d8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Will Dietz <w@wdtz.org>
|
||||||
|
Date: Thu, 18 May 2017 11:56:12 -0500
|
||||||
|
Subject: [PATCH] "purity" patch for 5.0
|
||||||
|
|
||||||
|
---
|
||||||
|
lib/Driver/ToolChains/Gnu.cpp | 7 -------
|
||||||
|
1 file changed, 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp
|
||||||
|
index fe3c0191bb..c6a482bece 100644
|
||||||
|
--- a/lib/Driver/ToolChains/Gnu.cpp
|
||||||
|
+++ b/lib/Driver/ToolChains/Gnu.cpp
|
||||||
|
@@ -494,13 +494,6 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||||
|
if (!Args.hasArg(options::OPT_static)) {
|
||||||
|
if (Args.hasArg(options::OPT_rdynamic))
|
||||||
|
CmdArgs.push_back("-export-dynamic");
|
||||||
|
-
|
||||||
|
- if (!Args.hasArg(options::OPT_shared)) {
|
||||||
|
- const std::string Loader =
|
||||||
|
- D.DyldPrefix + ToolChain.getDynamicLinker(Args);
|
||||||
|
- CmdArgs.push_back("-dynamic-linker");
|
||||||
|
- CmdArgs.push_back(Args.MakeArgString(Loader));
|
||||||
|
- }
|
||||||
|
}
|
||||||
|
|
||||||
|
CmdArgs.push_back("-o");
|
||||||
|
--
|
||||||
|
2.11.0
|
|
@ -0,0 +1,18 @@
|
||||||
|
diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp
|
||||||
|
index 3f29afd35971..223d2769cdfc 100644
|
||||||
|
--- a/lib/Driver/Driver.cpp
|
||||||
|
+++ b/lib/Driver/Driver.cpp
|
||||||
|
@@ -491,6 +491,13 @@ DerivedArgList *Driver::TranslateInputArgs(const InputArgList &Args) const {
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+ {
|
||||||
|
+ Arg *A = DAL->MakeFlagArg(/*BaseArg=*/nullptr,
|
||||||
|
+ Opts.getOption(options::OPT_nostdlibinc));
|
||||||
|
+ A->claim();
|
||||||
|
+ DAL->append(A);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
return DAL;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/lib/Driver/ToolChains/CommonArgs.cpp b/lib/Driver/ToolChains/CommonArgs.cpp
|
||||||
|
index 6b6e276b8ce7..7896542a1202 100644
|
||||||
|
--- a/lib/Driver/ToolChains/CommonArgs.cpp
|
||||||
|
+++ b/lib/Driver/ToolChains/CommonArgs.cpp
|
||||||
|
@@ -409,7 +409,7 @@ void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args,
|
||||||
|
|
||||||
|
SmallString<1024> Plugin;
|
||||||
|
llvm::sys::path::native(
|
||||||
|
- Twine(D.Dir) + "/../lib" CLANG_LIBDIR_SUFFIX "/LLVMgold" + Suffix,
|
||||||
|
+ Twine("@libllvmLibdir@" "/LLVMgold") + Suffix,
|
||||||
|
Plugin);
|
||||||
|
CmdArgs.push_back(Args.MakeArgString(Plugin));
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
diff --git a/lib/Driver/ToolChains/CommonArgs.cpp b/lib/Driver/ToolChains/CommonArgs.cpp
|
||||||
|
index 37ec73468570..b73e75aa6e59 100644
|
||||||
|
--- a/lib/Driver/ToolChains/CommonArgs.cpp
|
||||||
|
+++ b/lib/Driver/ToolChains/CommonArgs.cpp
|
||||||
|
@@ -370,8 +370,8 @@ void tools::AddGoldPlugin(const ToolChain &ToolChain, const ArgList &Args,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
SmallString<1024> Plugin;
|
||||||
|
- llvm::sys::path::native(Twine(ToolChain.getDriver().Dir) +
|
||||||
|
- "/../lib" CLANG_LIBDIR_SUFFIX "/LLVMgold" +
|
||||||
|
+ llvm::sys::path::native(Twine("@libllvmLibdir@"
|
||||||
|
+ "/LLVMgold") +
|
||||||
|
Suffix,
|
||||||
|
Plugin);
|
||||||
|
CmdArgs.push_back(Args.MakeArgString(Plugin));
|
|
@ -0,0 +1,14 @@
|
||||||
|
diff --git a/lib/Driver/ToolChains/CommonArgs.cpp b/lib/Driver/ToolChains/CommonArgs.cpp
|
||||||
|
index 34640b3c450d..93c4a4f4ec5c 100644
|
||||||
|
--- a/lib/Driver/ToolChains/CommonArgs.cpp
|
||||||
|
+++ b/lib/Driver/ToolChains/CommonArgs.cpp
|
||||||
|
@@ -589,8 +589,7 @@ void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
SmallString<1024> Plugin;
|
||||||
|
- llvm::sys::path::native(Twine(D.Dir) +
|
||||||
|
- "/../" CLANG_INSTALL_LIBDIR_BASENAME +
|
||||||
|
+ llvm::sys::path::native(Twine("@libllvmLibdir@") +
|
||||||
|
PluginName + Suffix,
|
||||||
|
Plugin);
|
||||||
|
CmdArgs.push_back(Args.MakeArgString(Twine(PluginPrefix) + Plugin));
|
|
@ -0,0 +1,60 @@
|
||||||
|
{ lib
|
||||||
|
, fetchFromGitHub ? null
|
||||||
|
, release_version ? null
|
||||||
|
, gitRelease ? null
|
||||||
|
, officialRelease ? null
|
||||||
|
, monorepoSrc' ? null
|
||||||
|
}:
|
||||||
|
|
||||||
|
rec {
|
||||||
|
llvm_meta = {
|
||||||
|
license = lib.licenses.ncsa;
|
||||||
|
maintainers = lib.teams.llvm.members;
|
||||||
|
|
||||||
|
# See llvm/cmake/config-ix.cmake.
|
||||||
|
platforms =
|
||||||
|
lib.platforms.aarch64 ++
|
||||||
|
lib.platforms.arm ++
|
||||||
|
lib.platforms.mips ++
|
||||||
|
lib.platforms.power ++
|
||||||
|
lib.platforms.s390x ++
|
||||||
|
lib.platforms.wasi ++
|
||||||
|
lib.platforms.x86 ++
|
||||||
|
lib.optionals (lib.versionAtLeast release_version "7") lib.platforms.riscv ++
|
||||||
|
lib.optionals (lib.versionAtLeast release_version "14") lib.platforms.m68k;
|
||||||
|
};
|
||||||
|
|
||||||
|
releaseInfo =
|
||||||
|
if gitRelease != null then rec {
|
||||||
|
original = gitRelease;
|
||||||
|
release_version = original.version;
|
||||||
|
version = gitRelease.rev-version;
|
||||||
|
} else rec {
|
||||||
|
original = officialRelease;
|
||||||
|
release_version = original.version;
|
||||||
|
version =
|
||||||
|
if original ? candidate then
|
||||||
|
"${release_version}-${original.candidate}"
|
||||||
|
else
|
||||||
|
release_version;
|
||||||
|
};
|
||||||
|
|
||||||
|
monorepoSrc =
|
||||||
|
if monorepoSrc' != null then
|
||||||
|
monorepoSrc'
|
||||||
|
else
|
||||||
|
let
|
||||||
|
sha256 = releaseInfo.original.sha256;
|
||||||
|
rev =
|
||||||
|
if gitRelease != null then
|
||||||
|
gitRelease.rev
|
||||||
|
else
|
||||||
|
"llvmorg-${releaseInfo.version}";
|
||||||
|
in
|
||||||
|
fetchFromGitHub {
|
||||||
|
owner = "llvm";
|
||||||
|
repo = "llvm-project";
|
||||||
|
inherit rev sha256;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
From 5c571082fdaf61f6df19d9b7137dc26d71334058 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Natanael Copa <ncopa@alpinelinux.org>
|
||||||
|
Date: Thu, 18 Feb 2016 10:33:04 +0100
|
||||||
|
Subject: [PATCH 2/3] Fix build with musl libc
|
||||||
|
|
||||||
|
On musl libc the fopen64 and fopen are the same thing, but for
|
||||||
|
compatibility they have a `#define fopen64 fopen`. Same applies for
|
||||||
|
fseek64, fstat64, fstatvfs64, ftello64, lstat64, stat64 and tmpfile64.
|
||||||
|
---
|
||||||
|
include/llvm/Analysis/TargetLibraryInfo.h | 9 +++++++++
|
||||||
|
1 file changed, 9 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/include/llvm/Analysis/TargetLibraryInfo.h b/include/llvm/Analysis/TargetLibraryInfo.h
|
||||||
|
index 7becdf0..7f14427 100644
|
||||||
|
--- a/include/llvm/Analysis/TargetLibraryInfo.h
|
||||||
|
+++ b/include/llvm/Analysis/TargetLibraryInfo.h
|
||||||
|
@@ -18,6 +18,15 @@
|
||||||
|
#include "llvm/IR/Module.h"
|
||||||
|
#include "llvm/Pass.h"
|
||||||
|
|
||||||
|
+#undef fopen64
|
||||||
|
+#undef fseeko64
|
||||||
|
+#undef fstat64
|
||||||
|
+#undef fstatvfs64
|
||||||
|
+#undef ftello64
|
||||||
|
+#undef lstat64
|
||||||
|
+#undef stat64
|
||||||
|
+#undef tmpfile64
|
||||||
|
+
|
||||||
|
namespace llvm {
|
||||||
|
/// VecDesc - Describes a possible vectorization of a function.
|
||||||
|
/// Function 'VectorFnName' is equivalent to 'ScalarFnName' vectorized
|
||||||
|
--
|
||||||
|
2.7.3
|
|
@ -0,0 +1,12 @@
|
||||||
|
diff --git llvm/tools/llvm-config/CMakeLists.txt llvm/tools/llvm-config/CMakeLists.txt
|
||||||
|
index 16ba54c0cf2f..20b017195e84 100644
|
||||||
|
--- llvm/tools/llvm-config/CMakeLists.txt
|
||||||
|
+++ llvm/tools/llvm-config/CMakeLists.txt
|
||||||
|
@@ -6,6 +6,7 @@ set(BUILDVARIABLES_OBJPATH ${CMAKE_CURRENT_BINARY_DIR}/BuildVariables.inc)
|
||||||
|
# Add the llvm-config tool.
|
||||||
|
add_llvm_tool(llvm-config
|
||||||
|
llvm-config.cpp
|
||||||
|
+ DISABLE_LLVM_LINK_LLVM_DYLIB
|
||||||
|
)
|
||||||
|
|
||||||
|
# Compute the substitution values for various items.
|
Loading…
Reference in New Issue