forked from rarias/jungle
		
	The openmp derivation provides both libomp and libompv. To avoid accidentally linking with the wrong library and to avoid the nosv dependency on libomp, this patch separates each version in a different derivation. Also, it adapts the clang wrappers and stdenvs to provide an stdenv per openmp library where each openmp will be used by default when the compiler flag "-fopenmp" is used. This eases linking ompv with nixpkgs libraries, such as blis, that expect openmp to be provided with stdenv. Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es> Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
		
			
				
	
	
		
			47 lines
		
	
	
		
			693 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			693 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { 
 | |
|   stdenv
 | |
| , writeText
 | |
| }:
 | |
| 
 | |
| let
 | |
|   hello_c = writeText "hello.c" ''
 | |
|   int main(int argc, char *argv[])
 | |
|   {
 | |
|     int test = 1;
 | |
|     #pragma omp parallel
 | |
|     #pragma omp single
 | |
|     #pragma omp task
 | |
|     test = 0;
 | |
| 
 | |
|     return test;
 | |
|   }
 | |
|   '';
 | |
| 
 | |
| in stdenv.mkDerivation {
 | |
|   pname = "openmp-test";
 | |
|   version = "1.0.0";
 | |
| 
 | |
|   dontUnpack = true;
 | |
|   dontConfigure = true;
 | |
| 
 | |
|   # nOS-V requires access to /sys/devices to request NUMA information. It will
 | |
|   # fail to run otherwise, so we disable the sandbox for this test.
 | |
|   __noChroot = true;
 | |
| 
 | |
|   buildPhase = ''
 | |
|     set -x
 | |
| 
 | |
|     cp ${hello_c} hello.c
 | |
|     clang -fopenmp ./hello.c -o hello
 | |
|     ./hello
 | |
| 
 | |
|     set +x
 | |
|   '';
 | |
| 
 | |
|   installPhase = ''
 | |
|     touch $out
 | |
|   '';
 | |
| 
 | |
| }
 | |
| 
 |