forked from uaf-arctic-eco-modeling/dvm-dos-tem
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
147 lines (129 loc) · 3.14 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# Basic dvm-dos-tem Makefile
# Add compiler flag for enabling floating point exceptions:
# -DBSD_FPE for BSD (OSX)
# -DGNU_FPE for various Linux
CC=g++
CFLAGS=-c -ansi -g -gdwarf-2 -std=c++11 -fPIC -DBOOST_ALL_DYN_LINK -Werror # -W -Wall -Werror -Wno-system-headers
LIBS=-lnetcdf -lboost_system -lboost_filesystem \
-lboost_program_options -lboost_thread -lboost_log -ljsoncpp -lpthread -lreadline -llapacke
USEMPI = false
USEOMP = false
ifeq ($(USEMPI),true)
MPIINCLUDES = $(shell mpic++ -showme:compile)
MPICFLAGS = -DWITHMPI
MPILFLAGS = $(shell mpic++ -showme:link)
else
# do nothing..
endif
ifeq ($(USEOMP),true)
OMPCFLAGS = -fopenmp
OMPLFLAGS = -fopenmp
else
endif
# Create a build directory for .o object files.
# Crude because this gets run everytime the Makefile
# is parsed. But it works.
$(shell mkdir -p obj)
APPNAME=dvmdostem
LIBDIR=$(SITE_SPECIFIC_LIBS)
INCLUDES=$(SITE_SPECIFIC_INCLUDES)
SOURCES= src/TEM.o \
src/TEMLogger.o \
src/CalController.o \
src/ArgHandler.o \
src/TEMUtilityFunctions.o \
src/Climate.o \
src/OutputEstimate.o \
src/Runner.o \
src/BgcData.o \
src/CohortData.o \
src/EnvData.o \
src/EnvDataDly.o \
src/FireData.o \
src/RestartData.o \
src/WildFire.o \
src/DoubleLinkedList.o \
src/Ground.o \
src/MineralInfo.o \
src/Moss.o \
src/Organic.o \
src/Snow.o \
src/SoilParent.o \
src/Vegetation.o \
src/CohortLookup.o \
src/Cohort.o \
src/Integrator.o \
src/ModelData.o \
src/Richards.o \
src/Snow_Env.o \
src/Soil_Bgc.o \
src/Soil_Env.o \
src/SoilParent_Env.o \
src/Stefan.o \
src/TemperatureUpdator.o \
src/CrankNicholson.o \
src/tbc-debug-util.o \
src/Vegetation_Bgc.o \
src/Vegetation_Env.o \
src/Layer.o \
src/MineralLayer.o \
src/MossLayer.o \
src/OrganicLayer.o \
src/ParentLayer.o \
src/SnowLayer.o \
src/SoilLayer.o
OBJECTS = ArgHandler.o \
TEMLogger.o \
CalController.o \
TEMUtilityFunctions.o \
Climate.o \
OutputEstimate.o \
Runner.o \
BgcData.o \
CohortData.o \
EnvData.o \
EnvDataDly.o \
FireData.o \
RestartData.o \
WildFire.o \
DoubleLinkedList.o \
Ground.o \
MineralInfo.o \
Moss.o \
Organic.o \
Snow.o \
SoilParent.o \
Vegetation.o \
CohortLookup.o \
Cohort.o \
Integrator.o \
ModelData.o \
Richards.o \
Snow_Env.o \
Soil_Bgc.o \
Soil_Env.o \
SoilParent_Env.o \
Stefan.o \
CrankNicholson.o \
tbc-debug-util.o \
Vegetation_Bgc.o \
Vegetation_Env.o \
Layer.o \
MineralLayer.o \
MossLayer.o \
OrganicLayer.o \
ParentLayer.o \
SnowLayer.o \
SoilLayer.o \
TemperatureUpdator.o
GIT_SHA := $(shell git describe --abbrev=6 --dirty --always --tags)
TEMOBJ = obj/TEM.o
dvm: $(SOURCES) $(TEMOBJ)
$(CC) $(SITE_SPECIFIC_LINK_FLAGS) -o $(APPNAME) $(INCLUDES) $(addprefix obj/, $(OBJECTS)) $(TEMOBJ) $(LIBDIR) $(LIBS) $(MPILFLAGS) $(OMPLFLAGS)
lib: $(SOURCES)
$(CC) -o libTEM.so -shared $(INCLUDES) $(addprefix obj/, $(OBJECTS)) $(LIBDIR) $(LIBS) $(MPILFLAGS) $(OMPLFLAGS)
CFLAGS += -DGIT_SHA=\"$(GIT_SHA)\"
.cpp.o:
$(CC) $(CFLAGS) $(MPICFLAGS) $(OMPCFLAGS) $(INCLUDES) $(MPIINCLUDES) $< -o obj/$(notdir $@)
clean:
rm -f $(OBJECTS) $(APPNAME) TEM.o libTEM.so* *~ obj/*