1# -*- mode: makefile-gmake -*- 2# 3# This turns off any environmental variables for flags to not be used during the build process. 4# Put them in the makefile or use make CFLAGS=xxx yyy 5# 6ifeq ($(origin CFLAGS),environment) 7CFLAGS = 8endif 9ifeq ($(origin CPPFLAGS),environment) 10CPPFLAGS = 11endif 12ifeq ($(origin CXXFLAGS),environment) 13CXXFLAGS = 14endif 15ifeq ($(origin CXXPPFLAGS),environment) 16CXXPPFLAGS = 17endif 18ifeq ($(origin FFLAGS),environment) 19FFLAGS = 20endif 21ifeq ($(origin CUDAFLAGS),environment) 22CUDAFLAGS = 23endif 24ifeq ($(origin CUDAPPFLAGS),environment) 25CUDAPPFLAGS = 26endif 27ifeq ($(origin HIPFLAGS),environment) 28HIPFLAGS = 29endif 30ifeq ($(origin HIPPPFLAGS),environment) 31HIPPFLAGS = 32endif 33ifeq ($(origin SYCLFLAGS),environment) 34SYCLFLAGS = 35endif 36ifeq ($(origin SYCLPPFLAGS),environment) 37SYCLPPFLAGS = 38endif 39ifeq ($(origin LDFLAGS),environment) 40LDFLAGS = 41endif 42 43# The following variables specify PETSc related compiler info 44# 45# It may be included in users makefiles (with include ${PETSC_DIR}/lib/petsc/conf/variables) 46# The makefile can then use the variable values for their own rules to build executables 47# See https://petsc.org/release/docs/manual/getting_started/#writing-c-c-or-fortran-applications 48# 49# PETSC_LIB_DIR - (defined from $PETSC_DIR) determines where the PETSc libraries are built. 50# PETSC_CC_INCLUDES - locations of include files 51# PETSC_[C,F]CPPFLAGS - preprocessor flags for *.c, *.F preprocessing 52# PETSC_[C,F]SH_LIB_PATH - linker_add_sh_lib_path:sh_lib_path pairs for all the shared library locations 53# 54PETSC_LIB_DIR = ${PETSC_DIR}/${PETSC_ARCH}/lib 55PETSCCONF_H = ${PETSC_DIR}/${PETSC_ARCH}/include/petscconf.h 56 57PETSC_CCPPFLAGS = ${PETSC_CC_INCLUDES} ${PETSCFLAGS} ${${CLANGUAGE}PP_FLAGS} ${${CLANGUAGE}PPFLAGS} 58PETSC_CXXCPPFLAGS = ${PETSC_CC_INCLUDES} ${PETSCFLAGS} ${CXXPP_FLAGS} ${CXXPPFLAGS} 59PETSC_FCPPFLAGS = ${PETSC_FC_INCLUDES} ${PETSCFLAGS} ${FPP_FLAGS} ${FPPFLAGS} 60PETSC_CUDACPPFLAGS = ${CUDAPP_FLAGS} ${CUDAPPFLAGS} 61PETSC_C_SH_LIB_PATH = ${CC_LINKER_SLFLAG}${PETSC_LIB_DIR} 62PETSC_F_SH_LIB_PATH = ${FC_LINKER_SLFLAG}${PETSC_LIB_DIR} 63# 64# The following variables are used by PETSc build targets. 65# 66# INSTALL_LIB_DIR - the location where the libraries are built. 67# [C,F]CPPFLAGS - preprocessor flags for *.c, *.F preprocessing 68# [C,F]_SH_LIB_PATH - linker_add_sh_lib_path:sh_lib_path pairs for all the shared library locations 69# 70INSTALL_LIB_DIR = ${PETSC_LIB_DIR} 71CCPPFLAGS = ${PETSC_CCPPFLAGS} 72CXXCPPFLAGS = ${PETSC_CXXCPPFLAGS} 73FCPPFLAGS = ${PETSC_FCPPFLAGS} 74CUDACPPFLAGS = ${PETSC_CUDACPPFLAGS} 75C_SH_LIB_PATH = ${PETSC_C_SH_LIB_PATH} 76F_SH_LIB_PATH = ${PETSC_F_SH_LIB_PATH} 77# The user interface at configure and make is to accept CXXPPFLAGS as option, and saves it as 78# CXXPP_FLAGS in petscvariables. Then lib/petsc/conf/variables sets up CXXCPPFLAGS to include 79# both CXXPPFLAGS and CXXPP_FLAGS. Users are able to use 'make CXXPPFLAGS=val' to add additional 80# flags to CXXCPPFLAGS via CXXPPFLAGS, and CXXCPPFLAGS is now used in compile targets. 81# Similar for other compiler/preprocessor flags. 82 83# 84# The following variables define PETSc compile procedures 85# 86PETSC_COMPILE_SINGLE = ${PCC} -o $@ -c ${PCC_FLAGS} ${${CLANGUAGE}FLAGS} ${CCPPFLAGS} 87PETSC_CCOMPILE_SINGLE = ${CC} -o $@ -c ${CC_FLAGS} ${CFLAGS} ${CPPFLAGS} 88PETSC_CXXCOMPILE_SINGLE = ${CXX} -o $@ -c ${CXX_FLAGS} ${CXXFLAGS} ${CXXCPPFLAGS} 89PETSC_FCOMPILE_SINGLE = ${FC} -o $@ -c ${FC_FLAGS} ${FFLAGS} ${FCPPFLAGS} 90PETSC_CUCOMPILE_SINGLE = ${CUDAC} -o $@ -c $(MPICXX_INCLUDES) ${CUDAC_FLAGS} ${CUDAFLAGS} ${CUDAC_HOSTFLAGS} ${CUDACPPFLAGS} --compiler-options=\"${CXXCPPFLAGS}\" 91PETSC_HIPCOMPILE_SINGLE = ${HIPC} -o $@ $(MPICXX_INCLUDES) -c $(HIPC_FLAGS) $(HIPPP_FLAGS) $(HIPFLAGS) $(HIPPPFLAGS) $(HIPOPTFLAGS) $(HIPC_DEPFLAGS) $(CXXFLAGS) $(CXXCPPFLAGS) $(CXX_DEPFLAGS) 92PETSC_SYCLCOMPILE_SINGLE = ${SYCLC} -o $@ $(MPICXX_INCLUDES) -c $(SYCLC_FLAGS) $(SYCLPP_FLAGS) $(SYCLFLAGS) $(SYCLPPFLAGS) $(SYCLOPTFLAGS) $(SYCLC_DEPFLAGS) $(CXXFLAGS) $(CXXCPPFLAGS) 93# 94CLINKER = ${PCC_LINKER} ${PCC_LINKER_FLAGS} ${${CLANGUAGE}FLAGS} 95FLINKER = ${FC_LINKER} ${FC_LINKER_FLAGS} ${FFLAGS} 96CXXLINKER = ${CXX_LINKER} ${CXX_LINKER_FLAGS} ${CXXFLAGS} 97# 98# Escape codes to change the text color on xterms and terminals 99# 100PETSC_TEXT_HILIGHT = "\033[1;31m" 101PETSC_TEXT_NORMAL = "\033[0;39m\033[0;49m" 102 103PETSC_MAKE_STOP_ON_ERROR = - 104# 105# ---------------------------------------------------------------------------------------- 106# 107# Some variables used to build shared libraries 108SHLIBS = libpetscsys libpetscmat libpetscvec libpetscdm libpetscksp libpetscsnes libpetscts libpetsctao libpetscml 109# 110# The following include file is created when running ./configure 111# 112include ${PETSC_DIR}/${PETSC_ARCH}/lib/petsc/conf/petscvariables 113