xref: /petsc/lib/petsc/conf/variables (revision a52f8fbaa597f32abff186f733ae89c431db8f24)
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