forked from rarias/bscpkgs
Working stdenv with clang+ompss2
This commit is contained in:
parent
a8523c4b4e
commit
19e4e12126
@ -27,12 +27,12 @@ stdenv.mkDerivation rec {
|
|||||||
# };
|
# };
|
||||||
|
|
||||||
postConfigure = ''
|
postConfigure = ''
|
||||||
env | grep NIX
|
env
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|
||||||
|
# export NANOS6_HOME="${nanos6}"
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
export NANOS6_HOME="${nanos6}"
|
|
||||||
export TAMPI_HOME="${tampi}"
|
export TAMPI_HOME="${tampi}"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
68
bsc/llvm-ompss2/clang.nix
Normal file
68
bsc/llvm-ompss2/clang.nix
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
{
|
||||||
|
stdenv
|
||||||
|
, fetchgit
|
||||||
|
, cmake
|
||||||
|
, lld
|
||||||
|
, bash
|
||||||
|
, python3
|
||||||
|
, perl
|
||||||
|
, clang
|
||||||
|
, which
|
||||||
|
, libelf
|
||||||
|
, libffi
|
||||||
|
, pkg-config
|
||||||
|
, enableDebug ? true
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
version = "11.0.0";
|
||||||
|
pname = "clang-ompss2";
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
#isClang = true;
|
||||||
|
#isGNU = true;
|
||||||
|
|
||||||
|
isClangWithOmpss = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
which
|
||||||
|
clang
|
||||||
|
bash
|
||||||
|
python3
|
||||||
|
perl
|
||||||
|
cmake
|
||||||
|
lld
|
||||||
|
libelf
|
||||||
|
libffi
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
|
cmakeBuildType = if enableDebug then "Debug" else "Release";
|
||||||
|
|
||||||
|
dontUseCmakeBuildDir = true;
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
mkdir -p build
|
||||||
|
cd build
|
||||||
|
cmakeDir="../llvm"
|
||||||
|
cmakeFlagsArray=(
|
||||||
|
"-DLLVM_ENABLE_LLD=ON"
|
||||||
|
"-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames"
|
||||||
|
"-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index"
|
||||||
|
"-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml"
|
||||||
|
"-DLLVM_ENABLE_PROJECTS=clang;openmp"
|
||||||
|
"-DLLVM_ENABLE_ASSERTIONS=ON"
|
||||||
|
"-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON"
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
|
||||||
|
# About "-DCLANG_DEFAULT_NANOS6_HOME=${nanos6}", we could specify a default
|
||||||
|
# nanos6 installation, but this is would require a recompilation of clang each
|
||||||
|
# time nanos6 is changed. Better to use the environment variable NANOS6_HOME,
|
||||||
|
# and specify nanos6 at run time.
|
||||||
|
|
||||||
|
src = builtins.fetchGit {
|
||||||
|
url = "git@bscpm02.bsc.es:llvm-ompss/llvm-mono.git";
|
||||||
|
rev = "38e2e6aac04d40b6b2823751ce25f6b414f52263";
|
||||||
|
ref = "master";
|
||||||
|
};
|
||||||
|
}
|
@ -1,63 +1,27 @@
|
|||||||
{
|
{
|
||||||
stdenv
|
stdenv
|
||||||
, fetchgit
|
, gcc
|
||||||
, cmake
|
, nanos6
|
||||||
, lld
|
, clang-ompss2-unwrapped
|
||||||
, bash
|
, wrapCCWith
|
||||||
, python3
|
, libstdcxxHook
|
||||||
, perl
|
|
||||||
, clang
|
|
||||||
, which
|
|
||||||
, libelf
|
|
||||||
, libffi
|
|
||||||
, pkg-config
|
|
||||||
, enableDebug ? true
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
version = "11.0.0";
|
|
||||||
pname = "clang-ompss2";
|
|
||||||
enableParallelBuilding = true;
|
|
||||||
isClang = true;
|
|
||||||
isGNU = true;
|
|
||||||
|
|
||||||
isClangWithOmpss = true;
|
let
|
||||||
|
targetConfig = stdenv.targetPlatform.config;
|
||||||
|
inherit gcc nanos6;
|
||||||
|
in wrapCCWith rec {
|
||||||
|
cc = clang-ompss2-unwrapped;
|
||||||
|
extraPackages = [ libstdcxxHook ];
|
||||||
|
extraBuildCommands = ''
|
||||||
|
echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags
|
||||||
|
echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags
|
||||||
|
echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags
|
||||||
|
echo "-L${gcc.cc.lib}/${targetConfig}/lib" >> $out/nix-support/cc-ldflags
|
||||||
|
echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags
|
||||||
|
|
||||||
buildInputs = [
|
echo "# Hack to include NANOS6_HOME" >> $out/nix-support/setup-hook
|
||||||
which
|
echo "export NANOS6_HOME=${nanos6}" >> $out/nix-support/setup-hook
|
||||||
clang
|
|
||||||
bash
|
|
||||||
python3
|
|
||||||
perl
|
|
||||||
cmake
|
|
||||||
lld
|
|
||||||
libelf
|
|
||||||
libffi
|
|
||||||
pkg-config
|
|
||||||
];
|
|
||||||
|
|
||||||
cmakeBuildType = if enableDebug then "Debug" else "Release";
|
|
||||||
|
|
||||||
dontUseCmakeBuildDir = true;
|
|
||||||
|
|
||||||
preConfigure = ''
|
|
||||||
mkdir -p build
|
|
||||||
cd build
|
|
||||||
cmakeDir="../llvm"
|
|
||||||
cmakeFlagsArray=(
|
|
||||||
"-DLLVM_ENABLE_LLD=ON"
|
|
||||||
"-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames"
|
|
||||||
"-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index"
|
|
||||||
"-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml"
|
|
||||||
"-DLLVM_ENABLE_PROJECTS=clang;openmp"
|
|
||||||
"-DLLVM_ENABLE_ASSERTIONS=ON"
|
|
||||||
"-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON"
|
|
||||||
)
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
src = builtins.fetchGit {
|
|
||||||
url = "git@bscpm02.bsc.es:llvm-ompss/llvm-mono.git";
|
|
||||||
rev = "38e2e6aac04d40b6b2823751ce25f6b414f52263";
|
|
||||||
ref = "master";
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
83
default.nix
83
default.nix
@ -3,11 +3,8 @@
|
|||||||
let
|
let
|
||||||
inherit (pkgs.lib) callPackageWith;
|
inherit (pkgs.lib) callPackageWith;
|
||||||
inherit (pkgs.lib) callPackagesWith;
|
inherit (pkgs.lib) callPackagesWith;
|
||||||
inherit (pkgs) pythonPackages;
|
#callPackage = callPackageWith (pkgs);
|
||||||
inherit (pkgs) perlPackages;
|
|
||||||
inherit (pkgs) buildPerlPackage;
|
|
||||||
callPackage = callPackageWith (pkgs // self.bsc);
|
callPackage = callPackageWith (pkgs // self.bsc);
|
||||||
callPackage_i686 = callPackageWith (pkgs.pkgsi686Linux // self.bsc);
|
|
||||||
callPackages = callPackagesWith (pkgs // self.bsc);
|
callPackages = callPackagesWith (pkgs // self.bsc);
|
||||||
|
|
||||||
self.bsc = rec {
|
self.bsc = rec {
|
||||||
@ -51,20 +48,22 @@ let
|
|||||||
extrae = extrae;
|
extrae = extrae;
|
||||||
};
|
};
|
||||||
|
|
||||||
clang-ompss2-unwrapped = callPackage ./bsc/llvm-ompss2/default.nix { };
|
#
|
||||||
|
# clang-ompss2 = import ./bsc/cc-wrapper/default.nix {
|
||||||
|
## inherit stdenv binutils coreutils ;
|
||||||
|
## stdenv = bsc.stdenv;
|
||||||
|
# coreutils = pkgs.coreutils;
|
||||||
|
# bintools = pkgs.binutils;
|
||||||
|
# gnugrep = pkgs.gnugrep;
|
||||||
|
# stdenvNoCC = pkgs.stdenvNoCC;
|
||||||
|
# libc = pkgs.glibc;
|
||||||
|
# nativeTools = false;
|
||||||
|
# nativeLibc = false;
|
||||||
|
# cc = clang-ompss2-unwrapped;
|
||||||
|
# };
|
||||||
|
|
||||||
clang-ompss2 = import ./bsc/cc-wrapper/default.nix {
|
|
||||||
# inherit stdenv binutils coreutils ;
|
|
||||||
# stdenv = bsc.stdenv;
|
|
||||||
coreutils = pkgs.coreutils;
|
|
||||||
bintools = pkgs.binutils;
|
|
||||||
gnugrep = pkgs.gnugrep;
|
|
||||||
stdenvNoCC = pkgs.stdenvNoCC;
|
|
||||||
libc = pkgs.glibc;
|
|
||||||
nativeTools = false;
|
|
||||||
nativeLibc = false;
|
|
||||||
cc = clang-ompss2-unwrapped;
|
|
||||||
};
|
|
||||||
|
|
||||||
# gcc = lib.makeOverridable (import ./bsc/cc-wrapper/default.nix) {
|
# gcc = lib.makeOverridable (import ./bsc/cc-wrapper/default.nix) {
|
||||||
# nativeTools = false;
|
# nativeTools = false;
|
||||||
@ -110,22 +109,50 @@ let
|
|||||||
|
|
||||||
# llvmPackages_latest = llvmPackages_10;
|
# llvmPackages_latest = llvmPackages_10;
|
||||||
|
|
||||||
stdenv_nanos6 = pkgs.clangStdenv.override {
|
#
|
||||||
cc = clang-ompss2;
|
# cpic = callPackage ./bsc/cpic/default.nix {
|
||||||
};
|
# stdenv = stdenv_nanos6;
|
||||||
|
# tampi = tampi;
|
||||||
cpic = callPackage ./bsc/cpic/default.nix {
|
# mpi = mpi;
|
||||||
stdenv = stdenv_nanos6;
|
# nanos6 = nanos6-git;
|
||||||
tampi = tampi;
|
## llvm-ompss2 = llvm-ompss2;
|
||||||
mpi = mpi;
|
# };
|
||||||
nanos6 = nanos6-git;
|
|
||||||
# llvm-ompss2 = llvm-ompss2;
|
|
||||||
};
|
|
||||||
|
|
||||||
dummy = callPackage ./bsc/dummy/default.nix {
|
dummy = callPackage ./bsc/dummy/default.nix {
|
||||||
};
|
};
|
||||||
|
|
||||||
chroot = callPackage ./test/chroot.nix {};
|
chroot = callPackage ./test/chroot.nix {};
|
||||||
|
|
||||||
|
# llvmOmpss2Packages = callPackage bsc/llvm-ompss2/11/default.nix {};
|
||||||
|
|
||||||
|
|
||||||
|
clang-ompss2-unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix {
|
||||||
|
stdenv = pkgs.llvmPackages_10.stdenv;
|
||||||
|
};
|
||||||
|
|
||||||
|
clang-ompss2 = callPackage bsc/llvm-ompss2/default.nix {
|
||||||
|
nanos6 = nanos6-git;
|
||||||
|
inherit clang-ompss2-unwrapped;
|
||||||
|
};
|
||||||
|
|
||||||
|
stdenv-nanos6 = pkgs.clangStdenv.override {
|
||||||
|
cc = clang-ompss2;
|
||||||
|
};
|
||||||
|
|
||||||
|
test-clang-ompss2 = callPackage ./test/compilers/clang-ompss2.nix {
|
||||||
|
stdenv = stdenv-nanos6;
|
||||||
|
nanos6 = nanos6-git;
|
||||||
|
inherit clang-ompss2;
|
||||||
|
};
|
||||||
|
|
||||||
|
cpic = callPackage ./bsc/cpic/default.nix {
|
||||||
|
stdenv = stdenv-nanos6;
|
||||||
|
tampi = tampi;
|
||||||
|
mpi = mpi;
|
||||||
|
nanos6 = nanos6-git;
|
||||||
|
# llvm-ompss2 = llvm-ompss2;
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
in pkgs // self
|
in pkgs // self
|
||||||
|
20
test/compilers/clang-ompss2.nix
Normal file
20
test/compilers/clang-ompss2.nix
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{stdenv, clang-ompss2, nanos6}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
version = "0.0.1";
|
||||||
|
name = "test-clang-ompss2";
|
||||||
|
src = ./.;
|
||||||
|
buildInputs = [ clang-ompss2 nanos6 ];
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
export NIX_DEBUG=6
|
||||||
|
clang -fompss-2 hello.c -o hello
|
||||||
|
./hello
|
||||||
|
clang -fompss-2 hello.cc -o hello
|
||||||
|
./hello
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
'';
|
||||||
|
}
|
7
test/compilers/hello.c
Normal file
7
test/compilers/hello.c
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
printf("Hello world!\n");
|
||||||
|
return 0;
|
||||||
|
}
|
7
test/compilers/hello.cc
Normal file
7
test/compilers/hello.cc
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
printf("Hello world!\n");
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user