0
0
Fork 0
mirror of https://github.com/NixOS/nixpkgs.git synced 2025-07-13 21:50:33 +03:00

llvmPackages.*: Add devExtraCmakeFlags parameter (#342040)

This commit is contained in:
Tristan Ross 2024-09-22 11:29:19 -07:00 committed by GitHub
commit 464d8f5eff
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 29 additions and 13 deletions

View file

@ -12,6 +12,7 @@
python3, python3,
buildLlvmTools, buildLlvmTools,
patches ? [ ], patches ? [ ],
devExtraCmakeFlags ? [ ],
}: }:
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
@ -43,9 +44,11 @@ stdenv.mkDerivation (finalAttrs: {
libxml2 libxml2
]; ];
cmakeFlags = lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ cmakeFlags =
(lib.cmakeFeature "LLVM_TABLEGEN_EXE" "${buildLlvmTools.llvm}/bin/llvm-tblgen") lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
]; (lib.cmakeFeature "LLVM_TABLEGEN_EXE" "${buildLlvmTools.llvm}/bin/llvm-tblgen")
]
++ devExtraCmakeFlags;
postUnpack = '' postUnpack = ''
chmod -R u+w -- $sourceRoot/.. chmod -R u+w -- $sourceRoot/..

View file

@ -17,6 +17,7 @@
, fixDarwinDylibNames , fixDarwinDylibNames
, enableManpages ? false , enableManpages ? false
, clang-tools-extra_src ? null , clang-tools-extra_src ? null
, devExtraCmakeFlags ? []
}: }:
let let
@ -69,7 +70,9 @@ let
# `clang-pseudo-gen`: https://github.com/llvm/llvm-project/commit/cd2292ef824591cc34cc299910a3098545c840c7 # `clang-pseudo-gen`: https://github.com/llvm/llvm-project/commit/cd2292ef824591cc34cc299910a3098545c840c7
"-DCLANG_TIDY_CONFUSABLE_CHARS_GEN=${buildLlvmTools.libclang.dev}/bin/clang-tidy-confusable-chars-gen" "-DCLANG_TIDY_CONFUSABLE_CHARS_GEN=${buildLlvmTools.libclang.dev}/bin/clang-tidy-confusable-chars-gen"
"-DCLANG_PSEUDO_GEN=${buildLlvmTools.libclang.dev}/bin/clang-pseudo-gen" "-DCLANG_PSEUDO_GEN=${buildLlvmTools.libclang.dev}/bin/clang-pseudo-gen"
]) ++ lib.optional (stdenv.targetPlatform.useLLVM or false) "-DCLANG_DEFAULT_CXX_STDLIB=ON"; ]) ++ lib.optionals (stdenv.targetPlatform.useLLVM or false) [
"-DCLANG_DEFAULT_CXX_STDLIB=ON"
] ++ devExtraCmakeFlags;
postPatch = '' postPatch = ''
# Make sure clang passes the correct location of libLTO to ld64 # Make sure clang passes the correct location of libLTO to ld64

View file

@ -28,6 +28,7 @@
# `libcompiler_rt` library, at least under certain configurations. Some # `libcompiler_rt` library, at least under certain configurations. Some
# platforms stil expect this, however, so we symlink one into place. # platforms stil expect this, however, so we symlink one into place.
, forceLinkCompilerRt ? stdenv.hostPlatform.isOpenBSD , forceLinkCompilerRt ? stdenv.hostPlatform.isOpenBSD
, devExtraCmakeFlags ? []
}: }:
let let
@ -134,9 +135,9 @@ stdenv.mkDerivation ({
"-DCOMPILER_RT_ENABLE_IOS=OFF" "-DCOMPILER_RT_ENABLE_IOS=OFF"
]) ++ lib.optionals (lib.versionAtLeast version "19" && stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13") [ ]) ++ lib.optionals (lib.versionAtLeast version "19" && stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13") [
"-DSANITIZER_MIN_OSX_VERSION=10.10" "-DSANITIZER_MIN_OSX_VERSION=10.10"
] ++ lib.optionals (noSanitizers && lib.versionAtLeast release_version "19") [ ] ++ lib.optionals (noSanitizers && lib.versionAtLeast release_version "19") [
"-DCOMPILER_RT_BUILD_CTX_PROFILE=OFF" "-DCOMPILER_RT_BUILD_CTX_PROFILE=OFF"
]; ] ++ devExtraCmakeFlags;
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];

View file

@ -16,6 +16,7 @@
, cxxabi ? if stdenv.hostPlatform.isFreeBSD then freebsd.libcxxrt else null , cxxabi ? if stdenv.hostPlatform.isFreeBSD then freebsd.libcxxrt else null
, libunwind , libunwind
, enableShared ? !stdenv.hostPlatform.isStatic , enableShared ? !stdenv.hostPlatform.isStatic
, devExtraCmakeFlags ? []
}: }:
# external cxxabi is not supported on Darwin as the build will not link libcxx # external cxxabi is not supported on Darwin as the build will not link libcxx
@ -103,7 +104,8 @@ let
"-DCMAKE_CXX_COMPILER_WORKS=ON" "-DCMAKE_CXX_COMPILER_WORKS=ON"
"-DUNIX=ON" # Required otherwise libc++ fails to detect the correct linker "-DUNIX=ON" # Required otherwise libc++ fails to detect the correct linker
] ++ cxxCMakeFlags ] ++ cxxCMakeFlags
++ lib.optionals (cxxabi == null) cxxabiCMakeFlags; ++ lib.optionals (cxxabi == null) cxxabiCMakeFlags
++ devExtraCmakeFlags;
in in

View file

@ -12,6 +12,7 @@
, python3 , python3
, libcxx , libcxx
, enableShared ? !stdenv.hostPlatform.isStatic , enableShared ? !stdenv.hostPlatform.isStatic
, devExtraCmakeFlags ? []
}: }:
let let
pname = "libunwind"; pname = "libunwind";
@ -68,7 +69,8 @@ stdenv.mkDerivation (rec {
]; ];
cmakeFlags = lib.optional (lib.versionAtLeast release_version "15") "-DLLVM_ENABLE_RUNTIMES=libunwind" cmakeFlags = lib.optional (lib.versionAtLeast release_version "15") "-DLLVM_ENABLE_RUNTIMES=libunwind"
++ lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF"; ++ lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF"
++ devExtraCmakeFlags;
meta = llvm_meta // { meta = llvm_meta // {
# Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst # Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst

View file

@ -13,6 +13,7 @@
, libxml2 , libxml2
, libllvm , libllvm
, version , version
, devExtraCmakeFlags ? []
}: }:
let let
pname = "lld"; pname = "lld";
@ -55,7 +56,7 @@ stdenv.mkDerivation (rec {
"-DLLD_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/lld" "-DLLD_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/lld"
] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
"-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen" "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
]; ] ++ devExtraCmakeFlags;
# Musl's default stack size is too small for lld to be able to link Firefox. # Musl's default stack size is too small for lld to be able to link Firefox.
LDFLAGS = lib.optionalString stdenv.hostPlatform.isMusl "-Wl,-z,stack-size=2097152"; LDFLAGS = lib.optionalString stdenv.hostPlatform.isMusl "-Wl,-z,stack-size=2097152";

View file

@ -23,6 +23,7 @@
, monorepoSrc ? null , monorepoSrc ? null
, patches ? [ ] , patches ? [ ]
, enableManpages ? false , enableManpages ? false
, devExtraCmakeFlags ? [ ]
, ... , ...
}: }:
@ -142,7 +143,7 @@ stdenv.mkDerivation (rec {
]) ++ lib.optionals doCheck [ ]) ++ lib.optionals doCheck [
"-DLLDB_TEST_C_COMPILER=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc" "-DLLDB_TEST_C_COMPILER=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"
"-DLLDB_TEST_CXX_COMPILER=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}c++" "-DLLDB_TEST_CXX_COMPILER=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}c++"
]; ] ++ devExtraCmakeFlags;
doCheck = false; doCheck = false;
doInstallCheck = lib.versionOlder release_version "15"; doInstallCheck = lib.versionOlder release_version "15";

View file

@ -40,6 +40,7 @@
&& !stdenv.hostPlatform.isAarch && !stdenv.hostPlatform.isAarch
, enablePolly ? lib.versionAtLeast release_version "14" , enablePolly ? lib.versionAtLeast release_version "14"
, enableTerminfo ? true , enableTerminfo ? true
, devExtraCmakeFlags ? []
}: }:
let let
@ -399,7 +400,7 @@ stdenv.mkDerivation (rec {
nativeInstallFlags nativeInstallFlags
]) ])
) )
]; ] ++ devExtraCmakeFlags;
postInstall = '' postInstall = ''
mkdir -p $python/share mkdir -p $python/share

View file

@ -10,6 +10,7 @@
, libllvm , libllvm
, version , version
, doCheck ? (!stdenv.isx86_32 /* TODO: why */) && (!stdenv.hostPlatform.isMusl) , doCheck ? (!stdenv.isx86_32 /* TODO: why */) && (!stdenv.hostPlatform.isMusl)
, devExtraCmakeFlags ? []
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@ -63,7 +64,7 @@ stdenv.mkDerivation rec {
] ++ lib.optionals ((stdenv.hostPlatform != stdenv.buildPlatform) && !(stdenv.buildPlatform.canExecute stdenv.hostPlatform)) [ ] ++ lib.optionals ((stdenv.hostPlatform != stdenv.buildPlatform) && !(stdenv.buildPlatform.canExecute stdenv.hostPlatform)) [
"-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen" "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
"-DMLIR_TABLEGEN_EXE=${buildLlvmTools.mlir}/bin/mlir-tblgen" "-DMLIR_TABLEGEN_EXE=${buildLlvmTools.mlir}/bin/mlir-tblgen"
]; ] ++ devExtraCmakeFlags;
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];

View file

@ -15,6 +15,7 @@
, perl , perl
, pkg-config , pkg-config
, version , version
, devExtraCmakeFlags ? []
}: }:
let let
pname = "openmp"; pname = "openmp";
@ -60,7 +61,7 @@ stdenv.mkDerivation (rec {
"-DCLANG_TOOL=${clang-unwrapped}/bin/clang" "-DCLANG_TOOL=${clang-unwrapped}/bin/clang"
"-DOPT_TOOL=${llvm}/bin/opt" "-DOPT_TOOL=${llvm}/bin/opt"
"-DLINK_TOOL=${llvm}/bin/llvm-link" "-DLINK_TOOL=${llvm}/bin/llvm-link"
]; ] ++ devExtraCmakeFlags;
meta = llvm_meta // { meta = llvm_meta // {
homepage = "https://openmp.llvm.org/"; homepage = "https://openmp.llvm.org/";