xref: /petsc/makefile (revision 88b813476baef396f97a9dc39217ba79a091333c)
1*88b81347SBarry Smith# $Id: makefile,v 1.290 1999/09/04 19:11:43 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}"
36c20d8eedSBarry Smith	-@if [ -n "${C_CCV}" -a "${C_CCV}" != "unknown" ] ; then \
37*88b81347SBarry Smith	  echo "C Compiler version:" ; ${C_CCV} ; fi
38c20d8eedSBarry Smith	-@if [ -n "${CXX_CCV}" -a "${CXX_CCV}" != "unknown" ] ; then \
39*88b81347SBarry Smith	  echo "C++ Compiler version:" ; ${CXX_CCV} ; fi
4067b024f7SSatish Balay	-@echo "Using Fortran compiler: ${FC} ${FOPTFLAGS} ${FCPPFLAGS}"
41*88b81347SBarry Smith	-@if [ -n "${C_FCV}" -a "${C_FCV}" != "unknown" ] ; then \
42*88b81347SBarry Smith	  echo "Fortran Compiler version:" ; ${C_FCV} ; fi
4347794344SBarry Smith	-@echo "-----------------------------------------"
4423f40d59SSatish Balay	-@grep PETSC_VERSION_NUMBER include/petsc.h | sed "s/........//"
45f265ae5cSBarry Smith	-@echo "-----------------------------------------"
46d77bb2e1SSatish Balay	-@echo "Using PETSc flags: ${PETSCFLAGS} ${PCONF}"
4747794344SBarry Smith	-@echo "-----------------------------------------"
48e0e703c1SSatish Balay	-@echo "Using configuration flags:"
4904d10f81SBarry Smith	-@grep "define " bmake/${PETSC_ARCH}/petscconf.h
5047794344SBarry Smith	-@echo "-----------------------------------------"
51d77bb2e1SSatish Balay	-@echo "Using include paths: ${PETSC_INCLUDE}"
5247794344SBarry Smith	-@echo "-----------------------------------------"
53d77bb2e1SSatish Balay	-@echo "Using PETSc directory: ${PETSC_DIR}"
54d77bb2e1SSatish Balay	-@echo "Using PETSc arch: ${PETSC_ARCH}"
55efd74e9bSBarry Smith	-@echo "------------------------------------------"
56d77bb2e1SSatish Balay	-@echo "Using C linker: ${CLINKER}"
57d77bb2e1SSatish Balay	-@echo "Using Fortran linker: ${FLINKER}"
58f2b01315SBarry Smith	-@echo "Using libraries: ${PETSC_LIB}"
59efd74e9bSBarry Smith	-@echo "=========================================="
60efd74e9bSBarry Smith
613677444aSSatish Balay#
62fa527775SLois Curfman McInnes# Builds the PETSc libraries
63fa527775SLois Curfman McInnes# This target also builds fortran77 and f90 interface
64fa527775SLois Curfman McInnes# files. (except compiling *.F files)
653677444aSSatish Balay#
6660262a0eSSatish Balaybuild_c:
67efd74e9bSBarry Smith	-@echo "BEGINNING TO COMPILE LIBRARIES IN ALL DIRECTORIES"
6847794344SBarry Smith	-@echo "========================================="
6975198762SBarry Smith	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=libfast  tree
70c1959989SSatish Balay	-@cd ${PETSC_DIR}/src/sys/src/time ; \
71c1959989SSatish Balay	${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} rs6000_asmtime
72c1959989SSatish Balay	${RANLIB} ${PDIR}/*.a
73d77bb2e1SSatish Balay	-@chmod g+w  ${PDIR}/*.a
740b3634f8SBarry Smith	-@echo "Completed building libraries"
7547794344SBarry Smith	-@echo "========================================="
760b3634f8SBarry Smith
7735ca7349SBarry Smith#
7828881d8bSBarry Smith# Builds PETSc Fortran source
7911b6ed10SLois Curfman McInnes# Note:	 libfast cannot run on .F files on certain machines, so we
809984b5c5SSatish Balay# use libf to compile the fortran source files.
81fa527775SLois Curfman McInnes#
8260262a0eSSatish Balaybuild_fortran:
8328881d8bSBarry Smith	-@echo "BEGINNING TO COMPILE FORTRAN SOURCE"
8447794344SBarry Smith	-@echo "========================================="
85b16a3bb1SBarry Smith	-@cd src/fortran/custom; \
8628881d8bSBarry Smith	  ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} libf clean
87971c2310SBarry Smith	-@cd src/fortran/kernels; \
884a903031SSatish Balay	  ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} libf clean
899984b5c5SSatish Balay	${RANLIB} ${PDIR}/libpetscfortran.a
90d08da015SSatish Balay	${RANLIB} ${PDIR}/libpetsc.a
91d77bb2e1SSatish Balay	-@chmod g+w  ${PDIR}/*.a
9228881d8bSBarry Smith	-@echo "Completed compiling Fortran source"
93971c2310SBarry Smith	-@echo "========================================="
94971c2310SBarry Smith
95efd74e9bSBarry Smithpetscblas: info chkpetsc_dir
96d77bb2e1SSatish Balay	-${RM} -f ${PDIR}/libpetscblas.*
97efd74e9bSBarry Smith	-@echo "BEGINNING TO COMPILE C VERSION OF BLAS AND LAPACK"
9866341c5dSSatish Balay	-@echo "========================================="
9977ed5343SBarry Smith	-@cd src/blaslapack; \
100d77bb2e1SSatish Balay	  ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=libfast tree
101d77bb2e1SSatish Balay	${RANLIB} ${PDIR}/libpetscblas.a
102d77bb2e1SSatish Balay	-@chmod g+w  ${PDIR}/*.a
103229e8d5cSBarry Smith	-@echo "Completed compiling C version of BLAS and LAPACK"
10466341c5dSSatish Balay	-@echo "========================================="
1051a4ded38SSatish Balay
10666341c5dSSatish Balay
1073677444aSSatish Balay# Builds PETSc test examples for a given BOPT and architecture
1083677444aSSatish Balaytestexamples: info chkopts
1093677444aSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN TEST EXAMPLES"
1103677444aSSatish Balay	-@echo "Due to different numerical round-off on certain"
1113677444aSSatish Balay	-@echo "machines some of the numbers may not match exactly."
1123677444aSSatish Balay	-@echo "========================================="
1133677444aSSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} \
1143677444aSSatish Balay	   ACTION=testexamples_1  tree
1153677444aSSatish Balay	-@echo "Completed compiling and running test examples"
1163677444aSSatish Balay	-@echo "========================================="
1173677444aSSatish Balay
1183677444aSSatish Balay# Builds PETSc test examples for a given BOPT and architecture
1193677444aSSatish Balaytestfortran: info chkopts
1203677444aSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN FORTRAN TEST EXAMPLES"
1213677444aSSatish Balay	-@echo "========================================="
1223677444aSSatish Balay	-@echo "Due to different numerical round-off on certain"
1233677444aSSatish Balay	-@echo "machines or the way Fortran formats numbers"
1243677444aSSatish Balay	-@echo "some of the results may not match exactly."
1253677444aSSatish Balay	-@echo "========================================="
1263677444aSSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} \
1273677444aSSatish Balay	   ACTION=testexamples_3  tree
1283677444aSSatish Balay	-@echo "Completed compiling and running Fortran test examples"
1293677444aSSatish Balay	-@echo "========================================="
1303677444aSSatish Balay
1313677444aSSatish Balay# Builds PETSc test examples for a given BOPT and architecture
13201c5c36fSSatish Balaytestexamples_uni: info chkopts
13301c5c36fSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN TEST UNI-PROCESSOR EXAMPLES"
13401c5c36fSSatish Balay	-@echo "Due to different numerical round-off on certain"
13501c5c36fSSatish Balay	-@echo "machines some of the numbers may not match exactly."
13601c5c36fSSatish Balay	-@echo "========================================="
13701c5c36fSSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} \
13801c5c36fSSatish Balay	   ACTION=testexamples_4  tree
13901c5c36fSSatish Balay	-@echo "Completed compiling and running uniprocessor test examples"
14001c5c36fSSatish Balay	-@echo "========================================="
1413677444aSSatish Balaytestfortran_uni: info chkopts
1423677444aSSatish Balay	-@echo "BEGINNING TO COMPILE AND RUN TEST UNI-PROCESSOR FORTRAN 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 "========================================="
1463677444aSSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} \
1473677444aSSatish Balay	   ACTION=testexamples_9  tree
1483677444aSSatish Balay	-@echo "Completed compiling and running uniprocessor fortran test examples"
1493677444aSSatish Balay	-@echo "========================================="
15011b6dc0cSBarry Smithmatlabcodes:
15111b6dc0cSBarry Smith	-@echo "BEGINNING TO COMPILE MATLAB INTERFACE"
15211b6dc0cSBarry Smith	-@cd src/sys/src/viewer/impls/socket/matlab; ${OMAKE} BOPT=g matlabcodes  PETSC_ARCH=${PETSC_ARCH}
153ad96cc0dSLois Curfman McInnes
154f3eacedaSSatish Balay# Ranlib on the libraries
1558c37ef55SBarry Smithranlib:
156d77bb2e1SSatish Balay	${RANLIB} ${PDIR}/*.a
15761523587SBarry Smith
15811b6ed10SLois Curfman McInnes# Deletes PETSc libraries
159f3eacedaSSatish Balaydeletelibs: chkopts_basic
160d77bb2e1SSatish Balay	-${RM} -f ${PDIR}/*
161d44968ceSBarry Smith
1623677444aSSatish Balay
1633677444aSSatish Balay# ------------------------------------------------------------------
1643677444aSSatish Balay#
1653677444aSSatish Balay# All remaining actions are intended for PETSc developers only.
1663677444aSSatish Balay# PETSc users should not generally need to use these commands.
1673677444aSSatish Balay#
1683677444aSSatish Balay
16965783a8cSBarry Smith# To access the tags in EMACS, type M-x visit-tags-table and specify
17065783a8cSBarry Smith# the file petsc/TAGS.
17165783a8cSBarry Smith# 1) To move to where a PETSc function is defined, enter M-. and the
17265783a8cSBarry Smith#     function name.
17365783a8cSBarry Smith# 2) To search for a string and move to the first occurrence,
17465783a8cSBarry Smith#     use M-x tags-search and the string.
1757acb7333SLois Curfman McInnes#     To locate later occurrences, use M-,
17611b6ed10SLois Curfman McInnes# Builds all etags files
17711b6ed10SLois Curfman McInnesalletags:
17801c05c5cSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags
17909f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags_complete
18009f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags_noexamples
18109f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags_examples
18209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSDIR=${PETSC_DIR} etags_makefiles
18311b6ed10SLois Curfman McInnes# Builds the basic etags file.	This should be employed by most users.
18420563c6bSBarry Smithetags:
18509f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS
18609f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS
18709f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourcec alltree
18809f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourceh alltree
18909f7043eSSatish Balay	-cd src/fortran; ${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_sourcef alltree
19009f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesc alltree
19109f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesf alltree
19209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesch alltree
19309f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_examplesfh alltree
19409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS ACTION=etags_makefile alltree
19509f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS etags_bmakefiles
19655194d7eSSatish Balay	-chmod g+w TAGS
19729cdf679SBarry Smith# Builds complete etags list; only for PETSc developers.
19829cdf679SBarry Smithetags_complete:
19909f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_COMPLETE
20009f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_COMPLETE
20109f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_COMPLETE ACTION=etags_sourcec 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
21809f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourceh alltree
21909f7043eSSatish Balay	-cd src/fortran; ${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_sourcef alltree
22009f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_makefile alltree
22109f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES etags_bmakefiles
22209f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_NO_EXAMPLES ACTION=etags_docs alltree
22355194d7eSSatish Balay	-chmod g+w TAGS_NO_EXAMPLES
22411b6ed10SLois Curfman McInnes# Builds the etags file for makefiles
225b16a3bb1SBarry Smithetags_makefiles:
2267e0368d4SSatish Balay	-${RM} ${TAGSDIR}/TAGS_MAKEFILES
2277e0368d4SSatish Balay	-touch ${TAGSDIR}/TAGS_MAKEFILES
2287e0368d4SSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_MAKEFILES ACTION=etags_makefile alltree
2297e0368d4SSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_MAKEFILES etags_bmakefiles
2307e0368d4SSatish Balay	-chmod g+w TAGS_MAKEFILES
231dc80aa23SSatish Balay# Builds the etags file for examples
232dc80aa23SSatish Balayetags_examples:
23309f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_EXAMPLES
23409f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_EXAMPLES
23509f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesc alltree
23609f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesch alltree
23709f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesf alltree
23809f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesfh alltree
23955194d7eSSatish Balay	-chmod g+w TAGS_EXAMPLES
2402176044fSSatish Balayetags_fexamples:
24109f7043eSSatish Balay	-${RM} ${TAGSDIR}/TAGS_FEXAMPLES
24209f7043eSSatish Balay	-touch ${TAGSDIR}/TAGS_FEXAMPLES
24309f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_FEXAMPLES ACTION=etags_examplesf alltree
24409f7043eSSatish Balay	-${OMAKE} PETSC_DIR=${PETSC_DIR} TAGSFILE=${TAGSDIR}/TAGS_EXAMPLES ACTION=etags_examplesfh alltree
2452176044fSSatish Balay	-chmod g+w TAGS_FEXAMPLES
246b38bb785SSatish Balay#
247f20f7ba3SSatish Balay# These are here for the target allci and allco, and etags
2483677444aSSatish Balay#
249b38bb785SSatish Balay
250f0475f33SSatish BalayBMAKEFILES = bmake/common* bmake/*/base bmake/*/base_variables bmake/*/base.site \
251321acebaSSatish Balay	     bmake/*/petscconf.h bmake/win32/makefile.dos bin/config/base*.in
2522f1ebae6SLois Curfman McInnesDOCS	   = bmake/readme bmake/petscconf.defs
25357c4596dSSatish BalaySCRIPTS    = maint/addlinks maint/builddist maint/buildlinks maint/wwwman \
25457c4596dSSatish Balay	     maint/xclude maint/crontab  \
25557c4596dSSatish Balay	     maint/autoftp include/foldinclude/generateincludes
25611b6ed10SLois Curfman McInnes
2577f52c680SSatish Balay# Builds all the documentation - should be done every night
2587f52c680SSatish Balayalldoc: allmanpages
259e15d8129SBarry Smith	cd docs/tex/manual; ${OMAKE} manual.dvi manual.ps manual.html splitmanual.html
2607f52c680SSatish Balay
2612496ca06SSatish Balay# Deletes man pages (HTML version)
2622496ca06SSatish Balaydeletemanualpages:
263ba79c590SSatish Balay	${RM} -f ${PETSC_DIR}/docs/manualpages/*/*.html \
26445f11a08SBarry Smith                 ${PETSC_DIR}/docs/manualpages/manualpages.cit
2652496ca06SSatish Balay
2662496ca06SSatish Balay# Deletes man pages (LaTeX version)
2672496ca06SSatish Balaydeletelatexpages:
2682496ca06SSatish Balay	${RM} -f ${PETSC_DIR}/docs/tex/rsum/*sum*.tex
2692496ca06SSatish Balay
27011b6ed10SLois Curfman McInnes# Builds all versions of the man pages
271981c4779SBarry Smithallmanpages: allmanualpages alllatexpages
272981c4779SBarry Smithallmanualpages: deletemanualpages
2733e01d015SBarry Smith	-${OMAKE} ACTION=manualpages_buildcite tree
2743e01d015SBarry Smith	-${OMAKE} ACTION=manualpages tree
275dfd40236SSatish Balay	-maint/wwwindex.py ${PETSC_DIR}
276981c4779SBarry Smith	-maint/examplesindex.tcl
277f8cfbf3fSSatish Balay	-maint/htmlkeywords.tcl
278ba79c590SSatish Balay	-@chmod g+w docs/manualpages/*/*.html
279e01137a2SSatish Balay
280416022c9SBarry Smithalllatexpages: deletelatexpages
2813e01d015SBarry Smith	-${OMAKE} ACTION=latexpages tree
28251c61065SBarry Smith	-@chmod g+w docs/tex/rsum/*
283416022c9SBarry Smith
28411b6ed10SLois Curfman McInnes# Builds Fortran stub files
28511b6ed10SLois Curfman McInnesallfortranstubs:
28626cd32c0SSatish Balay	-@include/foldinclude/generateincludes
287d77bb2e1SSatish Balay	-@${RM} -f src/fortran/auto/*.c
2883e01d015SBarry Smith	-${OMAKE} ACTION=fortranstubs tree
289716b9c40SSatish Balay	-@cd src/fortran/auto; ${OMAKE} -f makefile fixfortran
2900a0eb2c5SBarry Smith	chmod g+w src/fortran/auto/*.c
291f6ff2982SSatish Balay
292d55938c2SBarry Smithallci:
293f20f7ba3SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=ci  alltree
294b951964fSBarry Smith
295d55938c2SBarry Smithallco:
296f20f7ba3SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=co  alltree
297d55938c2SBarry Smith
298b334301eSBarry Smith#
299b334301eSBarry Smith#   The commands below are for generating ADIC versions of the code;
300b334301eSBarry Smith# they are not currently used.
301b334301eSBarry Smith#
3025eea60f9SBarry Smithalladicignore:
303d77bb2e1SSatish Balay	-@${RM} ${PDIR}/adicignore
304d77bb2e1SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adicignore  tree
3055eea60f9SBarry Smith
3065eea60f9SBarry Smithalladic:
307d18b0ea7SBarry Smith	-@echo "Beginning to compile ADIC source code in all directories"
30867b024f7SSatish Balay	-@echo "Using ADIC compiler: ${ADIC_CC} ${CCPPFLAGS}"
309d18b0ea7SBarry Smith	-@echo "========================================="
31047794344SBarry Smith	-@cd include ; \
31167b024f7SSatish Balay           ${ADIC_CC} -s -f 1 ${CCPPFLAGS} petsc.h
312d77bb2e1SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adic  tree
31347794344SBarry Smith	-@cd src/inline ; \
314d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} adic
31577ed5343SBarry Smith	-@cd src/blaslapack ; \
316d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adic  tree
3176e81b665SBarry Smith
31847794344SBarry Smithalladiclib:
319d18b0ea7SBarry Smith	-@echo "Beginning to compile ADIC libraries in all directories"
320d77bb2e1SSatish Balay	-@echo "Using compiler: ${CC} ${COPTFLAGS}"
321d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
322d77bb2e1SSatish Balay	-@echo "Using PETSc flags: ${PETSCFLAGS} ${PCONF}"
323d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
324e0e703c1SSatish Balay	-@echo "Using configuration flags:"
325e0e703c1SSatish Balay	-@grep "define " bmake/${PETSC_ARCH}/petscconf.h
326d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
327d77bb2e1SSatish Balay	-@echo "Using include paths: ${PETSC_INCLUDE}"
328d18b0ea7SBarry Smith	-@echo "-----------------------------------------"
329d77bb2e1SSatish Balay	-@echo "Using PETSc directory: ${PETSC_DIR}"
330d77bb2e1SSatish Balay	-@echo "Using PETSc arch: ${PETSC_ARCH}"
331d18b0ea7SBarry Smith	-@echo "========================================="
332d77bb2e1SSatish Balay	-@${RM} -f  ${PDIR}/*adic.a
333d77bb2e1SSatish Balay	-@${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adiclib  tree
33477ed5343SBarry Smith	-@cd src/blaslapack ; \
335d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} ACTION=adiclib  tree
3367e351921SBarry Smith	-@cd src/adic/src ; \
337d77bb2e1SSatish Balay            ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} lib
3385eea60f9SBarry Smith
3399e417c50SSatish Balay# -------------------------------------------------------------------------------
3409e417c50SSatish Balay#
3419e417c50SSatish Balay# Some macros to check if the fortran interface is up-to-date.
3429e417c50SSatish Balay#
3439e417c50SSatish Balaycountfortranfunctions:
344d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran; egrep '^void' custom/*.c auto/*.c | \
34585c7cd6cSSatish Balay	cut -d'(' -f1 | tr -s  ' ' | cut -d' ' -f2 | uniq | egrep -v "(^$$|Petsc)" | \
3469e417c50SSatish Balay	sed "s/_$$//" | sort > /tmp/countfortranfunctions
347b334301eSBarry Smith
3489e417c50SSatish Balaycountcfunctions:
34985c7cd6cSSatish Balay	-@ grep extern ${PETSC_DIR}/include/*.h *.h | grep "(" | tr -s ' ' | \
35085c7cd6cSSatish Balay	cut -d'(' -f1 | cut -d' ' -f3 | grep -v "\*" | tr -s '\012' |  \
3519e417c50SSatish Balay	tr 'A-Z' 'a-z' |  sort > /tmp/countcfunctions
3529e417c50SSatish Balay
3539e417c50SSatish Balaydifffortranfunctions: countfortranfunctions countcfunctions
3549e417c50SSatish Balay	-@echo -------------- Functions missing in the fortran interface ---------------------
3559e417c50SSatish Balay	-@diff /tmp/countcfunctions /tmp/countfortranfunctions | grep "^<" | cut -d' ' -f2
3569e417c50SSatish Balay	-@echo ----------------- Functions missing in the C interface ------------------------
3579e417c50SSatish Balay	-@diff /tmp/countcfunctions /tmp/countfortranfunctions | grep "^>" | cut -d' ' -f2
358d77bb2e1SSatish Balay	-@${RM}  /tmp/countcfunctions /tmp/countfortranfunctions
359b334301eSBarry Smith
3603f4c9a3aSSatish Balaycheckbadfortranstubs:
3613f4c9a3aSSatish Balay	-@echo "========================================="
3623f4c9a3aSSatish Balay	-@echo "Functions with MPI_Comm as an Argument"
3633f4c9a3aSSatish Balay	-@echo "========================================="
364d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran/auto; grep '^void' *.c | grep 'MPI_Comm' | \
36585c7cd6cSSatish Balay	tr -s ' ' | tr -s ':' ' ' |cut -d'(' -f1 | cut -d' ' -f1,3
3663f4c9a3aSSatish Balay	-@echo "========================================="
3673f4c9a3aSSatish Balay	-@echo "Functions with a String as an Argument"
3683f4c9a3aSSatish Balay	-@echo "========================================="
369d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran/auto; grep '^void' *.c | grep 'char \*' | \
37085c7cd6cSSatish Balay	tr -s ' ' | tr -s ':' ' ' |cut -d'(' -f1 | cut -d' ' -f1,3
3713f4c9a3aSSatish Balay	-@echo "========================================="
3723f4c9a3aSSatish Balay	-@echo "Functions with Pointers to PETSc Objects as Argument"
3733f4c9a3aSSatish Balay	-@echo "========================================="
374d77bb2e1SSatish Balay	-@cd ${PETSC_DIR}/src/fortran/auto; \
37585c7cd6cSSatish Balay	_p_OBJ=`grep _p_ ${PETSC_DIR}/include/*.h | tr -s ' ' | \
37685c7cd6cSSatish Balay	cut -d' ' -f 3 | tr -s '\012' | grep -v '{' | cut -d'*' -f1 | \
3773f4c9a3aSSatish Balay	sed "s/_p_//g" | tr -s '\012 ' ' *|' ` ; \
3783f4c9a3aSSatish Balay	for OBJ in $$_p_OBJ; do \
37985c7cd6cSSatish Balay	grep "$$OBJ \*" *.c | tr -s ' ' | tr -s ':' ' ' | \
3803f4c9a3aSSatish Balay	cut -d'(' -f1 | cut -d' ' -f1,3; \
3813f4c9a3aSSatish Balay	done
3823677444aSSatish Balay# Builds noise routines (not yet publically available)
3833677444aSSatish Balay# Note:	 libfast cannot run on .F files on certain machines, so we
3843677444aSSatish Balay# use lib and check for errors here.
3853677444aSSatish Balaynoise: info chkpetsc_dir
3863677444aSSatish Balay	-@echo "Beginning to compile noise routines"
3873677444aSSatish Balay	-@echo "========================================="
3883677444aSSatish Balay	-@cd src/snes/interface/noise; \
3893677444aSSatish Balay	  ${OMAKE} BOPT=${BOPT} PETSC_ARCH=${PETSC_ARCH} lib > trashz 2>&1; \
3903677444aSSatish Balay	  grep -v clog trashz | grep -v "information sections" | \
3913677444aSSatish Balay	  egrep -i '(Error|warning|Can)' >> /dev/null;\
3923677444aSSatish Balay	  if [ "$$?" != 1 ]; then \
3933677444aSSatish Balay	  cat trashz ; fi; ${RM} trashz
3943677444aSSatish Balay	${RANLIB} ${PDIR}/libpetscsnes.a
3953677444aSSatish Balay	-@chmod g+w  ${PDIR}/libpetscsnes.a
3963677444aSSatish Balay	-@echo "Completed compiling noise routines"
3973677444aSSatish Balay	-@echo "========================================="
3983677444aSSatish Balay
399