xref: /petsc/makefile (revision c20d8eed757841b50246df4aa6b6c88955e42288)
1*c20d8eedSBarry Smith# $Id: makefile,v 1.289 1999/06/04 14:46:57 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
1261523587SBarry Smith
133677444aSSatish Balay#
143677444aSSatish Balay# Basic targets to build PETSc libraries.
15fa527775SLois Curfman McInnes# all     : builds the c, fortran, and f90 libraries
169984b5c5SSatish Balayall       : info chkpetsc_dir deletelibs build_c build_fortran shared
17efd74e9bSBarry Smith#
18fa527775SLois Curfman McInnes# Prints information about the system and version of PETSc being compiled
19efd74e9bSBarry Smith#
20efd74e9bSBarry Smithinfo:
21efd74e9bSBarry Smith	-@echo "=========================================="
2211b6dc0cSBarry Smith	-@echo " "
23d76296fbSBarry Smith	-@echo "See docs/troubleshooting.html and docs/bugreporting.html"
24d76296fbSBarry Smith	-@echo "for help with installation problems. Please send EVERYTHING"
25d76296fbSBarry Smith	-@echo "printed out below when reporting problems"
2611b6dc0cSBarry Smith	-@echo " "
2711b6dc0cSBarry Smith	-@echo "To subscribe to the PETSc users mailing list, send mail to "
2811b6dc0cSBarry Smith	-@echo "majordomo@mcs.anl.gov with the message: "
2911b6dc0cSBarry Smith	-@echo "subscribe petsc-users"
3011b6dc0cSBarry Smith	-@echo " "
31d76296fbSBarry Smith	-@echo "=========================================="
321d91fb6eSBarry Smith	-@echo On `date` on `hostname`
3330fdcc7aSBarry Smith	-@echo Machine characteristics: `uname -a`
34efd74e9bSBarry Smith	-@echo "-----------------------------------------"
3567b024f7SSatish Balay	-@echo "Using C compiler: ${CC} ${COPTFLAGS} ${CCPPFLAGS}"
36*c20d8eedSBarry Smith	-@if [ -n "${C_CCV}" -a "${C_CCV}" != "unknown" ] ; then \
37*c20d8eedSBarry Smith	  echo "C Compiler version:" `${C_CCV}` ; fi
38*c20d8eedSBarry Smith	-@if [ -n "${CXX_CCV}" -a "${CXX_CCV}" != "unknown" ] ; then \
39*c20d8eedSBarry Smith	  echo "C++ Compiler version:" `${CXX_CCV}` ; fi
4067b024f7SSatish Balay	-@echo "Using Fortran compiler: ${FC} ${FOPTFLAGS} ${FCPPFLAGS}"
4147794344SBarry Smith	-@echo "-----------------------------------------"
4223f40d59SSatish Balay	-@grep PETSC_VERSION_NUMBER include/petsc.h | sed "s/........//"
43f265ae5cSBarry Smith	-@echo "-----------------------------------------"
44d77bb2e1SSatish Balay	-@echo "Using PETSc flags: ${PETSCFLAGS} ${PCONF}"
4547794344SBarry Smith	-@echo "-----------------------------------------"
46e0e703c1SSatish Balay	-@echo "Using configuration flags:"
4704d10f81SBarry Smith	-@grep "define " bmake/${PETSC_ARCH}/petscconf.h
4847794344SBarry Smith	-@echo "-----------------------------------------"
49d77bb2e1SSatish Balay	-@echo "Using include paths: ${PETSC_INCLUDE}"
5047794344SBarry Smith	-@echo "-----------------------------------------"
51d77bb2e1SSatish Balay	-@echo "Using PETSc directory: ${PETSC_DIR}"
52d77bb2e1SSatish Balay	-@echo "Using PETSc arch: ${PETSC_ARCH}"
53efd74e9bSBarry Smith	-@echo "------------------------------------------"
54d77bb2e1SSatish Balay	-@echo "Using C linker: ${CLINKER}"
55d77bb2e1SSatish Balay	-@echo "Using Fortran linker: ${FLINKER}"
56f2b01315SBarry Smith	-@echo "Using libraries: ${PETSC_LIB}"
57efd74e9bSBarry Smith	-@echo "=========================================="
58efd74e9bSBarry Smith
593677444aSSatish Balay#
60fa527775SLois Curfman McInnes# Builds the PETSc libraries
61fa527775SLois Curfman McInnes# This target also builds fortran77 and f90 interface
62fa527775SLois Curfman McInnes# files. (except compiling *.F files)
633677444aSSatish Balay#
6460262a0eSSatish Balaybuild_c:
65efd74e9bSBarry Smith	-@echo "BEGINNING TO COMPILE LIBRARIES IN ALL DIRECTORIES"
6647794344SBarry Smith	-@echo "========================================="
6775198762SBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=libfast  tree
68c1959989SSatish Balay	-@cd ${PETSC_DIR}/src/sys/src/time ; \
69c1959989SSatish Balay	${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} rs6000_asmtime
70c1959989SSatish Balay	${RANLIB} ${PDIR}/*.a
71d77bb2e1SSatish Balay	-@chmod g+w  ${PDIR}/*.a
720b3634f8SBarry Smith	-@echo "Completed building libraries"
7347794344SBarry Smith	-@echo "========================================="
740b3634f8SBarry Smith
7535ca7349SBarry Smith#
7628881d8bSBarry Smith# Builds PETSc Fortran source
7711b6ed10SLois Curfman McInnes# Note:	 libfast cannot run on .F files on certain machines, so we
789984b5c5SSatish Balay# use libf to compile the fortran source files.
79fa527775SLois Curfman McInnes#
8060262a0eSSatish Balaybuild_fortran:
8128881d8bSBarry Smith	-@echo "BEGINNING TO COMPILE FORTRAN SOURCE"
8247794344SBarry Smith	-@echo "========================================="
83b16a3bb1SBarry Smith	-@cd src/fortran/custom; \
8428881d8bSBarry Smith	  ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} libf clean
85971c2310SBarry Smith	-@cd src/fortran/kernels; \
864a903031SSatish Balay	  ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} libf clean
879984b5c5SSatish Balay	${RANLIB} ${PDIR}/libpetscfortran.a
88d08da015SSatish Balay	${RANLIB} ${PDIR}/libpetsc.a
89d77bb2e1SSatish Balay	-@chmod g+w  ${PDIR}/*.a
9028881d8bSBarry Smith	-@echo "Completed compiling Fortran source"
91971c2310SBarry Smith	-@echo "========================================="
92971c2310SBarry Smith
93efd74e9bSBarry Smithpetscblas: info chkpetsc_dir
94d77bb2e1SSatish Balay	-${RM} -f ${PDIR}/libpetscblas.*
95efd74e9bSBarry Smith	-@echo "BEGINNING TO COMPILE C VERSION OF BLAS AND LAPACK"
9666341c5dSSatish Balay	-@echo "========================================="
9777ed5343SBarry Smith	-@cd src/blaslapack; \
98d77bb2e1SSatish Balay	  ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=libfast tree
99d77bb2e1SSatish Balay	${RANLIB} ${PDIR}/libpetscblas.a
100d77bb2e1SSatish Balay	-@chmod g+w  ${PDIR}/*.a
101229e8d5cSBarry Smith	-@echo "Completed compiling C version of BLAS and LAPACK"
10266341c5dSSatish Balay	-@echo "========================================="
1031a4ded38SSatish Balay
10466341c5dSSatish Balay
1053677444aSSatish Balay# Builds PETSc test examples for a given BOPT and architecture
1063677444aSSatish Balaytestexamples: info chkopts
1073677444aSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN TEST EXAMPLES"
1083677444aSSatish Balay	-@echo "Due to different numerical round-off on certain"
1093677444aSSatish Balay	-@echo "machines some of the numbers may not match exactly."
1103677444aSSatish Balay	-@echo "========================================="
1113677444aSSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} \
1123677444aSSatish Balay	   ACTION=testexamples_1  tree
1133677444aSSatish Balay	-@echo "Completed compiling and running test examples"
1143677444aSSatish Balay	-@echo "========================================="
1153677444aSSatish Balay
1163677444aSSatish Balay# Builds PETSc test examples for a given BOPT and architecture
1173677444aSSatish Balaytestfortran: info chkopts
1183677444aSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN FORTRAN TEST EXAMPLES"
1193677444aSSatish Balay	-@echo "========================================="
1203677444aSSatish Balay	-@echo "Due to different numerical round-off on certain"
1213677444aSSatish Balay	-@echo "machines or the way Fortran formats numbers"
1223677444aSSatish Balay	-@echo "some of the results may not match exactly."
1233677444aSSatish Balay	-@echo "========================================="
1243677444aSSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} \
1253677444aSSatish Balay	   ACTION=testexamples_3  tree
1263677444aSSatish Balay	-@echo "Completed compiling and running Fortran test examples"
1273677444aSSatish Balay	-@echo "========================================="
1283677444aSSatish Balay
1293677444aSSatish Balay# Builds PETSc test examples for a given BOPT and architecture
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 "========================================="
13501c5c36fSSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} \
13601c5c36fSSatish Balay	   ACTION=testexamples_4  tree
13701c5c36fSSatish Balay	-@echo "Completed compiling and running uniprocessor test examples"
13801c5c36fSSatish Balay	-@echo "========================================="
1393677444aSSatish Balaytestfortran_uni: info chkopts
1403677444aSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN TEST UNI-PROCESSOR FORTRAN EXAMPLES"
1413677444aSSatish Balay	-@echo "Due to different numerical round-off on certain"
1423677444aSSatish Balay	-@echo "machines some of the numbers may not match exactly."
1433677444aSSatish Balay	-@echo "========================================="
1443677444aSSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} \
1453677444aSSatish Balay	   ACTION=testexamples_9  tree
1463677444aSSatish Balay	-@echo "Completed compiling and running uniprocessor fortran test examples"
1473677444aSSatish Balay	-@echo "========================================="
14811b6dc0cSBarry Smithmatlabcodes:
14911b6dc0cSBarry Smith	-@echo "BEGINNING TO COMPILE MATLAB INTERFACE"
15011b6dc0cSBarry Smith	-@cd src/sys/src/viewer/impls/socket/matlab; ${OMAKE} BOPT=g matlabcodes  PETSC_ARCH=${PETSC_ARCH}
151ad96cc0dSLois Curfman McInnes
152f3eacedaSSatish Balay# Ranlib on the libraries
1538c37ef55SBarry Smithranlib:
154d77bb2e1SSatish Balay	${RANLIB} ${PDIR}/*.a
15561523587SBarry Smith
15611b6ed10SLois Curfman McInnes# Deletes PETSc libraries
157f3eacedaSSatish Balaydeletelibs: chkopts_basic
158d77bb2e1SSatish Balay	-${RM} -f ${PDIR}/*
159d44968ceSBarry Smith
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
18609f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourceh alltree
18709f7043eSSatish Balay	-cd src/fortran; ${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourcef alltree
18809f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesc alltree
18909f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesf alltree
19009f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesch alltree
19109f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesfh alltree
19209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_makefile alltree
19309f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS etags_bmakefiles
19455194d7eSSatish Balay	-chmod g+w TAGS
19529cdf679SBarry Smith# Builds complete etags list; only for PETSc developers.
19629cdf679SBarry Smithetags_complete:
19709f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_COMPLETE
19809f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_COMPLETE
19909f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_sourcec alltree
20009f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_sourceh alltree
20109f7043eSSatish Balay	-cd src/fortran; ${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_sourcef alltree
20209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_examplesc alltree
20309f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_examplesf alltree
20409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_examplesch alltree
20509f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_examplesfh alltree
20609f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_makefile alltree
20709f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE etags_bmakefiles
20809f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_docs alltree
20909f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_scripts alltree
21055194d7eSSatish Balay	-chmod g+w TAGS_COMPLETE
21111b6ed10SLois Curfman McInnes# Builds the etags file that excludes the examples directories
212bfce26a3SBarry Smithetags_noexamples:
21309f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_NO_EXAMPLES
21409f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_NO_EXAMPLES
21509f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourcec alltree
21609f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourceh alltree
21709f7043eSSatish Balay	-cd src/fortran; ${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourcef alltree
21809f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_makefile alltree
21909f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES etags_bmakefiles
22009f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_docs alltree
22155194d7eSSatish Balay	-chmod g+w TAGS_NO_EXAMPLES
22211b6ed10SLois Curfman McInnes# Builds the etags file for makefiles
223b16a3bb1SBarry Smithetags_makefiles:
2247e0368d4SSatish Balay	-${RM} ${TAGSDIR}/TAGS_MAKEFILES
2257e0368d4SSatish Balay	-touch ${TAGSDIR}/TAGS_MAKEFILES
2267e0368d4SSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_MAKEFILES ACTION=etags_makefile alltree
2277e0368d4SSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_MAKEFILES etags_bmakefiles
2287e0368d4SSatish Balay	-chmod g+w TAGS_MAKEFILES
229dc80aa23SSatish Balay# Builds the etags file for examples
230dc80aa23SSatish Balayetags_examples:
23109f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_EXAMPLES
23209f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_EXAMPLES
23309f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesc alltree
23409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesch alltree
23509f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesf alltree
23609f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesfh alltree
23755194d7eSSatish Balay	-chmod g+w TAGS_EXAMPLES
2382176044fSSatish Balayetags_fexamples:
23909f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_FEXAMPLES
24009f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_FEXAMPLES
24109f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_FEXAMPLES ACTION=etags_examplesf alltree
24209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesfh alltree
2432176044fSSatish Balay	-chmod g+w TAGS_FEXAMPLES
244b38bb785SSatish Balay#
245f20f7ba3SSatish Balay# These are here for the target allci and allco, and etags
2463677444aSSatish Balay#
247b38bb785SSatish Balay
248f0475f33SSatish BalayBMAKEFILES = bmake/common* bmake/*/base bmake/*/base_variables bmake/*/base.site \
249321acebaSSatish Balay	     bmake/*/petscconf.h bmake/win32/makefile.dos bin/config/base*.in
2502f1ebae6SLois Curfman McInnesDOCS	   = bmake/readme bmake/petscconf.defs
25157c4596dSSatish BalaySCRIPTS    = maint/addlinks maint/builddist maint/buildlinks maint/wwwman \
25257c4596dSSatish Balay	     maint/xclude maint/crontab  \
25357c4596dSSatish Balay	     maint/autoftp include/foldinclude/generateincludes
25411b6ed10SLois Curfman McInnes
2557f52c680SSatish Balay# Builds all the documentation - should be done every night
2567f52c680SSatish Balayalldoc: allmanpages
257e15d8129SBarry Smith	cd docs/tex/manual; ${OMAKE} manual.dvi manual.ps manual.html splitmanual.html
2587f52c680SSatish Balay
2592496ca06SSatish Balay# Deletes man pages (HTML version)
2602496ca06SSatish Balaydeletemanualpages:
261ba79c590SSatish Balay	${RM} -f ${PETSC_DIR}/docs/manualpages/*/*.html \
26245f11a08SBarry Smith                 ${PETSC_DIR}/docs/manualpages/manualpages.cit
2632496ca06SSatish Balay
2642496ca06SSatish Balay# Deletes man pages (LaTeX version)
2652496ca06SSatish Balaydeletelatexpages:
2662496ca06SSatish Balay	${RM} -f ${PETSC_DIR}/docs/tex/rsum/*sum*.tex
2672496ca06SSatish Balay
26811b6ed10SLois Curfman McInnes# Builds all versions of the man pages
269981c4779SBarry Smithallmanpages: allmanualpages alllatexpages
270981c4779SBarry Smithallmanualpages: deletemanualpages
2713e01d015SBarry Smith	-${OMAKE} ACTION=manualpages_buildcite tree
2723e01d015SBarry Smith	-${OMAKE} ACTION=manualpages tree
273dfd40236SSatish Balay	-maint/wwwindex.py ${PETSC_DIR}
274981c4779SBarry Smith	-maint/examplesindex.tcl
275f8cfbf3fSSatish Balay	-maint/htmlkeywords.tcl
276ba79c590SSatish Balay	-@chmod g+w docs/manualpages/*/*.html
277e01137a2SSatish Balay
278416022c9SBarry Smithalllatexpages: deletelatexpages
2793e01d015SBarry Smith	-${OMAKE} ACTION=latexpages tree
28051c61065SBarry Smith	-@chmod g+w docs/tex/rsum/*
281416022c9SBarry Smith
28211b6ed10SLois Curfman McInnes# Builds Fortran stub files
28311b6ed10SLois Curfman McInnesallfortranstubs:
28426cd32c0SSatish Balay	-@include/foldinclude/generateincludes
285d77bb2e1SSatish Balay	-@${RM} -f src/fortran/auto/*.c
2863e01d015SBarry Smith	-${OMAKE} ACTION=fortranstubs tree
287716b9c40SSatish Balay	-@cd src/fortran/auto; ${OMAKE} -f makefile fixfortran
2880a0eb2c5SBarry Smith	chmod g+w src/fortran/auto/*.c
289f6ff2982SSatish Balay
290d55938c2SBarry Smithallci:
291f20f7ba3SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=ci  alltree
292b951964fSBarry Smith
293d55938c2SBarry Smithallco:
294f20f7ba3SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=co  alltree
295d55938c2SBarry Smith
296b334301eSBarry Smith#
297b334301eSBarry Smith#   The commands below are for generating ADIC versions of the code;
298b334301eSBarry Smith# they are not currently used.
299b334301eSBarry Smith#
3005eea60f9SBarry Smithalladicignore:
301d77bb2e1SSatish Balay	-@${RM} ${PDIR}/adicignore
302d77bb2e1SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adicignore  tree
3035eea60f9SBarry Smith
3045eea60f9SBarry Smithalladic:
305d18b0ea7SBarry Smith	-@echo "Beginning to compile ADIC source code in all directories"
30667b024f7SSatish Balay	-@echo "Using ADIC compiler: ${ADIC_CC} ${CCPPFLAGS}"
307d18b0ea7SBarry Smith	-@echo "========================================="
30847794344SBarry Smith	-@cd include ; \
30967b024f7SSatish Balay           ${ADIC_CC} -s -f 1 ${CCPPFLAGS} petsc.h
310d77bb2e1SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adic  tree
31147794344SBarry Smith	-@cd src/inline ; \
312d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} adic
31377ed5343SBarry Smith	-@cd src/blaslapack ; \
314d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adic  tree
3156e81b665SBarry Smith
31647794344SBarry Smithalladiclib:
317d18b0ea7SBarry Smith	-@echo "Beginning to compile ADIC libraries in all directories"
318d77bb2e1SSatish Balay	-@echo "Using compiler: ${CC} ${COPTFLAGS}"
319d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
320d77bb2e1SSatish Balay	-@echo "Using PETSc flags: ${PETSCFLAGS} ${PCONF}"
321d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
322e0e703c1SSatish Balay	-@echo "Using configuration flags:"
323e0e703c1SSatish Balay	-@grep "define " bmake/${PETSC_ARCH}/petscconf.h
324d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
325d77bb2e1SSatish Balay	-@echo "Using include paths: ${PETSC_INCLUDE}"
326d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
327d77bb2e1SSatish Balay	-@echo "Using PETSc directory: ${PETSC_DIR}"
328d77bb2e1SSatish Balay	-@echo "Using PETSc arch: ${PETSC_ARCH}"
329d18b0ea7SBarry Smith	-@echo "========================================="
330d77bb2e1SSatish Balay	-@${RM} -f  ${PDIR}/*adic.a
331d77bb2e1SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adiclib  tree
33277ed5343SBarry Smith	-@cd src/blaslapack ; \
333d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adiclib  tree
3347e351921SBarry Smith	-@cd src/adic/src ; \
335d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} lib
3365eea60f9SBarry Smith
3379e417c50SSatish Balay# -------------------------------------------------------------------------------
3389e417c50SSatish Balay#
3399e417c50SSatish Balay# Some macros to check if the fortran interface is up-to-date.
3409e417c50SSatish Balay#
3419e417c50SSatish Balaycountfortranfunctions:
342d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran; egrep '^void' custom/*.c auto/*.c | \
34385c7cd6cSSatish Balay	cut -d'(' -f1 | tr -s  ' ' | cut -d' ' -f2 | uniq | egrep -v "(^$$|Petsc)" | \
3449e417c50SSatish Balay	sed "s/_$$//" | sort > /tmp/countfortranfunctions
345b334301eSBarry Smith
3469e417c50SSatish Balaycountcfunctions:
34785c7cd6cSSatish Balay	-@ grep extern ${PETSC_DIR}/include/*.h *.h | grep "(" | tr -s ' ' | \
34885c7cd6cSSatish Balay	cut -d'(' -f1 | cut -d' ' -f3 | grep -v "\*" | tr -s '\012' |  \
3499e417c50SSatish Balay	tr 'A-Z' 'a-z' |  sort > /tmp/countcfunctions
3509e417c50SSatish Balay
3519e417c50SSatish Balaydifffortranfunctions: countfortranfunctions countcfunctions
3529e417c50SSatish Balay	-@echo -------------- Functions missing in the fortran interface ---------------------
3539e417c50SSatish Balay	-@diff /tmp/countcfunctions /tmp/countfortranfunctions | grep "^<" | cut -d' ' -f2
3549e417c50SSatish Balay	-@echo ----------------- Functions missing in the C interface ------------------------
3559e417c50SSatish Balay	-@diff /tmp/countcfunctions /tmp/countfortranfunctions | grep "^>" | cut -d' ' -f2
356d77bb2e1SSatish Balay	-@${RM}  /tmp/countcfunctions /tmp/countfortranfunctions
357b334301eSBarry Smith
3583f4c9a3aSSatish Balaycheckbadfortranstubs:
3593f4c9a3aSSatish Balay	-@echo "========================================="
3603f4c9a3aSSatish Balay	-@echo "Functions with MPI_Comm as an Argument"
3613f4c9a3aSSatish Balay	-@echo "========================================="
362d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran/auto; grep '^void' *.c | grep 'MPI_Comm' | \
36385c7cd6cSSatish Balay	tr -s ' ' | tr -s ':' ' ' |cut -d'(' -f1 | cut -d' ' -f1,3
3643f4c9a3aSSatish Balay	-@echo "========================================="
3653f4c9a3aSSatish Balay	-@echo "Functions with a String as an Argument"
3663f4c9a3aSSatish Balay	-@echo "========================================="
367d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran/auto; grep '^void' *.c | grep 'char \*' | \
36885c7cd6cSSatish Balay	tr -s ' ' | tr -s ':' ' ' |cut -d'(' -f1 | cut -d' ' -f1,3
3693f4c9a3aSSatish Balay	-@echo "========================================="
3703f4c9a3aSSatish Balay	-@echo "Functions with Pointers to PETSc Objects as Argument"
3713f4c9a3aSSatish Balay	-@echo "========================================="
372d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran/auto; \
37385c7cd6cSSatish Balay	_p_OBJ=`grep _p_ ${PETSC_DIR}/include/*.h | tr -s ' ' | \
37485c7cd6cSSatish Balay	cut -d' ' -f 3 | tr -s '\012' | grep -v '{' | cut -d'*' -f1 | \
3753f4c9a3aSSatish Balay	sed "s/_p_//g" | tr -s '\012 ' ' *|' ` ; \
3763f4c9a3aSSatish Balay	for OBJ in $$_p_OBJ; do \
37785c7cd6cSSatish Balay	grep "$$OBJ \*" *.c | tr -s ' ' | tr -s ':' ' ' | \
3783f4c9a3aSSatish Balay	cut -d'(' -f1 | cut -d' ' -f1,3; \
3793f4c9a3aSSatish Balay	done
3803677444aSSatish Balay# Builds noise routines (not yet publically available)
3813677444aSSatish Balay# Note:	 libfast cannot run on .F files on certain machines, so we
3823677444aSSatish Balay# use lib and check for errors here.
3833677444aSSatish Balaynoise: info chkpetsc_dir
3843677444aSSatish Balay	-@echo "Beginning to compile noise routines"
3853677444aSSatish Balay	-@echo "========================================="
3863677444aSSatish Balay	-@cd src/snes/interface/noise; \
3873677444aSSatish Balay	  ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} lib > trashz 2>&1; \
3883677444aSSatish Balay	  grep -v clog trashz | grep -v "information sections" | \
3893677444aSSatish Balay	  egrep -i '(Error|warning|Can)' >> /dev/null;\
3903677444aSSatish Balay	  if [ "$$?" != 1 ]; then \
3913677444aSSatish Balay	  cat trashz ; fi; ${RM} trashz
3923677444aSSatish Balay	${RANLIB} ${PDIR}/libpetscsnes.a
3933677444aSSatish Balay	-@chmod g+w  ${PDIR}/libpetscsnes.a
3943677444aSSatish Balay	-@echo "Completed compiling noise routines"
3953677444aSSatish Balay	-@echo "========================================="
3963677444aSSatish Balay
397