xref: /petsc/lib/petsc/conf/test (revision a6f03b2cfb01b79a0375d4b4e78f75e18dd6b346)
1# -*- mode: makefile -*-
2#
3
4ifeq ($(RM),true)
5.SECONDARY: $(%.o) $(%f.o) $(%f90.o)
6endif
7
8LINK.c = $(CLINKER) $(PCC_FLAGS) $($(CLANGUAGE)FLAGS) $(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) $(CUDA_CXXLIBS) $(MPICXX_LIBS) $(LDFLAGS)
15else ifneq ($(KOKKOS_USE_HIP_COMPILER),)
16  LINK.kokkos.cxx = $(HIPC)  $(HIPC_FLAGS)  $(HIPPP_FLAGS)  $(HIPOPTFLAGS)  $(CXXFLAGS) $(CXXCPPFLAGS) $(LDFLAGS) $(MPICXX_INCLUDES) $(MPICXX_LIBS)
17else ifneq ($(KOKKOS_USE_SYCL_COMPILER),)
18  LINK.kokkos.cxx = $(SYCLC) $(SYCLC_FLAGS) $(SYCLPP_FLAGS) $(SYCLOPTFLAGS) $(CXXFLAGS) $(CXXCPPFLAGS) $(LDFLAGS) $(MPICXX_INCLUDES) $(MPICXX_LIBS)
19else
20  LINK.kokkos.cxx = $(CXXLINKER) $(CXX_FLAGS) $(CXXFLAGS) $(CXXCPPFLAGS) $(LDFLAGS)
21endif
22
23ifneq ($(RAJA_USE_CUDA_COMPILER),)
24  PETSC_RAJACOMPILE_SINGLE  = ${CUDAC} -o $*.o $(MPICXX_INCLUDES) ${CUDAC_FLAGS} ${CUFLAGS} -x cu -Xcudafe "--display_error_number" -c --compiler-options="${PETSC_CCPPFLAGS} ${PETSC_CC_INCLUDES} ${CUDA_CXXFLAGS}" --expt-extended-lambda --expt-relaxed-constexpr
25else
26    PETSC_RAJACOMPILE_SINGLE = ${CXX} -o $*.o -c ${CXX_FLAGS} ${CXXFLAGS} ${CXXCPPFLAGS}
27endif
28
29LDLIBS += $(PETSC_LIB)
30
31% : %.F90
32	$(LINK.F) $^ $(LOADLIBES) $(LDLIBS) -o $@
33% : %.kokkos.cxx
34	$(LINK.kokkos.cxx) $^ $(LOADLIBES) $(LDLIBS) -o $@
35% : %.cxx
36	$(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@
37
38ifneq (,$(findstring -TP,$(PCC_FLAGS)))
39% : %.c
40	${PETSC_COMPILE_SINGLE} `pwd`/$<
41	${CLINKER} -o $@ $@.o  $(PETSC_LIB)
42endif
43
44include ${PETSC_DIR}/lib/petsc/conf/test.common
45