xref: /petsc/makefile (revision f6a9982f9b7439b5093bed4bcfff370ebc1e5969)
1*f6a9982fSBarry Smith# $Id: makefile,v 1.335 2001/02/26 04:46:36 bsmith 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
17*f6a9982fSBarry 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
69*f6a9982fSBarry Smith	-@echo  "Using PETSc directory: ${PETSC_DIR}" >> MINFO
70*f6a9982fSBarry Smith	-@echo  "Using PETSc arch: ${PETSC_ARCH}" >> MINFO
71c5e9c7dfSBarry Smith	-@echo  "-----------------------------------------" >> MINFO
72c5e9c7dfSBarry Smith	-@echo  "Using C compiler: ${CC} ${COPTFLAGS} ${CCPPFLAGS} " >> MINFO
73b8d81f61SBarry Smith	-@if [  "${C_CCV}" -a "${C_CCV}" != "unknown" ] ; then \
749a43e735SSatish Balay	  echo  "C Compiler version:"  >> MINFO ; ${C_CCV} >> MINFO 2>&1; fi
75b8d81f61SBarry Smith	-@if [  "${CXX_CCV}" -a "${CXX_CCV}" != "unknown" ] ; then \
769a43e735SSatish Balay	  echo  "C++ Compiler version:"  >> MINFO; ${CXX_CCV} >> MINFO 2>&1 ; fi
77c5e9c7dfSBarry Smith	-@echo  "Using Fortran compiler: ${FC} ${FOPTFLAGS} ${FCPPFLAGS}" >> MINFO
78b8d81f61SBarry Smith	-@if [  "${C_FCV}" -a "${C_FCV}" != "unknown" ] ; then \
79c5e9c7dfSBarry Smith	  echo  "Fortran Compiler version:" >> MINFO ; ${C_FCV} >> MINFO 2>&1 ; fi
80c5e9c7dfSBarry Smith	-@echo  "-----------------------------------------" >> MINFO
81c5e9c7dfSBarry Smith	-@echo  "Using PETSc flags: ${PETSCFLAGS} ${PCONF}" >> MINFO
82c5e9c7dfSBarry Smith	-@echo  "-----------------------------------------" >> MINFO
83c5e9c7dfSBarry Smith	-@echo  "Using configuration flags:" >> MINFO
84c5e9c7dfSBarry Smith	-@echo  "-----------------------------------------" >> MINFO
85c5e9c7dfSBarry Smith	-@echo  "Using include paths: ${PETSC_INCLUDE}" >> MINFO
86c5e9c7dfSBarry Smith	-@echo  "------------------------------------------" >> MINFO
87c5e9c7dfSBarry Smith	-@echo  "Using C linker: ${CLINKER}" >> MINFO
88c5e9c7dfSBarry Smith	-@echo  "Using Fortran linker: ${FLINKER}" >> MINFO
89579ddc58SSatish Balay	-@cat MINFO | ${SED} -e 's/$$/  \\n\\/' > ${MINFO}
90c5e9c7dfSBarry Smith	-@echo  "Using libraries: ${PETSC_LIB} \"; " >> ${MINFO}
91a21fb8cbSBarry Smith	-@chmod g+w ${MINFO}
929c0905fcSSatish Balay	-@$(RM) MINFO
933677444aSSatish Balay#
94fa527775SLois Curfman McInnes# Builds the PETSc libraries
95fa527775SLois Curfman McInnes# This target also builds fortran77 and f90 interface
96*f6a9982fSBarry Smith# files and compiles .F files
973677444aSSatish Balay#
98*f6a9982fSBarry Smithbuild:
99efd74e9bSBarry Smith	-@echo "BEGINNING TO COMPILE LIBRARIES IN ALL DIRECTORIES"
10047794344SBarry Smith	-@echo "========================================="
10135d8aa7fSBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} PETSC_DIR=${PETSC_DIR} ACTION=libfast tree
102bfd5e76bSSatish Balay	${RANLIB} ${LDIR}/*.a
103bfd5e76bSSatish Balay	-@chmod g+w  ${LDIR}/*.a
1040b3634f8SBarry Smith	-@echo "Completed building libraries"
10547794344SBarry Smith	-@echo "========================================="
10635ca7349SBarry Smith#
107fa527775SLois Curfman McInnes#
108*f6a9982fSBarry Smith#
10971fcab10SSatish Balaypetscblas: info chklib_dir
110bfd5e76bSSatish Balay	-${RM} -f ${LDIR}/libpetscblas.*
111efd74e9bSBarry Smith	-@echo "BEGINNING TO COMPILE C VERSION OF BLAS AND LAPACK"
11266341c5dSSatish Balay	-@echo "========================================="
1136685cf94SSatish Balay	-@cd src/blaslapack/c; \
11435d8aa7fSBarry Smith	  ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH}  PETSC_DIR=${PETSC_DIR} ACTION=libfast tree
115bfd5e76bSSatish Balay	${RANLIB} ${LDIR}/libpetscblas.a
116bfd5e76bSSatish Balay	-@chmod g+w  ${LDIR}/*.a
117229e8d5cSBarry Smith	-@echo "Completed compiling C version of BLAS and LAPACK"
11866341c5dSSatish Balay	-@echo "========================================="
1198744090aSBarry Smith#
1203677444aSSatish Balay# Builds PETSc test examples for a given BOPT and architecture
1218744090aSBarry Smith#
1223677444aSSatish Balaytestexamples: info chkopts
1233677444aSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN TEST EXAMPLES"
1243677444aSSatish Balay	-@echo "Due to different numerical round-off on certain"
1253677444aSSatish Balay	-@echo "machines some of the numbers may not match exactly."
1263677444aSSatish Balay	-@echo "========================================="
12735d8aa7fSBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH}  PETSC_DIR=${PETSC_DIR} ACTION=testexamples_1  tree
1283677444aSSatish Balay	-@echo "Completed compiling and running test examples"
1293677444aSSatish Balay	-@echo "========================================="
1303677444aSSatish Balaytestfortran: info chkopts
1313677444aSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN FORTRAN TEST EXAMPLES"
1323677444aSSatish Balay	-@echo "========================================="
1333677444aSSatish Balay	-@echo "Due to different numerical round-off on certain"
1343677444aSSatish Balay	-@echo "machines or the way Fortran formats numbers"
1353677444aSSatish Balay	-@echo "some of the results may not match exactly."
1363677444aSSatish Balay	-@echo "========================================="
13735d8aa7fSBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} PETSC_DIR=${PETSC_DIR} ACTION=testexamples_3  tree
1383677444aSSatish Balay	-@echo "Completed compiling and running Fortran test examples"
1393677444aSSatish Balay	-@echo "========================================="
14001c5c36fSSatish Balaytestexamples_uni: info chkopts
14101c5c36fSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN TEST UNI-PROCESSOR EXAMPLES"
14201c5c36fSSatish Balay	-@echo "Due to different numerical round-off on certain"
14301c5c36fSSatish Balay	-@echo "machines some of the numbers may not match exactly."
14401c5c36fSSatish Balay	-@echo "========================================="
14535d8aa7fSBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} PETSC_DIR=${PETSC_DIR} ACTION=testexamples_4  tree
14601c5c36fSSatish Balay	-@echo "Completed compiling and running uniprocessor test examples"
14701c5c36fSSatish Balay	-@echo "========================================="
1483677444aSSatish Balaytestfortran_uni: info chkopts
1493677444aSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN TEST UNI-PROCESSOR FORTRAN EXAMPLES"
1503677444aSSatish Balay	-@echo "Due to different numerical round-off on certain"
1513677444aSSatish Balay	-@echo "machines some of the numbers may not match exactly."
1523677444aSSatish Balay	-@echo "========================================="
15335d8aa7fSBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} PETSC_DIR=${PETSC_DIR} ACTION=testexamples_9  tree
1543677444aSSatish Balay	-@echo "Completed compiling and running uniprocessor fortran test examples"
1553677444aSSatish Balay	-@echo "========================================="
156ad96cc0dSLois Curfman McInnes
157f3eacedaSSatish Balay# Ranlib on the libraries
1588c37ef55SBarry Smithranlib:
159bfd5e76bSSatish Balay	${RANLIB} ${LDIR}/*.a
16061523587SBarry Smith
16111b6ed10SLois Curfman McInnes# Deletes PETSc libraries
162f3eacedaSSatish Balaydeletelibs: chkopts_basic
163bfd5e76bSSatish Balay	-${RM} -f ${LDIR}/*
164d44968ceSBarry Smith
1653677444aSSatish Balay
1663677444aSSatish Balay# ------------------------------------------------------------------
1673677444aSSatish Balay#
1683677444aSSatish Balay# All remaining actions are intended for PETSc developers only.
1693677444aSSatish Balay# PETSc users should not generally need to use these commands.
1703677444aSSatish Balay#
1713677444aSSatish Balay
17265783a8cSBarry Smith# To access the tags in EMACS, type M-x visit-tags-table and specify
17365783a8cSBarry Smith# the file petsc/TAGS.
17465783a8cSBarry Smith# 1) To move to where a PETSc function is defined, enter M-. and the
17565783a8cSBarry Smith#     function name.
17665783a8cSBarry Smith# 2) To search for a string and move to the first occurrence,
17765783a8cSBarry Smith#     use M-x tags-search and the string.
1787acb7333SLois Curfman McInnes#     To locate later occurrences, use M-,
17911b6ed10SLois Curfman McInnes# Builds all etags files
18011b6ed10SLois Curfman McInnesalletags:
18101c05c5cSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags
18209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags_complete
18309f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags_noexamples
18409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags_examples
18509f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags_makefiles
18611b6ed10SLois Curfman McInnes# Builds the basic etags file.	This should be employed by most users.
18720563c6bSBarry Smithetags:
18809f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS
18909f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS
19009f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourcec alltree
19141fa366cSBarry Smith	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourcej alltree
19209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourceh alltree
19309f7043eSSatish Balay	-cd src/fortran; ${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourcef alltree
19409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesc alltree
19509f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesf alltree
19609f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesch alltree
19709f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesfh alltree
19809f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_makefile alltree
19909f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS etags_bmakefiles
20055194d7eSSatish Balay	-chmod g+w TAGS
20129cdf679SBarry Smith# Builds complete etags list; only for PETSc developers.
20229cdf679SBarry Smithetags_complete:
20309f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_COMPLETE
20409f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_COMPLETE
20509f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_sourcec alltree
20641fa366cSBarry Smith	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_sourcej alltree
20709f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_sourceh alltree
20809f7043eSSatish Balay	-cd src/fortran; ${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_sourcef alltree
20909f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_examplesc alltree
21009f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_examplesf alltree
21109f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_examplesch alltree
21209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_examplesfh alltree
21309f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_makefile alltree
21409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE etags_bmakefiles
21509f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_docs alltree
21609f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_scripts alltree
21755194d7eSSatish Balay	-chmod g+w TAGS_COMPLETE
21811b6ed10SLois Curfman McInnes# Builds the etags file that excludes the examples directories
219bfce26a3SBarry Smithetags_noexamples:
22009f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_NO_EXAMPLES
22109f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_NO_EXAMPLES
22209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourcec alltree
22341fa366cSBarry Smith	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourcej alltree
22409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourceh alltree
22509f7043eSSatish Balay	-cd src/fortran; ${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourcef alltree
22609f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_makefile alltree
22709f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES etags_bmakefiles
22809f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_docs alltree
22955194d7eSSatish Balay	-chmod g+w TAGS_NO_EXAMPLES
23011b6ed10SLois Curfman McInnes# Builds the etags file for makefiles
231b16a3bb1SBarry Smithetags_makefiles:
2327e0368d4SSatish Balay	-${RM} ${TAGSDIR}/TAGS_MAKEFILES
2337e0368d4SSatish Balay	-touch ${TAGSDIR}/TAGS_MAKEFILES
2347e0368d4SSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_MAKEFILES ACTION=etags_makefile alltree
2357e0368d4SSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_MAKEFILES etags_bmakefiles
2367e0368d4SSatish Balay	-chmod g+w TAGS_MAKEFILES
237dc80aa23SSatish Balay# Builds the etags file for examples
238dc80aa23SSatish Balayetags_examples:
23909f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_EXAMPLES
24009f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_EXAMPLES
24109f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesc alltree
24209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesch alltree
24309f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesf alltree
24409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesfh alltree
24555194d7eSSatish Balay	-chmod g+w TAGS_EXAMPLES
2462176044fSSatish Balayetags_fexamples:
24709f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_FEXAMPLES
24809f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_FEXAMPLES
24909f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_FEXAMPLES ACTION=etags_examplesf alltree
25009f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesfh alltree
2512176044fSSatish Balay	-chmod g+w TAGS_FEXAMPLES
252b38bb785SSatish Balay#
253f20f7ba3SSatish Balay# These are here for the target allci and allco, and etags
2543677444aSSatish Balay#
255b38bb785SSatish Balay
256f0475f33SSatish BalayBMAKEFILES = bmake/common* bmake/*/base bmake/*/base_variables bmake/*/base.site \
257f7f63bceSSatish Balay	     bmake/*/petscconf.h bmake/*/petscfix.h bmake/win32/makefile.dos bmake/config/*.in \
258b8adb7afSBarry Smith             bmake/*/buildtest
2592f1ebae6SLois Curfman McInnesDOCS	   = bmake/readme bmake/petscconf.defs
26057c4596dSSatish BalaySCRIPTS    = maint/addlinks maint/builddist maint/buildlinks maint/wwwman \
26157c4596dSSatish Balay	     maint/xclude maint/crontab  \
26257c4596dSSatish Balay	     maint/autoftp include/foldinclude/generateincludes
26311b6ed10SLois Curfman McInnes
2646b91f8d1SSatish Balayupdatewebdocs:
2656b91f8d1SSatish Balay	-chmod -R ug+w /mcs/tmp/petsc-tmp
2666b91f8d1SSatish Balay	-chgrp -R petsc /mcs/tmp/petsc-tmp
2676b91f8d1SSatish Balay	-/bin/rm -rf /mcs/tmp/petscdocs
2686b91f8d1SSatish Balay	-/bin/cp -r /mcs/tmp/petsc-tmp/docs /mcs/tmp/petscdocs
2696b91f8d1SSatish Balay	-maint/update-docs.py /mcs/tmp/petscdocs
2706b91f8d1SSatish Balay	-find /mcs/tmp/petscdocs -type d -name "*" -exec chmod g+w {} \;
2716b91f8d1SSatish Balay	-/bin/cp -r /mcs/tmp/petscdocs/* ${PETSC_DIR}/docs
2726b91f8d1SSatish Balay	-/bin/rm -rf /mcs/tmp/petscdocs
2736b91f8d1SSatish Balay
2747f52c680SSatish Balay# Builds all the documentation - should be done every night
275074fadd8SSatish Balayalldoc: allmanualpages
276e15d8129SBarry Smith	cd docs/tex/manual; ${OMAKE} manual.dvi manual.ps manual.html splitmanual.html
2777f52c680SSatish Balay
2782496ca06SSatish Balay# Deletes man pages (HTML version)
2792496ca06SSatish Balaydeletemanualpages:
280ba79c590SSatish Balay	${RM} -f ${PETSC_DIR}/docs/manualpages/*/*.html \
28145f11a08SBarry Smith                 ${PETSC_DIR}/docs/manualpages/manualpages.cit
2822496ca06SSatish Balay
28311b6ed10SLois Curfman McInnes# Builds all versions of the man pages
284981c4779SBarry Smithallmanualpages: deletemanualpages
285bbe92fcfSSatish Balay	-${OMAKE} ACTION=manualpages_buildcite tree_basic
286bbe92fcfSSatish Balay	-${OMAKE} ACTION=manualpages tree_basic
287dfd40236SSatish Balay	-maint/wwwindex.py ${PETSC_DIR}
288baa90677SBarry Smith	-${OMAKE} ACTION=manexamples tree
289beb1b3a5SBarry Smith	-${OMAKE} manconcepts
290beb1b3a5SBarry Smith	-${OMAKE} ACTION=exampleconcepts tree
2919770d121SSatish Balay	-maint/helpindex.py
292ba79c590SSatish Balay	-@chmod g+w docs/manualpages/*/*.html
293e01137a2SSatish Balay
29411b6ed10SLois Curfman McInnes# Builds Fortran stub files
29511b6ed10SLois Curfman McInnesallfortranstubs:
29626cd32c0SSatish Balay	-@include/foldinclude/generateincludes
297d77bb2e1SSatish Balay	-@${RM} -f src/fortran/auto/*.c
298bbe92fcfSSatish Balay	-${OMAKE} ACTION=fortranstubs tree_basic
299b9917d27SSatish Balay	-@cd src/fortran/auto; ${OMAKE} fixfortran
3000a0eb2c5SBarry Smith	chmod g+w src/fortran/auto/*.c
301f6ff2982SSatish Balay
302d55938c2SBarry Smithallci:
303f20f7ba3SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=ci  alltree
304b951964fSBarry Smith
305d55938c2SBarry Smithallco:
306f20f7ba3SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=co  alltree
307d55938c2SBarry Smith
308791d64f4SSatish Balay# usage make allrcslabel NEW_RCS_LABEL=v_2_0_28
309791d64f4SSatish Balayallrcslabel:
310791d64f4SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} NEW_RCS_LABEL=${NEW_RCS_LABEL} ACTION=rcslabel  alltree
311b334301eSBarry Smith#
312b334301eSBarry Smith#   The commands below are for generating ADIC versions of the code;
313b334301eSBarry Smith# they are not currently used.
314b334301eSBarry Smith#
3155eea60f9SBarry Smithalladicignore:
316bfd5e76bSSatish Balay	-@${RM} ${LDIR}/adicignore
317d77bb2e1SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adicignore  tree
3185eea60f9SBarry Smith
3195eea60f9SBarry Smithalladic:
320d18b0ea7SBarry Smith	-@echo "Beginning to compile ADIC source code in all directories"
32167b024f7SSatish Balay	-@echo "Using ADIC compiler: ${ADIC_CC} ${CCPPFLAGS}"
322d18b0ea7SBarry Smith	-@echo "========================================="
32347794344SBarry Smith	-@cd include ; \
32467b024f7SSatish Balay           ${ADIC_CC} -s -f 1 ${CCPPFLAGS} petsc.h
325d77bb2e1SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adic  tree
32647794344SBarry Smith	-@cd src/inline ; \
327d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} adic
32877ed5343SBarry Smith	-@cd src/blaslapack ; \
329d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adic  tree
3306e81b665SBarry Smith
33147794344SBarry Smithalladiclib:
332d18b0ea7SBarry Smith	-@echo "Beginning to compile ADIC libraries in all directories"
333d77bb2e1SSatish Balay	-@echo "Using compiler: ${CC} ${COPTFLAGS}"
334d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
335d77bb2e1SSatish Balay	-@echo "Using PETSc flags: ${PETSCFLAGS} ${PCONF}"
336d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
337e0e703c1SSatish Balay	-@echo "Using configuration flags:"
338e0e703c1SSatish Balay	-@grep "define " bmake/${PETSC_ARCH}/petscconf.h
339d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
340d77bb2e1SSatish Balay	-@echo "Using include paths: ${PETSC_INCLUDE}"
341d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
342d77bb2e1SSatish Balay	-@echo "Using PETSc directory: ${PETSC_DIR}"
343d77bb2e1SSatish Balay	-@echo "Using PETSc arch: ${PETSC_ARCH}"
344d18b0ea7SBarry Smith	-@echo "========================================="
345bfd5e76bSSatish Balay	-@${RM} -f  ${LDIR}/*adic.a
346d77bb2e1SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adiclib  tree
34777ed5343SBarry Smith	-@cd src/blaslapack ; \
348d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adiclib  tree
3497e351921SBarry Smith	-@cd src/adic/src ; \
350d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} lib
3515eea60f9SBarry Smith
3529e417c50SSatish Balay# -------------------------------------------------------------------------------
3539e417c50SSatish Balay#
3549e417c50SSatish Balay# Some macros to check if the fortran interface is up-to-date.
3559e417c50SSatish Balay#
3569e417c50SSatish Balaycountfortranfunctions:
357d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran; egrep '^void' custom/*.c auto/*.c | \
35885c7cd6cSSatish Balay	cut -d'(' -f1 | tr -s  ' ' | cut -d' ' -f2 | uniq | egrep -v "(^$$|Petsc)" | \
3599e417c50SSatish Balay	sed "s/_$$//" | sort > /tmp/countfortranfunctions
360b334301eSBarry Smith
3619e417c50SSatish Balaycountcfunctions:
36285c7cd6cSSatish Balay	-@ grep extern ${PETSC_DIR}/include/*.h *.h | grep "(" | tr -s ' ' | \
36385c7cd6cSSatish Balay	cut -d'(' -f1 | cut -d' ' -f3 | grep -v "\*" | tr -s '\012' |  \
3649e417c50SSatish Balay	tr 'A-Z' 'a-z' |  sort > /tmp/countcfunctions
3659e417c50SSatish Balay
3669e417c50SSatish Balaydifffortranfunctions: countfortranfunctions countcfunctions
3679e417c50SSatish Balay	-@echo -------------- Functions missing in the fortran interface ---------------------
3689e417c50SSatish Balay	-@diff /tmp/countcfunctions /tmp/countfortranfunctions | grep "^<" | cut -d' ' -f2
3699e417c50SSatish Balay	-@echo ----------------- Functions missing in the C interface ------------------------
3709e417c50SSatish Balay	-@diff /tmp/countcfunctions /tmp/countfortranfunctions | grep "^>" | cut -d' ' -f2
371d77bb2e1SSatish Balay	-@${RM}  /tmp/countcfunctions /tmp/countfortranfunctions
372b334301eSBarry Smith
3733f4c9a3aSSatish Balaycheckbadfortranstubs:
3743f4c9a3aSSatish Balay	-@echo "========================================="
3753f4c9a3aSSatish Balay	-@echo "Functions with MPI_Comm as an Argument"
3763f4c9a3aSSatish Balay	-@echo "========================================="
377d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran/auto; grep '^void' *.c | grep 'MPI_Comm' | \
37885c7cd6cSSatish Balay	tr -s ' ' | tr -s ':' ' ' |cut -d'(' -f1 | cut -d' ' -f1,3
3793f4c9a3aSSatish Balay	-@echo "========================================="
3803f4c9a3aSSatish Balay	-@echo "Functions with a String as an Argument"
3813f4c9a3aSSatish Balay	-@echo "========================================="
382d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran/auto; grep '^void' *.c | grep 'char \*' | \
38385c7cd6cSSatish Balay	tr -s ' ' | tr -s ':' ' ' |cut -d'(' -f1 | cut -d' ' -f1,3
3843f4c9a3aSSatish Balay	-@echo "========================================="
3853f4c9a3aSSatish Balay	-@echo "Functions with Pointers to PETSc Objects as Argument"
3863f4c9a3aSSatish Balay	-@echo "========================================="
387d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran/auto; \
38885c7cd6cSSatish Balay	_p_OBJ=`grep _p_ ${PETSC_DIR}/include/*.h | tr -s ' ' | \
38985c7cd6cSSatish Balay	cut -d' ' -f 3 | tr -s '\012' | grep -v '{' | cut -d'*' -f1 | \
3903f4c9a3aSSatish Balay	sed "s/_p_//g" | tr -s '\012 ' ' *|' ` ; \
3913f4c9a3aSSatish Balay	for OBJ in $$_p_OBJ; do \
39285c7cd6cSSatish Balay	grep "$$OBJ \*" *.c | tr -s ' ' | tr -s ':' ' ' | \
3933f4c9a3aSSatish Balay	cut -d'(' -f1 | cut -d' ' -f1,3; \
3943f4c9a3aSSatish Balay	done
3953677444aSSatish Balay# Builds noise routines (not yet publically available)
3963677444aSSatish Balay# Note:	 libfast cannot run on .F files on certain machines, so we
3973677444aSSatish Balay# use lib and check for errors here.
39871fcab10SSatish Balaynoise: info chklib_dir
3993677444aSSatish Balay	-@echo "Beginning to compile noise routines"
4003677444aSSatish Balay	-@echo "========================================="
4013677444aSSatish Balay	-@cd src/snes/interface/noise; \
4023677444aSSatish Balay	  ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} lib > trashz 2>&1; \
4033677444aSSatish Balay	  grep -v clog trashz | grep -v "information sections" | \
4043677444aSSatish Balay	  egrep -i '(Error|warning|Can)' >> /dev/null;\
4053677444aSSatish Balay	  if [ "$$?" != 1 ]; then \
4063677444aSSatish Balay	  cat trashz ; fi; ${RM} trashz
407bfd5e76bSSatish Balay	${RANLIB} ${LDIR}/libpetscsnes.a
408bfd5e76bSSatish Balay	-@chmod g+w  ${LDIR}/libpetscsnes.a
4093677444aSSatish Balay	-@echo "Completed compiling noise routines"
4103677444aSSatish Balay	-@echo "========================================="
4113677444aSSatish Balay
4124556b810SBarry Smith#
4134556b810SBarry Smith# Automatically generates PETSc exercises in html from the tutorial examples.
414b6ea66eeSBarry Smith#
415b6ea66eeSBarry Smith# The introduction for each section is obtained from docs/manualpages/bop.${MANSEC} is under RCS and may be edited
416b6ea66eeSBarry Smith#  (used also in introductions to the manual pages)
417b6ea66eeSBarry Smith# The overall introduction is in docs/exercises/introduction.html and is under RCS and may be edited
418b6ea66eeSBarry Smith# The list of exercises is from TUTORIALS in each directory's makefile
419b6ea66eeSBarry Smith#
4204556b810SBarry Smith# DO NOT EDIT the pageform.txt or *.htm files generated since they will be automatically replaced.
4214556b810SBarry Smith# The pagemaker rule is in the file bmake/common (at the bottom)
4224556b810SBarry Smith#
423843ae28eSBarry Smith# Eventually the line below will replace the two cd in the rule below, it is just this way now for speed
42497e8d271SBarry Smith#	-@${OMAKE} PETSC_DIR=${PETSC_DIR} pagemaker
425843ae28eSBarry Smith#
42697e8d271SBarry Smithexercises:
42797e8d271SBarry Smith	-@echo "========================================="
42897e8d271SBarry Smith	-@echo "Generating HTML tutorial exercises"
42997e8d271SBarry Smith	-@rm -f docs/pageform.txt
43097e8d271SBarry Smith	-@echo "title=\"PETSc Exercises\""                >  docs/pageform.txt
43197e8d271SBarry Smith	-@echo "access_title=Exercise Sections"              >>  docs/pageform.txt
432beb1b3a5SBarry Smith	-@echo "access_format=short"                        >> docs/pageform.txt
43397e8d271SBarry Smith	-@echo "startpage=../exercises/introduction.htm"  >> docs/pageform.txt
43497e8d271SBarry Smith	-@echo "NONE title=\"Introduction\" command=link src=../exercises/introduction.htm" >> docs/pageform.txt
43597e8d271SBarry Smith	-@echo "Generating HTML for individual directories"
43697e8d271SBarry Smith	-@echo "========================================="
437beb1b3a5SBarry Smith	-@${OMAKE} PETSC_DIR=${PETSC_DIR} ACTION=pagemaker tree
43897e8d271SBarry Smith	-@echo "Completed HTML for individual directories"
43997e8d271SBarry Smith	-@echo "NONE title=\"<HR>\" " >> docs/pageform.txt;
44097e8d271SBarry Smith	-@echo "NONE title=\"PETSc Documentation\" command=link src=../index.html target=replace" >> docs/pageform.txt
44197e8d271SBarry Smith	/home/MPI/class/mpiexmpl/maint/makepage.new -pageform=docs/pageform.txt -access_extra=/dev/null -outdir=docs/exercises
44297e8d271SBarry Smith	-@echo "========================================="
44397e8d271SBarry Smith
44497e8d271SBarry Smith
44597e8d271SBarry Smith
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
459