include rcfiles/cudatoolkittrampolinerc;

variable NVCPPASHOSTCOMP is default(0);
variable ALLOW_UNSUPPORTED_COMPILER is default();
variable COMPILER_BINDIR is default();
variable NVCPPVERSION is default(11.0);
variable NVCPPVERSIONXXYY is default($replace($NVCPPVERSION,".","0")0);
variable ISNVHPCMPI is default(0);
variable CURRENTMPIDRIVER is default();
switch --compiler-bindir bin is shorthand(-ccbin $bin);
switch -ccbin bin is
	early
	set(COMPILER_BINDIR=$if($equal($bin,nvc),-ccbin nvc++,$if($equal($bin,mpicc),-ccbin mpicxx)))
	set(NVREQCUDAVERSION=$if($equal($bin,nvc++),$NVCPPVERSION))
	set(ISNVHPCMPI=$contains($bin,comm_libs/mpi/bin))
	set(CURRENTMPIDRIVER=$if($lor($contains($filename($bin),mpicxx),$contains($filename($bin),mpic++),$contains($filename($bin),mpiCC)),$lookup($PATH,$filename($bin))))
	set(ISNVHPCMPI=$or($contains($bin,comm_libs/mpi/bin)),$contains($CURRENTMPIDRIVER,comm_libs/mpi/bin/$filename($bin)))
	set(NVCPPASHOSTCOMP=$if($lor($equal($filename($bin),nvc++),$land($ISNVHPCMPI,$lor($equal($filename($bin),mpicxx),$equal($filename($bin),mpic++),$equal($filename($bin),mpiCC)))),1))
	set(ALLOW_UNSUPPORTED_COMPILER=$if($NVCPPASHOSTCOMP,--allow-unsupported-compiler))
	set(R=$expand($NVREQCUDAVERSION));	# added to expand NVREQCUDAVERSION early

variable CUDA_INCLUDES is default($foreach(i,$replace($USER_INCLUDE_PATH,",", ),-I$i/ ) $foreach(i,$USRINC,-I$i/ ) $if($USER_SET_CUDA_HOME,-isystem $USER_SET_CUDA/include,$if($isdir($COMPBASE/$COMPSYS/$COMPVER/cuda/$CUDAVERSION/include),-isystem $COMPBASE/$COMPSYS/$COMPVER/cuda/$CUDAVERSION/include)
                                  $if($isdir($COMPBASE/$COMPSYS/$COMPVER/math_libs/$CUDAVERSION/include),-isystem $COMPBASE/$COMPSYS/$COMPVER/math_libs/$CUDAVERSION/include)
                                  $if($isdir($COMPBASE/$COMPSYS/$COMPVER/comm_libs/$CUDAVERSION/nccl/include),-isystem $COMPBASE/$COMPSYS/$COMPVER/comm_libs/$CUDAVERSION/nccl/include)
                                  $if($isdir($COMPBASE/$COMPSYS/$COMPVER/comm_libs/$CUDAVERSION/nvshmem/include),-isystem $COMPBASE/$COMPSYS/$COMPVER/comm_libs/$CUDAVERSION/nvshmem/include)));
variable CUDA_LIBRARIES is default($foreach(ll,$replace($USER_LIBRARY_PATH,",", ), -L$ll) $if($USER_SET_CUDA_HOME,-L$USER_SET_CUDA/lib64,$if($isdir($COMPBASE/$COMPSYS/$COMPVER/cuda/$CUDAVERSION/lib64),-L$COMPBASE/$COMPSYS/$COMPVER/cuda/$CUDAVERSION/lib64)
                                   $if($isdir($COMPBASE/$COMPSYS/$COMPVER/math_libs/$CUDAVERSION/lib64),-L$COMPBASE/$COMPSYS/$COMPVER/math_libs/$CUDAVERSION/lib64)
                                   $if($isdir($COMPBASE/$COMPSYS/$COMPVER/comm_libs/$CUDAVERSION/nccl/lib),-L$COMPBASE/$COMPSYS/$COMPVER/comm_libs/$CUDAVERSION/nccl/lib)
                                   $if($isdir($COMPBASE/$COMPSYS/$COMPVER/comm_libs/$CUDAVERSION/nvshmem/lib),-L$COMPBASE/$COMPSYS/$COMPVER/comm_libs/$CUDAVERSION/nvshmem/lib)));
variable CUDA_LIBSRPATH is default($foreach(ll,$replace($USER_LIBRARY_PATH,",", ), -rpath $ll) $if($USER_SET_CUDA_HOME,-Xlinker -rpath\,$USER_SET_CUDA/lib64,$if($isdir($COMPBASE/$COMPSYS/$COMPVER/cuda/$CUDAVERSION/lib64),-Xlinker -rpath\,$COMPBASE/$COMPSYS/$COMPVER/cuda/$CUDAVERSION/lib64)
                                   $if($isdir($COMPBASE/$COMPSYS/$COMPVER/math_libs/$CUDAVERSION/lib64),-Xlinker -rpath\,$COMPBASE/$COMPSYS/$COMPVER/math_libs/$CUDAVERSION/lib64)
                                   $if($isdir($COMPBASE/$COMPSYS/$COMPVER/comm_libs/$CUDAVERSION/nccl/lib),-Xlinker -rpath\,$COMPBASE/$COMPSYS/$COMPVER/comm_libs/$CUDAVERSION/nccl/lib)));
set ADDARGS=$(COMPILER_BINDIR) $(CUDA_INCLUDES) $(CUDA_LIBRARIES) $(CUDA_LIBSRPATH) $(ALLOW_UNSUPPORTED_COMPILER);

restart(
	# FS#29516 emit a warning if a user uses the nvcc trampoline driver with a legacy (not the latest) CUDA version
	$warning($if($and($NVCPPASHOSTCOMP,$expr($CUDAXXYY<=$NVCPPVERSIONXXYY)),$ifn($INHIBIT_WARNINGS,
        "You are using a legacy version of NVCC with the NVC++ host compiler. In case of any incompatibilities, please upgrade to the latest CUDA toolchain included in this HPC SDK.")))
	$if($isdir($CUDADIR),
	    $if($expr($CUDAXXYY>=$NVREQCUDAVERSIONXXYY),
	        $CUDADIR,
	        $error($if($NVCPPASHOSTCOMP,"The nvc++ host compiler is only supported with CUDA 11.0 or newer"))),
	$error($CUDA_ERROR)
	));
