1# -*- mode: makefile -*-
2#
3# The following variables specify PETSc related info, and can be picked up directly
4# by external packages or PETSc applications that do not use PETSc targets.
5#
6# PETSC_LIB_DIR          - (defined from $PETSC_DIR) determines where the PETSc libraries are built.
7# PETSC_CC_INCLUDES          - locations of include files
8# PETSC_[C,F]CPPFLAGS    -  preprocessor flags for *.c, *.F preprocessing
9# PETSC_[C,F]SH_LIB_PATH - linker_add_sh_lib_path:sh_lib_path pairs for all the shared library locations
10#
11PETSC_LIB_DIR	     = ${PETSC_DIR}/${PETSC_ARCH}/lib
12PETSCCONF_H          = ${PETSC_DIR}/${PETSC_ARCH}/include/petscconf.h
13
14PETSC_CCPPFLAGS     = ${PETSC_CC_INCLUDES} ${PETSCFLAGS} ${PCPP_FLAGS} ${PPPFLAGS}
15PETSC_CXXCPPFLAGS   = ${PETSC_CC_INCLUDES} ${PETSCFLAGS} ${CXXPP_FLAGS} ${CXXPPFLAGS}
16PETSC_FCPPFLAGS	    = ${PETSC_FC_INCLUDES} ${PETSCFLAGS} ${FPP_FLAGS} ${FPPFLAGS}
17PETSC_C_SH_LIB_PATH = ${CC_LINKER_SLFLAG}${PETSC_LIB_DIR}
18PETSC_F_SH_LIB_PATH = ${FC_LINKER_SLFLAG}${PETSC_LIB_DIR}
19#
20# The following variables are used by PETSc build targets. External Packages can
21# redefine them appropriately.
22#
23# INSTALL_LIB_DIR   - the location where the libraries are built.
24# [C,F]CPPFLAGS     - preprocessor flags for *.c, *.F preprocessing
25# [C,F]_SH_LIB_PATH - linker_add_sh_lib_path:sh_lib_path pairs for all the shared library locations
26#
27INSTALL_LIB_DIR	= ${PETSC_LIB_DIR}
28CCPPFLAGS	= ${PETSC_CCPPFLAGS}
29CXXCPPFLAGS	= ${PETSC_CXXCPPFLAGS}
30FCPPFLAGS	= ${PETSC_FCPPFLAGS}
31C_SH_LIB_PATH	= ${PETSC_C_SH_LIB_PATH}
32F_SH_LIB_PATH	= ${PETSC_F_SH_LIB_PATH}
33#
34# The following variables define PETSc compile procedures
35#
36PETSC_COMPILE_SINGLE    = ${PCC} -o $*.o -c ${PCC_FLAGS} ${PFLAGS} ${CCPPFLAGS}
37PETSC_CXXCOMPILE_SINGLE = ${CXX} -o $*.o -c ${CXX_FLAGS} ${CXXFLAGS} ${CXXCPPFLAGS}
38PETSC_FCOMPILE_SINGLE   = ${FC} -o $*.o -c ${FC_FLAGS} ${FFLAGS} ${FCPPFLAGS}
39PETSC_CUCOMPILE_SINGLE  = ${CUDAC} -o $*.o ${CUDAC_FLAGS} ${CUFLAGS} -c --compiler-options="${PCC_FLAGS} ${CFLAGS} ${CCPPFLAGS}"
40#
41# The following additional variables are used by PETSc targets and should not be redefined
42#
43# LIBNAME    - library name
44# SOURCE     - source files
45# SOURCEALL  - sources and includes
46# SOURCED    - sources/includes [but not fortran - for doc parsing?]
47#
48LIBNAME    = ${INSTALL_LIB_DIR}/${LIBBASE}.${AR_LIB_SUFFIX}
49SOURCE     = ${SOURCECU} ${SOURCEC} ${SOURCECXX} ${SOURCEF}
50SOURCEALL  = ${SOURCECU} ${SOURCEC} ${SOURCECXX} ${SOURCEF} ${SOURCEH}
51SOURCED    = ${SOURCECU} ${SOURCEC} ${SOURCECXX} ${SOURCEH}
52
53CLINKER = ${PCC_LINKER} ${PCC_LINKER_FLAGS} ${PFLAGS}
54FLINKER = ${FC_LINKER} ${FC_LINKER_FLAGS} ${FFLAGS}
55CXXLINKER = ${CXX_LINKER} ${CXX_LINKER_FLAGS} ${CXXFLAGS}
56#
57# Defines all libraries needed for using linear and nonlinear solvers,
58# and all lower level PETSc components (such as vectors and matrices).
59# The order of listing these libraries is important!
60#
61
62PETSC_SYS_LIB_BASIC            = -lpetscsys
63PETSC_VEC_LIB_BASIC            = -lpetscvec ${PETSC_SYS_LIB_BASIC}
64PETSC_MAT_LIB_BASIC            = -lpetscmat ${PETSC_VEC_LIB_BASIC}
65PETSC_DM_LIB_BASIC             = -lpetscdm ${PETSC_MAT_LIB_BASIC}
66PETSC_KSP_LIB_BASIC            = -lpetscksp ${PETSC_DM_LIB_BASIC}
67PETSC_SNES_LIB_BASIC           = -lpetscsnes ${PETSC_KSP_LIB_BASIC}
68PETSC_TS_LIB_BASIC             = -lpetscts ${PETSC_SNES_LIB_BASIC}
69PETSC_TAO_LIB_BASIC            = -lpetsctao ${PETSC_SNES_LIB_BASIC}
70PETSC_LIB_BASIC                = -lpetsctao ${PETSC_TS_LIB_BASIC}
71PETSC_CONTRIB_BASIC            = -lpetsccontrib
72
73PETSC_SYS_LIB            = ${C_SH_LIB_PATH} -L${PETSC_LIB_DIR} ${PETSC_SYS_LIB_BASIC}  ${PETSC_EXTERNAL_LIB_BASIC}
74PETSC_VEC_LIB            = ${C_SH_LIB_PATH} -L${PETSC_LIB_DIR} ${PETSC_VEC_LIB_BASIC}  ${PETSC_EXTERNAL_LIB_BASIC}
75PETSC_MAT_LIB            = ${C_SH_LIB_PATH} -L${PETSC_LIB_DIR} ${PETSC_MAT_LIB_BASIC}  ${PETSC_EXTERNAL_LIB_BASIC}
76PETSC_DM_LIB             = ${C_SH_LIB_PATH} -L${PETSC_LIB_DIR} ${PETSC_DM_LIB_BASIC}   ${PETSC_EXTERNAL_LIB_BASIC}
77PETSC_KSP_LIB            = ${C_SH_LIB_PATH} -L${PETSC_LIB_DIR} ${PETSC_KSP_LIB_BASIC}  ${PETSC_EXTERNAL_LIB_BASIC}
78PETSC_SNES_LIB           = ${C_SH_LIB_PATH} -L${PETSC_LIB_DIR} ${PETSC_SNES_LIB_BASIC} ${PETSC_EXTERNAL_LIB_BASIC}
79PETSC_TS_LIB             = ${C_SH_LIB_PATH} -L${PETSC_LIB_DIR} ${PETSC_TS_LIB_BASIC}   ${PETSC_EXTERNAL_LIB_BASIC}
80PETSC_TAO_LIB            = ${C_SH_LIB_PATH} -L${PETSC_LIB_DIR} ${PETSC_TAO_LIB_BASIC}  ${PETSC_EXTERNAL_LIB_BASIC}
81PETSC_LIB                = ${C_SH_LIB_PATH} -L${PETSC_LIB_DIR} ${PETSC_LIB_BASIC}      ${PETSC_EXTERNAL_LIB_BASIC}
82PETSC_CONTRIB            = ${C_SH_LIB_PATH} -L${PETSC_LIB_DIR} ${PETSC_CONTRIB_BASIC}
83
84#
85#  Escape codes to change the text color on xterms and terminals
86#
87PETSC_TEXT_HILIGHT = "\033[1;31m"
88PETSC_TEXT_NORMAL = "\033[0;39m\033[0;49m"
89
90PETSC_MAKE_STOP_ON_ERROR = -
91#
92# ----------------------------------------------------------------------------------------
93#
94# Some variables used to build shared libraries
95SHLIBS   = libpetscsys libpetscmat libpetscvec libpetscdm libpetscksp libpetscsnes libpetscts libpetsctao
96#
97# The following include files set customized site, optimization, and version
98# options.
99#
100include ${PETSC_DIR}/${PETSC_ARCH}/lib/petsc/conf/petscvariables
101