SHELL:=/bin/sh # # Makefile to Build PADCIRC and its pre/post-processor # University of Texas's parallel version of the Hydrodynamics # Modeling program ADCIRC by J.J. Westerink and R.A. Luettich # vjp 3/29/2001 # updated JJW 3/17/2003 # updated for 3D JGF spring 2003 # meb 4/20/2004 ######################################################################## # Get Canonical Machine NAME from config.guess # NAME := $(shell ./config.guess) LIST := $(subst -, ,$(NAME)) MACHINE := $(word 1, $(LIST)) VENDOR := $(word 2, $(LIST)) OS := $(subst $(MACHINE)-$(VENDOR)-,,$(strip $(NAME))) include cmplrflags.mk ######################## Target Specific Rules ################################### # adcprep ifeq ($(BUILDTYPE),adcprep) CF:= $(FC) O_DIR:=odir1/ FFLAGS:= $(FFLAGS1) $(DPRE) $(IMODS) $(O_DIR) VPATH := ../prep PMSG_OBJ:= endif # adcprep2 ifeq ($(BUILDTYPE),adcprep2) CF:= $(PFC) O_DIR:=odir2/ FFLAGS:= $(FFLAGS2) $(DPRE2) $(IMODS) $(O_DIR) VPATH := ../prep PMSG_OBJ:= $(O_DIR)picomsg.o endif # adcpost ifeq ($(BUILDTYPE),adcpost) CF:= $(FC) O_DIR:=odir3/ FFLAGS:= $(FFLAGS1) $(DPRE) $(IMODS) $(O_DIR) VPATH := ../prep endif # adcirc ifeq ($(BUILDTYPE),adcirc) CF:= $(FC) O_DIR:=odir4/ FFLAGS:= $(FFLAGS3) $(DA) $(IMODS) $(O_DIR) VPATH:= ../src MSG_MOBJ:= endif # padcirc ifeq ($(BUILDTYPE),padcirc) CF:= $(PFC) O_DIR:=odir5/ FFLAGS:= $(FFLAGS4) $(DP) $(IMODS) $(O_DIR) VPATH := ../src MSG_MOBJ:= $(O_DIR)messenger.o endif $(O_DIR): mkdir -p $@ ######################### Module Source, Object, & Mod Files ###################### PREP_MSRC = presizes.F PGLO_MSRC = pre_global.F POST_MSRC = post_global.F ADC_MSRC = sizes.F global.F global_3dvs.F HARM_MSRC = harm.F WIND_MSRC = wind.F SOLV_MSRC = itpackv.F NA_MSRC = nodalattr.F PREP_MOBJ:= $(patsubst %.F, $(O_DIR)%.o, $(PREP_MSRC) ) PGLO_MOBJ:= $(patsubst %.F, $(O_DIR)%.o, $(PGLO_MSRC) ) POST_MOBJ:= $(patsubst %.F, $(O_DIR)%.o, $(POST_MSRC) ) SOLV_MOBJ:= $(patsubst %.F, $(O_DIR)%.o, $(SOLV_MSRC) ) ADC_MOBJ := $(patsubst %.F, $(O_DIR)%.o, $(ADC_MSRC) ) HARM_MOBJ := $(patsubst %.F, $(O_DIR)%.o, $(HARM_MSRC) ) WIND_MOBJ := $(patsubst %.F, $(O_DIR)%.o, $(WIND_MSRC) ) NA_MOBJ := $(patsubst %.F, $(O_DIR)%.o, $(NA_MSRC) ) ############################# Source & Object Files ############################## #meb 04/20/2004 - added machdep.F onto POST_SRC METIS1_SRC = metis.F METIS2_SRC = metis2.F PREP_SRC = adcprep.F decomp.F read_global.F prep.F interp.F machdep.F POST_SRC = adcpost.F post.F compare.F diffmerge.F machdep.F ADC_SRC = adcirc.F read_input.F cstart.F hstart.F timestep.F vsmy.F transport.F iogbl.F METIS1_OBJ:= $(patsubst %.F, $(O_DIR)%.o, $(METIS1_SRC) ) METIS2_OBJ:= $(patsubst %.F, $(O_DIR)%.o, $(METIS2_SRC) ) PREP_OBJ:= $(patsubst %.F, $(O_DIR)%.o, $(PREP_SRC) ) POST_OBJ:= $(patsubst %.F, $(O_DIR)%.o, $(POST_SRC) ) ADC_OBJ:= $(patsubst %.F, $(O_DIR)%.o, $(ADC_SRC) ) ######################## compilation rules ##################################### $(O_DIR)%.o : %.F # @echo depend $< # @echo target $@ $(CF) -c $(FFLAGS) -o $@ $< if [ "`echo *.mod`" != '*.mod' ]; then mv *.mod $(O_DIR); fi ########################## Executable Targets ################################## .PHONY: all metis adcprep adcprep2 adcpost adcirc padcirc all : metis adcprep adcprep2 adcpost adcirc padcirc ifeq ($(MAKELEVEL),0) metis: $(MAKE) -C ../metis/Lib/ CC="$(CC)" CFLAGS="$(CFLAGS)" graphchk: $(MAKE) -C ../metis/Programs/ CC="$(CC)" CFLAGS="$(CFLAGS)" mv ../metis/graphchk ../work adcprep: $(MAKE) BUILDTYPE=adcprep $@ adcprep2: $(MAKE) BUILDTYPE=adcprep2 $@ adcpost: $(MAKE) BUILDTYPE=adcpost $@ adcirc: $(MAKE) BUILDTYPE=adcirc $@ padcirc: $(MAKE) BUILDTYPE=padcirc $@ else adcprep:: $(O_DIR) adcprep2:: $(O_DIR) adcpost:: $(O_DIR) adcirc:: $(O_DIR) padcirc:: $(O_DIR) adcprep :: $(METIS1_OBJ) $(PREP_OBJ) $(CF) $(FFLAGS) -o $@ $(O_DIR)*.o $(LIBS) $(LDFLAGS) adcprep2 :: $(PMSG_OBJ) $(METIS2_OBJ) $(PREP_OBJ) $(CF) $(FFLAGS) -o $@ $(O_DIR)*.o $(LIBS) $(MSGLIBS) $(LDFLAGS) adcpost :: $(POST_OBJ) $(CF) $(FFLAGS) -o $@ $(O_DIR)*.o adcirc :: $(ADC_OBJ) $(CF) $(FFLAGS) -o $@ $(O_DIR)*.o padcirc :: $(MSG_MOBJ) $(ADC_OBJ) $(CF) $(FFLAGS) -o $@ $(O_DIR)*.o $(MSGLIBS) endif ########################## Misc Commands #################################### clean: rm -f odir*/*.o odir*/*.mod sizes.o clobber: rm -r -f odir* rm -f graphchk adcprep adcprep2 adcpost adcirc padcirc sizes.o \ ../metis/Lib/*.o ../metis/libmetis.a ../metis/Programs/*.o help: @echo "This makefile supports the following:" @echo "make all - makes all six targets" @echo "make adcprep - makes the adcprep executable" @echo "make adcprep2 - makes the adcprep2 executable" @echo "make adcpost - makes the adcpost executable" @echo "make adcirc - makes the serial adcirc executable" @echo "make padcirc - makes the parallel adcirc executable" ########################## Defining the DAG #################################### # adcprep & adcprep2 modules $(O_DIR)presize.o : presize.F $(O_DIR)pre_global.o : pre_global.F $(PREP_MOBJ) # adcprep & adcprep2 $(O_DIR)adcprep.o : adcprep.F $(PGLO_MOBJ) $(PMSG_OBJ) $(O_DIR)decomp.o : decomp.F $(PGLO_MOBJ) $(O_DIR)read_global.o : read_global.F $(PGLO_MOBJ) $(O_DIR)prep.o : prep.F $(PGLO_MOBJ) $(O_DIR)interp.o : interp.F $(O_DIR)machdep.o : machdep.F $(O_DIR)metis.o : metis.F $(PGLO_MOBJ) $(O_DIR)metis2.o : metis2.F $(PGLO_MOBJ) $(O_DIR)picomsg.o : picomsg.F # adcpost modules $(O_DIR)post_global.o : post_global.F # adcpost $(O_DIR)adcpost.o : adcpost.F $(POST_MOBJ) $(O_DIR)post.o : post.F $(POST_MOBJ) $(O_DIR)compare.o : compare.F $(O_DIR)diffmerge.o : diffmerge.F # adcirc & padcirc modules $(O_DIR)sizes.o : sizes.F $(O_DIR)global.o : global.F $(O_DIR)sizes.o $(O_DIR)messenger.o : messenger.F $(ADC_MOBJ) $(O_DIR)harm.o : harm.F $(O_DIR)wind.o : wind.F $(O_DIR)itpackv.o : itpackv.F $(ADC_MOBJ) $(O_DIR)nodalattr.o : nodalattr.F $(ADC_MOBJ) # adcirc & padcirc $(O_DIR)read_input.o : read_input.F $(ADC_MOBJ) $(HARM_MOBJ) $(WIND_MOBJ) $(SOLV_MOBJ) $(NA_MOBJ) $(O_DIR)transport.o : transport.F $(ADC_MOBJ) $(HARM_MOBJ) $(WIND_MOBJ) $(SOLV_MOBJ) $(O_DIR)cstart.o : cstart.F $(ADC_MOBJ) $(HARM_MOBJ) $(WIND_MOBJ) $(O_DIR)hstart.o : hstart.F $(ADC_MOBJ) $(HARM_MOBJ) $(WIND_MOBJ) $(NA_MOBJ) $(O_DIR)timestep.o : timestep.F $(ADC_MOBJ) $(HARM_MOBJ) $(WIND_MOBJ) $(SOLV_MOBJ) $(MSG_MOBJ) $(NA_MOBJ) $(O_DIR)iogbl.o : iogbl.F $(ADC_MOBJ) $(HARM_MOBJ) $(WIND_MOBJ) $(SOLV_MOBJ) $(MSG_MOBJ) $(NA_MOBJ) $(O_DIR)adcirc.o : adcirc.F $(ADC_MOBJ) $(HARM_MOBJ) $(WIND_MOBJ) $(SOLV_MOBJ) $(NA_MOBJ) # graphchk $(O_DIR)io.o : ../metis/Lib