llvm: introduce [build/link]_llvm_dylib (#27450)
Apart from building a single dylib for LLVM, users should also be able to link tools against it.
This commit is contained in:
parent
d24d13559b
commit
40a6ac62d3
3 changed files with 16 additions and 7 deletions
|
@ -119,7 +119,7 @@ spack:
|
||||||
- libnrm
|
- libnrm
|
||||||
- libquo
|
- libquo
|
||||||
- libunwind
|
- libunwind
|
||||||
- llvm +all_targets +clang +compiler-rt +libcxx +lld +lldb +llvm_dylib +flang ~cuda
|
- llvm +all_targets +clang +compiler-rt +libcxx +lld +lldb +build_llvm_dylib +flang ~cuda
|
||||||
- loki
|
- loki
|
||||||
- mercury
|
- mercury
|
||||||
- metall
|
- metall
|
||||||
|
|
|
@ -130,7 +130,7 @@ spack:
|
||||||
- libnrm
|
- libnrm
|
||||||
- libquo
|
- libquo
|
||||||
- libunwind
|
- libunwind
|
||||||
- llvm +all_targets +clang +compiler-rt +libcxx +lld +lldb +llvm_dylib +flang ~cuda
|
- llvm +all_targets +clang +compiler-rt +libcxx +lld +lldb +build_llvm_dylib +flang ~cuda
|
||||||
- loki
|
- loki
|
||||||
- mercury
|
- mercury
|
||||||
- metall
|
- metall
|
||||||
|
|
|
@ -123,11 +123,16 @@ class Llvm(CMakePackage, CudaPackage):
|
||||||
"less memory to build, less stable",
|
"less memory to build, less stable",
|
||||||
)
|
)
|
||||||
variant(
|
variant(
|
||||||
"llvm_dylib",
|
"build_llvm_dylib",
|
||||||
default=False,
|
default=False,
|
||||||
description="Build LLVM shared library, containing all "
|
description="Build LLVM shared library, containing all "
|
||||||
"components in a single shared library",
|
"components in a single shared library",
|
||||||
)
|
)
|
||||||
|
variant(
|
||||||
|
"link_llvm_dylib",
|
||||||
|
default=False,
|
||||||
|
description="Link LLVM tools against the LLVM shared library",
|
||||||
|
)
|
||||||
variant(
|
variant(
|
||||||
"all_targets",
|
"all_targets",
|
||||||
default=False,
|
default=False,
|
||||||
|
@ -190,7 +195,8 @@ class Llvm(CMakePackage, CudaPackage):
|
||||||
depends_on("gmp", when="@:3.6 +polly")
|
depends_on("gmp", when="@:3.6 +polly")
|
||||||
depends_on("isl", when="@:3.6 +polly")
|
depends_on("isl", when="@:3.6 +polly")
|
||||||
|
|
||||||
conflicts("+llvm_dylib", when="+shared_libs")
|
conflicts("+build_llvm_dylib", when="+shared_libs")
|
||||||
|
conflicts("+link_llvm_dylib", when="~build_llvm_dylib")
|
||||||
conflicts("+lldb", when="~clang")
|
conflicts("+lldb", when="~clang")
|
||||||
conflicts("+libcxx", when="~clang")
|
conflicts("+libcxx", when="~clang")
|
||||||
conflicts("+internal_unwind", when="~clang")
|
conflicts("+internal_unwind", when="~clang")
|
||||||
|
@ -552,9 +558,12 @@ def cmake_args(self):
|
||||||
projects.append("polly")
|
projects.append("polly")
|
||||||
cmake_args.append(define("LINK_POLLY_INTO_TOOLS", True))
|
cmake_args.append(define("LINK_POLLY_INTO_TOOLS", True))
|
||||||
|
|
||||||
cmake_args.append(from_variant("BUILD_SHARED_LIBS", "shared_libs"))
|
cmake_args.extend([
|
||||||
cmake_args.append(from_variant("LLVM_BUILD_LLVM_DYLIB", "llvm_dylib"))
|
from_variant("BUILD_SHARED_LIBS", "shared_libs"),
|
||||||
cmake_args.append(from_variant("LLVM_USE_SPLIT_DWARF", "split_dwarf"))
|
from_variant("LLVM_BUILD_LLVM_DYLIB", "build_llvm_dylib"),
|
||||||
|
from_variant("LLVM_LINK_LLVM_DYLIB", "link_llvm_dylib"),
|
||||||
|
from_variant("LLVM_USE_SPLIT_DWARF", "split_dwarf")
|
||||||
|
])
|
||||||
|
|
||||||
# By default on Linux, libc++.so is a linker script, and CMake tries to add the
|
# By default on Linux, libc++.so is a linker script, and CMake tries to add the
|
||||||
# CMAKE_INSTALL_RPATH to it, which fails, causing installation to fail. The
|
# CMAKE_INSTALL_RPATH to it, which fails, causing installation to fail. The
|
||||||
|
|
Loading…
Reference in a new issue