xref: /petsc/makefile (revision 467fbd6d51a8e6a7a179f18c2696e2ba0ea35b49)
1*467fbd6dSBarry Smith# $Id: makefile,v 1.347 2001/04/05 20:41:57 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
848b2c0e9SBarry SmithLOCDIR = .
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
17f6a9982fSBarry Smithall       : info info_h chklib_dir deletelibs build 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
69f6a9982fSBarry Smith	-@echo  "Using PETSc directory: ${PETSC_DIR}" >> MINFO
70f6a9982fSBarry Smith	-@echo  "Using PETSc arch: ${PETSC_ARCH}" >> MINFO
7193520af8SSatish Balay	-@echo  "-----------------------------------------\"; " >> MINFO
7293520af8SSatish Balay	-@echo  "static char *petsccompilerinfo = \"  " >> MINFO
73c5e9c7dfSBarry Smith	-@echo  "Using C compiler: ${CC} ${COPTFLAGS} ${CCPPFLAGS} " >> MINFO
74b8d81f61SBarry Smith	-@if [  "${C_CCV}" -a "${C_CCV}" != "unknown" ] ; then \
759a43e735SSatish Balay	  echo  "C Compiler version:"  >> MINFO ; ${C_CCV} >> MINFO 2>&1; fi
76b8d81f61SBarry Smith	-@if [  "${CXX_CCV}" -a "${CXX_CCV}" != "unknown" ] ; then \
779a43e735SSatish Balay	  echo  "C++ Compiler version:"  >> MINFO; ${CXX_CCV} >> MINFO 2>&1 ; fi
78c5e9c7dfSBarry Smith	-@echo  "Using Fortran compiler: ${FC} ${FOPTFLAGS} ${FCPPFLAGS}" >> MINFO
79b8d81f61SBarry Smith	-@if [  "${C_FCV}" -a "${C_FCV}" != "unknown" ] ; then \
80c5e9c7dfSBarry Smith	  echo  "Fortran Compiler version:" >> MINFO ; ${C_FCV} >> MINFO 2>&1 ; fi
8193520af8SSatish Balay	-@echo  "-----------------------------------------\"; " >> MINFO
8293520af8SSatish Balay	-@echo  "static char *petsccompilerflagsinfo = \"  " >> MINFO
83c5e9c7dfSBarry Smith	-@echo  "Using PETSc flags: ${PETSCFLAGS} ${PCONF}" >> MINFO
84c5e9c7dfSBarry Smith	-@echo  "-----------------------------------------" >> MINFO
85c5e9c7dfSBarry Smith	-@echo  "Using configuration flags:" >> MINFO
86c5e9c7dfSBarry Smith	-@echo  "-----------------------------------------" >> MINFO
87c5e9c7dfSBarry Smith	-@echo  "Using include paths: ${PETSC_INCLUDE}" >> MINFO
8893520af8SSatish Balay	-@echo  "------------------------------------------\"; " >> MINFO
8993520af8SSatish Balay	-@echo  "static char *petsclinkerinfo = \"  " >> MINFO
90c5e9c7dfSBarry Smith	-@echo  "Using C linker: ${CLINKER}" >> MINFO
91c5e9c7dfSBarry Smith	-@echo  "Using Fortran linker: ${FLINKER}" >> MINFO
9293520af8SSatish Balay	-@echo  "Using libraries: ${PETSC_LIB} \"; " >> MINFO
9393520af8SSatish Balay	-@cat MINFO | ${SED} -e 's/$$/ \\n\\/' | sed -e 's/\;  \\n\\/\;/'> ${MINFO}
94a21fb8cbSBarry Smith	-@chmod g+w ${MINFO}
959c0905fcSSatish Balay	-@$(RM) MINFO
963677444aSSatish Balay#
97fa527775SLois Curfman McInnes# Builds the PETSc libraries
98fa527775SLois Curfman McInnes# This target also builds fortran77 and f90 interface
99f6a9982fSBarry Smith# files and compiles .F files
1003677444aSSatish Balay#
101f6a9982fSBarry Smithbuild:
102efd74e9bSBarry Smith	-@echo "BEGINNING TO COMPILE LIBRARIES IN ALL DIRECTORIES"
10347794344SBarry Smith	-@echo "========================================="
10435d8aa7fSBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} PETSC_DIR=${PETSC_DIR} ACTION=libfast tree
105b87434adSSatish Balay	${RANLIB} ${PETSC_LIB_DIR}/*.a
106b87434adSSatish Balay	-@chmod g+w  ${PETSC_LIB_DIR}/*.a
1070b3634f8SBarry Smith	-@echo "Completed building libraries"
10847794344SBarry Smith	-@echo "========================================="
10935ca7349SBarry Smith#
1103677444aSSatish Balay# Builds PETSc test examples for a given BOPT and architecture
1118744090aSBarry Smith#
1123677444aSSatish Balaytestexamples: info chkopts
1133677444aSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN TEST EXAMPLES"
1143677444aSSatish Balay	-@echo "Due to different numerical round-off on certain"
1153677444aSSatish Balay	-@echo "machines some of the numbers may not match exactly."
1163677444aSSatish Balay	-@echo "========================================="
11735d8aa7fSBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH}  PETSC_DIR=${PETSC_DIR} ACTION=testexamples_1  tree
1183677444aSSatish Balay	-@echo "Completed compiling and running test examples"
1193677444aSSatish Balay	-@echo "========================================="
1203677444aSSatish Balaytestfortran: info chkopts
1213677444aSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN FORTRAN TEST EXAMPLES"
1223677444aSSatish Balay	-@echo "========================================="
1233677444aSSatish Balay	-@echo "Due to different numerical round-off on certain"
1243677444aSSatish Balay	-@echo "machines or the way Fortran formats numbers"
1253677444aSSatish Balay	-@echo "some of the results may not match exactly."
1263677444aSSatish Balay	-@echo "========================================="
12735d8aa7fSBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} PETSC_DIR=${PETSC_DIR} ACTION=testexamples_3  tree
1283677444aSSatish Balay	-@echo "Completed compiling and running Fortran test examples"
1293677444aSSatish Balay	-@echo "========================================="
13001c5c36fSSatish Balaytestexamples_uni: info chkopts
13101c5c36fSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN TEST UNI-PROCESSOR EXAMPLES"
13201c5c36fSSatish Balay	-@echo "Due to different numerical round-off on certain"
13301c5c36fSSatish Balay	-@echo "machines some of the numbers may not match exactly."
13401c5c36fSSatish Balay	-@echo "========================================="
13535d8aa7fSBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} PETSC_DIR=${PETSC_DIR} ACTION=testexamples_4  tree
13601c5c36fSSatish Balay	-@echo "Completed compiling and running uniprocessor test examples"
13701c5c36fSSatish Balay	-@echo "========================================="
1383677444aSSatish Balaytestfortran_uni: info chkopts
1393677444aSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN TEST UNI-PROCESSOR FORTRAN EXAMPLES"
1403677444aSSatish Balay	-@echo "Due to different numerical round-off on certain"
1413677444aSSatish Balay	-@echo "machines some of the numbers may not match exactly."
1423677444aSSatish Balay	-@echo "========================================="
14335d8aa7fSBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} PETSC_DIR=${PETSC_DIR} ACTION=testexamples_9  tree
1443677444aSSatish Balay	-@echo "Completed compiling and running uniprocessor fortran test examples"
1453677444aSSatish Balay	-@echo "========================================="
146ad96cc0dSLois Curfman McInnes
147f3eacedaSSatish Balay# Ranlib on the libraries
1488c37ef55SBarry Smithranlib:
149b87434adSSatish Balay	${RANLIB} ${PETSC_LIB_DIR}/*.a
15061523587SBarry Smith
15111b6ed10SLois Curfman McInnes# Deletes PETSc libraries
152f3eacedaSSatish Balaydeletelibs: chkopts_basic
153b87434adSSatish Balay	-${RM} -f ${PETSC_LIB_DIR}/*
154d44968ceSBarry Smith
155*467fbd6dSBarry Smith#
156*467fbd6dSBarry Smith#   Updates your PETSc version to the latest set of patches
157*467fbd6dSBarry Smith#
158*467fbd6dSBarry Smithupdate:
159*467fbd6dSBarry Smith	-@bin/petscupdate
1603677444aSSatish Balay
1613677444aSSatish Balay# ------------------------------------------------------------------
1623677444aSSatish Balay#
1633677444aSSatish Balay# All remaining actions are intended for PETSc developers only.
1643677444aSSatish Balay# PETSc users should not generally need to use these commands.
1653677444aSSatish Balay#
1663677444aSSatish Balay
16765783a8cSBarry Smith# To access the tags in EMACS, type M-x visit-tags-table and specify
16865783a8cSBarry Smith# the file petsc/TAGS.
16965783a8cSBarry Smith# 1) To move to where a PETSc function is defined, enter M-. and the
17065783a8cSBarry Smith#     function name.
17165783a8cSBarry Smith# 2) To search for a string and move to the first occurrence,
17265783a8cSBarry Smith#     use M-x tags-search and the string.
1737acb7333SLois Curfman McInnes#     To locate later occurrences, use M-,
17411b6ed10SLois Curfman McInnes# Builds all etags files
17511b6ed10SLois Curfman McInnesalletags:
17601c05c5cSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags
17709f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags_complete
17809f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags_noexamples
17909f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags_examples
18009f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags_makefiles
18111b6ed10SLois Curfman McInnes# Builds the basic etags file.	This should be employed by most users.
18220563c6bSBarry Smithetags:
18309f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS
18409f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS
18509f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourcec alltree
18641fa366cSBarry Smith	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourcej alltree
18709f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourceh alltree
18809f7043eSSatish Balay	-cd src/fortran; ${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourcef alltree
18909f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesc alltree
19009f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesf alltree
19109f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesch alltree
19209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesfh alltree
19309f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_makefile alltree
19409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS etags_bmakefiles
19555194d7eSSatish Balay	-chmod g+w TAGS
19629cdf679SBarry Smith# Builds complete etags list; only for PETSc developers.
19729cdf679SBarry Smithetags_complete:
19809f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_COMPLETE
19909f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_COMPLETE
20009f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_sourcec alltree
20141fa366cSBarry Smith	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_sourcej alltree
20209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_sourceh alltree
20309f7043eSSatish Balay	-cd src/fortran; ${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_sourcef alltree
20409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_examplesc alltree
20509f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_examplesf alltree
20609f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_examplesch alltree
20709f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_examplesfh alltree
20809f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_makefile alltree
20909f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE etags_bmakefiles
21009f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_docs alltree
21109f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_scripts alltree
21255194d7eSSatish Balay	-chmod g+w TAGS_COMPLETE
21311b6ed10SLois Curfman McInnes# Builds the etags file that excludes the examples directories
214bfce26a3SBarry Smithetags_noexamples:
21509f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_NO_EXAMPLES
21609f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_NO_EXAMPLES
21709f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourcec alltree
21841fa366cSBarry Smith	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourcej alltree
21909f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourceh alltree
22009f7043eSSatish Balay	-cd src/fortran; ${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourcef alltree
22109f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_makefile alltree
22209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES etags_bmakefiles
22309f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_docs alltree
22455194d7eSSatish Balay	-chmod g+w TAGS_NO_EXAMPLES
22511b6ed10SLois Curfman McInnes# Builds the etags file for makefiles
226b16a3bb1SBarry Smithetags_makefiles:
2277e0368d4SSatish Balay	-${RM} ${TAGSDIR}/TAGS_MAKEFILES
2287e0368d4SSatish Balay	-touch ${TAGSDIR}/TAGS_MAKEFILES
2297e0368d4SSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_MAKEFILES ACTION=etags_makefile alltree
2307e0368d4SSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_MAKEFILES etags_bmakefiles
2317e0368d4SSatish Balay	-chmod g+w TAGS_MAKEFILES
232dc80aa23SSatish Balay# Builds the etags file for examples
233dc80aa23SSatish Balayetags_examples:
23409f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_EXAMPLES
23509f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_EXAMPLES
23609f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesc alltree
23709f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesch alltree
23809f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesf alltree
23909f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesfh alltree
24055194d7eSSatish Balay	-chmod g+w TAGS_EXAMPLES
2412176044fSSatish Balayetags_fexamples:
24209f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_FEXAMPLES
24309f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_FEXAMPLES
24409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_FEXAMPLES ACTION=etags_examplesf alltree
24509f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesfh alltree
2462176044fSSatish Balay	-chmod g+w TAGS_FEXAMPLES
247b38bb785SSatish Balay#
248f20f7ba3SSatish Balay# These are here for the target allci and allco, and etags
2493677444aSSatish Balay#
250b38bb785SSatish Balay
251f0475f33SSatish BalayBMAKEFILES = bmake/common* bmake/*/base bmake/*/base_variables bmake/*/base.site \
252f7f63bceSSatish Balay	     bmake/*/petscconf.h bmake/*/petscfix.h bmake/win32/makefile.dos bmake/config/*.in \
253b8adb7afSBarry Smith             bmake/*/buildtest
2542f1ebae6SLois Curfman McInnesDOCS	   = bmake/readme bmake/petscconf.defs
25557c4596dSSatish BalaySCRIPTS    = maint/addlinks maint/builddist maint/buildlinks maint/wwwman \
25657c4596dSSatish Balay	     maint/xclude maint/crontab  \
25757c4596dSSatish Balay	     maint/autoftp include/foldinclude/generateincludes
25811b6ed10SLois Curfman McInnes
2596b91f8d1SSatish Balayupdatewebdocs:
2606b91f8d1SSatish Balay	-chmod -R ug+w /mcs/tmp/petsc-tmp
2616b91f8d1SSatish Balay	-chgrp -R petsc /mcs/tmp/petsc-tmp
2626b91f8d1SSatish Balay	-/bin/rm -rf /mcs/tmp/petscdocs
2636b91f8d1SSatish Balay	-/bin/cp -r /mcs/tmp/petsc-tmp/docs /mcs/tmp/petscdocs
2646b91f8d1SSatish Balay	-maint/update-docs.py /mcs/tmp/petscdocs
2656b91f8d1SSatish Balay	-find /mcs/tmp/petscdocs -type d -name "*" -exec chmod g+w {} \;
2666b91f8d1SSatish Balay	-/bin/cp -r /mcs/tmp/petscdocs/* ${PETSC_DIR}/docs
2676b91f8d1SSatish Balay	-/bin/rm -rf /mcs/tmp/petscdocs
2686b91f8d1SSatish Balay
2697f52c680SSatish Balay# Builds all the documentation - should be done every night
270074fadd8SSatish Balayalldoc: allmanualpages
271e15d8129SBarry Smith	cd docs/tex/manual; ${OMAKE} manual.dvi manual.ps manual.html splitmanual.html
2727f52c680SSatish Balay
2732496ca06SSatish Balay# Deletes man pages (HTML version)
2742496ca06SSatish Balaydeletemanualpages:
275130c9832SBarry Smith	${RM} -f ${LOC}/docs/manualpages/*/*.html \
276130c9832SBarry Smith                 ${LOC}/docs/manualpages/manualpages.cit
2772496ca06SSatish Balay
27811b6ed10SLois Curfman McInnes# Builds all versions of the man pages
279981c4779SBarry Smithallmanualpages: deletemanualpages
280130c9832SBarry Smith	-${OMAKE} ACTION=manualpages_buildcite tree_basic LOC=${LOC}
281130c9832SBarry Smith	-${OMAKE} ACTION=manualpages tree_basic  LOC=${LOC}
28248b2c0e9SBarry Smith	-maint/wwwindex.py ${PETSC_DIR} ${LOC}
283130c9832SBarry Smith	-${OMAKE} ACTION=manexamples tree  LOC=${LOC}
284130c9832SBarry Smith	-${OMAKE} manconcepts  LOC=${LOC}
28548b2c0e9SBarry Smith	-${OMAKE} ACTION=getexlist tree LOC=${LOC}
28648b2c0e9SBarry Smith	-${OMAKE} ACTION=exampleconcepts tree LOC=${LOC}
28748b2c0e9SBarry Smith	-maint/helpindex.py ${PETSC_DIR} ${LOC}
288130c9832SBarry Smith	-@chmod g+w ${LOC}/docs/manualpages/*/*.html
289e01137a2SSatish Balay
290435da068SBarry Smith# Builds .html versions of the source
291435da068SBarry Smithallhtml:
292779f5535SBarry Smith	-${OMAKE} ACTION=html PETSC_DIR=${PETSC_DIR} tree LOC=${LOC}
293435da068SBarry Smith
294115a300dSBarry Smithallcleanhtml:
295115a300dSBarry Smith	-${OMAKE} ACTION=cleanhtml PETSC_DIR=${PETSC_DIR} tree
296395565bcSBarry Smith
29711b6ed10SLois Curfman McInnes# Builds Fortran stub files
29811b6ed10SLois Curfman McInnesallfortranstubs:
29926cd32c0SSatish Balay	-@include/foldinclude/generateincludes
300d77bb2e1SSatish Balay	-@${RM} -f src/fortran/auto/*.c
301bbe92fcfSSatish Balay	-${OMAKE} ACTION=fortranstubs tree_basic
302b9917d27SSatish Balay	-@cd src/fortran/auto; ${OMAKE} fixfortran
3030a0eb2c5SBarry Smith	chmod g+w src/fortran/auto/*.c
304f6ff2982SSatish Balay
305d55938c2SBarry Smithallci:
306f20f7ba3SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=ci  alltree
307b951964fSBarry Smith
308d55938c2SBarry Smithallco:
309f20f7ba3SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=co  alltree
310d55938c2SBarry Smith
311791d64f4SSatish Balay# usage make allrcslabel NEW_RCS_LABEL=v_2_0_28
312791d64f4SSatish Balayallrcslabel:
313791d64f4SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} NEW_RCS_LABEL=${NEW_RCS_LABEL} ACTION=rcslabel  alltree
314b334301eSBarry Smith#
315b334301eSBarry Smith#   The commands below are for generating ADIC versions of the code;
316b334301eSBarry Smith# they are not currently used.
317b334301eSBarry Smith#
3185eea60f9SBarry Smithalladicignore:
319b87434adSSatish Balay	-@${RM} ${INSTALL_LIB_DIR}/adicignore
320d77bb2e1SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adicignore  tree
3215eea60f9SBarry Smith
3225eea60f9SBarry Smithalladic:
323d18b0ea7SBarry Smith	-@echo "Beginning to compile ADIC source code in all directories"
32467b024f7SSatish Balay	-@echo "Using ADIC compiler: ${ADIC_CC} ${CCPPFLAGS}"
325d18b0ea7SBarry Smith	-@echo "========================================="
32647794344SBarry Smith	-@cd include ; \
32767b024f7SSatish Balay           ${ADIC_CC} -s -f 1 ${CCPPFLAGS} petsc.h
328d77bb2e1SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adic  tree
32947794344SBarry Smith	-@cd src/inline ; \
330d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} adic
33177ed5343SBarry Smith	-@cd src/blaslapack ; \
332d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adic  tree
3336e81b665SBarry Smith
33447794344SBarry Smithalladiclib:
335d18b0ea7SBarry Smith	-@echo "Beginning to compile ADIC libraries in all directories"
336d77bb2e1SSatish Balay	-@echo "Using compiler: ${CC} ${COPTFLAGS}"
337d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
338d77bb2e1SSatish Balay	-@echo "Using PETSc flags: ${PETSCFLAGS} ${PCONF}"
339d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
340e0e703c1SSatish Balay	-@echo "Using configuration flags:"
341e0e703c1SSatish Balay	-@grep "define " bmake/${PETSC_ARCH}/petscconf.h
342d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
343d77bb2e1SSatish Balay	-@echo "Using include paths: ${PETSC_INCLUDE}"
344d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
345d77bb2e1SSatish Balay	-@echo "Using PETSc directory: ${PETSC_DIR}"
346d77bb2e1SSatish Balay	-@echo "Using PETSc arch: ${PETSC_ARCH}"
347d18b0ea7SBarry Smith	-@echo "========================================="
348b87434adSSatish Balay	-@${RM} -f  ${INSTALL_LIB_DIR}/*adic.a
349d77bb2e1SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adiclib  tree
35077ed5343SBarry Smith	-@cd src/blaslapack ; \
351d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adiclib  tree
3527e351921SBarry Smith	-@cd src/adic/src ; \
353d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} lib
3545eea60f9SBarry Smith
3559e417c50SSatish Balay# -------------------------------------------------------------------------------
3569e417c50SSatish Balay#
3579e417c50SSatish Balay# Some macros to check if the fortran interface is up-to-date.
3589e417c50SSatish Balay#
3599e417c50SSatish Balaycountfortranfunctions:
360d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran; egrep '^void' custom/*.c auto/*.c | \
36185c7cd6cSSatish Balay	cut -d'(' -f1 | tr -s  ' ' | cut -d' ' -f2 | uniq | egrep -v "(^$$|Petsc)" | \
3629e417c50SSatish Balay	sed "s/_$$//" | sort > /tmp/countfortranfunctions
363b334301eSBarry Smith
3649e417c50SSatish Balaycountcfunctions:
36585c7cd6cSSatish Balay	-@ grep extern ${PETSC_DIR}/include/*.h *.h | grep "(" | tr -s ' ' | \
36685c7cd6cSSatish Balay	cut -d'(' -f1 | cut -d' ' -f3 | grep -v "\*" | tr -s '\012' |  \
3679e417c50SSatish Balay	tr 'A-Z' 'a-z' |  sort > /tmp/countcfunctions
3689e417c50SSatish Balay
3699e417c50SSatish Balaydifffortranfunctions: countfortranfunctions countcfunctions
3709e417c50SSatish Balay	-@echo -------------- Functions missing in the fortran interface ---------------------
3719700b7f8SSatish Balay	-@${DIFF} /tmp/countcfunctions /tmp/countfortranfunctions | grep "^<" | cut -d' ' -f2
3729e417c50SSatish Balay	-@echo ----------------- Functions missing in the C interface ------------------------
3739700b7f8SSatish Balay	-@${DIFF} /tmp/countcfunctions /tmp/countfortranfunctions | grep "^>" | cut -d' ' -f2
374d77bb2e1SSatish Balay	-@${RM}  /tmp/countcfunctions /tmp/countfortranfunctions
375b334301eSBarry Smith
3763f4c9a3aSSatish Balaycheckbadfortranstubs:
3773f4c9a3aSSatish Balay	-@echo "========================================="
3783f4c9a3aSSatish Balay	-@echo "Functions with MPI_Comm as an Argument"
3793f4c9a3aSSatish Balay	-@echo "========================================="
380d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran/auto; grep '^void' *.c | grep 'MPI_Comm' | \
38185c7cd6cSSatish Balay	tr -s ' ' | tr -s ':' ' ' |cut -d'(' -f1 | cut -d' ' -f1,3
3823f4c9a3aSSatish Balay	-@echo "========================================="
3833f4c9a3aSSatish Balay	-@echo "Functions with a String as an Argument"
3843f4c9a3aSSatish Balay	-@echo "========================================="
385d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran/auto; grep '^void' *.c | grep 'char \*' | \
38685c7cd6cSSatish Balay	tr -s ' ' | tr -s ':' ' ' |cut -d'(' -f1 | cut -d' ' -f1,3
3873f4c9a3aSSatish Balay	-@echo "========================================="
3883f4c9a3aSSatish Balay	-@echo "Functions with Pointers to PETSc Objects as Argument"
3893f4c9a3aSSatish Balay	-@echo "========================================="
390d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran/auto; \
39185c7cd6cSSatish Balay	_p_OBJ=`grep _p_ ${PETSC_DIR}/include/*.h | tr -s ' ' | \
39285c7cd6cSSatish Balay	cut -d' ' -f 3 | tr -s '\012' | grep -v '{' | cut -d'*' -f1 | \
3933f4c9a3aSSatish Balay	sed "s/_p_//g" | tr -s '\012 ' ' *|' ` ; \
3943f4c9a3aSSatish Balay	for OBJ in $$_p_OBJ; do \
39585c7cd6cSSatish Balay	grep "$$OBJ \*" *.c | tr -s ' ' | tr -s ':' ' ' | \
3963f4c9a3aSSatish Balay	cut -d'(' -f1 | cut -d' ' -f1,3; \
3973f4c9a3aSSatish Balay	done
3983677444aSSatish Balay# Builds noise routines (not yet publically available)
3993677444aSSatish Balay# Note:	 libfast cannot run on .F files on certain machines, so we
4003677444aSSatish Balay# use lib and check for errors here.
40171fcab10SSatish Balaynoise: info chklib_dir
4023677444aSSatish Balay	-@echo "Beginning to compile noise routines"
4033677444aSSatish Balay	-@echo "========================================="
4043677444aSSatish Balay	-@cd src/snes/interface/noise; \
4053677444aSSatish Balay	  ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} lib > trashz 2>&1; \
4063677444aSSatish Balay	  grep -v clog trashz | grep -v "information sections" | \
4073677444aSSatish Balay	  egrep -i '(Error|warning|Can)' >> /dev/null;\
4083677444aSSatish Balay	  if [ "$$?" != 1 ]; then \
4093677444aSSatish Balay	  cat trashz ; fi; ${RM} trashz
410b87434adSSatish Balay	${RANLIB} ${INSTALL_LIB_DIR}/libpetscsnes.a
411b87434adSSatish Balay	-@chmod g+w  ${INSTALL_LIB_DIR}/libpetscsnes.a
4123677444aSSatish Balay	-@echo "Completed compiling noise routines"
4133677444aSSatish Balay	-@echo "========================================="
4143677444aSSatish Balay
4154556b810SBarry Smith#
4164556b810SBarry Smith# Automatically generates PETSc exercises in html from the tutorial examples.
417b6ea66eeSBarry Smith#
418b6ea66eeSBarry Smith# The introduction for each section is obtained from docs/manualpages/bop.${MANSEC} is under RCS and may be edited
419b6ea66eeSBarry Smith#  (used also in introductions to the manual pages)
420b6ea66eeSBarry Smith# The overall introduction is in docs/exercises/introduction.html and is under RCS and may be edited
421b6ea66eeSBarry Smith# The list of exercises is from TUTORIALS in each directory's makefile
422b6ea66eeSBarry Smith#
4234556b810SBarry Smith# DO NOT EDIT the pageform.txt or *.htm files generated since they will be automatically replaced.
4244556b810SBarry Smith# The pagemaker rule is in the file bmake/common (at the bottom)
4254556b810SBarry Smith#
426843ae28eSBarry Smith# Eventually the line below will replace the two cd in the rule below, it is just this way now for speed
42797e8d271SBarry Smith#	-@${OMAKE} PETSC_DIR=${PETSC_DIR} pagemaker
428843ae28eSBarry Smith#
42997e8d271SBarry Smithexercises:
43097e8d271SBarry Smith	-@echo "========================================="
43197e8d271SBarry Smith	-@echo "Generating HTML tutorial exercises"
432*467fbd6dSBarry Smith	-@${RM} docs/pageform.txt
43397e8d271SBarry Smith	-@echo "title=\"PETSc Exercises\""                >  docs/pageform.txt
43497e8d271SBarry Smith	-@echo "access_title=Exercise Sections"              >>  docs/pageform.txt
435beb1b3a5SBarry Smith	-@echo "access_format=short"                        >> docs/pageform.txt
43697e8d271SBarry Smith	-@echo "startpage=../exercises/introduction.htm"  >> docs/pageform.txt
43797e8d271SBarry Smith	-@echo "NONE title=\"Introduction\" command=link src=../exercises/introduction.htm" >> docs/pageform.txt
43897e8d271SBarry Smith	-@echo "Generating HTML for individual directories"
43997e8d271SBarry Smith	-@echo "========================================="
440beb1b3a5SBarry Smith	-@${OMAKE} PETSC_DIR=${PETSC_DIR} ACTION=pagemaker tree
44197e8d271SBarry Smith	-@echo "Completed HTML for individual directories"
44297e8d271SBarry Smith	-@echo "NONE title=\"<HR>\" " >> docs/pageform.txt;
44397e8d271SBarry Smith	-@echo "NONE title=\"PETSc Documentation\" command=link src=../index.html target=replace" >> docs/pageform.txt
44497e8d271SBarry Smith	/home/MPI/class/mpiexmpl/maint/makepage.new -pageform=docs/pageform.txt -access_extra=/dev/null -outdir=docs/exercises
44597e8d271SBarry Smith	-@echo "========================================="
44697e8d271SBarry Smith
44797e8d271SBarry Smith
44897e8d271SBarry Smith
44997e8d271SBarry Smith
45097e8d271SBarry Smith
45197e8d271SBarry Smith
45297e8d271SBarry Smith
45397e8d271SBarry Smith
45497e8d271SBarry Smith
45597e8d271SBarry Smith
45697e8d271SBarry Smith
45797e8d271SBarry Smith
45897e8d271SBarry Smith
45997e8d271SBarry Smith
46097e8d271SBarry Smith
46197e8d271SBarry Smith
462