# 
# SUMMARY:      makefile for DHSVM
# USAGE:        make DHSVM
#
# AUTHOR:       DHSVM Project (Bart Nijssen)
# ORG:          University of Washington, Department of Civil Engineering
# ORIG-DATE:    28-Aug-1996 at 18:00:04
# LAST-MOD: Tue Feb 18 08:53:13 2003 by Scott Waichler <waichler@tuff.pnl.gov>
# DESCRIPTION:  makefile for DHSVM - 
#                 The Distributed Hydrology-Soil-Vegetation Model      
# DESCRIP-END.

#	$Id: makefile_linux_fast,v 1.1 2001/04/11 23:45:38 waichler Exp $	

# Use gnumake, not make!

OBJS = AdjustStorage.o Aggregate.o AggregateRadiation.o ArrayBuilder.o CalcAerodynamic.o \
CalcAvailableWater.o CalcDistance.o CalcEffectiveKh.o CalcKhDry.o \
CalcSnowAlbedo.o CalcSolar.o CalcTotalWater.o CalcTransmissivity.o \
CalcWeights.o Calendar.o CanopyResistance.o CutBankGeometry.o DecodeIPW.o DefaultModelState.o \
Desorption.o DHSVMChannel.o Draw.o DumpList.o ElevationBand.o EvapoTranspiration.o ExecDump.o FileIOBin.o \
Files.o FinalMassBalance.o GetInit.o GetMetData.o InBasin.o Infiltration.o \
InitAggregated.o InitArray.o InitConstants.o InitDump.o \
InitFileIO.o InitInterpolationWeights.o InitMetSources.o InitMetMaps.o \
InitModelState.o InitNetwork.o InitNewMonth.o InitSnowMap.o InitTables.o \
InitTerrainMaps.o InitTime.o InitUnitHydrograph.o InitXGraphics.o InterceptionStorage.o \
IsStationLocation.o \
LapseT.o LookupTable.o MainDHSVM.o MakeLocalMetData.o \
MassBalance.o MassEnergyBalance.o MassRelease.o NoEvap.o PowerLaw.o PowerLawOutflow.o RadiationBalance.o \
ReadMetRecord.o ReadRadMap.o ReadRadTable.o ReadRadarMap.o ReadWeights.o\
ReportError.o ResetAggregate.o RestoreErrorHandling.o RootBrent.o Round.o \
RouteSubSurface.o RouteSurface.o SatVaporPressure.o SensibleHeatFlux.o \
SeparateRadiation.o SizeOfNT.o SlopeAspect.o SnowInterception.o SoilResistanceEvap.o \
SnowPackEnergyBalance.o SnowMelt.o SoilEvaporation.o StabilityCorrection.o \
StoreModelState.o SurfaceEnergyBalance.o UnsaturatedFlow.o WaterTableDepth.o \
channel.o channels.o channel_grid.o errorhandler.o globals.o tableio.o  ChannelState.o \
VarID.o FileIONetCDF.o equal.o frozensoil.o ftable5.o Groundwater.o FtablesDHSVM.o sortelev.o

SRCS = $(OBJS:%.o=%.c,.cpp)

HDRS = DHSVMerror.h brent.h calckh.h constants.h data.h \
aerodynamic.h extreme.h fifobin.h fileio.h functions.h \
init.h massenergy.h rad.h round.h settings.h sizeofnt.h slopeaspect.h \
soilmoisture.h trans.h DHSVMChannel.h channel.h channel_grid.h \
errorhandler.h tableio.h lookuptable.h getinit.h solar.h frozensoil.h \
ftable.h ftablesdhsvm.h groundwater.h sortelev.h calcsolar.h unsatflow.h balance.h

OTHER = makefile errorstring.txt tableio.lex

#possible DEFS -DHAVE_NETCDF -DHAVE_X11 -DSHOW_MET_ONLY
#DEFS = -DNDEBUG
DEFS =
LDFLAGS = 
CFLAGS = -O3 -DSOIL_FROZEN_BY_HEATFLUX_AND_MOISTURE
CC = /usr/bin/gcc
LD = /usr/bin/g++
FLEX = flex
LIBS = -lm

dhsvm_hfmoist_fast: $(OBJS)
	$(LINK.C) $(OBJS) $(CFLAGS) -o dhsvm_hfmoist_fast $(LIBS)

clean::
	rm -f dhsvm_hfmoist_fast

library: libBinIO.a

BINIOOBJ = \
FileIOBin.o Files.o InitArray.o SizeOfNT.o Calendar.o \
InitErrorMessage.o ReportError.o

BINIOLIBOBJ = $(BINIOOBJ:%.o=libBinIO.a(%.o))

libBinIO.a: $(BINIOLIBOBJ)
	-ranlib $@

clean::
	rm -f libBinIO.a

# -------------------------------------------------------------
# rules for individual objects (created with make depend)
# -------------------------------------------------------------
AdjustStorage.o: AdjustStorage.c settings.h soilmoisture.h
Aggregate.o: Aggregate.c settings.h data.h Calendar.h typenames.h \
 DHSVMerror.h functions.h DHSVMChannel.h channel.h channel_grid.h \
 constants.h
AggregateRadiation.o: AggregateRadiation.c settings.h data.h \
 typenames.h Calendar.h massenergy.h
ArrayBuilder.o: ArrayBuilder.c ArrayBuilder.h
CalcAerodynamic.o: CalcAerodynamic.c DHSVMerror.h settings.h \
 constants.h aerodynamic.h
CalcAvailableWater.o: CalcAvailableWater.c settings.h soilmoisture.h
CalcDistance.o: CalcDistance.c settings.h data.h typenames.h \
 Calendar.h functions.h DHSVMChannel.h getinit.h channel.h \
 channel_grid.h
CalcEffectiveKh.o: CalcEffectiveKh.c settings.h constants.h \
 DHSVMerror.h calckh.h
CalcKhDry.o: CalcKhDry.c settings.h calckh.h
CalcSnowAlbedo.o: CalcSnowAlbedo.c settings.h constants.h data.h \
 typenames.h Calendar.h functions.h DHSVMChannel.h getinit.h channel.h \
 channel_grid.h
CalcSolar.o: CalcSolar.c constants.h settings.h Calendar.h typenames.h \
 rad.h
CalcTotalWater.o: CalcTotalWater.c settings.h soilmoisture.h
CalcTransmissivity.o: CalcTransmissivity.c settings.h trans.h
CalcWeights.o: CalcWeights.c settings.h data.h typenames.h Calendar.h \
 DHSVMerror.h functions.h DHSVMChannel.h getinit.h channel.h \
 channel_grid.h round.h
Calendar.o: Calendar.c settings.h equal.h Calendar.h typenames.h \
 DHSVMerror.h
CanopyResistance.o: CanopyResistance.c settings.h massenergy.h data.h \
 typenames.h Calendar.h constants.h
CutBankGeometry.o: CutBankGeometry.c settings.h soilmoisture.h
DecodeIPW.o: DecodeIPW.c settings.h rad.h
DefaultModelState.o: DefaultModelState.c settings.h data.h DHSVMerror.h fileio.h functions.h \
  constants.h sizeofnt.h soilmoisture.h varid.h 
Desorption.o: Desorption.c settings.h massenergy.h data.h typenames.h \
 Calendar.h constants.h
DHSVMChannel.o: DHSVMChannel.c getinit.h DHSVMChannel.h settings.h \
 data.h typenames.h Calendar.h channel.h channel_grid.h DHSVMerror.h \
 functions.h errorhandler.h fileio.h
Draw.o: Draw.c settings.h data.h
DumpList.o: DumpList.c settings.h data.h
ElevationBand.o: ElevationBand.c settings.h data.h DHSVMerror.h functions.h fileio.h \
  getinit.h elevationband.h
EvapoTranspiration.o: EvapoTranspiration.c settings.h data.h \
 typenames.h Calendar.h DHSVMerror.h massenergy.h constants.h
ExecDump.o: ExecDump.c settings.h data.h typenames.h Calendar.h \
 fileio.h sizeofnt.h DHSVMerror.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h constants.h
FileIOBin.o: FileIOBin.c fifobin.h fileio.h sizeofnt.h settings.h \
 DHSVMerror.h
Files.o: Files.c settings.h data.h typenames.h Calendar.h DHSVMerror.h \
 functions.h DHSVMChannel.h getinit.h channel.h channel_grid.h \
 constants.h init.h fileio.h
FinalMassBalance.o: FinalMassBalance.c settings.h data.h typenames.h \
 Calendar.h DHSVMerror.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h constants.h
frozensoil.o: frozensoil.c settings.h data.h DHSVMerror.h functions.h constants.h \
 frozensoil.h fileio.h varid.h sizeofnt.h Calendar.h
ftable5.o: ftable5.cpp ftable.h fileio.h 
FtablesDHSVM.o: FtablesDHSVM.cpp settings.h data.h DHSVMerror.h functions.h fileio.h \
 getinit.h ftablesdhsvm.h ftable.h
GetInit.o: GetInit.c DHSVMerror.h fileio.h getinit.h
GetMetData.o: GetMetData.c settings.h data.h typenames.h Calendar.h \
 DHSVMerror.h functions.h DHSVMChannel.h getinit.h channel.h \
 channel_grid.h constants.h rad.h
Groundwater.o: Groundwater.c settings.h data.h DHSVMerror.h functions.h constants.h \
 trans.h soilmoisture.h slopeaspect.h DHSVMChannel.h groundwater.h fileio.h varid.h sizeofnt.h
InBasin.o: InBasin.c constants.h settings.h data.h typenames.h \
 Calendar.h
Infiltration.o: Infiltration.cpp infiltration.h
InitAggregated.o: InitAggregated.c settings.h data.h typenames.h \
 Calendar.h DHSVMerror.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h constants.h
InitArray.o: InitArray.c init.h
InitConstants.o: InitConstants.c settings.h data.h typenames.h \
 Calendar.h fileio.h DHSVMerror.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h constants.h init.h rad.h round.h
InitDump.o: InitDump.c settings.h data.h typenames.h Calendar.h \
 DHSVMerror.h fileio.h functions.h DHSVMChannel.h getinit.h channel.h \
 channel_grid.h constants.h init.h sizeofnt.h round.h varid.h
InitFileIO.o: InitFileIO.c fileio.h fifobin.h fifoNetCDF.h \
 DHSVMerror.h
InitInterpolationWeights.o: InitInterpolationWeights.c settings.h \
 data.h typenames.h Calendar.h DHSVMerror.h functions.h DHSVMChannel.h \
 getinit.h channel.h channel_grid.h constants.h
InitMetSources.o: InitMetSources.c settings.h data.h typenames.h \
 Calendar.h fileio.h DHSVMerror.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h constants.h init.h rad.h round.h
InitMetMaps.o: InitMetMaps.c settings.h constants.h data.h typenames.h \
 Calendar.h DHSVMerror.h fileio.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h rad.h sizeofnt.h
InitModelState.o: InitModelState.c settings.h data.h typenames.h \
 Calendar.h DHSVMerror.h fileio.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h constants.h sizeofnt.h soilmoisture.h
InitNetwork.o: InitNetwork.c constants.h settings.h data.h typenames.h \
 Calendar.h DHSVMerror.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h soilmoisture.h
InitNewMonth.o: InitNewMonth.c settings.h data.h typenames.h \
 Calendar.h DHSVMerror.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h constants.h init.h fileio.h rad.h \
 slopeaspect.h sizeofnt.h
InitSnowMap.o: InitSnowMap.c settings.h data.h typenames.h Calendar.h \
 DHSVMerror.h functions.h DHSVMChannel.h getinit.h channel.h \
 channel_grid.h constants.h
InitTables.o: InitTables.c settings.h data.h typenames.h Calendar.h \
 DHSVMerror.h functions.h DHSVMChannel.h getinit.h channel.h \
 channel_grid.h constants.h aerodynamic.h calckh.h fileio.h
InitTerrainMaps.o: InitTerrainMaps.c settings.h data.h typenames.h \
 Calendar.h DHSVMerror.h fileio.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h constants.h sizeofnt.h slopeaspect.h varid.h
InitTime.o: InitTime.c equal.h DHSVMerror.h inittime.h round.h settings.h
InitUnitHydrograph.o: InitUnitHydrograph.c settings.h constants.h \
 data.h typenames.h Calendar.h DHSVMerror.h functions.h DHSVMChannel.h \
 getinit.h channel.h channel_grid.h fileio.h sizeofnt.h
InitXGraphics.o: InitXGraphics.c
InterceptionStorage.o: InterceptionStorage.c settings.h data.h \
 typenames.h Calendar.h DHSVMerror.h massenergy.h constants.h
IsStationLocation.o: IsStationLocation.c settings.h data.h typenames.h \
 Calendar.h functions.h DHSVMChannel.h getinit.h channel.h \
 channel_grid.h
LapseT.o: LapseT.c settings.h data.h typenames.h Calendar.h \
 functions.h DHSVMChannel.h getinit.h channel.h channel_grid.h
LookupTable.o: LookupTable.c lookuptable.h DHSVMerror.h
MainDHSVM.o: MainDHSVM.cpp settings.h constants.h data.h typenames.h \
 Calendar.h DHSVMerror.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h fileio.h ftablesdhsvm.h
MakeLocalMetData.o: MakeLocalMetData.c settings.h data.h typenames.h \
 Calendar.h snow.h DHSVMerror.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h constants.h rad.h svp.h
MassBalance.o: MassBalance.c settings.h data.h typenames.h Calendar.h \
 DHSVMerror.h functions.h DHSVMChannel.h getinit.h channel.h \
 channel_grid.h constants.h
MassEnergyBalance.o: MassEnergyBalance.c settings.h data.h typenames.h \
 Calendar.h DHSVMerror.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h massenergy.h snow.h constants.h \
 soilmoisture.h
MassRelease.o: MassRelease.c constants.h settings.h massenergy.h \
 data.h typenames.h Calendar.h snow.h extreme.h
NoEvap.o: NoEvap.c settings.h data.h typenames.h Calendar.h \
 massenergy.h
PowerLaw.o: PowerLaw.cpp powerlaw.h
PowerLawOutflow.o: PowerLawOutflow.cpp powerlaw.h
RadiationBalance.o: RadiationBalance.c settings.h data.h typenames.h \
 Calendar.h DHSVMerror.h massenergy.h constants.h
ReadMetRecord.o: ReadMetRecord.c settings.h data.h typenames.h \
 Calendar.h DHSVMerror.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h constants.h
ReadRadMap.o: ReadRadMap.c settings.h data.h typenames.h Calendar.h \
 DHSVMerror.h fileio.h functions.h DHSVMChannel.h getinit.h channel.h \
 channel_grid.h constants.h rad.h sizeofnt.h
ReadRadTable.o: ReadRadTable.c settings.h data.h typenames.h \
 Calendar.h DHSVMerror.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h constants.h
ReadRadarMap.o: ReadRadarMap.c settings.h data.h typenames.h \
 Calendar.h DHSVMerror.h fileio.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h constants.h sizeofnt.h
ReadWeights.o: ReadWeights.c settings.h data.h DHSVMerror.h functions.h fileio.h \
  getinit.h round.h readweights.h
ReportError.o: ReportError.c settings.h data.h typenames.h Calendar.h \
 DHSVMerror.h
ResetAggregate.o: ResetAggregate.c settings.h data.h typenames.h \
 Calendar.h functions.h DHSVMChannel.h getinit.h channel.h \
 channel_grid.h
RestoreErrorHandling.o: RestoreErrorHandling.c DHSVMerror.h
RootBrent.o: RootBrent.c settings.h brent.h massenergy.h data.h \
 typenames.h Calendar.h DHSVMerror.h
Round.o: Round.c round.h DHSVMerror.h
RouteSubSurface.o: RouteSubSurface.c settings.h data.h typenames.h \
 Calendar.h DHSVMerror.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h constants.h trans.h soilmoisture.h \
 slopeaspect.h
RouteSurface.o: RouteSurface.c settings.h data.h typenames.h \
 Calendar.h slopeaspect.h DHSVMerror.h functions.h DHSVMChannel.h \
 getinit.h channel.h channel_grid.h constants.h
SatVaporPressure.o: SatVaporPressure.c lookuptable.h
SensibleHeatFlux.o: SensibleHeatFlux.c settings.h data.h typenames.h \
 Calendar.h DHSVMerror.h massenergy.h constants.h brent.h calckh.h
SeparateRadiation.o: SeparateRadiation.c settings.h rad.h
SizeOfNT.o: SizeOfNT.c DHSVMerror.h sizeofnt.h
SlopeAspect.o: SlopeAspect.c constants.h settings.h data.h typenames.h \
 Calendar.h slopeaspect.h ArrayBuilder.h 
SnowInterception.o: SnowInterception.c brent.h constants.h settings.h \
 massenergy.h data.h typenames.h Calendar.h snow.h extreme.h svp.h
SnowPackEnergyBalance.o: SnowPackEnergyBalance.c settings.h \
 constants.h massenergy.h data.h typenames.h Calendar.h snow.h svp.h
SnowMelt.o: SnowMelt.c brent.h constants.h settings.h massenergy.h \
 data.h typenames.h Calendar.h snow.h
SoilEvaporation.o: SoilEvaporation.c settings.h DHSVMerror.h \
 massenergy.h data.h typenames.h Calendar.h constants.h extreme.h
SoilResistanceEvap.o: SoilResistanceEvap.c settings.h DHSVMerror.h \
 massenergy.h data.h typenames.h Calendar.h constants.h extreme.h
sortelev.o: sortelev.cpp sortelev.h
StabilityCorrection.o: StabilityCorrection.c settings.h massenergy.h \
 data.h typenames.h Calendar.h constants.h
StoreModelState.o: StoreModelState.c settings.h data.h typenames.h \
 Calendar.h DHSVMerror.h fileio.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h constants.h sizeofnt.h varid.h
SurfaceEnergyBalance.o: SurfaceEnergyBalance.c settings.h massenergy.h \
 data.h typenames.h Calendar.h constants.h
UnsaturatedFlow.o: UnsaturatedFlow.cpp constants.h settings.h \
 soilmoisture.h
WaterTableDepth.o: WaterTableDepth.c settings.h soilmoisture.h
channel.o: channel.c errorhandler.h channel.h tableio.h boolean.h
channels.o: channels.cpp channels.h rungekutta.h
channel_grid.o: channel_grid.c channel_grid.h channel.h tableio.h \
 errorhandler.h boolean.h
errorhandler.o: errorhandler.c errorhandler.h
globals.o: globals.c
tableio.o: tableio.c tableio.h errorhandler.h boolean.h
ChannelState.o: ChannelState.c settings.h data.h typenames.h \
 Calendar.h DHSVMerror.h fileio.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h constants.h sizeofnt.h
VarID.o: VarID.c settings.h data.h typenames.h Calendar.h DHSVMerror.h \
 sizeofnt.h varid.h
FileIONetCDF.o: FileIONetCDF.c settings.h data.h typenames.h \
 Calendar.h fifoNetCDF.h fileio.h functions.h DHSVMChannel.h getinit.h \
 channel.h channel_grid.h DHSVMerror.h
equal.o: equal.c equal.h

tableio.c: tableio.lex
	$(FLEX) -Ptable_yy -o$@ $<

#clean::
#	rm -f tableio.c

# -------------------------------------------------------------
# sources
# -------------------------------------------------------------
sources: $(SRCS) $(HDRS) $(OTHER)

clean::
	rm -f $(OBJS)
	rm -f *~

# -------------------------------------------------------------
# tags 
# so we can find our way around  "make tags"
# -------------------------------------------------------------
tags: TAGS
TAGS: $(SRCS) $(HDRS)
	etags $(SRCS) $(HDRS)

clean::
	\rm -f TAGS


# -------------------------------------------------------------
# depend
# -------------------------------------------------------------
depend: .depend
.depend: $(SRCS)
	$(CC) $(CFLAGS) -MM $(SRCS) > $@

clean:: 
	rm -f .depend

