2016-09-07 07:06:32 +08:00
# Default settings common options
#LAMMPS specific settings:
KOKKOS_PATH = ../../lib/kokkos
CXXFLAGS = $( CCFLAGS)
#Options: OpenMP,Serial,Pthreads,Cuda
KOKKOS_DEVICES ?= "OpenMP"
#KOKKOS_DEVICES ?= "Pthreads"
2017-01-10 01:39:46 +08:00
#Options: KNC,SNB,HSW,Kepler,Kepler30,Kepler32,Kepler35,Kepler37,Maxwell,Maxwell50,Maxwell52,Maxwell53,Pascal61,ARMv80,ARMv81,ARMv8-ThunderX,BGQ,Power7,Power8,KNL,BDW,SKX
2016-09-07 07:06:32 +08:00
KOKKOS_ARCH ?= ""
#Options: yes,no
KOKKOS_DEBUG ?= "no"
#Options: hwloc,librt,experimental_memkind
KOKKOS_USE_TPLS ?= ""
2017-01-10 01:39:46 +08:00
#Options: c++11,c++1z
2016-09-07 07:06:32 +08:00
KOKKOS_CXX_STANDARD ?= "c++11"
#Options: aggressive_vectorization,disable_profiling
KOKKOS_OPTIONS ?= ""
#Default settings specific options
#Options: force_uvm,use_ldg,rdc,enable_lambda
KOKKOS_CUDA_OPTIONS ?= ""
# Check for general settings
KOKKOS_INTERNAL_ENABLE_DEBUG := $( strip $( shell echo $( KOKKOS_DEBUG) | grep "yes" | wc -l) )
KOKKOS_INTERNAL_ENABLE_CXX11 := $( strip $( shell echo $( KOKKOS_CXX_STANDARD) | grep "c++11" | wc -l) )
2017-01-10 01:39:46 +08:00
KOKKOS_INTERNAL_ENABLE_CXX1Z := $( strip $( shell echo $( KOKKOS_CXX_STANDARD) | grep "c++1z" | wc -l) )
2016-09-07 07:06:32 +08:00
# Check for external libraries
KOKKOS_INTERNAL_USE_HWLOC := $( strip $( shell echo $( KOKKOS_USE_TPLS) | grep "hwloc" | wc -l) )
KOKKOS_INTERNAL_USE_LIBRT := $( strip $( shell echo $( KOKKOS_USE_TPLS) | grep "librt" | wc -l) )
KOKKOS_INTERNAL_USE_MEMKIND := $( strip $( shell echo $( KOKKOS_USE_TPLS) | grep "experimental_memkind" | wc -l) )
# Check for advanced settings
KOKKOS_INTERNAL_OPT_RANGE_AGGRESSIVE_VECTORIZATION := $( strip $( shell echo $( KOKKOS_OPTIONS) | grep "aggressive_vectorization" | wc -l) )
KOKKOS_INTERNAL_DISABLE_PROFILING := $( strip $( shell echo $( KOKKOS_OPTIONS) | grep "disable_profiling" | wc -l) )
KOKKOS_INTERNAL_CUDA_USE_LDG := $( strip $( shell echo $( KOKKOS_CUDA_OPTIONS) | grep "use_ldg" | wc -l) )
KOKKOS_INTERNAL_CUDA_USE_UVM := $( strip $( shell echo $( KOKKOS_CUDA_OPTIONS) | grep "force_uvm" | wc -l) )
KOKKOS_INTERNAL_CUDA_USE_RELOC := $( strip $( shell echo $( KOKKOS_CUDA_OPTIONS) | grep "rdc" | wc -l) )
KOKKOS_INTERNAL_CUDA_USE_LAMBDA := $( strip $( shell echo $( KOKKOS_CUDA_OPTIONS) | grep "enable_lambda" | wc -l) )
# Check for Kokkos Host Execution Spaces one of which must be on
KOKKOS_INTERNAL_USE_OPENMP := $( strip $( shell echo $( KOKKOS_DEVICES) | grep OpenMP | wc -l) )
KOKKOS_INTERNAL_USE_PTHREADS := $( strip $( shell echo $( KOKKOS_DEVICES) | grep Pthread | wc -l) )
KOKKOS_INTERNAL_USE_SERIAL := $( strip $( shell echo $( KOKKOS_DEVICES) | grep Serial | wc -l) )
KOKKOS_INTERNAL_USE_QTHREAD := $( strip $( shell echo $( KOKKOS_DEVICES) | grep Qthread | wc -l) )
i f e q ( $( KOKKOS_INTERNAL_USE_OPENMP ) , 0 )
i f e q ( $( KOKKOS_INTERNAL_USE_PTHREADS ) , 0 )
KOKKOS_INTERNAL_USE_SERIAL := 1
e n d i f
e n d i f
2017-01-10 01:39:46 +08:00
# Check for other Execution Spaces
KOKKOS_INTERNAL_USE_CUDA := $( strip $( shell echo $( KOKKOS_DEVICES) | grep Cuda | wc -l) )
i f e q ( $( KOKKOS_INTERNAL_USE_CUDA ) , 1 )
KOKKOS_INTERNAL_NVCC_PATH := $( shell which nvcc)
CUDA_PATH ?= $( KOKKOS_INTERNAL_NVCC_PATH:/bin/nvcc= )
KOKKOS_INTERNAL_COMPILER_NVCC_VERSION := $( shell nvcc --version 2>& 1 | grep release | cut -d' ' -f5 | cut -d',' -f1 | tr -d .)
e n d i f
# Check OS
KOKKOS_OS := $( shell uname -s)
KOKKOS_INTERNAL_OS_CYGWIN := $( shell uname -s | grep CYGWIN | wc -l)
KOKKOS_INTERNAL_OS_LINUX := $( shell uname -s | grep Linux | wc -l)
KOKKOS_INTERNAL_OS_DARWIN := $( shell uname -s | grep Darwin | wc -l)
# Check compiler
2016-09-07 07:06:32 +08:00
KOKKOS_INTERNAL_COMPILER_INTEL := $( shell $( CXX) --version 2>& 1 | grep "Intel Corporation" | wc -l)
KOKKOS_INTERNAL_COMPILER_PGI := $( shell $( CXX) --version 2>& 1 | grep PGI | wc -l)
KOKKOS_INTERNAL_COMPILER_XL := $( shell $( CXX) -qversion 2>& 1 | grep XL | wc -l)
KOKKOS_INTERNAL_COMPILER_CRAY := $( shell $( CXX) -craype-verbose 2>& 1 | grep "CC-" | wc -l)
2017-01-10 01:39:46 +08:00
KOKKOS_INTERNAL_COMPILER_NVCC := $( shell $( CXX) --version 2>& 1 | grep "nvcc" | wc -l)
KOKKOS_INTERNAL_COMPILER_CLANG := $( shell $( CXX) --version 2>& 1 | grep "clang" | wc -l)
i f e q ( $( KOKKOS_INTERNAL_COMPILER_CLANG ) , 2 )
KOKKOS_INTERNAL_COMPILER_CLANG = 1
e n d i f
i f e q ( $( KOKKOS_INTERNAL_COMPILER_XL ) , 2 )
KOKKOS_INTERNAL_COMPILER_XL = 1
e n d i f
i f e q ( $( KOKKOS_INTERNAL_COMPILER_CLANG ) , 1 )
KOKKOS_INTERNAL_COMPILER_CLANG_VERSION := $( shell clang --version | grep version | cut -d ' ' -f3 | tr -d '.' )
ifeq ( $( KOKKOS_INTERNAL_USE_CUDA) , 1)
ifeq ( $( shell test $( KOKKOS_INTERNAL_COMPILER_CLANG_VERSION) -lt 400; echo $$ ?) ,0)
$( error Compiling Cuda code directly with Clang requires version 4.0.0 or higher)
endif
KOKKOS_INTERNAL_CUDA_USE_LAMBDA := 1
endif
e n d i f
2016-09-07 07:06:32 +08:00
i f e q ( $( KOKKOS_INTERNAL_COMPILER_PGI ) , 1 )
KOKKOS_INTERNAL_OPENMP_FLAG := -mp
e l s e
2017-01-10 01:39:46 +08:00
ifeq ( $( KOKKOS_INTERNAL_COMPILER_CLANG) , 1)
KOKKOS_INTERNAL_OPENMP_FLAG := -fopenmp= libomp
2016-09-07 07:06:32 +08:00
else
2017-01-10 01:39:46 +08:00
ifeq ( $( KOKKOS_INTERNAL_COMPILER_XL) , 1)
KOKKOS_INTERNAL_OPENMP_FLAG := -qsmp= omp
2016-09-07 07:06:32 +08:00
else
2017-01-10 01:39:46 +08:00
ifeq ( $( KOKKOS_INTERNAL_COMPILER_CRAY) , 1)
# OpenMP is turned on by default in Cray compiler environment
KOKKOS_INTERNAL_OPENMP_FLAG :=
else
KOKKOS_INTERNAL_OPENMP_FLAG := -fopenmp
endif
2016-09-07 07:06:32 +08:00
endif
endif
e n d i f
i f e q ( $( KOKKOS_INTERNAL_COMPILER_PGI ) , 1 )
KOKKOS_INTERNAL_CXX11_FLAG := --c++11
e l s e
ifeq ( $( KOKKOS_INTERNAL_COMPILER_XL) , 1)
KOKKOS_INTERNAL_CXX11_FLAG := -std= c++11
else
ifeq ( $( KOKKOS_INTERNAL_COMPILER_CRAY) , 1)
KOKKOS_INTERNAL_CXX11_FLAG := -hstd= c++11
else
KOKKOS_INTERNAL_CXX11_FLAG := --std= c++11
2017-01-10 01:39:46 +08:00
KOKKOS_INTERNAL_CXX1Z_FLAG := --std= c++1z
2016-09-07 07:06:32 +08:00
endif
endif
e n d i f
# Check for Kokkos Architecture settings
#Intel based
KOKKOS_INTERNAL_USE_ARCH_KNC := $( strip $( shell echo $( KOKKOS_ARCH) | grep KNC | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_SNB := $( strip $( shell echo $( KOKKOS_ARCH) | grep SNB | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_HSW := $( strip $( shell echo $( KOKKOS_ARCH) | grep HSW | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_BDW := $( strip $( shell echo $( KOKKOS_ARCH) | grep BDW | wc -l) )
2017-01-10 01:39:46 +08:00
KOKKOS_INTERNAL_USE_ARCH_SKX := $( strip $( shell echo $( KOKKOS_ARCH) | grep SKX | wc -l) )
2016-09-07 07:06:32 +08:00
KOKKOS_INTERNAL_USE_ARCH_KNL := $( strip $( shell echo $( KOKKOS_ARCH) | grep KNL | wc -l) )
#NVIDIA based
NVCC_WRAPPER := $( KOKKOS_PATH) /config/nvcc_wrapper
KOKKOS_INTERNAL_USE_ARCH_KEPLER30 := $( strip $( shell echo $( KOKKOS_ARCH) | grep Kepler30 | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_KEPLER32 := $( strip $( shell echo $( KOKKOS_ARCH) | grep Kepler32 | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_KEPLER35 := $( strip $( shell echo $( KOKKOS_ARCH) | grep Kepler35 | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_KEPLER37 := $( strip $( shell echo $( KOKKOS_ARCH) | grep Kepler37 | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_MAXWELL50 := $( strip $( shell echo $( KOKKOS_ARCH) | grep Maxwell50 | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_MAXWELL52 := $( strip $( shell echo $( KOKKOS_ARCH) | grep Maxwell52 | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_MAXWELL53 := $( strip $( shell echo $( KOKKOS_ARCH) | grep Maxwell53 | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_PASCAL61 := $( strip $( shell echo $( KOKKOS_ARCH) | grep Pascal61 | wc -l) )
2017-01-10 01:39:46 +08:00
KOKKOS_INTERNAL_USE_ARCH_PASCAL60 := $( strip $( shell echo $( KOKKOS_ARCH) | grep Pascal60 | wc -l) )
2016-09-07 07:06:32 +08:00
KOKKOS_INTERNAL_USE_ARCH_NVIDIA := $( strip $( shell echo $( KOKKOS_INTERNAL_USE_ARCH_KEPLER30) \
+ $( KOKKOS_INTERNAL_USE_ARCH_KEPLER32) \
+ $( KOKKOS_INTERNAL_USE_ARCH_KEPLER35) \
+ $( KOKKOS_INTERNAL_USE_ARCH_KEPLER37) \
+ $( KOKKOS_INTERNAL_USE_ARCH_PASCAL61) \
2017-01-10 01:39:46 +08:00
+ $( KOKKOS_INTERNAL_USE_ARCH_PASCAL60) \
2016-09-07 07:06:32 +08:00
+ $( KOKKOS_INTERNAL_USE_ARCH_MAXWELL50) \
+ $( KOKKOS_INTERNAL_USE_ARCH_MAXWELL52) \
+ $( KOKKOS_INTERNAL_USE_ARCH_MAXWELL53) | bc) )
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_NVIDIA ) , 0 )
KOKKOS_INTERNAL_USE_ARCH_MAXWELL50 := $( strip $( shell echo $( KOKKOS_ARCH) | grep Maxwell | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_KEPLER35 := $( strip $( shell echo $( KOKKOS_ARCH) | grep Kepler | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_NVIDIA := $( strip $( shell echo $( KOKKOS_INTERNAL_USE_ARCH_KEPLER30) \
+ $( KOKKOS_INTERNAL_USE_ARCH_KEPLER32) \
+ $( KOKKOS_INTERNAL_USE_ARCH_KEPLER35) \
+ $( KOKKOS_INTERNAL_USE_ARCH_KEPLER37) \
+ $( KOKKOS_INTERNAL_USE_ARCH_PASCAL61) \
2017-01-10 01:39:46 +08:00
+ $( KOKKOS_INTERNAL_USE_ARCH_PASCAL60) \
2016-09-07 07:06:32 +08:00
+ $( KOKKOS_INTERNAL_USE_ARCH_MAXWELL50) \
+ $( KOKKOS_INTERNAL_USE_ARCH_MAXWELL52) \
+ $( KOKKOS_INTERNAL_USE_ARCH_MAXWELL53) | bc) )
e n d i f
#ARM based
2017-01-10 01:39:46 +08:00
KOKKOS_INTERNAL_USE_ARCH_ARMV80 := $( strip $( shell echo $( KOKKOS_ARCH) | grep ARMv80 | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_ARMV81 := $( strip $( shell echo $( KOKKOS_ARCH) | grep ARMv81 | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_ARMV8_THUNDERX := $( strip $( shell echo $( KOKKOS_ARCH) | grep ARMv8-ThunderX | wc -l) )
2016-09-07 07:06:32 +08:00
#IBM based
KOKKOS_INTERNAL_USE_ARCH_BGQ := $( strip $( shell echo $( KOKKOS_ARCH) | grep BGQ | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_POWER7 := $( strip $( shell echo $( KOKKOS_ARCH) | grep Power7 | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_POWER8 := $( strip $( shell echo $( KOKKOS_ARCH) | grep Power8 | wc -l) )
KOKKOS_INTERNAL_USE_ARCH_IBM := $( strip $( shell echo $( KOKKOS_INTERNAL_USE_ARCH_BGQ) +$( KOKKOS_INTERNAL_USE_ARCH_POWER7) +$( KOKKOS_INTERNAL_USE_ARCH_POWER8) | bc) )
#AMD based
KOKKOS_INTERNAL_USE_ARCH_AMDAVX := $( strip $( shell echo $( KOKKOS_ARCH) | grep AMDAVX | wc -l) )
#Any AVX?
2017-01-10 01:39:46 +08:00
KOKKOS_INTERNAL_USE_ARCH_AVX := $( strip $( shell echo $( KOKKOS_INTERNAL_USE_ARCH_SNB) +$( KOKKOS_INTERNAL_USE_ARCH_AMDAVX) | bc ) )
KOKKOS_INTERNAL_USE_ARCH_AVX2 := $( strip $( shell echo $( KOKKOS_INTERNAL_USE_ARCH_HSW) +$( KOKKOS_INTERNAL_USE_ARCH_BDW) | bc ) )
KOKKOS_INTERNAL_USE_ARCH_AVX512MIC := $( strip $( shell echo $( KOKKOS_INTERNAL_USE_ARCH_KNL) | bc ) )
KOKKOS_INTERNAL_USE_ARCH_AVX512XEON := $( strip $( shell echo $( KOKKOS_INTERNAL_USE_ARCH_SKX) | bc ) )
2016-09-07 07:06:32 +08:00
# Decide what ISA level we are able to support
2017-01-10 01:39:46 +08:00
KOKKOS_INTERNAL_USE_ISA_X86_64 := $( strip $( shell echo $( KOKKOS_INTERNAL_USE_ARCH_SNB) +$( KOKKOS_INTERNAL_USE_ARCH_HSW) +$( KOKKOS_INTERNAL_USE_ARCH_BDW) +$( KOKKOS_INTERNAL_USE_ARCH_KNL) +$( KOKKOS_INTERNAL_USE_ARCH_SKX) | bc ) )
2016-09-07 07:06:32 +08:00
KOKKOS_INTERNAL_USE_ISA_KNC := $( strip $( shell echo $( KOKKOS_INTERNAL_USE_ARCH_KNC) | bc ) )
KOKKOS_INTERNAL_USE_ISA_POWERPCLE := $( strip $( shell echo $( KOKKOS_INTERNAL_USE_ARCH_POWER8) | bc ) )
#Incompatible flags?
2017-01-10 01:39:46 +08:00
KOKKOS_INTERNAL_USE_ARCH_MULTIHOST := $( strip $( shell echo " $( KOKKOS_INTERNAL_USE_ARCH_AVX) + $( KOKKOS_INTERNAL_USE_ARCH_AVX2) + $( KOKKOS_INTERNAL_USE_ARCH_KNC) + $( KOKKOS_INTERNAL_USE_ARCH_IBM) + $( KOKKOS_INTERNAL_USE_ARCH_AMDAVX) + $( KOKKOS_INTERNAL_USE_ARCH_ARMV80) + $( KOKKOS_INTERNAL_USE_ARCH_ARMV81) + $( KOKKOS_INTERNAL_USE_ARCH_ARMV8_THUNDERX) >1 " | bc ) )
2016-09-07 07:06:32 +08:00
KOKKOS_INTERNAL_USE_ARCH_MULTIGPU := $( strip $( shell echo " $( KOKKOS_INTERNAL_USE_ARCH_NVIDIA) >1 " | bc) )
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_MULTIHOST ) , 1 )
$( error Defined Multiple Host architectures: KOKKOS_ARCH = $( KOKKOS_ARCH) )
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_MULTIGPU ) , 1 )
$( error Defined Multiple GPU architectures: KOKKOS_ARCH = $( KOKKOS_ARCH) )
e n d i f
#Generating the list of Flags
KOKKOS_CPPFLAGS = -I./ -I$( KOKKOS_PATH) /core/src -I$( KOKKOS_PATH) /containers/src -I$( KOKKOS_PATH) /algorithms/src
# No warnings:
KOKKOS_CXXFLAGS =
# INTEL and CLANG warnings:
#KOKKOS_CXXFLAGS = -Wall -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wuninitialized
# GCC warnings:
#KOKKOS_CXXFLAGS = -Wall -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wuninitialized -Wignored-qualifiers -Wempty-body -Wclobbered
KOKKOS_LIBS = -lkokkos -ldl
KOKKOS_LDFLAGS = -L$( shell pwd )
KOKKOS_SRC =
KOKKOS_HEADERS =
#Generating the KokkosCore_config.h file
tmp := $( shell echo "/* ---------------------------------------------" > KokkosCore_config.tmp)
tmp := $( shell echo "Makefile constructed configuration:" >> KokkosCore_config.tmp)
tmp := $( shell date >> KokkosCore_config.tmp)
tmp := $( shell echo "----------------------------------------------*/" >> KokkosCore_config.tmp)
tmp := $( shell echo "/* Execution Spaces */" >> KokkosCore_config.tmp)
i f e q ( $( KOKKOS_INTERNAL_USE_OPENMP ) , 1 )
tmp := $( shell echo '\#define KOKKOS_HAVE_OPENMP 1' >> KokkosCore_config.tmp)
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_PTHREADS ) , 1 )
tmp := $( shell echo "\#define KOKKOS_HAVE_PTHREAD 1" >> KokkosCore_config.tmp )
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_SERIAL ) , 1 )
tmp := $( shell echo "\#define KOKKOS_HAVE_SERIAL 1" >> KokkosCore_config.tmp )
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_CUDA ) , 1 )
tmp := $( shell echo "\#define KOKKOS_HAVE_CUDA 1" >> KokkosCore_config.tmp )
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_ISA_X 86_ 64) , 1 )
2017-01-10 01:39:46 +08:00
tmp := $( shell echo "\#ifndef __CUDA_ARCH__" >> KokkosCore_config.tmp )
2016-09-07 07:06:32 +08:00
tmp := $( shell echo "\#define KOKKOS_USE_ISA_X86_64" >> KokkosCore_config.tmp )
2017-01-10 01:39:46 +08:00
tmp := $( shell echo "\#endif" >> KokkosCore_config.tmp )
2016-09-07 07:06:32 +08:00
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_ISA_KNC ) , 1 )
2017-01-10 01:39:46 +08:00
tmp := $( shell echo "\#ifndef __CUDA_ARCH__" >> KokkosCore_config.tmp )
2016-09-07 07:06:32 +08:00
tmp := $( shell echo "\#define KOKKOS_USE_ISA_KNC" >> KokkosCore_config.tmp )
2017-01-10 01:39:46 +08:00
tmp := $( shell echo "\#endif" >> KokkosCore_config.tmp )
2016-09-07 07:06:32 +08:00
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_ISA_POWERPCLE ) , 1 )
2017-01-10 01:39:46 +08:00
tmp := $( shell echo "\#ifndef __CUDA_ARCH__" >> KokkosCore_config.tmp )
2016-09-07 07:06:32 +08:00
tmp := $( shell echo "\#define KOKKOS_USE_ISA_POWERPCLE" >> KokkosCore_config.tmp )
2017-01-10 01:39:46 +08:00
tmp := $( shell echo "\#endif" >> KokkosCore_config.tmp )
2016-09-07 07:06:32 +08:00
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_QTHREAD ) , 1 )
KOKKOS_CPPFLAGS += -I$( QTHREAD_PATH) /include
KOKKOS_LDFLAGS += -L$( QTHREAD_PATH) /lib
tmp := $( shell echo "\#define KOKKOS_HAVE_QTHREAD 1" >> KokkosCore_config.tmp )
e n d i f
tmp := $( shell echo "/* General Settings */" >> KokkosCore_config.tmp)
i f e q ( $( KOKKOS_INTERNAL_ENABLE_CXX 11) , 1 )
KOKKOS_CXXFLAGS += $( KOKKOS_INTERNAL_CXX11_FLAG)
tmp := $( shell echo "\#define KOKKOS_HAVE_CXX11 1" >> KokkosCore_config.tmp )
e n d i f
2017-01-10 01:39:46 +08:00
i f e q ( $( KOKKOS_INTERNAL_ENABLE_CXX 1Z ) , 1 )
KOKKOS_CXXFLAGS += $( KOKKOS_INTERNAL_CXX1Z_FLAG)
tmp := $( shell echo "\#define KOKKOS_HAVE_CXX11 1" >> KokkosCore_config.tmp )
tmp := $( shell echo "\#define KOKKOS_HAVE_CXX1Z 1" >> KokkosCore_config.tmp )
e n d i f
2016-09-07 07:06:32 +08:00
i f e q ( $( KOKKOS_INTERNAL_ENABLE_DEBUG ) , 1 )
2017-01-10 01:39:46 +08:00
i f e q ( $( KOKKOS_INTERNAL_COMPILER_NVCC ) , 1 )
KOKKOS_CXXFLAGS += -lineinfo
2016-09-07 07:06:32 +08:00
e n d i f
KOKKOS_CXXFLAGS += -g
KOKKOS_LDFLAGS += -g -ldl
tmp := $( shell echo "\#define KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK 1" >> KokkosCore_config.tmp )
tmp := $( shell echo "\#define KOKKOS_HAVE_DEBUG 1" >> KokkosCore_config.tmp )
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_HWLOC ) , 1 )
KOKKOS_CPPFLAGS += -I$( HWLOC_PATH) /include
KOKKOS_LDFLAGS += -L$( HWLOC_PATH) /lib
KOKKOS_LIBS += -lhwloc
tmp := $( shell echo "\#define KOKKOS_HAVE_HWLOC 1" >> KokkosCore_config.tmp )
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_LIBRT ) , 1 )
tmp := $( shell echo "\#define KOKKOS_USE_LIBRT 1" >> KokkosCore_config.tmp )
tmp := $( shell echo "\#define PREC_TIMER 1" >> KokkosCore_config.tmp )
tmp := $( shell echo "\#define KOKKOSP_ENABLE_RTLIB 1" >> KokkosCore_config.tmp )
KOKKOS_LIBS += -lrt
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_MEMKIND ) , 1 )
KOKKOS_CPPFLAGS += -I$( MEMKIND_PATH) /include
KOKKOS_LDFLAGS += -L$( MEMKIND_PATH) /lib
KOKKOS_LIBS += -lmemkind
tmp := $( shell echo "\#define KOKKOS_HAVE_HBWSPACE 1" >> KokkosCore_config.tmp )
e n d i f
i f e q ( $( KOKKOS_INTERNAL_DISABLE_PROFILING ) , 1 )
tmp := $( shell echo "\#define KOKKOS_ENABLE_PROFILING 0" >> KokkosCore_config.tmp )
e n d i f
tmp := $( shell echo "/* Optimization Settings */" >> KokkosCore_config.tmp)
i f e q ( $( KOKKOS_INTERNAL_OPT_RANGE_AGGRESSIVE_VECTORIZATION ) , 1 )
tmp := $( shell echo "\#define KOKKOS_OPT_RANGE_AGGRESSIVE_VECTORIZATION 1" >> KokkosCore_config.tmp )
e n d i f
tmp := $( shell echo "/* Cuda Settings */" >> KokkosCore_config.tmp)
2017-01-10 01:39:46 +08:00
i f e q ( $( KOKKOS_INTERNAL_USE_CUDA ) , 1 )
2016-09-07 07:06:32 +08:00
i f e q ( $( KOKKOS_INTERNAL_CUDA_USE_LDG ) , 1 )
tmp := $( shell echo "\#define KOKKOS_CUDA_USE_LDG_INTRINSIC 1" >> KokkosCore_config.tmp )
e n d i f
i f e q ( $( KOKKOS_INTERNAL_CUDA_USE_UVM ) , 1 )
tmp := $( shell echo "\#define KOKKOS_CUDA_USE_UVM 1" >> KokkosCore_config.tmp )
2017-01-10 01:39:46 +08:00
tmp := $( shell echo "\#define KOKKOS_USE_CUDA_UVM 1" >> KokkosCore_config.tmp )
2016-09-07 07:06:32 +08:00
e n d i f
i f e q ( $( KOKKOS_INTERNAL_CUDA_USE_RELOC ) , 1 )
tmp := $( shell echo "\#define KOKKOS_CUDA_USE_RELOCATABLE_DEVICE_CODE 1" >> KokkosCore_config.tmp )
KOKKOS_CXXFLAGS += --relocatable-device-code= true
KOKKOS_LDFLAGS += --relocatable-device-code= true
e n d i f
i f e q ( $( KOKKOS_INTERNAL_CUDA_USE_LAMBDA ) , 1 )
2017-01-10 01:39:46 +08:00
ifeq ( $( KOKKOS_INTERNAL_COMPILER_NVCC) , 1)
ifeq ( $( shell test $( KOKKOS_INTERNAL_COMPILER_NVCC_VERSION) -gt 70; echo $$ ?) ,0)
tmp := $( shell echo "\#define KOKKOS_CUDA_USE_LAMBDA 1" >> KokkosCore_config.tmp )
KOKKOS_CXXFLAGS += -expt-extended-lambda
else
$( warning Warning: Cuda Lambda support was requested but NVCC version is too low. This requires NVCC for Cuda version 7.5 or higher. Disabling Lambda support now.)
endif
endif
ifeq ( $( KOKKOS_INTERNAL_COMPILER_CLANG) , 1)
tmp := $( shell echo "\#define KOKKOS_CUDA_USE_LAMBDA 1" >> KokkosCore_config.tmp )
endif
e n d i f
2016-09-07 07:06:32 +08:00
e n d i f
#Add Architecture flags
2017-01-10 01:39:46 +08:00
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_ARMV 80) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_ARMV80 1" >> KokkosCore_config.tmp )
ifeq ( $( KOKKOS_INTERNAL_COMPILER_CRAY) , 1)
KOKKOS_CXXFLAGS +=
KOKKOS_LDFLAGS +=
else
ifeq ( $( KOKKOS_INTERNAL_COMPILER_PGI) , 1)
KOKKOS_CXXFLAGS +=
KOKKOS_LDFLAGS +=
else
KOKKOS_CXXFLAGS += -march= armv8-a
KOKKOS_LDFLAGS += -march= armv8-a
endif
endif
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_ARMV 81) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_ARMV81 1" >> KokkosCore_config.tmp )
ifeq ( $( KOKKOS_INTERNAL_COMPILER_CRAY) , 1)
KOKKOS_CXXFLAGS +=
KOKKOS_LDFLAGS +=
else
ifeq ( $( KOKKOS_INTERNAL_COMPILER_PGI) , 1)
KOKKOS_CXXFLAGS +=
KOKKOS_LDFLAGS +=
else
KOKKOS_CXXFLAGS += -march= armv8.1-a
KOKKOS_LDFLAGS += -march= armv8.1-a
endif
endif
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_ARMV 8_THUNDERX ) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_ARMV80 1" >> KokkosCore_config.tmp )
tmp := $( shell echo "\#define KOKKOS_ARCH_ARMV8_THUNDERX 1" >> KokkosCore_config.tmp )
2016-09-07 07:06:32 +08:00
ifeq ( $( KOKKOS_INTERNAL_COMPILER_CRAY) , 1)
KOKKOS_CXXFLAGS +=
KOKKOS_LDFLAGS +=
2017-01-10 01:39:46 +08:00
else
ifeq ( $( KOKKOS_INTERNAL_COMPILER_PGI) , 1)
KOKKOS_CXXFLAGS +=
KOKKOS_LDFLAGS +=
else
KOKKOS_CXXFLAGS += -march= armv8-a -mtune= thunderx
KOKKOS_LDFLAGS += -march= armv8-a -mtune= thunderx
endif
2016-09-07 07:06:32 +08:00
endif
e n d i f
2017-01-10 01:39:46 +08:00
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_AVX ) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_AVX 1" >> KokkosCore_config.tmp )
ifeq ( $( KOKKOS_INTERNAL_COMPILER_INTEL) , 1)
KOKKOS_CXXFLAGS += -mavx
KOKKOS_LDFLAGS += -mavx
else
ifeq ( $( KOKKOS_INTERNAL_COMPILER_CRAY) , 1)
else
ifeq ( $( KOKKOS_INTERNAL_COMPILER_PGI) , 1)
KOKKOS_CXXFLAGS += -tp= sandybridge
KOKKOS_LDFLAGS += -tp= sandybridge
else
# Assume that this is a really a GNU compiler
KOKKOS_CXXFLAGS += -mavx
KOKKOS_LDFLAGS += -mavx
endif
endif
endif
e n d i f
2016-09-07 07:06:32 +08:00
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_POWER 8) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_POWER8 1" >> KokkosCore_config.tmp )
2017-01-10 01:39:46 +08:00
ifeq ( $( KOKKOS_INTERNAL_COMPILER_PGI) , 1)
else
# Assume that this is a really a GNU compiler or it could be XL on P8
KOKKOS_CXXFLAGS += -mcpu= power8 -mtune= power8
KOKKOS_LDFLAGS += -mcpu= power8 -mtune= power8
endif
2016-09-07 07:06:32 +08:00
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_AVX 2) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_AVX2 1" >> KokkosCore_config.tmp )
ifeq ( $( KOKKOS_INTERNAL_COMPILER_INTEL) , 1)
KOKKOS_CXXFLAGS += -xCORE-AVX2
KOKKOS_LDFLAGS += -xCORE-AVX2
else
ifeq ( $( KOKKOS_INTERNAL_COMPILER_CRAY) , 1)
else
ifeq ( $( KOKKOS_INTERNAL_COMPILER_PGI) , 1)
2017-01-10 01:39:46 +08:00
KOKKOS_CXXFLAGS += -tp= haswell
KOKKOS_LDFLAGS += -tp= haswell
2016-09-07 07:06:32 +08:00
else
# Assume that this is a really a GNU compiler
KOKKOS_CXXFLAGS += -march= core-avx2 -mtune= core-avx2
KOKKOS_LDFLAGS += -march= core-avx2 -mtune= core-avx2
endif
endif
endif
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_AVX 512MIC ) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_AVX512MIC 1" >> KokkosCore_config.tmp )
ifeq ( $( KOKKOS_INTERNAL_COMPILER_INTEL) , 1)
KOKKOS_CXXFLAGS += -xMIC-AVX512
KOKKOS_LDFLAGS += -xMIC-AVX512
else
ifeq ( $( KOKKOS_INTERNAL_COMPILER_CRAY) , 1)
else
ifeq ( $( KOKKOS_INTERNAL_COMPILER_PGI) , 1)
else
# Asssume that this is really a GNU compiler
KOKKOS_CXXFLAGS += -march= knl
KOKKOS_LDFLAGS += -march= knl
endif
endif
endif
e n d i f
2017-01-10 01:39:46 +08:00
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_AVX 512XEON ) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_AVX512XEON 1" >> KokkosCore_config.tmp )
ifeq ( $( KOKKOS_INTERNAL_COMPILER_INTEL) , 1)
KOKKOS_CXXFLAGS += -xCORE-AVX512
KOKKOS_LDFLAGS += -xCORE-AVX512
else
ifeq ( $( KOKKOS_INTERNAL_COMPILER_CRAY) , 1)
else
ifeq ( $( KOKKOS_INTERNAL_COMPILER_PGI) , 1)
else
# Nothing here yet
KOKKOS_CXXFLAGS += -march= skylake-avx512
KOKKOS_LDFLAGS += -march= skylake-avx512
endif
endif
endif
e n d i f
2016-09-07 07:06:32 +08:00
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_KNC ) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_KNC 1" >> KokkosCore_config.tmp )
KOKKOS_CXXFLAGS += -mmic
KOKKOS_LDFLAGS += -mmic
e n d i f
2017-01-10 01:39:46 +08:00
#Figure out the architecture flag for Cuda
2016-09-07 07:06:32 +08:00
i f e q ( $( KOKKOS_INTERNAL_USE_CUDA ) , 1 )
2017-01-10 01:39:46 +08:00
i f e q ( $( KOKKOS_INTERNAL_COMPILER_NVCC ) , 1 )
KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG = -arch
e n d i f
i f e q ( $( KOKKOS_INTERNAL_COMPILER_CLANG ) , 1 )
KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG = -x cuda --cuda-gpu-arch
e n d i f
2016-09-07 07:06:32 +08:00
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_KEPLER 30) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_KEPLER 1" >> KokkosCore_config.tmp )
tmp := $( shell echo "\#define KOKKOS_ARCH_KEPLER30 1" >> KokkosCore_config.tmp )
2017-01-10 01:39:46 +08:00
KOKKOS_CXXFLAGS += $( KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG) = sm_30
2016-09-07 07:06:32 +08:00
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_KEPLER 32) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_KEPLER 1" >> KokkosCore_config.tmp )
tmp := $( shell echo "\#define KOKKOS_ARCH_KEPLER32 1" >> KokkosCore_config.tmp )
2017-01-10 01:39:46 +08:00
KOKKOS_CXXFLAGS += $( KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG) = sm_32
2016-09-07 07:06:32 +08:00
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_KEPLER 35) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_KEPLER 1" >> KokkosCore_config.tmp )
tmp := $( shell echo "\#define KOKKOS_ARCH_KEPLER35 1" >> KokkosCore_config.tmp )
2017-01-10 01:39:46 +08:00
KOKKOS_CXXFLAGS += $( KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG) = sm_35
2016-09-07 07:06:32 +08:00
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_KEPLER 37) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_KEPLER 1" >> KokkosCore_config.tmp )
tmp := $( shell echo "\#define KOKKOS_ARCH_KEPLER37 1" >> KokkosCore_config.tmp )
2017-01-10 01:39:46 +08:00
KOKKOS_CXXFLAGS += $( KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG) = sm_37
2016-09-07 07:06:32 +08:00
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_MAXWELL 50) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_MAXWELL 1" >> KokkosCore_config.tmp )
tmp := $( shell echo "\#define KOKKOS_ARCH_MAXWELL50 1" >> KokkosCore_config.tmp )
2017-01-10 01:39:46 +08:00
KOKKOS_CXXFLAGS += $( KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG) = sm_50
2016-09-07 07:06:32 +08:00
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_MAXWELL 52) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_MAXWELL 1" >> KokkosCore_config.tmp )
tmp := $( shell echo "\#define KOKKOS_ARCH_MAXWELL52 1" >> KokkosCore_config.tmp )
2017-01-10 01:39:46 +08:00
KOKKOS_CXXFLAGS += $( KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG) = sm_52
2016-09-07 07:06:32 +08:00
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_MAXWELL 53) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_MAXWELL 1" >> KokkosCore_config.tmp )
tmp := $( shell echo "\#define KOKKOS_ARCH_MAXWELL53 1" >> KokkosCore_config.tmp )
2017-01-10 01:39:46 +08:00
KOKKOS_CXXFLAGS += $( KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG) = sm_53
2016-09-07 07:06:32 +08:00
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_PASCAL 61) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_PASCAL 1" >> KokkosCore_config.tmp )
tmp := $( shell echo "\#define KOKKOS_ARCH_PASCAL61 1" >> KokkosCore_config.tmp )
2017-01-10 01:39:46 +08:00
KOKKOS_CXXFLAGS += $( KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG) = sm_61
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_ARCH_PASCAL 60) , 1 )
tmp := $( shell echo "\#define KOKKOS_ARCH_PASCAL 1" >> KokkosCore_config.tmp )
tmp := $( shell echo "\#define KOKKOS_ARCH_PASCAL60 1" >> KokkosCore_config.tmp )
KOKKOS_CXXFLAGS += $( KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG) = sm_60
2016-09-07 07:06:32 +08:00
e n d i f
e n d i f
KOKKOS_INTERNAL_LS_CONFIG := $( shell ls KokkosCore_config.h)
i f e q ( $( KOKKOS_INTERNAL_LS_CONFIG ) , K o k k o s C o r e _ c o n f i g . h )
KOKKOS_INTERNAL_NEW_CONFIG := $( strip $( shell diff KokkosCore_config.h KokkosCore_config.tmp | grep define | wc -l) )
e l s e
KOKKOS_INTERNAL_NEW_CONFIG := 1
e n d i f
i f n e q ( $( KOKKOS_INTERNAL_NEW_CONFIG ) , 0 )
tmp := $( shell cp KokkosCore_config.tmp KokkosCore_config.h)
e n d i f
KOKKOS_HEADERS += $( wildcard $( KOKKOS_PATH) /core/src/*.hpp)
KOKKOS_HEADERS += $( wildcard $( KOKKOS_PATH) /core/src/impl/*.hpp)
KOKKOS_HEADERS += $( wildcard $( KOKKOS_PATH) /containers/src/*.hpp)
KOKKOS_HEADERS += $( wildcard $( KOKKOS_PATH) /containers/src/impl/*.hpp)
KOKKOS_HEADERS += $( wildcard $( KOKKOS_PATH) /algorithms/src/*.hpp)
KOKKOS_SRC += $( wildcard $( KOKKOS_PATH) /core/src/impl/*.cpp)
KOKKOS_SRC += $( wildcard $( KOKKOS_PATH) /containers/src/impl/*.cpp)
i f e q ( $( KOKKOS_INTERNAL_USE_CUDA ) , 1 )
KOKKOS_SRC += $( wildcard $( KOKKOS_PATH) /core/src/Cuda/*.cpp)
KOKKOS_HEADERS += $( wildcard $( KOKKOS_PATH) /core/src/Cuda/*.hpp)
2017-01-10 01:39:46 +08:00
KOKKOS_CXXFLAGS += -I$( CUDA_PATH) /include
2016-09-07 07:06:32 +08:00
KOKKOS_LDFLAGS += -L$( CUDA_PATH) /lib64
KOKKOS_LIBS += -lcudart -lcuda
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_PTHREADS ) , 1 )
KOKKOS_LIBS += -lpthread
KOKKOS_SRC += $( wildcard $( KOKKOS_PATH) /core/src/Threads/*.cpp)
KOKKOS_HEADERS += $( wildcard $( KOKKOS_PATH) /core/src/Threads/*.hpp)
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_QTHREAD ) , 1 )
KOKKOS_LIBS += -lqthread
KOKKOS_SRC += $( wildcard $( KOKKOS_PATH) /core/src/Qthread/*.cpp)
KOKKOS_HEADERS += $( wildcard $( KOKKOS_PATH) /core/src/Qthread/*.hpp)
e n d i f
i f e q ( $( KOKKOS_INTERNAL_USE_OPENMP ) , 1 )
KOKKOS_SRC += $( wildcard $( KOKKOS_PATH) /core/src/OpenMP/*.cpp)
KOKKOS_HEADERS += $( wildcard $( KOKKOS_PATH) /core/src/OpenMP/*.hpp)
2017-01-10 01:39:46 +08:00
ifeq ( $( KOKKOS_INTERNAL_COMPILER_NVCC) , 1)
2016-09-07 07:06:32 +08:00
KOKKOS_CXXFLAGS += -Xcompiler $( KOKKOS_INTERNAL_OPENMP_FLAG)
else
KOKKOS_CXXFLAGS += $( KOKKOS_INTERNAL_OPENMP_FLAG)
endif
KOKKOS_LDFLAGS += $( KOKKOS_INTERNAL_OPENMP_FLAG)
e n d i f
2017-01-10 01:39:46 +08:00
#Explicitly set the GCC Toolchain for Clang
i f e q ( $( KOKKOS_INTERNAL_COMPILER_CLANG ) , 1 )
KOKKOS_INTERNAL_GCC_PATH = $( shell which g++)
KOKKOS_INTERNAL_GCC_TOOLCHAIN = $( KOKKOS_INTERNAL_GCC_PATH:/bin/g++= )
KOKKOS_CXXFLAGS += --gcc-toolchain= $( KOKKOS_INTERNAL_GCC_TOOLCHAIN) -DKOKKOS_CUDA_CLANG_WORKAROUND -DKOKKOS_CUDA_USE_LDG_INTRINSIC
KOKKOS_LDFLAGS += --gcc-toolchain= $( KOKKOS_INTERNAL_GCC_TOOLCHAIN)
e n d i f
2016-09-07 07:06:32 +08:00
#With Cygwin functions such as fdopen and fileno are not defined
#when strict ansi is enabled. strict ansi gets enabled with --std=c++11
#though. So we hard undefine it here. Not sure if that has any bad side effects
#This is needed for gtest actually, not for Kokkos itself!
i f e q ( $( KOKKOS_INTERNAL_OS_CYGWIN ) , 1 )
KOKKOS_CXXFLAGS += -U__STRICT_ANSI__
e n d i f
# Setting up dependencies
KokkosCore_config.h :
KOKKOS_CPP_DEPENDS := KokkosCore_config.h $( KOKKOS_HEADERS)
KOKKOS_OBJ = $( KOKKOS_SRC:.cpp= .o)
KOKKOS_OBJ_LINK = $( notdir $( KOKKOS_OBJ) )
i n c l u d e $( KOKKOS_PATH ) / M a k e f i l e . t a r g e t s
kokkos-clean :
2017-01-10 01:39:46 +08:00
rm -f $( KOKKOS_OBJ_LINK) KokkosCore_config.h KokkosCore_config.tmp libkokkos.a
2016-09-07 07:06:32 +08:00
libkokkos.a : $( KOKKOS_OBJ_LINK ) $( KOKKOS_SRC ) $( KOKKOS_HEADERS )
ar cr libkokkos.a $( KOKKOS_OBJ_LINK)
ranlib libkokkos.a
KOKKOS_LINK_DEPENDS = libkokkos.a