1# 2# This makefile contains some basic commands for building PETSc. 3# See bmake/common for additional commands. 4# 5 6PETSC_DIR = . 7 8CFLAGS = 9SOURCEC = 10SOURCEF = 11SOURCEH = Changes Machines Readme maint/addlinks \ 12 maint/builddist FAQ Installation Performance BugReporting\ 13 maint/buildlinks maint/wwwman maint/xclude maint/crontab\ 14 bmake/common bmake/*/base* maint/autoftp docs/www/sec/* 15OBJSC = 16OBJSF = 17LIBBASE = libpetscvec 18DIRS = src include docs 19 20include $(PETSC_DIR)/bmake/$(PETSC_ARCH)/base 21 22# Builds PETSc libraries for a given BOPT and architecture 23all: chkpetsc_dir 24 -$(RM) -f $(PDIR)/*.a 25 -@echo "Beginning to compile libraries in all directories" 26 -@echo "Using compiler: $(CC) $(CFLAGS) $(COPTFLAGS)" 27 -@echo "Using base PETSc flags: $(PETSCFLAGS) $(PCONF)" 28 -@echo "Using base include paths: $(PETSC_INCLUDE)" 29 -@echo "------------------------------------------" 30 -@$(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) \ 31 ACTION=libfast tree 32 -@cd $(PETSC_DIR)/src/sys/src ; $(OMAKE) PETSC_ARCH=$(PETSC_ARCH) rs6000_time 33 $(RANLIB) $(PDIR)/*.a 34 -@echo "Completed building libraries" 35 -@echo "------------------------------------------" 36 37# Builds PETSc test examples for a given BOPT and architecture 38testexamples: chkpetsc_dir 39 -@echo "Beginning to compile and run test examples" 40 -@echo "Using compiler: $(CC) $(CFLAGS) $(COPTFLAGS)" 41 -@echo "Using base PETSc flags: $(PETSCFLAGS) $(PCONF)" 42 -@echo "Using base include paths: $(PETSC_INCLUDE)" 43 -@echo "Using linker: $(CLINKER)" 44 -@echo "Using libraries: $(PETSC_LIB)" 45 -@echo "------------------------------------------" 46 -@echo "Due to different numerical round-off on certain" 47 -@echo "machines some of the numbers may not match exactly." 48 -@echo "------------------------------------------" 49 -@$(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) \ 50 ACTION=testexamples_1 tree 51 -@echo "Completed compiling and running test examples" 52 -@echo "------------------------------------------" 53 54# Builds PETSc test examples for a given BOPT and architecture 55testexamples_uni: chkpetsc_dir 56 -@echo "Beginning to compile and run uniprocessor test examples" 57 -@echo "Using compiler: $(CC) $(CFLAGS) $(COPTFLAGS)" 58 -@echo "Using linker: $(CLINKER)" 59 -@echo "Using base PETSc flags: $(PETSCFLAGS) $(PCONF)" 60 -@echo "Using base include paths: $(PETSC_INCLUDE)" 61 -@echo "Using libraries: $(PETSC_LIB)" 62 -@echo "------------------------------------------" 63 -@echo "Due to different numerical round-off on certain" 64 -@echo "machines some of the numbers may not match exactly." 65 -@echo "------------------------------------------" 66 -@$(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) \ 67 ACTION=testexamples_4 tree 68 -@echo "Completed compiling and running uniprocessor test examples" 69 -@echo "------------------------------------------" 70 71# Builds PETSc test examples for a given BOPT and architecture 72testfortran: chkpetsc_dir 73 -@echo "Beginning to compile and run Fortran test examples" 74 -@echo "Using compiler: $(FC) $(FFLAGS) $(FOPTFLAGS)" 75 -@echo "Using linker: $(FLINKER)" 76 -@echo "Using libraries: $(PETSC_FORTRAN_LIB) $(PETSC_LIB)" 77 -@echo "------------------------------------------" 78 -@$(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) \ 79 ACTION=testexamples_3 tree 80 -@echo "Completed compiling and running Fortran test examples" 81 -@echo "------------------------------------------" 82 83# 84# Builds PETSc Fortran interface libary 85# Note: libfast cannot run on .F files on certain machines, so we 86# use lib and check for errors here. 87fortran: chkpetsc_dir 88 -$(RM) -f $(PDIR)/libpetscfortran.a 89 -@echo "Beginning to compile Fortran interface library" 90 -@echo "Using C/C++ compiler: $(CC) $(CFLAGS) $(COPTFLAGS)" 91 -@echo "Using Fortran compiler: $(FC) $(FFLAGS) $(FOPTFLAGS)" 92 -@echo "------------------------------------------" 93 -@cd src/fortran/custom; \ 94 $(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) lib > trashz 2>&1; \ 95 grep -v clog trashz | grep -v "information sections" | \ 96 egrep -i '(Error|warning|Can)' >> /dev/null;\ 97 if [ "$$?" != 1 ]; then \ 98 cat trashz ; fi; $(RM) trashz 99 -@cd src/fortran/auto; \ 100 $(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) libfast 101 $(RANLIB) $(PDIR)/libpetscfortran.a 102 -@echo "Completed compiling Fortran interface library" 103 -@echo "------------------------------------------" 104 105ranlib: 106 $(RANLIB) $(PDIR)/*.a 107 108# Deletes PETSc libraries 109deletelibs: 110 -$(RM) -f $(PDIR)/*.a $(PDIR)/complex/* $(PDIR)/c++/* 111 112# Deletes man pages (xman version) 113deletemanpages: 114 $(RM) -f $(PETSC_DIR)/Keywords $(PETSC_DIR)/docs/man/man*/* 115 116# Deletes man pages (HTML version) 117deletewwwpages: 118 $(RM) -f $(PETSC_DIR)/docs/www/man*/* $(PETSC_DIR)/docs/www/www.cit \ 119 $(PETSC_DIR)/docs/www/man*.html 120 121# Deletes man pages (LaTeX version) 122deletelatexpages: 123 $(RM) -f $(PETSC_DIR)/docs/tex/rsum/*sum*.tex 124 125# To access the tags in emacs, type M-x visit-tags-table and specify 126# the file petsc/TAGS. Then, to move to where a PETSc function is 127# defined, enter M-. and the function name. To search for a string 128# and move to the first occurrence, use M-x tags-search and the string. 129# To locate later occurrences, use M-, 130 131# Builds all etags files 132alletags: 133 -make etags_complete 134 -make etags 135 -make etags_noexamples 136 -make etags_makefiles 137 138# Builds the basic etags file. This should be employed by most users. 139etags: 140 $(RM) TAGS 141 etags -f TAGS src/*/impls/*/*.h src/*/impls/*/*/*.h 142 etags -a -f TAGS src/*/examples/*.c src/*/examples/*/*.c 143 etags -a -f TAGS src/*/*.h src/*/*/*.h src/*/interface/*.c 144 etags -a -f TAGS src/*/src/*.c src/*/impls/*/*.c 145 etags -a -f TAGS src/*/impls/*/*/*.c src/benchmarks/*.c 146 etags -a -f TAGS src/contrib/*/*.c src/contrib/*/src/*.c 147 etags -a -f TAGS src/contrib/*/examples/*.c 148 etags -a -f TAGS src/contrib/*/src/*.h src/contrib/*/examples/*.F 149 etags -a -f TAGS include/*.h include/pinclude/*.h bmake/common 150 etags -a -f TAGS include/FINCLUDE/*.h 151 etags -a -f TAGS src/*/impls/*.c src/*/utils/*.c 152 etags -a -f TAGS makefile src/*/src/makefile 153 etags -a -f TAGS src/*/interface/makefile src/makefile 154 etags -a -f TAGS src/*/impls/makefile src/*/impls/*/makefile 155 etags -a -f TAGS src/*/utils/makefile src/*/examples/makefile 156 etags -a -f TAGS src/*/examples/*/makefile 157 etags -a -f TAGS src/*/makefile src/*/impls/*/*/makefile 158 etags -a -f TAGS src/contrib/*/makefile src/contrib/*/src/makefile 159 etags -a -f TAGS src/fortran/makefile src/fortran/auto/makefile 160 etags -a -f TAGS src/fortran/custom/makefile 161 etags -a -f TAGS include/makefile include/*/makefile 162 etags -a -f TAGS bmake/common bmake/*/base* 163 etags -a -f TAGS src/fortran/custom/*.c src/fortran/auto/*.c src/benchmarks/*.c 164 etags -a -f TAGS src/*/examples/*.F src/*/examples/*.f src/fortran/custom/*.F 165 chmod g+w TAGS 166 167# Builds complete etags list; only for PETSc developers. 168etags_complete: 169 $(RM) TAGS_COMPLETE 170 etags -f TAGS_COMPLETE src/*/impls/*/*.h src/*/impls/*/*/*.h 171 etags -a -f TAGS_COMPLETE src/*/examples/*.c src/*/examples/*/*.c 172 etags -a -f TAGS_COMPLETE src/*/*.h src/*/*/*.h src/*/interface/*.c 173 etags -a -f TAGS_COMPLETE src/*/src/*.c src/*/impls/*/*.c 174 etags -a -f TAGS_COMPLETE src/*/impls/*/*/*.c src/benchmarks/*.c 175 etags -a -f TAGS_COMPLETE src/contrib/*/*.c src/contrib/*/src/*.c 176 etags -a -f TAGS_COMPLETE src/contrib/*/examples/*.c 177 etags -a -f TAGS_COMPLETE src/contrib/*/src/*.h src/contrib/*/examples/*.F 178 etags -a -f TAGS_COMPLETE include/*.h include/pinclude/*.h bmake/common 179 etags -a -f TAGS_COMPLETE include/FINCLUDE/*.h 180 etags -a -f TAGS_COMPLETE src/*/impls/*.c src/*/utils/*.c 181 etags -a -f TAGS_COMPLETE makefile src/*/src/makefile 182 etags -a -f TAGS_COMPLETE src/*/interface/makefile src/makefile 183 etags -a -f TAGS_COMPLETE src/*/impls/makefile src/*/impls/*/makefile 184 etags -a -f TAGS_COMPLETE src/*/utils/makefile src/*/examples/makefile 185 etags -a -f TAGS_COMPLETE src/*/examples/*/makefile 186 etags -a -f TAGS_COMPLETE src/*/makefile src/*/impls/*/*/makefile 187 etags -a -f TAGS_COMPLETE src/contrib/*/makefile src/contrib/*/src/makefile 188 etags -a -f TAGS_COMPLETE src/fortran/makefile src/fortran/auto/makefile 189 etags -a -f TAGS_COMPLETE src/fortran/custom/makefile 190 etags -a -f TAGS_COMPLETE include/makefile include/*/makefile 191 etags -a -f TAGS_COMPLETE bmake/common bmake/*/base* 192 etags -a -f TAGS_COMPLETE src/fortran/custom/*.c src/fortran/auto/*.c src/benchmarks/*.c 193 etags -a -f TAGS_COMPLETE src/*/examples/*.F src/*/examples/*.f src/fortran/custom/*.F 194 etags -a -f TAGS_COMPLETE docs/tex/manual/routin.tex docs/tex/manual/manual.tex 195 etags -a -f TAGS_COMPLETE docs/tex/manual/manual_tex.tex 196 etags -a -f TAGS_COMPLETE docs/tex/manual/intro.tex docs/tex/manual/part1.tex 197 etags -a -f TAGS_COMPLETE docs/tex/manual/part2.tex 198 etags -a -f TAGS_COMPLETE docs/tex/manual/intro.tex docs/makefile 199 chmod g+w TAGS_COMPLETE 200 201# Builds the etags file that excludes the examples directories 202etags_noexamples: 203 $(RM) TAGS_NO_EXAMPLES 204 etags -f TAGS_NO_EXAMPLES src/*/impls/*/*.h src/*/impls/*/*/*.h 205 etags -a -f TAGS_NO_EXAMPLES src/*/*.h src/*/*/*.h src/*/interface/*.c 206 etags -a -f TAGS_NO_EXAMPLES src/*/src/*.c src/*/impls/*/*.c 207 etags -a -f TAGS_NO_EXAMPLES src/*/impls/*/*/*.c 208 etags -a -f TAGS_NO_EXAMPLES src/contrib/*/*.c src/contrib/*/src/*.c 209 etags -a -f TAGS_NO_EXAMPLES src/contrib/*/src/*.h 210 etags -a -f TAGS_NO_EXAMPLES include/*.h include/pinclude/*.h 211 etags -a -f TAGS_NO_EXAMPLES include/FINCLUDE/*.h 212 etags -a -f TAGS_NO_EXAMPLES bmake/common 213 etags -a -f TAGS_NO_EXAMPLES src/*/impls/*.c src/*/utils/*.c 214 etags -a -f TAGS_NO_EXAMPLES makefile src/*/src/makefile 215 etags -a -f TAGS_NO_EXAMPLES src/*/interface/makefile src/makefile 216 etags -a -f TAGS_NO_EXAMPLES src/*/impls/makefile src/*/impls/*/makefile 217 etags -a -f TAGS_NO_EXAMPLES src/*/utils/makefile 218 etags -a -f TAGS_NO_EXAMPLES src/*/makefile src/*/impls/*/*/makefile 219 etags -a -f TAGS_NO_EXAMPLES src/contrib/*/makefile src/contrib/*/src/makefile 220 etags -a -f TAGS_NO_EXAMPLES src/fortran/makefile src/fortran/auto/makefile 221 etags -a -f TAGS_NO_EXAMPLES src/fortran/custom/makefile 222 etags -a -f TAGS_NO_EXAMPLES include/makefile include/*/makefile 223 etags -a -f TAGS_NO_EXAMPLES bmake/common bmake/*/base* 224 etags -a -f TAGS_NO_EXAMPLES src/fortran/auto/*.c 225 etags -a -f TAGS_NO_EXAMPLES src/fortran/custom/*.c src/fortran/custom/*.F 226 etags -a -f TAGS_NO_EXAMPLES docs/tex/manual/routin.tex 227 etags -a -f TAGS_NO_EXAMPLES docs/tex/manual/manual.tex 228 etags -a -f TAGS_NO_EXAMPLES docs/tex/manual/intro.tex 229 etags -a -f TAGS_NO_EXAMPLES docs/tex/manual/part1.tex 230 etags -a -f TAGS_NO_EXAMPLES docs/tex/manual/part2.tex 231 etags -a -f TAGS_NO_EXAMPLES docs/makefile 232 chmod g+w TAGS_NO_EXAMPLES 233 234# Builds the etags file for makefiles 235etags_makefiles: 236 $(RM) TAGS_MAKEFILES 237 etags -a -f TAGS_MAKEFILES bmake/common 238 etags -a -f TAGS_MAKEFILES makefile src/*/src/makefile 239 etags -a -f TAGS_MAKEFILES src/*/interface/makefile src/makefile 240 etags -a -f TAGS_MAKEFILES src/*/impls/makefile src/*/impls/*/makefile 241 etags -a -f TAGS_MAKEFILES src/*/utils/makefile src/*/interface/makefile 242 etags -a -f TAGS_MAKEFILES src/*/makefile src/*/impls/*/*/makefile 243 etags -a -f TAGS_MAKEFILES src/*/examples/makefile src/*/examples/*/makefile 244 etags -a -f TAGS_MAKEFILES src/fortran/makefile src/fortran/auto/makefile 245 etags -a -f TAGS_MAKEFILES src/contrib/*/makefile src/contrib/*/src/makefile 246 etags -a -f TAGS_MAKEFILES src/fortran/custom/makefile 247 etags -a -f TAGS_MAKEFILES include/makefile include/*/makefile 248 etags -a -f TAGS_MAKEFILES bmake/common bmake/*/base* 249 etags -a -f TAGS_MAKEFILES docs/makefile 250 chmod g+w TAGS_MAKEFILES 251 252# ------------------------------------------------------------------ 253# 254# All remaining actions are intended for PETSc developers only. 255# PETSc users should not generally need to use these commands. 256# 257 258# Builds all versions of the man pages 259allmanpages: deletemanpages allwwwpages alllatexpages 260 -make ACTION=manpages tree 261 -cd src/fortran/custom; make manpages 262 -cd docs/man; catman -W . 263allwwwpages: deletewwwpages 264 -make ACTION=wwwpages_buildcite tree 265 -cd src/fortran/custom; make wwwpages_buildcite 266 -cd src/fortran/custom; make wwwpages 267 -make ACTION=wwwpages tree 268 -maint/wwwman 269 270alllatexpages: deletelatexpages 271 -make ACTION=latexpages tree 272 -cd src/fortran/custom; make latexpages 273 274# Builds Fortran stub files 275allfortranstubs: 276 -@include/finclude/generateincludes 277 -@$(RM) -f $(PETSC_DIR)/src/fortran/auto/*.c 278 -make ACTION=fortranstubs tree 279 chmod g+w $(PETSC_DIR)/src/fortran/auto/*.c 280