1# -*- mode: makefile -*- 2# 3 4ifeq ($(RM),true) 5.SECONDARY: $(%.o) $(%f.o) $(%f90.o) 6endif 7 8LINK.c = $(CLINKER) $(PCC_FLAGS) $(PFLAGS) $(CCPPFLAGS) $(LDFLAGS) 9LINK.o = $(CLINKER) $(LDFLAGS) 10LINK.F = $(FLINKER) $(FC_FLAGS) $(FFLAGS) $(FCPPFLAGS) $(LDFLAGS) 11LINK.cc = $(CXXLINKER) $(CXX_FLAGS) $(CXXFLAGS) $(CXXCPPFLAGS) $(LDFLAGS) 12ifneq ($(KOKKOS_USE_CUDA_COMPILER),) 13 # Kokkos requires nvcc to be in PATH and the C++ compiler to be given in an environmental variable 14 LINK.kokkos.cxx = PATH=$(PATH):`dirname $(CUDAC)` NVCC_WRAPPER_DEFAULT_COMPILER=$(CUDA_CXX) $(KOKKOS_BIN)/nvcc_wrapper --expt-extended-lambda $(CUDAC_FLAGS) $(MPICXX_INCLUDES) ${PETSC_CCPPFLAGS} $(CUDA_CXXFLAGS) $(CUDACPPFLAGS) $(CXX_LINKER_FLAGS) $(CUDA_CXXLIBS) $(MPICXX_LIBS) $(LDFLAGS) 15else ifneq ($(KOKKOS_USE_HIP_COMPILER),) 16 LINK.kokkos.cxx = $(HIPC) $(HIPC_FLAGS) $(CXXFLAGS) $(CXXCPPFLAGS) $(LDFLAGS) $(MPICXX_INCLUDES) $(MPICXX_LIBS) 17else 18 LINK.kokkos.cxx = $(CXXLINKER) $(CXX_FLAGS) $(CXXFLAGS) $(CXXCPPFLAGS) $(LDFLAGS) 19endif 20 21LDLIBS += $(PETSC_LIB) 22 23% : %.F90 24 $(LINK.F) $^ $(LOADLIBES) $(LDLIBS) -o $@ 25% : %.kokkos.cxx 26 $(LINK.kokkos.cxx) $^ $(LOADLIBES) $(LDLIBS) -o $@ 27% : %.cxx 28 $(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@ 29 30ifneq (,$(findstring -TP,$(PCC_FLAGS))) 31% : %.c 32 ${PETSC_COMPILE_SINGLE} `pwd`/$< 33 ${CLINKER} -o $@ $@.o $(PETSC_LIB) 34endif 35 36include ${PETSC_DIR}/lib/petsc/conf/test.common 37