[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: need help with makefile




Thanks for this information. I think I setup things almost right, but something is causing preprocessor to complain. The errors it is giving are referring to lines of my main program file that doesn't exist.


I would appreciate any recommendations about how to fix this problem. I've list some of the details of my setup below.

Thanks,

-Aaron



e.g.

macbeth% make unsteady_ex
/usr/local/mpich-1.2.5.2/bin/mpicc -I/Users/palott/research/codes/ petsc/petsc-2.3.2-p8 -I/Users/palott/research/codes/pets
c/petsc-2.3.2-p8/bmake/darwin-mpich-g -I/Users/palott/research/codes/ petsc/petsc-2.3.2-p8/include -I/usr/local/mpich-1.2.
5.2/include -E -traditional-cpp __unsteady_ex.c | /usr/bin/ grep -v '^ *#' > __unsteady_ex.F
/usr/local/mpich-1.2.5.2/bin/mpif90 -c -I. -g __unsteady_ex.F -o unsteady_ex.o
"__unsteady_ex.F", line 965.2: 1515-019 (S) Syntax is incorrect.



But there are only 207 lines in this file.....



In my current makefile I have

F90=mpif90
F77=mpif77
F77FLAGS= -C -g -qdpc -qautodbl=dbl4 -qinitauto -Wl,-framework - Wl,vecLib
FLAGS= -C -g -qdpc -qautodbl=dbl4 -qinitauto -Wl,-framework -Wl,vecLib



EXENAME = unsteady_ex CMD:=EXENAME

SOBJS = mpi.o quicksort.o routines.o binsort.o coordinates.o comm_maps.o elements.o globaldata.o sem.o comp_inv.o d1ops.o maps.o pardss.o dss.o stiffness.o convection.o Mass.o pressure.o buildU.o wind.o forcing.o boundary_cond.o navier_stokes.o runge_kutta.o out.o gmres.o pcg.o stream.o uzawa.o print_matrices.o projection.o bdf.o stokes_solvers.o initialize_mpi.o unsteady_ex.o


$(CMD) : $(SOBJS) -${FLINKER} $(FLAGS) -o $(EXENAME) $(SOBJS) $(PETSC_SYS_LIB)


mpi.o : ../Comm/mpi.f90 ;$(F90) $(FLAGS) -c ../Comm/mpi.f90
gmres.o : ../Solvers/gmres.f90 ;$(F90) $(FLAGS) -c ../Solvers/ gmres.f90
etc.... for all the object files except unsteady_ex.o


unsteady_ex.F is my main program.

In the example you gave, ex1f.F would be the main program, and at the top of the file it would have the statement:

#include "include/finclude/petsc.h"

So in my case, I've put that in the top of my unsteady_ex.F






On Mar 1, 2007, at 5:56 PM, Satish Balay wrote:

The idea is to use a PETSc example makefile - and modify it
appropriately.

And with fortran codes - we require preprocessing [i.e source files
that call PETSc routines should be .F]

A minimal PETSc makefile is as follows:
------------------------------------------------
CFLAGS           =
FFLAGS           =
CPPFLAGS         =
FPPFLAGS         =
CLEANFILES       =

include ${PETSC_DIR}/bmake/common/base

ex1f: ex1f.o  chkopts
	-${FLINKER} -o ex1f ex1f.o  ${PETSC_KSP_LIB}
	${RM} ex1f.o
-----------------------------------------------------

So you'll just make the change [with the variables CMD and SOBJS properly defined]

ex1f -> $(CMD)
ex1f.o -> $(SOBJS)

Note: Necessary FFLAGS should already be PETSc config files. Some
additional flags can be specified with FFLAGS variable

Satish


On Thu, 1 Mar 2007, P. Aaron Lott wrote:



Hi,

I have a fortran90 code and I would like to use petsc's preconditioners
inside of it. I'm having trouble setting up a makefile that will allow me
include a petsc. It seems the problem is from the use of the c- preprocessor.


My old makefile looked something like this:

$(CMD)  : $(SOBJS)
	$(F90) $(FLAGS) -o $(EXENAME) $(SOBJS)

where SOBJ is a list of all of my object files.

I was hoping to be able to make a petsc object file and include it in this
list. Is this possible? Is there a tutorial on how to get petsc setup inside
of your existing code?


Thanks,

-Aaron



P. Aaron Lott
Ph.D. Candidate
4239 Computer and Space Sciences Building
University of Maryland
College Park, MD 20742-4015

palott@xxxxxxxxxxxx
http://www.lcv.umd.edu/~palott
Office: 301.405.4894
Fax:      301.314.0827




P. Aaron Lott Ph.D. Candidate 4239 Computer and Space Sciences Building University of Maryland College Park, MD 20742-4015

palott@xxxxxxxxxxxx
http://www.lcv.umd.edu/~palott
Office: 301.405.4894
Fax:      301.314.0827