source: ThirdParty/mpqc_open/lib/GlobalRules@ 7516f6

Action_Thermostats Adding_MD_integration_tests Adding_StructOpt_integration_tests AutomationFragmentation_failures Candidate_v1.6.1 ChemicalSpaceEvaluator Enhanced_StructuralOptimization Enhanced_StructuralOptimization_continued Exclude_Hydrogens_annealWithBondGraph Fix_Verbose_Codepatterns ForceAnnealing_with_BondGraph ForceAnnealing_with_BondGraph_continued ForceAnnealing_with_BondGraph_continued_betteresults ForceAnnealing_with_BondGraph_contraction-expansion Gui_displays_atomic_force_velocity JobMarket_RobustOnKillsSegFaults JobMarket_StableWorkerPool PythonUI_with_named_parameters Recreated_GuiChecks StoppableMakroAction TremoloParser_IncreasedPrecision
Last change on this file since 7516f6 was 860145, checked in by Frederik Heber <heber@…>, 8 years ago

Merge commit '0b990dfaa8c6007a996d030163a25f7f5fc8a7e7' as 'ThirdParty/mpqc_open'

  • Property mode set to 100644
File size: 6.9 KB
Line 
1# Emacs should use -*- Makefile -*- mode.
2
3#################################################
4#
5# the user can specify the following targets
6#
7# install_inc::
8# installs the include files
9#
10# default::
11#
12# the user must define the following:
13#
14#
15# TARGET_TO_MAKE
16#
17# BIN_OR_LIB = BIN or LIB
18#
19# TRUESRC
20#
21# DEPENDINCLUDE
22#
23# TRUEINCLUDES
24#
25# OTHERFILES
26#
27# LIBOBJ
28# BINOBJ
29#
30# LIBS
31#
32# SABER_FILES
33#
34#################################################
35
36.PHONY: default install install_devel install_inc install_target clean
37
38default::
39
40install::
41
42install_devel::
43
44.PHONY: testbuild testrun
45
46testbuild: $(TESTPROGS)
47
48testrun: $(TESTPROGS:%=%.testrun)
49
50# The target specific variable can be set to control testrun:
51# To skip testrun:
52# %.testrun: DO_TESTRUN=no
53# To give arguments to the command
54# %.testrun: TESTRUN_ARGS=arglist
55%.testrun: %
56 if test "$(DO_TESTRUN)" != no; then \
57 echo ----------- Running $< $(TESTRUN_ARGS) -----------; \
58 if test -f $(SRCDIR)/$<.out; then \
59 ./$< $(TESTRUN_ARGS) > $<.out.testrun 2>&1 || exit 1; \
60 diff -u $<.out.testrun $(SRCDIR)/$<.out || exit 1; \
61 else \
62 ./$< $(TESTRUN_ARGS) || exit 1; \
63 fi \
64 else \
65 echo ----------- Skipping run of $< -----------; \
66 fi
67
68ifeq ($(BIN_OR_LIB),LIB)
69
70ifeq ($(TMPLINLIB),yes)
71
72$(TOPDIR)/lib/$(TARGET_TO_MAKE).a: $(LIBOBJ)
73 /bin/rm -f $@
74 $(AR) $(ARFLAGS) $@ $^ $(wildcard $(TMPLREPO)/*.o)
75 $(RANLIB) $@
76
77$(TOPDIR)/lib/$(TARGET_TO_MAKE).la: $(LIBOBJ)
78 $(LTLINK) $(CXX) -o $@ $^ $(wildcard $(TMPLREPO)/*.o) $(LTLINKLIBOPTS)
79
80else
81
82ifeq ($(TMPLINST),yes)
83
84SCLIBS := $(shell $(LISTLIBS) $(INCLUDE) $(SRCDIR)/LIBS.h)
85SCLIBSOTHER := $(SCLIBS:$(TARGET_TO_MAKE).$(LIBSUF)=)
86SCLIBSEXIST := $(wildcard $(SCLIBSOTHER:%=$(TOPDIR)/lib/%))
87
88$(TOPDIR)/lib/$(TARGET_TO_MAKE).a: $(LIBOBJ) $(SCLIBSEXIST)
89 @echo "Doing template instantiations (expect errors)."
90 -$(LD) $(LDFLAGS) -o a.out.tmplinst $^ $(SYSLIBS) 2> /dev/null
91 /bin/rm -f a.out.tmplinst
92 @echo "Finished template instantiations (errors were expected)."
93 /bin/rm -f $@
94 $(AR) $(ARFLAGS) $@ $(LIBOBJ)
95 $(RANLIB) $@
96
97else
98
99$(TOPDIR)/lib/$(TARGET_TO_MAKE).a: $(LIBOBJ)
100 /bin/rm -f $@
101 $(AR) $(ARFLAGS) $@ $(LIBOBJ)
102 $(RANLIB) $@
103
104endif
105
106$(TOPDIR)/lib/$(TARGET_TO_MAKE).la: $(LIBOBJ)
107 $(LTLINK) $(CXX) -o $@ $^ $(LTLINKLIBOPTS)
108
109endif
110
111default:: $(TOPDIR)/lib/$(TARGET_TO_MAKE).$(LIBSUF)
112
113ifneq ($(ENABLESHARED),yes)
114
115install_devel:: install_inc install_target
116
117install::
118
119endif
120
121ifeq ($(ENABLESHARED),yes)
122
123install_devel:: install_inc
124
125install:: install_target
126
127endif
128
129install_inc::
130 $(INSTALL) $(INSTALLDIROPT) $(installroot)$(includedir)/$(SRCDIR:$(SRCTOPDIR)/src/lib/%=%)
131 -$(INSTALL) $(INSTALLLIBOPT) $(SRCDIR)/*.h $(installroot)$(includedir)/$(SRCDIR:$(SRCTOPDIR)/src/lib/%=%)
132 -$(INSTALL) $(INSTALLLIBOPT) *.h $(installroot)$(includedir)/$(SRCDIR:$(SRCTOPDIR)/src/lib/%=%)
133
134install_target:: $(TOPDIR)/lib/$(TARGET_TO_MAKE).$(LIBSUF)
135 $(INSTALL) $(INSTALLDIROPT) $(installroot)$(libdir)
136 $(LTINST) $(INSTALL) $(INSTALLLIBOPT) $< $(installroot)$(libdir)
137endif
138
139ifeq ($(BIN_OR_LIB),BIN)
140
141$(TARGET_TO_MAKE): $(BINOBJ) $(LIBS)
142 $(LD) $(LDFLAGS) $^ -o $(@F) $(SYSLIBS)
143
144install_devel::
145
146install:: install_target
147
148install_target:: $(TARGET_TO_MAKE)
149 $(INSTALL) $(INSTALLDIROPT) $(installroot)$(bindir)
150 $(LTINST) $(INSTALL) $(INSTALLBINOPT) $(TARGET_TO_MAKE) $(installroot)$(bindir)
151
152endif
153
154%.$(OBJSUF): %.c
155 $(CC) $(CPPFLAGS) $(CFLAGS) -c $< $(OUTPUT_OPTION)
156
157%.lo: %.c
158 $(LTCOMP) $(CC) $(CPPFLAGS) $(CFLAGS) -c $< $(OUTPUT_OPTION)
159
160ifneq ($(OBJSUF),lo)
161
162%.$(OBJSUF): %.f
163 $(FC) $(FFLAGS) -c $< $(OUTPUT_OPTION)
164
165%.$(OBJSUF): %.C
166 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< $(OUTPUT_OPTION)
167
168%.$(OBJSUF): %.cc
169 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< $(OUTPUT_OPTION)
170
171endif
172
173%.lo: %.C
174 $(LTCOMP) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< $(OUTPUT_OPTION)
175
176%.lo: %.cc
177 $(LTCOMP) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< $(OUTPUT_OPTION)
178
179%.lo: %.f
180 $(LTCOMP) $(FC) $(FFLAGS) -c $< $(OUTPUT_OPTION)
181
182#
183# cleans
184#
185clean:: oclean targetclean dclean miscclean
186
187distclean:: oclean targetclean dclean genclean miscclean
188
189miscclean::
190 -rm -f *~
191
192oclean::
193 -rm -rf *.o $(TMPLREPO) cxx_tmpl_repo ti_files *.lo
194 -rm -rf *.rpo
195 -rm -rf .libs
196
197dclean::
198 -rm -f *.d
199
200genclean::
201ifdef GENINC
202 -rm -f $(GENINC)
203endif
204ifdef GENSRC
205 -rm -f $(GENSRC)
206endif
207
208targetclean::
209ifdef TARGET_TO_MAKE
210 ifeq ($(BIN_OR_LIB),BIN)
211 -rm -f $(TARGET_TO_MAKE)
212 endif
213 ifeq ($(BIN_OR_LIB),LIB)
214 -rm -f $(TARGET_TO_MAKE).a
215 endif
216endif
217
218targetclean::
219 -rm -f $(TESTPROGS) $(TESTPROGS:%=%.out.testrun)
220
221testclean::
222 /bin/rm -f $(TESTPROGS) $(TESTPROGS:%=%.out.testrun)
223
224#
225# dependencies
226#
227
228ifneq ($(CCDEPENDSUF),none)
229%.d: %.c
230 $(CCDEPEND) $(CCDEPENDFLAGS) -c $(CPPFLAGS) $(CFLAGS) $< > /dev/null
231 sed 's/^$*.o/$*.$(OBJSUF) $*.d/g' < $(*F).$(CCDEPENDSUF) > $(@F)
232 /bin/rm -f $(*F).$(CCDEPENDSUF)
233else
234%.d: %.c
235 $(CCDEPEND) $(CCDEPENDFLAGS) -c $(CPPFLAGS) $(CFLAGS) $< | sed 's/^$*.o/$*.$(OBJSUF) $*.d/g' > $(@F)
236endif
237
238ifneq ($(CXXDEPENDSUF),none)
239%.d: %.cc
240 $(CXXDEPEND) $(CXXDEPENDFLAGS) -c $(CPPFLAGS) $(CXXFLAGS) $< > /dev/null
241 sed 's/^$*.o/$*.$(OBJSUF) $*.d/g' < $(*F).$(CXXDEPENDSUF) > $(@F)
242 /bin/rm -f $(*F).$(CXXDEPENDSUF)
243else
244%.d: %.cc
245 $(CXXDEPEND) $(CXXDEPENDFLAGS) -c $(CPPFLAGS) $(CXXFLAGS) $< | sed 's/^$*.o/$*.$(OBJSUF) $*.d/g' > $(@F)
246endif
247
248#
249# sometimes it's nice to get assembler source
250#
251%.s: %.c
252 $(CC) $(CPPFLAGS) $(CFLAGS) -S $<
253
254%.s: %.cc
255 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -S $<
256
257#
258# sometimes it's nice to get preprocessed source
259#
260%.i: %.c
261 $(CC) $(CPPFLAGS) $(CFLAGS) -E $< -o $@
262
263%.ii: %.cc
264 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -E $< -o $@
265
266values::
267 @echo TOPDIR=$(TOPDIR)
268 @echo SRCDIR=$(SRCDIR)
269 @echo VPATH=$(VPATH)
270 @echo BIN_OR_LIB=$(BIN_OR_LIB)
271 @echo TARGET_TO_MAKE=$(TARGET_TO_MAKE)
272ifdef LIBS
273 @echo LIBS=$(LIBS)
274endif
275ifeq ($(BIN_OR_LIB),LIB)
276 @echo LIBOBJ=$(LIBOBJ)
277endif
278ifeq ($(BIN_OR_LIB),BIN)
279 @echo BINOBJ=$(BINOBJ)
280endif
281
282#
283# rules for cca component code
284#
285
286$(GEN_SRCS): .babel-stamp
287 @if test -f $@; then \
288 touch $@; \
289 else \
290 rm -f .babel-stamp; \
291 $(MAKE) .babel-stamp; \
292 fi
293
294$(EXTRA_CXX_SRCS): .babel-stamp
295
296.babel-stamp: $(SIDL_FILES)
297 @rm -f .babel-stamp .babel-temp; touch .babel-temp
298 for i in $(IMPLHDRS) $(IMPLSRCS) $(EXTRA_CXX_SRCS) $(EXTRA_INCLUDES); \
299 do \
300 if test ! -e $${i}; then \
301 ln -s $(SRCDIR)/$${i}; \
302 fi; \
303 done
304 $(INSTALL) $(INSTALLDIROPT) $(REPO)
305 /bin/rm -f $(REPO)/MPQC*
306 $(BABEL) -e'^sidl.*' -e'^gov.*' \
307 -R$(CCA_CHEM_REPO) -R$(CCA_SPEC_BABEL_SHARE)/xml \
308 -R$(CCAFE_SHARE)/xml --text=xml -o$(REPO) $(SIDL_FILES)
309 $(BABEL) $(BABEL_ARGS) $(BABEL_PACKAGES) $(BABEL_ENUMS) \
310 $(BABEL_CLASSES)
311 @mv -f .babel-temp $@
312
313clean-components: oclean targetclean dclean miscclean
314 rm -f $(IORHDRS) $(IORSRCS) $(STUBHDRS) $(STUBSRCS) \
315 $(SKELHDRS) $(SKELSRCS)
316 rm -f babel.make .babel-stamp
317 for i in $(IMPLHDRS) $(IMPLSRCS) $(EXTRA_CXX_SRCS) $(EXTRA_INCLUDES); \
318 do \
319 if test -L $${i}; then \
320 /bin/rm $${i}; \
321 fi; \
322 done
Note: See TracBrowser for help on using the repository browser.