[petsc-dev] user makefile

Barry Smith bsmith at petsc.dev
Thu Jan 13 20:49:33 CST 2022


https://petsc.org/release/docs/manual/getting_started/?highlight=user%20makefile

Search for Writing Application Codes with PETSc

Perhaps this needs to clearer or have links to it from the FAQ.



> On Jan 13, 2022, at 9:38 PM, Mark Adams <mfadams at lbl.gov> wrote:
> 
> I am finding it pretty hard to find an example of a makefile target to build an app with PETSc. 
> 
> I can not find it on the docs page.
> 
> With Google:
> 
> Victor has a little example that looks fine ($PETSC_LIB). (sort of, see below)
> 
> Another one is bigger and has this at the end:
> 
>     -${CLINKER} $< -o bin.x $(OBJ_FILES) ${PETSC_KSP_LIB} -I$(PETSC_DIR)/include
> 
> I recall using PETSC_KSP_LIB the last time I wrote a makefile 20 years ago.
> 
> Maybe there should be a FAQ that a search would find like "Example of user makefile" with something like Victor's (dropping v2 and updating it, this looks wrong):
> 
> PETSc linking
> 
> The easiest way to link PETSc to your code is to have this line in your makefile:
> 
> include ${PETSC_DIR}/conf/base
> 
> This will automatically give you the compilation rules. For linking you then do:
> 
> ${CLINKER} -o ex1 ex1.o ${PETSC_LIB}
> 
> (or FLINKER for fortran)
> 
> You can also use this include line:
> 
> include ${PETSC_DIR}/conf/variables
> 
> and then you have to give the compile rules yourself. In this case, do
> something like
> 
> ${CC} -c ex1.c ${PETSC_INCLUDE}
> 
> to compile. (This is for petsc version 3, for version 2 use
> 
> include ${PETSC_DIR}/bmake/common/base
> 
> and replace base by variables to omit petsc’s make rules.)
> 
> If you insist on having all the libraries and includes explicitly, use
> 
> make getlinklibs
> make getincludedirs
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20220113/b30f7d35/attachment.html>


More information about the petsc-dev mailing list