forked from AMReX-Astro/Castro
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMake.auto_source
More file actions
170 lines (128 loc) · 6.49 KB
/
Make.auto_source
File metadata and controls
170 lines (128 loc) · 6.49 KB
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#------------------------------------------------------------------------------
# make generated source files location
#------------------------------------------------------------------------------
VPATH_LOCATIONS += $(CASTRO_AUTO_SOURCE_DIR)
INCLUDE_LOCATIONS += $(CASTRO_AUTO_SOURCE_DIR)
#------------------------------------------------------------------------------
# Microphysics runtime parameters
#------------------------------------------------------------------------------
CEXE_sources += extern_parameters.cpp
CEXE_headers += extern_parameters.H
CEXE_headers += extern_type.H
# for dependency resolution
AUTO_BUILD_SOURCES += $(CASTRO_AUTO_SOURCE_DIR)/extern_parameters.H
AUTO_BUILD_SOURCES += $(CASTRO_AUTO_SOURCE_DIR)/extern_type.H
# this is for finding runtime parameters
EXTERN_PARAMETERS := $(foreach dir, $(INCLUDE_LOCATIONS),$(realpath $(wildcard $(dir)/_parameters)))
$(CASTRO_AUTO_SOURCE_DIR)/extern_parameters.cpp: $(CASTRO_AUTO_SOURCE_DIR)/extern_parameters.H
$(CASTRO_AUTO_SOURCE_DIR)/extern_type.H: $(CASTRO_AUTO_SOURCE_DIR)/extern_parameters.H
$(CASTRO_AUTO_SOURCE_DIR)/extern_parameters.H: $(EXTERN_PARAMETERS)
@if [ ! -d $(CASTRO_AUTO_SOURCE_DIR) ]; then mkdir -p $(CASTRO_AUTO_SOURCE_DIR); fi
$(MICROPHYSICS_HOME)/util/build_scripts/write_probin.py \
--cxx_prefix $(CASTRO_AUTO_SOURCE_DIR)/extern \
--pa "$(EXTERN_PARAMETERS)"
#------------------------------------------------------------------------------
# problem specific parameters
#------------------------------------------------------------------------------
# runtime parameter support for extern/ routines
CEXE_sources += prob_parameters.cpp
CEXE_headers += prob_parameters.H
# search Bdirs for _prob_params files
PROB_PARAMETERS := $(foreach dir, $(Bdirs), $(wildcard $(TOP)/$(dir)/_prob_params))
# the problem's own parameters always come at the end so they override
# any others
PROB_PARAMETERS += $(wildcard $(PROBLEM_DIR)/_prob_params)
$(CASTRO_AUTO_SOURCE_DIR)/prob_parameters.cpp: $(CASTRO_AUTO_SOURCE_DIR)/prob_parameters.H
# for dependency resolution
AUTO_BUILD_SOURCES += $(CASTRO_AUTO_SOURCE_DIR)/prob_parameters.H
# Note that $(PROB_PARAMETERS) may not exist so we use wildcard to condition
# on that; if it doesn't exist, it's ignored as a make target. The default
# parameters file will always exist.
$(CASTRO_AUTO_SOURCE_DIR)/prob_parameters.H: $(DEFAULT_PROB_PARAMETERS) $(wildcard $(PROB_PARAMETERS))
@if [ ! -d $(CASTRO_AUTO_SOURCE_DIR) ]; then mkdir -p $(CASTRO_AUTO_SOURCE_DIR); fi
PYTHONPATH=$(MICROPHYSICS_HOME)/util/build_scripts $(TOP)/Util/scripts/write_probdata.py \
-p "$(PROB_PARAMETERS)" \
--cxx_prefix $(CASTRO_AUTO_SOURCE_DIR)/prob \
#------------------------------------------------------------------------------
# Castro C++ parameters
#------------------------------------------------------------------------------
CEXE_headers += castro_params.H
# for dependency resolution
AUTO_BUILD_SOURCES += $(CASTRO_AUTO_SOURCE_DIR)/castro_params.H
CPP_PARAMETERS := $(TOP)/Source/driver/_cpp_parameters
$(CASTRO_AUTO_SOURCE_DIR)/runtime_params.cpp: $(CASTRO_AUTO_SOURCE_DIR)/castro_params.H
STRUCT_USE_CASTRO_CLASS ?= TRUE
PARSE_ARGS :=
ifneq ($(STRUCT_USE_CASTRO_CLASS), TRUE)
PARSE_ARGS += --without-castro-class
endif
$(CASTRO_AUTO_SOURCE_DIR)/castro_params.H: $(CPP_PARAMETERS)
@if [ ! -d $(CASTRO_AUTO_SOURCE_DIR) ]; then mkdir -p $(CASTRO_AUTO_SOURCE_DIR); fi
PYTHONPATH=$(MICROPHYSICS_HOME)/util/build_scripts $(TOP)/Source/driver/parse_castro_params.py $(PARSE_ARGS) -o $(CASTRO_AUTO_SOURCE_DIR) $(CPP_PARAMETERS)
# for debugging
test_cxx_params: $(CASTRO_AUTO_SOURCE_DIR)/castro_params.H
#------------------------------------------------------------------------------
# state variable info
#-------------------------------------------------------------------------------
$(CASTRO_AUTO_SOURCE_DIR)/state_indices_nd.F90: $(CASTRO_AUTO_SOURCE_DIR)/state_indices.H
# for dependency resolution
AUTO_BUILD_SOURCES += $(CASTRO_AUTO_SOURCE_DIR)/state_indices.H
$(CASTRO_AUTO_SOURCE_DIR)/state_indices.H:
@if [ ! -d $(CASTRO_AUTO_SOURCE_DIR) ]; then mkdir -p $(CASTRO_AUTO_SOURCE_DIR); fi
$(CASTRO_HOME)/Source/driver/set_variables.py \
--defines "$(DEFINES)" \
--nadv $(NUMADV) \
--odir $(CASTRO_AUTO_SOURCE_DIR) \
$(CASTRO_HOME)/Source/driver/_variables
# for debugging
test_variables: $(CASTRO_AUTO_SOURCE_DIR)/state_indices.H
#------------------------------------------------------------------------------
# build info
#------------------------------------------------------------------------------
# job_info support
CEXE_headers += $(AMREX_HOME)/Tools/C_scripts/AMReX_buildInfo.H
INCLUDE_LOCATIONS += $(AMREX_HOME)/Tools/C_scripts
MNAMES := EOS=$(EOS_PATH) NETWORK=$(NETWORK_PATH)
ifeq ($(USE_DIFFUSION), TRUE)
MNAMES += CONDUCTIVITY=$(CONDUCTIVITY_PATH)
endif
ifeq ($(USE_RAD), TRUE)
MNAMES += OPACITY=$(OPAC_PATH)
endif
ifeq ($(USE_REACT), TRUE)
MNAMES += INTEGRATOR=$(INTEGRATOR_DIR) SCREENING=$(SCREEN_METHOD)
endif
# we make AMReX_buildInfo.cpp as we make the .o file, so we can delete
# it immediately. this way if the build is interrupted, we are
# guaranteed to remake it
objForExecs += $(objEXETempDir)/AMReX_buildInfo.o
.FORCE:
.PHONE: .FORCE
# set BUILD_GIT_NAME and BUILD_GIT_DIR if you are building in a
# git-controlled dir not under Castro/
EXTRA_BUILD_INFO :=
ifdef BUILD_GIT_NAME
EXTRA_BUILD_INFO := --build_git_name "$(BUILD_GIT_NAME)" \
--build_git_dir "$(BUILD_GIT_DIR)"
endif
ifeq ($(USE_CUDA), TRUE)
CUDA_FLAGS := --CUDA_VERSION "$(nvcc_version)"
endif
clean_flags := $(filter-out --jobserver%,$(MAKEFLAGS))
ifeq ($(strip $(clean_flags)),)
clean_flags = $(MAKEOVERRIDES)
endif
$(objEXETempDir)/AMReX_buildInfo.o: .FORCE
@if [ ! -d $(objEXETempDir) ]; then mkdir -p $(objEXETempDir); fi
$(AMREX_HOME)/Tools/C_scripts/makebuildinfo_C.py \
--amrex_home "$(AMREX_HOME)" \
--COMP "$(COMP)" --COMP_VERSION "$(COMP_VERSION)" \
--CXX_comp_name "$(CXX)" --CXX_flags "$(CXXFLAGS) $(EXTRACXXFLAGS) $(CPPFLAGS) $(includes)" \
--F_comp_name "$(F90)" --F_flags "$(F90FLAGS)" \
$(CUDA_FLAGS) \
--link_flags "$(LDFLAGS)" --libraries "$(libraries)" \
--make_flags="$(clean_flags)" \
--MODULES "$(MNAMES)" $(EXTRA_BUILD_INFO) \
--GIT "$(TOP) $(AMREX_HOME) $(MICROPHYSICS_HOME)"
$(SILENT) $(CCACHE) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(CXXEXEFLAGS) AMReX_buildInfo.cpp -o $(objEXETempDir)/AMReX_buildInfo.o
$(SILENT) $(RM) AMReX_buildInfo.cpp