1# $Id: makefile,v 1.49 1997/08/09 19:05:11 bsmith Exp $ 2# 3# This is the makefile for installing PETSc. See the file 4# Installation for directions on installing PETSc. 5# See also bmake/common for additional commands. 6# 7 8CFLAGS = 9SOURCEC = 10SOURCEF = 11DOCS = Changes Machines Readme maint/addlinks \ 12 maint/builddist FAQ Installation BugReporting\ 13 maint/buildlinks maint/wwwman maint/xclude maint/crontab\ 14 bmake/common bmake/*/base* maint/autoftp docs/www/sec/* \ 15 include/finclude/generateincludes bin/petscviewinfo.text \ 16 bin/petscoptsinfo.text 17OBJSC = 18OBJSF = 19LIBBASE = libpetscvec 20DIRS = src include docs 21 22include $(PETSC_DIR)/bmake/$(PETSC_ARCH)/base 23 24# Builds PETSc libraries for a given BOPT and architecture 25all: chkpetsc_dir 26 -$(RM) -f $(PDIR)/* 27 -@echo "Beginning to compile libraries in all directories" 28 -@echo On `date` on `hostname` 29 -@echo "Using compiler: $(CC) $(COPTFLAGS)" 30 -@echo "-----------------------------------------" 31 -@echo "Using PETSc flags: $(PETSCFLAGS) $(PCONF)" 32 -@echo "-----------------------------------------" 33 -@echo "Using configuration flags: $(CONF)" 34 -@echo "-----------------------------------------" 35 -@echo "Using include paths: $(PETSC_INCLUDE)" 36 -@echo "-----------------------------------------" 37 -@echo "Using PETSc directory: $(PETSC_DIR)" 38 -@echo "Using PETSc arch: $(PETSC_ARCH)" 39 -@echo "=========================================" 40 -@$(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) \ 41 ACTION=libfast tree 42 -@cd $(PETSC_DIR)/src/sys/src ; \ 43 $(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) rs6000_time 44 $(RANLIB) $(PDIR)/*.a 45 -@chmod g+w $(PDIR)/*.a 46 -@echo "Completed building libraries" 47 -@echo "=========================================" 48 49# Builds PETSc test examples for a given BOPT and architecture 50testexamples: chkopts 51 -@echo "Beginning to compile and run test examples" 52 -@echo On `date` on `hostname` 53 -@echo "Using compiler: $(CC) $(COPTFLAGS)" 54 -@echo "-----------------------------------------" 55 -@echo "Using PETSc flags: $(PETSCFLAGS) $(PCONF)" 56 -@echo "-----------------------------------------" 57 -@echo "Using include paths: $(PETSC_INCLUDE)" 58 -@echo "-----------------------------------------" 59 -@echo "Using PETSc directory: $(PETSC_DIR)" 60 -@echo "Using PETSc arch: $(PETSC_ARCH)" 61 -@echo "------------------------------------------" 62 -@echo "Using linker: $(CLINKER)" 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_1 tree 70 -@echo "Completed compiling and running test examples" 71 -@echo "=========================================" 72 73# Builds PETSc test examples for a given BOPT and architecture 74testexamples_uni: chkopts 75 -@echo "Beginning to compile and run uniprocessor test examples" 76 -@echo On `date` on `hostname` 77 -@echo "Using compiler: $(CC) $(COPTFLAGS)" 78 -@echo "Using linker: $(CLINKER)" 79 -@echo "------------------------------------------" 80 -@echo "Using PETSc flags: $(PETSCFLAGS) $(PCONF)" 81 -@echo "------------------------------------------" 82 -@echo "Using include paths: $(PETSC_INCLUDE)" 83 -@echo "------------------------------------------" 84 -@echo "Using PETSc directory: $(PETSC_DIR)" 85 -@echo "Using PETSc arch: $(PETSC_ARCH)" 86 -@echo "------------------------------------------" 87 -@echo "Using linker: $(CLINKER)" 88 -@echo "Using libraries: $(PETSC_LIB)" 89 -@echo "------------------------------------------" 90 -@echo "Due to different numerical round-off on certain" 91 -@echo "machines some of the numbers may not match exactly." 92 -@echo "=========================================" 93 -@$(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) \ 94 ACTION=testexamples_4 tree 95 -@echo "Completed compiling and running uniprocessor test examples" 96 -@echo "=========================================" 97 98# 99# Builds PETSc Fortran interface libary 100# Note: libfast cannot run on .F files on certain machines, so we 101# use lib and check for errors here. 102fortran: chkpetsc_dir 103 -$(RM) -f $(PDIR)/libpetscfortran.* 104 -@echo "Beginning to compile Fortran interface library" 105 -@echo On `date` on `hostname` 106 -@echo "Using Fortran compiler: $(FC) $(FFLAGS) $(FOPTFLAGS)" 107 -@echo "Using C/C++ compiler: $(CC) $(COPTFLAGS)" 108 -@echo "------------------------------------------" 109 -@echo "Using PETSc flags: $(PETSCFLAGS) $(PCONF)" 110 -@echo "------------------------------------------" 111 -@echo "Using configuration flags: $(CONF)" 112 -@echo "------------------------------------------" 113 -@echo "Using include paths: $(PETSC_INCLUDE)" 114 -@echo "------------------------------------------" 115 -@echo "Using PETSc directory: $(PETSC_DIR)" 116 -@echo "Using PETSc arch: $(PETSC_ARCH)" 117 -@echo "=========================================" 118 -@cd src/fortran/custom; \ 119 $(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) lib > trashz 2>&1; \ 120 grep -v clog trashz | grep -v "information sections" | \ 121 egrep -i '(Error|warning|Can)' >> /dev/null;\ 122 if [ "$$?" != 1 ]; then \ 123 cat trashz ; fi; $(RM) trashz 124 -@cd src/fortran/auto; \ 125 $(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) libfast 126 $(RANLIB) $(PDIR)/libpetscfortran.a 127 -@chmod g+w $(PDIR)/*.a 128 -@echo "Completed compiling Fortran interface library" 129 -@echo "=========================================" 130 131# Builds PETSc test examples for a given BOPT and architecture 132testfortran: chkopts 133 -@echo "Beginning to compile and run Fortran test examples" 134 -@echo On `date` on `hostname` 135 -@echo "Using compiler: $(FC) $(FFLAGS) $(FOPTFLAGS)" 136 -@echo "Using linker: $(FLINKER)" 137 -@echo "Using PETSc flags: $(PETSCFLAGS) $(PCONF)" 138 -@echo "------------------------------------------" 139 -@echo "Using PETSc directory: $(PETSC_DIR)" 140 -@echo "Using PETSc arch: $(PETSC_ARCH)" 141 -@echo "------------------------------------------" 142 -@echo "Using linker: $(FLINKER)" 143 -@echo "Using libraries: $(PETSC_FORTRAN_LIB) $(PETSC_LIB)" 144 -@echo "=========================================" 145 -@echo "Due to different numerical round-off on certain" 146 -@echo "machines or the way Fortran formats numbers" 147 -@echo "some of the results may not match exactly." 148 -@echo "=========================================" 149 -@echo "On some machines you may get messages of the form" 150 -@echo "PetscScalarAddressToFortran:C and Fortran arrays are" 151 -@echo "not commonly aligned or are too far apart to be indexed" 152 -@echo "by an integer. Locations: C xxxc Fortran xxxf" 153 -@echo "Locations/sizeof(Scalar): C yyc Fortran yyf" 154 -@echo "This indicates that you may not be able to use the" 155 -@echo "PETSc routines VecGetArray() and MatGetArray() from Fortran" 156 -@echo "=========================================" 157 -@$(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) \ 158 ACTION=testexamples_3 tree 159 -@echo "Completed compiling and running Fortran test examples" 160 -@echo "=========================================" 161 162# 163# Builds PETSc Fortran90 interface libary 164# Note: libfast cannot run on .F files on certain machines, so we 165# use lib and check for errors here. 166# Note: F90 interface currently only supported in NAG F90 compiler 167fortran90: chkpetsc_dir fortran 168 -@echo "Beginning to compile Fortran90 interface library" 169 -@echo On `date` on `hostname` 170 -@echo "Using Fortran compiler: $(FC) $(FFLAGS) $(FOPTFLAGS)" 171 -@echo "Using C/C++ compiler: $(CC) $(COPTFLAGS)" 172 -@echo "------------------------------------------" 173 -@echo "Using PETSc flags: $(PETSCFLAGS) $(PCONF)" 174 -@echo "------------------------------------------" 175 -@echo "Using configuration flags: $(CONF)" 176 -@echo "------------------------------------------" 177 -@echo "Using include paths: $(PETSC_INCLUDE)" 178 -@echo "------------------------------------------" 179 -@echo "Using PETSc directory: $(PETSC_DIR)" 180 -@echo "Using PETSc arch: $(PETSC_ARCH)" 181 -@echo "=========================================" 182 -@cd src/fortran/f90; \ 183 $(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) lib > trashz 2>&1; \ 184 grep -v clog trashz | grep -v "information sections" | \ 185 egrep -i '(Error|warning|Can)' >> /dev/null;\ 186 if [ "$$?" != 1 ]; then \ 187 cat trashz ; fi; $(RM) trashz 188 $(RANLIB) $(PDIR)/libpetscfortran.a 189 -@chmod g+w $(PDIR)/*.a 190 -@echo "Completed compiling Fortran90 interface library" 191 -@echo "=========================================" 192 193# Builds noise routines (not yet publically available) 194# Note: libfast cannot run on .F files on certain machines, so we 195# use lib and check for errors here. 196noise: chkpetsc_dir 197 -@echo "Beginning to compile noise routines" 198 -@echo "Using Fortran compiler: $(FC) $(FFLAGS) $(FOPTFLAGS)" 199 -@echo "Using C/C++ compiler: $(CC) $(COPTFLAGS)" 200 -@echo "------------------------------------------" 201 -@echo "Using PETSc flags: $(PETSCFLAGS) $(PCONF)" 202 -@echo "------------------------------------------" 203 -@echo "Using configuration flags: $(CONF)" 204 -@echo "------------------------------------------" 205 -@echo "Using include paths: $(PETSC_INCLUDE)" 206 -@echo "------------------------------------------" 207 -@echo "Using PETSc directory: $(PETSC_DIR)" 208 -@echo "Using PETSc arch: $(PETSC_ARCH)" 209 -@echo "=========================================" 210 -@cd src/snes/interface/noise; \ 211 $(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) lib > trashz 2>&1; \ 212 grep -v clog trashz | grep -v "information sections" | \ 213 egrep -i '(Error|warning|Can)' >> /dev/null;\ 214 if [ "$$?" != 1 ]; then \ 215 cat trashz ; fi; $(RM) trashz 216 $(RANLIB) $(PDIR)/libpetscsnes.a 217 -@chmod g+w $(PDIR)/libpetscsnes.a 218 -@echo "Completed compiling noise routines" 219 -@echo "=========================================" 220 221 222ranlib: 223 $(RANLIB) $(PDIR)/*.a 224 225# Deletes PETSc libraries 226deletelibs: 227 -$(RM) -f $(PDIR)/*.a $(PDIR)/complex/* $(PDIR)/c++/* 228 229# Deletes man pages (HTML version) 230deletewwwpages: 231 $(RM) -f $(PETSC_DIR)/docs/www/man*/* $(PETSC_DIR)/docs/www/www.cit \ 232 $(PETSC_DIR)/docs/www/man*.html 233 234# Deletes man pages (LaTeX version) 235deletelatexpages: 236 $(RM) -f $(PETSC_DIR)/docs/tex/rsum/*sum*.tex 237 238# To access the tags in emacs, type M-x visit-tags-table and specify 239# the file petsc/TAGS. Then, to move to where a PETSc function is 240# defined, enter M-. and the function name. To search for a string 241# and move to the first occurrence, use M-x tags-search and the string. 242# To locate later occurrences, use M-, 243 244TAGS_INCLUDE_FILES = include/*.h include/pinclude/*.h include/FINCLUDE/*.h 245TAGS_BMAKE_FILES = bmake/common bmake/*/base* 246TAGS_EXAMPLE_FILES = src/*/examples/*/*.[c,h,F,f] src/*/examples/*/*/*.[c,h,F,f] \ 247 src/benchmarks/*.c src/contrib/*/examples/*/*.[c,h,F,f] 248TAGS_DOC_FILES = docs/tex/manual/routin.tex docs/tex/manual/manual.tex \ 249 docs/tex/manual/manual_tex.tex docs/tex/manual/intro.tex \ 250 docs/tex/manual/part1.tex docs/tex/manual/part2.tex 251TAGS_SRC_FILES = src/*/*.[c,h] src/*/interface/*.[c,h] src/*/src/*.[c,h] \ 252 src/*/utils/*.[c,h] \ 253 src/*/impls/*.[c,h] src/*/impls/*/*.[c,h] src/*/impls/*/*/*.[c,h] \ 254 src/gvec/impls/*/*/*/*/*.[c,h] src/contrib/*/*.[c,h] \ 255 src/contrib/*/src/*.[c,h] src/fortran/custom/*.[c,h,F] 256TAGS_MAKEFILE_FILES = include/makefile include/*/makefile \ 257 makefile \ 258 src/makefile src/*/makefile src/*/src/makefile \ 259 src/*/interface/makefile \ 260 src/*/utils/makefile \ 261 src/*/impls/makefile src/*/impls/*/makefile src/*/impls/*/*/makefile \ 262 src/*/examples/makefile src/*/examples/*/makefile src/*/examples/*/*/makefile \ 263 src/gvec/impls/*/*/*/*/makefile src/gvec/impls/*/*/*/makefile \ 264 src/fortran/*/makefile \ 265 src/contrib/*/makefile src/contrib/*/src/makefile \ 266 src/contrib/*/examples/makefile src/contrib/*/examples/*/makefile \ 267 docs/makefile 268 269# Builds all etags files 270alletags: 271 -make etags_complete 272 -make etags 273 -make etags_noexamples 274 -make etags_makefiles 275 276# Builds the basic etags file. This should be employed by most users. 277etags: 278 $(RM) TAGS 279 etags -f TAGS $(TAGS_INCLUDE_FILES) 280 etags -a -f TAGS $(TAGS_SRC_FILES) 281 etags -a -f TAGS $(TAGS_EXAMPLE_FILES) 282 etags -a -f TAGS $(TAGS_MAKEFILE_FILES) 283 etags -a -f TAGS $(TAGS_BMAKE_FILES) 284 chmod g+w TAGS 285 286# Builds complete etags list; only for PETSc developers. 287etags_complete: 288 $(RM) TAGS_COMPLETE 289 etags -f TAGS_COMPLETE $(TAGS_SRC_FILES) 290 etags -a -f TAGS_COMPLETE $(TAGS_INCLUDE_FILES) 291 etags -a -f TAGS_COMPLETE $(TAGS_EXAMPLE_FILES) 292 etags -a -f TAGS_COMPLETE $(TAGS_MAKEFILE_FILES) 293 etags -a -f TAGS_COMPLETE $(TAGS_BMAKE_FILES) 294 etags -a -f TAGS_COMPLETE $(TAGS_DOC_FILES) 295 chmod g+w TAGS_COMPLETE 296 297# Builds the etags file that excludes the examples directories 298etags_noexamples: 299 $(RM) TAGS_NO_EXAMPLES 300 etags -f TAGS_NO_EXAMPLES $(TAGS_SRC_FILES) 301 etags -a -f TAGS_NO_EXAMPLES $(TAGS_INCLUDE_FILES) 302 etags -a -f TAGS_NO_EXAMPLES $(TAGS_MAKEFILE_FILES) 303 etags -a -f TAGS_NO_EXAMPLES $(TAGS_BMAKE_FILES) 304 etags -a -f TAGS_NO_EXAMPLES $(TAGS_DOC_FILES) 305 chmod g+w TAGS_NO_EXAMPLES 306 307# Builds the etags file for makefiles 308etags_makefiles: 309 $(RM) TAGS_MAKEFILES 310 etags -f TAGS_MAKEFILES $(TAGS_MAKEFILE_FILES) 311 etags -a -f TAGS_MAKEFILES $(TAGS_BMAKE_FILES) 312 chmod g+w TAGS_MAKEFILES 313 314# 315# ctags builds the tags file required for VI. 316# To use the tags file do the following: 317# 1. within vi invole the command - :set tags=/home/bsmith/petsc/tags 318# or add the command to your ~/.exrc file - set tags=/home/bsmith/petsc/tags 319# 2. now to go to a tag do - :tag TAGNAME for eg - :tag MatCreate 320# 321ctags: 322 $(RM) tags 323 ctags -w -f tags $(TAGS_INCLUDE_FILES) 324 ctags -w -a -f tags $(TAGS_SRC_FILES) 325 ctags -w -a -f tags $(TAGS_EXAMPLE_FILES) 326 ctags -w -a -f tags $(TAGS_MAKEFILE_FILES) 327 ctags -w -a -f tags $(TAGS_BMAKE_FILES) 328 chmod g+w tags 329 330# ------------------------------------------------------------------ 331# 332# All remaining actions are intended for PETSc developers only. 333# PETSc users should not generally need to use these commands. 334# 335 336# Builds all versions of the man pages 337allmanpages: allwwwpages alllatexpages 338allwwwpages: deletewwwpages 339 -make ACTION=wwwpages_buildcite tree 340 -cd src/fortran/custom; make wwwpages_buildcite 341 -cd src/fortran/custom; make wwwpages 342 -make ACTION=wwwpages tree 343 -maint/wwwman 344 -maint/examplesindex.tcl -www 345 -maint/htmlkeywords.tcl 346 -@chmod g+w docs/www/man*/* 347 348#This is similar to allwwwpages except -www -> -wwwhome 349#The wwwmanpages built this way can pe placed at PETSc Home Page 350allwwwhomepages: deletewwwpages 351 -make ACTION=wwwpages_buildcite tree 352 -cd src/fortran/custom; make wwwpages_buildcite 353 -cd src/fortran/custom; make wwwpages 354 -make ACTION=wwwpages tree 355 -maint/wwwman 356 -maint/examplesindex.tcl -wwwhome 357 -maint/htmlkeywords.tcl -wwwhome 358 -@chmod g+w docs/www/man*/* 359 360alllatexpages: deletelatexpages 361 -make ACTION=latexpages tree 362 -cd src/fortran/custom; make latexpages 363 -@chmod g+w docs/tex/rsum/* 364 365# Builds Fortran stub files 366allfortranstubs: 367 -@include/finclude/generateincludes 368 -@$(RM) -f src/fortran/auto/*.c 369 -make ACTION=fortranstubs tree 370 chmod g+w src/fortran/auto/*.c 371 372allci: 373 -@cd src/fortran/custom ; $(OMAKE) BOPT=$(BOPT) ci 374 -@$(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) ACTION=ci tree 375 376allco: 377 -@cd src/fortran/custom ; $(OMAKE) BOPT=$(BOPT) co 378 -@$(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) ACTION=co tree 379 380# 381# The commands below are for generating ADIC versions of the code; 382# they are not currently used. 383# 384CFLAGS = $(CPPFLAGS) $(CONF) 385alladicignore: 386 -@$(RM) $(PDIR)/adicignore 387 -@$(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) ACTION=adicignore tree 388 389alladic: 390 -@echo "Beginning to compile ADIC source code in all directories" 391 -@echo "Using ADIC compiler: $(ADIC_CC) $(CFLAGS)" 392 -@echo "=========================================" 393 -@cd include ; \ 394 $(ADIC_CC) -s -f 1 $(CFLAGS) petsc.h 395 -@$(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) ACTION=adic tree 396 -@cd src/inline ; \ 397 $(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) adic 398 -@cd src/adic/blas ; \ 399 $(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) adic 400 -@cd src/adic/lapack ; \ 401 $(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) ACTION=adic tree 402 403alladiclib: 404 -@echo "Beginning to compile ADIC libraries in all directories" 405 -@echo "Using compiler: $(CC) $(COPTFLAGS)" 406 -@echo "-----------------------------------------" 407 -@echo "Using PETSc flags: $(PETSCFLAGS) $(PCONF)" 408 -@echo "-----------------------------------------" 409 -@echo "Using configuration flags: $(CONF)" 410 -@echo "-----------------------------------------" 411 -@echo "Using include paths: $(PETSC_INCLUDE)" 412 -@echo "-----------------------------------------" 413 -@echo "Using PETSc directory: $(PETSC_DIR)" 414 -@echo "Using PETSc arch: $(PETSC_ARCH)" 415 -@echo "=========================================" 416 -@$(RM) -f $(PDIR)/*adic.a 417 -@$(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) ACTION=adiclib tree 418 -@cd src/adic/blas ; \ 419 $(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) adiclib 420 -@cd src/adic/lapack ; \ 421 $(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) ACTION=adiclib tree 422 -@cd src/adic/src ; \ 423 $(OMAKE) BOPT=$(BOPT) PETSC_ARCH=$(PETSC_ARCH) lib 424 425# ------------------------------------------------------------------------------- 426# 427# Some macros to check if the fortran interface is up-to-date. 428# 429countfortranfunctions: 430 -@cd $(PETSC_DIR)/src/fortran; egrep '^void' custom/*.c auto/*.c | \ 431 cut -d'(' -f1 | tr -s '' ' ' | cut -d' ' -f2 | uniq | egrep -v "(^$$|Petsc)" | \ 432 sed "s/_$$//" | sort > /tmp/countfortranfunctions 433 434countcfunctions: 435 -@ grep extern $(PETSC_DIR)/include/*.h *.h | grep "(" | tr -s '' ' ' | \ 436 cut -d'(' -f1 | cut -d' ' -f3 | grep -v "\*" | tr -s '' '\012' | \ 437 tr 'A-Z' 'a-z' | sort > /tmp/countcfunctions 438 439difffortranfunctions: countfortranfunctions countcfunctions 440 -@echo -------------- Functions missing in the fortran interface --------------------- 441 -@diff /tmp/countcfunctions /tmp/countfortranfunctions | grep "^<" | cut -d' ' -f2 442 -@echo ----------------- Functions missing in the C interface ------------------------ 443 -@diff /tmp/countcfunctions /tmp/countfortranfunctions | grep "^>" | cut -d' ' -f2 444 -@$(RM) /tmp/countcfunctions /tmp/countfortranfunctions 445 446checkbadfortranstubs: 447 -@echo "=========================================" 448 -@echo "Functions with MPI_Comm as an Argument" 449 -@echo "=========================================" 450 -@cd $(PETSC_DIR)/src/fortran/auto; grep '^void' *.c | grep 'MPI_Comm' | \ 451 tr -s '' ' ' | tr -s ':' ' ' |cut -d'(' -f1 | cut -d' ' -f1,3 452 -@echo "=========================================" 453 -@echo "Functions with a String as an Argument" 454 -@echo "=========================================" 455 -@cd $(PETSC_DIR)/src/fortran/auto; grep '^void' *.c | grep 'char \*' | \ 456 tr -s '' ' ' | tr -s ':' ' ' |cut -d'(' -f1 | cut -d' ' -f1,3 457 -@echo "=========================================" 458 -@echo "Functions with Pointers to PETSc Objects as Argument" 459 -@echo "=========================================" 460 -@cd $(PETSC_DIR)/src/fortran/auto; \ 461 _p_OBJ=`grep _p_ $(PETSC_DIR)/include/*.h | tr -s '' ' ' | \ 462 cut -d' ' -f 3 | tr -s '' '\012' | grep -v '{' | cut -d'*' -f1 | \ 463 sed "s/_p_//g" | tr -s '\012 ' ' *|' ` ; \ 464 for OBJ in $$_p_OBJ; do \ 465 grep "$$OBJ \*" *.c | tr -s '' ' ' | tr -s ':' ' ' | \ 466 cut -d'(' -f1 | cut -d' ' -f1,3; \ 467 done 468