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