xref: /petsc/makefile (revision 41fa366c97761f1a972e2ce3106f994eb61be720)
1*41fa366cSBarry Smith# $Id: makefile,v 1.331 2001/01/08 17:10:18 balay Exp bsmith $
211b6ed10SLois Curfman McInnes#
3cfd69a58SBarry Smith# This is the makefile for installing PETSc. See the file
47fc3c18eSBarry Smith# docs/installation.html for directions on installing PETSc.
5cfd69a58SBarry Smith# See also bmake/common for additional commands.
611b6ed10SLois Curfman McInnes#
7716b9c40SSatish BalayALL: all
811b6ed10SLois Curfman McInnes
9b16a3bb1SBarry SmithDIRS	   = src include docs
1061523587SBarry Smith
11d77bb2e1SSatish Balayinclude ${PETSC_DIR}/bmake/${PETSC_ARCH}/base
121d1367b7SBarry Smithinclude ${PETSC_DIR}/bmake/common_test
1361523587SBarry Smith
143677444aSSatish Balay#
153677444aSSatish Balay# Basic targets to build PETSc libraries.
16fa527775SLois Curfman McInnes# all     : builds the c, fortran, and f90 libraries
1771fcab10SSatish Balayall       : info info_h chklib_dir deletelibs build_c build_fortran shared
18efd74e9bSBarry Smith#
19fa527775SLois Curfman McInnes# Prints information about the system and version of PETSc being compiled
20efd74e9bSBarry Smith#
21efd74e9bSBarry Smithinfo:
22efd74e9bSBarry Smith	-@echo "=========================================="
2311b6dc0cSBarry Smith	-@echo " "
24d76296fbSBarry Smith	-@echo "See docs/troubleshooting.html and docs/bugreporting.html"
25d76296fbSBarry Smith	-@echo "for help with installation problems. Please send EVERYTHING"
26d76296fbSBarry Smith	-@echo "printed out below when reporting problems"
2711b6dc0cSBarry Smith	-@echo " "
2811b6dc0cSBarry Smith	-@echo "To subscribe to the PETSc users mailing list, send mail to "
2911b6dc0cSBarry Smith	-@echo "majordomo@mcs.anl.gov with the message: "
3011b6dc0cSBarry Smith	-@echo "subscribe petsc-users"
3111b6dc0cSBarry Smith	-@echo " "
32d76296fbSBarry Smith	-@echo "=========================================="
331d91fb6eSBarry Smith	-@echo On `date` on `hostname`
3430fdcc7aSBarry Smith	-@echo Machine characteristics: `uname -a`
35efd74e9bSBarry Smith	-@echo "-----------------------------------------"
3667b024f7SSatish Balay	-@echo "Using C compiler: ${CC} ${COPTFLAGS} ${CCPPFLAGS}"
37c20d8eedSBarry Smith	-@if [ -n "${C_CCV}" -a "${C_CCV}" != "unknown" ] ; then \
389a43e735SSatish Balay	  echo "C Compiler version:" ; ${C_CCV} ; fi
39c20d8eedSBarry Smith	-@if [ -n "${CXX_CCV}" -a "${CXX_CCV}" != "unknown" ] ; then \
409a43e735SSatish Balay	  echo "C++ Compiler version:" ; ${CXX_CCV} ; fi
4167b024f7SSatish Balay	-@echo "Using Fortran compiler: ${FC} ${FOPTFLAGS} ${FCPPFLAGS}"
4288b81347SBarry Smith	-@if [ -n "${C_FCV}" -a "${C_FCV}" != "unknown" ] ; then \
4388b81347SBarry Smith	  echo "Fortran Compiler version:" ; ${C_FCV} ; fi
4447794344SBarry Smith	-@echo "-----------------------------------------"
45f209c26bSSatish Balay	-@grep PETSC_VERSION_NUMBER ${PETSC_DIR}/include/petscversion.h | ${SED} "s/........//"
46f265ae5cSBarry Smith	-@echo "-----------------------------------------"
47d77bb2e1SSatish Balay	-@echo "Using PETSc flags: ${PETSCFLAGS} ${PCONF}"
4847794344SBarry Smith	-@echo "-----------------------------------------"
49e0e703c1SSatish Balay	-@echo "Using configuration flags:"
50f209c26bSSatish Balay	-@grep "define " ${PETSC_DIR}/bmake/${PETSC_ARCH}/petscconf.h
5147794344SBarry Smith	-@echo "-----------------------------------------"
52d77bb2e1SSatish Balay	-@echo "Using include paths: ${PETSC_INCLUDE}"
5347794344SBarry Smith	-@echo "-----------------------------------------"
54d77bb2e1SSatish Balay	-@echo "Using PETSc directory: ${PETSC_DIR}"
55d77bb2e1SSatish Balay	-@echo "Using PETSc arch: ${PETSC_ARCH}"
56efd74e9bSBarry Smith	-@echo "------------------------------------------"
57d77bb2e1SSatish Balay	-@echo "Using C linker: ${CLINKER}"
58d77bb2e1SSatish Balay	-@echo "Using Fortran linker: ${FLINKER}"
59f2b01315SBarry Smith	-@echo "Using libraries: ${PETSC_LIB}"
60efd74e9bSBarry Smith	-@echo "=========================================="
61b8d81f61SBarry Smith#
62b8d81f61SBarry Smith#
63b8d81f61SBarry SmithMINFO = ${PETSC_DIR}/bmake/${PETSC_ARCH}/petscmachineinfo.h
64b8d81f61SBarry Smithinfo_h:
65ddbfe947SBarry Smith	-@$(RM) -f MINFO ${MINFO}
66c5e9c7dfSBarry Smith	-@echo  "static char *petscmachineinfo = \"  " >> MINFO
6734a92de5SBarry Smith	-@echo  "Libraries compiled on `date` on `hostname` " >> MINFO
68c5e9c7dfSBarry Smith	-@echo  Machine characteristics: `uname -a` "" >> MINFO
69c5e9c7dfSBarry Smith	-@echo  "-----------------------------------------" >> MINFO
70c5e9c7dfSBarry Smith	-@echo  "Using C compiler: ${CC} ${COPTFLAGS} ${CCPPFLAGS} " >> MINFO
71b8d81f61SBarry Smith	-@if [  "${C_CCV}" -a "${C_CCV}" != "unknown" ] ; then \
729a43e735SSatish Balay	  echo  "C Compiler version:"  >> MINFO ; ${C_CCV} >> MINFO 2>&1; fi
73b8d81f61SBarry Smith	-@if [  "${CXX_CCV}" -a "${CXX_CCV}" != "unknown" ] ; then \
749a43e735SSatish Balay	  echo  "C++ Compiler version:"  >> MINFO; ${CXX_CCV} >> MINFO 2>&1 ; fi
75c5e9c7dfSBarry Smith	-@echo  "Using Fortran compiler: ${FC} ${FOPTFLAGS} ${FCPPFLAGS}" >> MINFO
76b8d81f61SBarry Smith	-@if [  "${C_FCV}" -a "${C_FCV}" != "unknown" ] ; then \
77c5e9c7dfSBarry Smith	  echo  "Fortran Compiler version:" >> MINFO ; ${C_FCV} >> MINFO 2>&1 ; fi
78c5e9c7dfSBarry Smith	-@echo  "-----------------------------------------" >> MINFO
79c5e9c7dfSBarry Smith	-@echo  "Using PETSc flags: ${PETSCFLAGS} ${PCONF}" >> MINFO
80c5e9c7dfSBarry Smith	-@echo  "-----------------------------------------" >> MINFO
81c5e9c7dfSBarry Smith	-@echo  "Using configuration flags:" >> MINFO
82c5e9c7dfSBarry Smith	-@echo  "-----------------------------------------" >> MINFO
83c5e9c7dfSBarry Smith	-@echo  "Using include paths: ${PETSC_INCLUDE}" >> MINFO
84c5e9c7dfSBarry Smith	-@echo  "-----------------------------------------" >> MINFO
85c5e9c7dfSBarry Smith	-@echo  "Using PETSc directory: ${PETSC_DIR}" >> MINFO
86c5e9c7dfSBarry Smith	-@echo  "Using PETSc arch: ${PETSC_ARCH}" >> MINFO
87c5e9c7dfSBarry Smith	-@echo  "------------------------------------------" >> MINFO
88c5e9c7dfSBarry Smith	-@echo  "Using C linker: ${CLINKER}" >> MINFO
89c5e9c7dfSBarry Smith	-@echo  "Using Fortran linker: ${FLINKER}" >> MINFO
90579ddc58SSatish Balay	-@cat MINFO | ${SED} -e 's/$$/  \\n\\/' > ${MINFO}
91c5e9c7dfSBarry Smith	-@echo  "Using libraries: ${PETSC_LIB} \"; " >> ${MINFO}
92a21fb8cbSBarry Smith	-@chmod g+w ${MINFO}
939c0905fcSSatish Balay	-@$(RM) MINFO
943677444aSSatish Balay#
95fa527775SLois Curfman McInnes# Builds the PETSc libraries
96fa527775SLois Curfman McInnes# This target also builds fortran77 and f90 interface
97fa527775SLois Curfman McInnes# files. (except compiling *.F files)
983677444aSSatish Balay#
9960262a0eSSatish Balaybuild_c:
100efd74e9bSBarry Smith	-@echo "BEGINNING TO COMPILE LIBRARIES IN ALL DIRECTORIES"
10147794344SBarry Smith	-@echo "========================================="
10235d8aa7fSBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} PETSC_DIR=${PETSC_DIR} ACTION=libfast tree
103bfd5e76bSSatish Balay	${RANLIB} ${LDIR}/*.a
104bfd5e76bSSatish Balay	-@chmod g+w  ${LDIR}/*.a
1050b3634f8SBarry Smith	-@echo "Completed building libraries"
10647794344SBarry Smith	-@echo "========================================="
1070b3634f8SBarry Smith
10835ca7349SBarry Smith#
10928881d8bSBarry Smith# Builds PETSc Fortran source
11011b6ed10SLois Curfman McInnes# Note:	 libfast cannot run on .F files on certain machines, so we
1119984b5c5SSatish Balay# use libf to compile the fortran source files.
112fa527775SLois Curfman McInnes#
11360262a0eSSatish Balaybuild_fortran:
11428881d8bSBarry Smith	-@echo "BEGINNING TO COMPILE FORTRAN SOURCE"
11547794344SBarry Smith	-@echo "========================================="
116b16a3bb1SBarry Smith	-@cd src/fortran/custom; \
11735d8aa7fSBarry Smith	  ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH}  PETSC_DIR=${PETSC_DIR} libf clean
118971c2310SBarry Smith	-@cd src/fortran/kernels; \
11935d8aa7fSBarry Smith	  ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH}  PETSC_DIR=${PETSC_DIR} libf  clean
120005e760dSSatish Balay	-@cd src/mat/impls/aij/seq; \
12135d8aa7fSBarry Smith	  ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH}  PETSC_DIR=${PETSC_DIR} lib clean
122bfd5e76bSSatish Balay	${RANLIB} ${LDIR}/libpetscfortran.a
123bfd5e76bSSatish Balay	${RANLIB} ${LDIR}/libpetsc.a
124bfd5e76bSSatish Balay	-@chmod g+w  ${LDIR}/*.a
12528881d8bSBarry Smith	-@echo "Completed compiling Fortran source"
126971c2310SBarry Smith	-@echo "========================================="
127971c2310SBarry Smith
12871fcab10SSatish Balaypetscblas: info chklib_dir
129bfd5e76bSSatish Balay	-${RM} -f ${LDIR}/libpetscblas.*
130efd74e9bSBarry Smith	-@echo "BEGINNING TO COMPILE C VERSION OF BLAS AND LAPACK"
13166341c5dSSatish Balay	-@echo "========================================="
1326685cf94SSatish Balay	-@cd src/blaslapack/c; \
13335d8aa7fSBarry Smith	  ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH}  PETSC_DIR=${PETSC_DIR} ACTION=libfast tree
134bfd5e76bSSatish Balay	${RANLIB} ${LDIR}/libpetscblas.a
135bfd5e76bSSatish Balay	-@chmod g+w  ${LDIR}/*.a
136229e8d5cSBarry Smith	-@echo "Completed compiling C version of BLAS and LAPACK"
13766341c5dSSatish Balay	-@echo "========================================="
1388744090aSBarry Smith#
1393677444aSSatish Balay# Builds PETSc test examples for a given BOPT and architecture
1408744090aSBarry Smith#
1413677444aSSatish Balaytestexamples: info chkopts
1423677444aSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN TEST EXAMPLES"
1433677444aSSatish Balay	-@echo "Due to different numerical round-off on certain"
1443677444aSSatish Balay	-@echo "machines some of the numbers may not match exactly."
1453677444aSSatish Balay	-@echo "========================================="
14635d8aa7fSBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH}  PETSC_DIR=${PETSC_DIR} ACTION=testexamples_1  tree
1473677444aSSatish Balay	-@echo "Completed compiling and running test examples"
1483677444aSSatish Balay	-@echo "========================================="
1493677444aSSatish Balaytestfortran: info chkopts
1503677444aSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN FORTRAN TEST EXAMPLES"
1513677444aSSatish Balay	-@echo "========================================="
1523677444aSSatish Balay	-@echo "Due to different numerical round-off on certain"
1533677444aSSatish Balay	-@echo "machines or the way Fortran formats numbers"
1543677444aSSatish Balay	-@echo "some of the results may not match exactly."
1553677444aSSatish Balay	-@echo "========================================="
15635d8aa7fSBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} PETSC_DIR=${PETSC_DIR} ACTION=testexamples_3  tree
1573677444aSSatish Balay	-@echo "Completed compiling and running Fortran test examples"
1583677444aSSatish Balay	-@echo "========================================="
15901c5c36fSSatish Balaytestexamples_uni: info chkopts
16001c5c36fSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN TEST UNI-PROCESSOR EXAMPLES"
16101c5c36fSSatish Balay	-@echo "Due to different numerical round-off on certain"
16201c5c36fSSatish Balay	-@echo "machines some of the numbers may not match exactly."
16301c5c36fSSatish Balay	-@echo "========================================="
16435d8aa7fSBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} PETSC_DIR=${PETSC_DIR} ACTION=testexamples_4  tree
16501c5c36fSSatish Balay	-@echo "Completed compiling and running uniprocessor test examples"
16601c5c36fSSatish Balay	-@echo "========================================="
1673677444aSSatish Balaytestfortran_uni: info chkopts
1683677444aSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN TEST UNI-PROCESSOR FORTRAN EXAMPLES"
1693677444aSSatish Balay	-@echo "Due to different numerical round-off on certain"
1703677444aSSatish Balay	-@echo "machines some of the numbers may not match exactly."
1713677444aSSatish Balay	-@echo "========================================="
17235d8aa7fSBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} PETSC_DIR=${PETSC_DIR} ACTION=testexamples_9  tree
1733677444aSSatish Balay	-@echo "Completed compiling and running uniprocessor fortran test examples"
1743677444aSSatish Balay	-@echo "========================================="
17511b6dc0cSBarry Smithmatlabcodes:
17611b6dc0cSBarry Smith	-@echo "BEGINNING TO COMPILE MATLAB INTERFACE"
17711b6dc0cSBarry Smith	-@cd src/sys/src/viewer/impls/socket/matlab; ${OMAKE} BOPT=g matlabcodes  PETSC_ARCH=${PETSC_ARCH}
178ad96cc0dSLois Curfman McInnes
179f3eacedaSSatish Balay# Ranlib on the libraries
1808c37ef55SBarry Smithranlib:
181bfd5e76bSSatish Balay	${RANLIB} ${LDIR}/*.a
18261523587SBarry Smith
18311b6ed10SLois Curfman McInnes# Deletes PETSc libraries
184f3eacedaSSatish Balaydeletelibs: chkopts_basic
185bfd5e76bSSatish Balay	-${RM} -f ${LDIR}/*
186d44968ceSBarry Smith
1873677444aSSatish Balay
1883677444aSSatish Balay# ------------------------------------------------------------------
1893677444aSSatish Balay#
1903677444aSSatish Balay# All remaining actions are intended for PETSc developers only.
1913677444aSSatish Balay# PETSc users should not generally need to use these commands.
1923677444aSSatish Balay#
1933677444aSSatish Balay
19465783a8cSBarry Smith# To access the tags in EMACS, type M-x visit-tags-table and specify
19565783a8cSBarry Smith# the file petsc/TAGS.
19665783a8cSBarry Smith# 1) To move to where a PETSc function is defined, enter M-. and the
19765783a8cSBarry Smith#     function name.
19865783a8cSBarry Smith# 2) To search for a string and move to the first occurrence,
19965783a8cSBarry Smith#     use M-x tags-search and the string.
2007acb7333SLois Curfman McInnes#     To locate later occurrences, use M-,
20111b6ed10SLois Curfman McInnes# Builds all etags files
20211b6ed10SLois Curfman McInnesalletags:
20301c05c5cSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags
20409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags_complete
20509f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags_noexamples
20609f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags_examples
20709f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags_makefiles
20811b6ed10SLois Curfman McInnes# Builds the basic etags file.	This should be employed by most users.
20920563c6bSBarry Smithetags:
21009f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS
21109f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS
21209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourcec alltree
213*41fa366cSBarry Smith	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourcej alltree
21409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourceh alltree
21509f7043eSSatish Balay	-cd src/fortran; ${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourcef alltree
21609f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesc alltree
21709f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesf alltree
21809f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesch alltree
21909f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesfh alltree
22009f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_makefile alltree
22109f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS etags_bmakefiles
22255194d7eSSatish Balay	-chmod g+w TAGS
22329cdf679SBarry Smith# Builds complete etags list; only for PETSc developers.
22429cdf679SBarry Smithetags_complete:
22509f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_COMPLETE
22609f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_COMPLETE
22709f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_sourcec alltree
228*41fa366cSBarry Smith	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_sourcej alltree
22909f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_sourceh alltree
23009f7043eSSatish Balay	-cd src/fortran; ${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_sourcef alltree
23109f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_examplesc alltree
23209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_examplesf alltree
23309f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_examplesch alltree
23409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_examplesfh alltree
23509f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_makefile alltree
23609f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE etags_bmakefiles
23709f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_docs alltree
23809f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_scripts alltree
23955194d7eSSatish Balay	-chmod g+w TAGS_COMPLETE
24011b6ed10SLois Curfman McInnes# Builds the etags file that excludes the examples directories
241bfce26a3SBarry Smithetags_noexamples:
24209f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_NO_EXAMPLES
24309f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_NO_EXAMPLES
24409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourcec alltree
245*41fa366cSBarry Smith	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourcej alltree
24609f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourceh alltree
24709f7043eSSatish Balay	-cd src/fortran; ${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourcef alltree
24809f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_makefile alltree
24909f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES etags_bmakefiles
25009f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_docs alltree
25155194d7eSSatish Balay	-chmod g+w TAGS_NO_EXAMPLES
25211b6ed10SLois Curfman McInnes# Builds the etags file for makefiles
253b16a3bb1SBarry Smithetags_makefiles:
2547e0368d4SSatish Balay	-${RM} ${TAGSDIR}/TAGS_MAKEFILES
2557e0368d4SSatish Balay	-touch ${TAGSDIR}/TAGS_MAKEFILES
2567e0368d4SSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_MAKEFILES ACTION=etags_makefile alltree
2577e0368d4SSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_MAKEFILES etags_bmakefiles
2587e0368d4SSatish Balay	-chmod g+w TAGS_MAKEFILES
259dc80aa23SSatish Balay# Builds the etags file for examples
260dc80aa23SSatish Balayetags_examples:
26109f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_EXAMPLES
26209f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_EXAMPLES
26309f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesc alltree
26409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesch alltree
26509f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesf alltree
26609f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesfh alltree
26755194d7eSSatish Balay	-chmod g+w TAGS_EXAMPLES
2682176044fSSatish Balayetags_fexamples:
26909f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_FEXAMPLES
27009f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_FEXAMPLES
27109f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_FEXAMPLES ACTION=etags_examplesf alltree
27209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesfh alltree
2732176044fSSatish Balay	-chmod g+w TAGS_FEXAMPLES
274b38bb785SSatish Balay#
275f20f7ba3SSatish Balay# These are here for the target allci and allco, and etags
2763677444aSSatish Balay#
277b38bb785SSatish Balay
278f0475f33SSatish BalayBMAKEFILES = bmake/common* bmake/*/base bmake/*/base_variables bmake/*/base.site \
279f7f63bceSSatish Balay	     bmake/*/petscconf.h bmake/*/petscfix.h bmake/win32/makefile.dos bmake/config/*.in \
280b8adb7afSBarry Smith             bmake/*/buildtest
2812f1ebae6SLois Curfman McInnesDOCS	   = bmake/readme bmake/petscconf.defs
28257c4596dSSatish BalaySCRIPTS    = maint/addlinks maint/builddist maint/buildlinks maint/wwwman \
28357c4596dSSatish Balay	     maint/xclude maint/crontab  \
28457c4596dSSatish Balay	     maint/autoftp include/foldinclude/generateincludes
28511b6ed10SLois Curfman McInnes
2866b91f8d1SSatish Balayupdatewebdocs:
2876b91f8d1SSatish Balay	-chmod -R ug+w /mcs/tmp/petsc-tmp
2886b91f8d1SSatish Balay	-chgrp -R petsc /mcs/tmp/petsc-tmp
2896b91f8d1SSatish Balay	-/bin/rm -rf /mcs/tmp/petscdocs
2906b91f8d1SSatish Balay	-/bin/cp -r /mcs/tmp/petsc-tmp/docs /mcs/tmp/petscdocs
2916b91f8d1SSatish Balay	-maint/update-docs.py /mcs/tmp/petscdocs
2926b91f8d1SSatish Balay	-find /mcs/tmp/petscdocs -type d -name "*" -exec chmod g+w {} \;
2936b91f8d1SSatish Balay	-/bin/cp -r /mcs/tmp/petscdocs/* ${PETSC_DIR}/docs
2946b91f8d1SSatish Balay	-/bin/rm -rf /mcs/tmp/petscdocs
2956b91f8d1SSatish Balay
2967f52c680SSatish Balay# Builds all the documentation - should be done every night
297074fadd8SSatish Balayalldoc: allmanualpages
298e15d8129SBarry Smith	cd docs/tex/manual; ${OMAKE} manual.dvi manual.ps manual.html splitmanual.html
2997f52c680SSatish Balay
3002496ca06SSatish Balay# Deletes man pages (HTML version)
3012496ca06SSatish Balaydeletemanualpages:
302ba79c590SSatish Balay	${RM} -f ${PETSC_DIR}/docs/manualpages/*/*.html \
30345f11a08SBarry Smith                 ${PETSC_DIR}/docs/manualpages/manualpages.cit
3042496ca06SSatish Balay
30511b6ed10SLois Curfman McInnes# Builds all versions of the man pages
306981c4779SBarry Smithallmanualpages: deletemanualpages
307bbe92fcfSSatish Balay	-${OMAKE} ACTION=manualpages_buildcite tree_basic
308bbe92fcfSSatish Balay	-${OMAKE} ACTION=manualpages tree_basic
309dfd40236SSatish Balay	-maint/wwwindex.py ${PETSC_DIR}
310baa90677SBarry Smith	-${OMAKE} ACTION=manexamples tree
311beb1b3a5SBarry Smith	-${OMAKE} manconcepts
312beb1b3a5SBarry Smith	-${OMAKE} ACTION=exampleconcepts tree
3139770d121SSatish Balay	-maint/helpindex.py
314ba79c590SSatish Balay	-@chmod g+w docs/manualpages/*/*.html
315e01137a2SSatish Balay
31611b6ed10SLois Curfman McInnes# Builds Fortran stub files
31711b6ed10SLois Curfman McInnesallfortranstubs:
31826cd32c0SSatish Balay	-@include/foldinclude/generateincludes
319d77bb2e1SSatish Balay	-@${RM} -f src/fortran/auto/*.c
320bbe92fcfSSatish Balay	-${OMAKE} ACTION=fortranstubs tree_basic
321b9917d27SSatish Balay	-@cd src/fortran/auto; ${OMAKE} fixfortran
3220a0eb2c5SBarry Smith	chmod g+w src/fortran/auto/*.c
323f6ff2982SSatish Balay
324d55938c2SBarry Smithallci:
325f20f7ba3SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=ci  alltree
326b951964fSBarry Smith
327d55938c2SBarry Smithallco:
328f20f7ba3SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=co  alltree
329d55938c2SBarry Smith
330791d64f4SSatish Balay# usage make allrcslabel NEW_RCS_LABEL=v_2_0_28
331791d64f4SSatish Balayallrcslabel:
332791d64f4SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} NEW_RCS_LABEL=${NEW_RCS_LABEL} ACTION=rcslabel  alltree
333b334301eSBarry Smith#
334b334301eSBarry Smith#   The commands below are for generating ADIC versions of the code;
335b334301eSBarry Smith# they are not currently used.
336b334301eSBarry Smith#
3375eea60f9SBarry Smithalladicignore:
338bfd5e76bSSatish Balay	-@${RM} ${LDIR}/adicignore
339d77bb2e1SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adicignore  tree
3405eea60f9SBarry Smith
3415eea60f9SBarry Smithalladic:
342d18b0ea7SBarry Smith	-@echo "Beginning to compile ADIC source code in all directories"
34367b024f7SSatish Balay	-@echo "Using ADIC compiler: ${ADIC_CC} ${CCPPFLAGS}"
344d18b0ea7SBarry Smith	-@echo "========================================="
34547794344SBarry Smith	-@cd include ; \
34667b024f7SSatish Balay           ${ADIC_CC} -s -f 1 ${CCPPFLAGS} petsc.h
347d77bb2e1SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adic  tree
34847794344SBarry Smith	-@cd src/inline ; \
349d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} adic
35077ed5343SBarry Smith	-@cd src/blaslapack ; \
351d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adic  tree
3526e81b665SBarry Smith
35347794344SBarry Smithalladiclib:
354d18b0ea7SBarry Smith	-@echo "Beginning to compile ADIC libraries in all directories"
355d77bb2e1SSatish Balay	-@echo "Using compiler: ${CC} ${COPTFLAGS}"
356d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
357d77bb2e1SSatish Balay	-@echo "Using PETSc flags: ${PETSCFLAGS} ${PCONF}"
358d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
359e0e703c1SSatish Balay	-@echo "Using configuration flags:"
360e0e703c1SSatish Balay	-@grep "define " bmake/${PETSC_ARCH}/petscconf.h
361d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
362d77bb2e1SSatish Balay	-@echo "Using include paths: ${PETSC_INCLUDE}"
363d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
364d77bb2e1SSatish Balay	-@echo "Using PETSc directory: ${PETSC_DIR}"
365d77bb2e1SSatish Balay	-@echo "Using PETSc arch: ${PETSC_ARCH}"
366d18b0ea7SBarry Smith	-@echo "========================================="
367bfd5e76bSSatish Balay	-@${RM} -f  ${LDIR}/*adic.a
368d77bb2e1SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adiclib  tree
36977ed5343SBarry Smith	-@cd src/blaslapack ; \
370d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adiclib  tree
3717e351921SBarry Smith	-@cd src/adic/src ; \
372d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} lib
3735eea60f9SBarry Smith
3749e417c50SSatish Balay# -------------------------------------------------------------------------------
3759e417c50SSatish Balay#
3769e417c50SSatish Balay# Some macros to check if the fortran interface is up-to-date.
3779e417c50SSatish Balay#
3789e417c50SSatish Balaycountfortranfunctions:
379d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran; egrep '^void' custom/*.c auto/*.c | \
38085c7cd6cSSatish Balay	cut -d'(' -f1 | tr -s  ' ' | cut -d' ' -f2 | uniq | egrep -v "(^$$|Petsc)" | \
3819e417c50SSatish Balay	sed "s/_$$//" | sort > /tmp/countfortranfunctions
382b334301eSBarry Smith
3839e417c50SSatish Balaycountcfunctions:
38485c7cd6cSSatish Balay	-@ grep extern ${PETSC_DIR}/include/*.h *.h | grep "(" | tr -s ' ' | \
38585c7cd6cSSatish Balay	cut -d'(' -f1 | cut -d' ' -f3 | grep -v "\*" | tr -s '\012' |  \
3869e417c50SSatish Balay	tr 'A-Z' 'a-z' |  sort > /tmp/countcfunctions
3879e417c50SSatish Balay
3889e417c50SSatish Balaydifffortranfunctions: countfortranfunctions countcfunctions
3899e417c50SSatish Balay	-@echo -------------- Functions missing in the fortran interface ---------------------
3909e417c50SSatish Balay	-@diff /tmp/countcfunctions /tmp/countfortranfunctions | grep "^<" | cut -d' ' -f2
3919e417c50SSatish Balay	-@echo ----------------- Functions missing in the C interface ------------------------
3929e417c50SSatish Balay	-@diff /tmp/countcfunctions /tmp/countfortranfunctions | grep "^>" | cut -d' ' -f2
393d77bb2e1SSatish Balay	-@${RM}  /tmp/countcfunctions /tmp/countfortranfunctions
394b334301eSBarry Smith
3953f4c9a3aSSatish Balaycheckbadfortranstubs:
3963f4c9a3aSSatish Balay	-@echo "========================================="
3973f4c9a3aSSatish Balay	-@echo "Functions with MPI_Comm as an Argument"
3983f4c9a3aSSatish Balay	-@echo "========================================="
399d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran/auto; grep '^void' *.c | grep 'MPI_Comm' | \
40085c7cd6cSSatish Balay	tr -s ' ' | tr -s ':' ' ' |cut -d'(' -f1 | cut -d' ' -f1,3
4013f4c9a3aSSatish Balay	-@echo "========================================="
4023f4c9a3aSSatish Balay	-@echo "Functions with a String as an Argument"
4033f4c9a3aSSatish Balay	-@echo "========================================="
404d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran/auto; grep '^void' *.c | grep 'char \*' | \
40585c7cd6cSSatish Balay	tr -s ' ' | tr -s ':' ' ' |cut -d'(' -f1 | cut -d' ' -f1,3
4063f4c9a3aSSatish Balay	-@echo "========================================="
4073f4c9a3aSSatish Balay	-@echo "Functions with Pointers to PETSc Objects as Argument"
4083f4c9a3aSSatish Balay	-@echo "========================================="
409d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran/auto; \
41085c7cd6cSSatish Balay	_p_OBJ=`grep _p_ ${PETSC_DIR}/include/*.h | tr -s ' ' | \
41185c7cd6cSSatish Balay	cut -d' ' -f 3 | tr -s '\012' | grep -v '{' | cut -d'*' -f1 | \
4123f4c9a3aSSatish Balay	sed "s/_p_//g" | tr -s '\012 ' ' *|' ` ; \
4133f4c9a3aSSatish Balay	for OBJ in $$_p_OBJ; do \
41485c7cd6cSSatish Balay	grep "$$OBJ \*" *.c | tr -s ' ' | tr -s ':' ' ' | \
4153f4c9a3aSSatish Balay	cut -d'(' -f1 | cut -d' ' -f1,3; \
4163f4c9a3aSSatish Balay	done
4173677444aSSatish Balay# Builds noise routines (not yet publically available)
4183677444aSSatish Balay# Note:	 libfast cannot run on .F files on certain machines, so we
4193677444aSSatish Balay# use lib and check for errors here.
42071fcab10SSatish Balaynoise: info chklib_dir
4213677444aSSatish Balay	-@echo "Beginning to compile noise routines"
4223677444aSSatish Balay	-@echo "========================================="
4233677444aSSatish Balay	-@cd src/snes/interface/noise; \
4243677444aSSatish Balay	  ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} lib > trashz 2>&1; \
4253677444aSSatish Balay	  grep -v clog trashz | grep -v "information sections" | \
4263677444aSSatish Balay	  egrep -i '(Error|warning|Can)' >> /dev/null;\
4273677444aSSatish Balay	  if [ "$$?" != 1 ]; then \
4283677444aSSatish Balay	  cat trashz ; fi; ${RM} trashz
429bfd5e76bSSatish Balay	${RANLIB} ${LDIR}/libpetscsnes.a
430bfd5e76bSSatish Balay	-@chmod g+w  ${LDIR}/libpetscsnes.a
4313677444aSSatish Balay	-@echo "Completed compiling noise routines"
4323677444aSSatish Balay	-@echo "========================================="
4333677444aSSatish Balay
4344556b810SBarry Smith#
4354556b810SBarry Smith# Automatically generates PETSc exercises in html from the tutorial examples.
436b6ea66eeSBarry Smith#
437b6ea66eeSBarry Smith# The introduction for each section is obtained from docs/manualpages/bop.${MANSEC} is under RCS and may be edited
438b6ea66eeSBarry Smith#  (used also in introductions to the manual pages)
439b6ea66eeSBarry Smith# The overall introduction is in docs/exercises/introduction.html and is under RCS and may be edited
440b6ea66eeSBarry Smith# The list of exercises is from TUTORIALS in each directory's makefile
441b6ea66eeSBarry Smith#
4424556b810SBarry Smith# DO NOT EDIT the pageform.txt or *.htm files generated since they will be automatically replaced.
4434556b810SBarry Smith# The pagemaker rule is in the file bmake/common (at the bottom)
4444556b810SBarry Smith#
445843ae28eSBarry Smith# Eventually the line below will replace the two cd in the rule below, it is just this way now for speed
44697e8d271SBarry Smith#	-@${OMAKE} PETSC_DIR=${PETSC_DIR} pagemaker
447843ae28eSBarry Smith#
44897e8d271SBarry Smithexercises:
44997e8d271SBarry Smith	-@echo "========================================="
45097e8d271SBarry Smith	-@echo "Generating HTML tutorial exercises"
45197e8d271SBarry Smith	-@rm -f docs/pageform.txt
45297e8d271SBarry Smith	-@echo "title=\"PETSc Exercises\""                >  docs/pageform.txt
45397e8d271SBarry Smith	-@echo "access_title=Exercise Sections"              >>  docs/pageform.txt
454beb1b3a5SBarry Smith	-@echo "access_format=short"                        >> docs/pageform.txt
45597e8d271SBarry Smith	-@echo "startpage=../exercises/introduction.htm"  >> docs/pageform.txt
45697e8d271SBarry Smith	-@echo "NONE title=\"Introduction\" command=link src=../exercises/introduction.htm" >> docs/pageform.txt
45797e8d271SBarry Smith	-@echo "Generating HTML for individual directories"
45897e8d271SBarry Smith	-@echo "========================================="
459beb1b3a5SBarry Smith	-@${OMAKE} PETSC_DIR=${PETSC_DIR} ACTION=pagemaker tree
46097e8d271SBarry Smith	-@echo "Completed HTML for individual directories"
46197e8d271SBarry Smith	-@echo "NONE title=\"<HR>\" " >> docs/pageform.txt;
46297e8d271SBarry Smith	-@echo "NONE title=\"PETSc Documentation\" command=link src=../index.html target=replace" >> docs/pageform.txt
46397e8d271SBarry Smith	/home/MPI/class/mpiexmpl/maint/makepage.new -pageform=docs/pageform.txt -access_extra=/dev/null -outdir=docs/exercises
46497e8d271SBarry Smith	-@echo "========================================="
46597e8d271SBarry Smith
46697e8d271SBarry Smith
46797e8d271SBarry Smith
46897e8d271SBarry Smith
46997e8d271SBarry Smith
47097e8d271SBarry Smith
47197e8d271SBarry Smith
47297e8d271SBarry Smith
47397e8d271SBarry Smith
47497e8d271SBarry Smith
47597e8d271SBarry Smith
47697e8d271SBarry Smith
47797e8d271SBarry Smith
47897e8d271SBarry Smith
47997e8d271SBarry Smith
48097e8d271SBarry Smith
481