diff --git a/pkgs/development/compilers/llvm/7/llvm.nix b/pkgs/development/compilers/llvm/7/llvm.nix index 06024856356f..6fcdc394bed4 100644 --- a/pkgs/development/compilers/llvm/7/llvm.nix +++ b/pkgs/development/compilers/llvm/7/llvm.nix @@ -13,7 +13,8 @@ , debugVersion ? false , enableManpages ? false , enableSharedLibraries ? true -, enableWasm ? true +, targets ? [ stdenv.hostPlatform stdenv.targetPlatform ] +, enableWasm ? true # TODO fold this into `targets` somehow , enablePFM ? !stdenv.isDarwin }: @@ -24,17 +25,9 @@ let shortVersion = with stdenv.lib; concatStringsSep "." (take 1 (splitString "." release_version)); - llvmTarget = platform: - if platform.parsed.cpu.family == "x86" then - "X86" - else if platform.parsed.cpu.name == "aarch64" then - "AArch64" - else if platform.parsed.cpu.family == "arm" then - "ARM" - else if platform.parsed.cpu.family == "mips" then - "Mips" - else - throw "Unsupported system"; + inherit + (import ../common.nix { inherit (stdenv) lib; }) + llvmBackendList; in stdenv.mkDerivation (rec { name = "llvm-${version}"; @@ -92,7 +85,7 @@ in stdenv.mkDerivation (rec { "-DLLVM_ENABLE_RTTI=ON" "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}" "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.targetPlatform.config}" - "-DLLVM_TARGETS_TO_BUILD=${llvmTarget stdenv.hostPlatform};${llvmTarget stdenv.targetPlatform}" + "-DLLVM_TARGETS_TO_BUILD=${llvmBackendList targets}" "-DLLVM_ENABLE_DUMP=ON" ] diff --git a/pkgs/development/compilers/llvm/common.nix b/pkgs/development/compilers/llvm/common.nix new file mode 100644 index 000000000000..e4f55963a6fb --- /dev/null +++ b/pkgs/development/compilers/llvm/common.nix @@ -0,0 +1,18 @@ +{ lib }: + +rec { + llvmBackend = platform: + if platform.parsed.cpu.family == "x86" then + "X86" + else if platform.parsed.cpu.name == "aarch64" then + "AArch64" + else if platform.parsed.cpu.family == "arm" then + "ARM" + else if platform.parsed.cpu.family == "mips" then + "Mips" + else + throw "Unsupported system"; + + llvmBackendList = platforms: + lib.concatStringsSep ";" (map llvmBackend platforms); +}