[petsc-dev] user makefile

Jed Brown jed at jedbrown.org
Thu Jan 13 22:15:39 CST 2022


No makefile is needed to build foo from foo.c.

$ make -f $PETSC_DIR/share/petsc/Makefile.user foo


In the example below, you don't have to write the recipe (the ${CLINKER} line). It's enough to write

foo: foo.o baz.o

Matthew Knepley <knepley at gmail.com> writes:

> foo: foo .o
>       ${CLINKER} -o $@ $^ ${PETSC_LIB}
>
>    Matt
>
> On Thu, Jan 13, 2022 at 9:54 PM Jacob Faibussowitsch <jacob.fai at gmail.com>
> wrote:
>
>> Is share/petsc/Makefile.user what you are looking for?
>>
>> Best regards,
>>
>> Jacob Faibussowitsch
>> (Jacob Fai - booss - oh - vitch)
>>
>> On Jan 13, 2022, at 21:49, Barry Smith <bsmith at petsc.dev> wrote:
>>
>>
>>
>> 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 linkingThe easiest way to link PETSc to your code is to have this
>> line in your makefile:include ${PETSC_DIR}/conf/baseThis 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/variablesand then you have to give the
>> compile rules yourself. In this case, dosomething like${CC} -c ex1.c
>> ${PETSC_INCLUDE}to compile. (This is for petsc version 3, for version 2
>> useinclude ${PETSC_DIR}/bmake/common/baseand replace base by variables to
>> omit petsc’s make rules.)If you insist on having all the libraries and
>> includes explicitly, usemake getlinklibsmake getincludedirs*
>>
>>
>>
>>
>>
>
> -- 
> What most experimenters take for granted before they begin their
> experiments is infinitely more interesting than any results to which their
> experiments lead.
> -- Norbert Wiener
>
> https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>


More information about the petsc-dev mailing list