~ubuntu-branches/ubuntu/trusty/pythia8/trusty-proposed

« back to all changes in this revision

Viewing changes to Makefile

  • Committer: Package Import Robot
  • Author(s): Lifeng Sun
  • Date: 2012-05-22 11:43:00 UTC
  • Revision ID: package-import@ubuntu.com-20120522114300-0jvsv2vl4o2bo435
Tags: upstream-8.1.65
ImportĀ upstreamĀ versionĀ 8.1.65

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# Libraries Makefile. Some ideas from Geant4 Makefiles
 
3
#
 
4
#                  M. Kirsanov 07.04.2006
 
5
#                     Modified 18.11.2006
 
6
#                     26.03.2008 CLHEP dependency removed
 
7
#                  N. Lavesson 28.04.2009 clean/distclean separated
 
8
#                  M. Kirsanov 21.07.2009 Mac-OSX flags added
 
9
 
 
10
SHELL = /bin/sh
 
11
 
 
12
-include config.mk
 
13
 
 
14
# flags:
 
15
#
 
16
#FFLAGSSHARED = -fPIC
 
17
CFLAGSSHARED = -fPIC
 
18
CXXFLAGSSHARED = -fPIC
 
19
 
 
20
 
 
21
HEPMCERROR=
 
22
ifneq (x$(HEPMCLOCATION),x)
 
23
 ifeq ($(wildcard $(HEPMCLOCATION)/include/HepMC/*.h),)
 
24
  HEPMCERROR= HepMC interface: ERROR, no HepMC headers found in ${HEPMCLOCATION}/include/HepMC
 
25
 endif
 
26
endif
 
27
 
 
28
# Location of directories.
 
29
MYTMPDIR=tmp
 
30
TOPDIR=$(shell \pwd)
 
31
INCDIR=include
 
32
SRCDIR=src
 
33
LIBDIR=lib
 
34
LIBDIRARCH=lib/archive
 
35
BINDIR=bin
 
36
 
 
37
# Location of libraries to be built.
 
38
ifeq ($(SHAREDLIBS),yes)
 
39
  targets=$(LIBDIRARCH)/libpythia8.a
 
40
  targets+=$(LIBDIR)/libpythia8.$(SHAREDSUFFIX)
 
41
  targets+=$(LIBDIRARCH)/liblhapdfdummy.a
 
42
  targets+=$(LIBDIR)/liblhapdfdummy.$(SHAREDSUFFIX)
 
43
else
 
44
  targets=$(LIBDIRARCH)/libpythia8.a
 
45
  targets+=$(LIBDIRARCH)/liblhapdfdummy.a
 
46
endif
 
47
 
 
48
ifneq (x$(HEPMCLOCATION),x)
 
49
 targets+=$(LIBDIRARCH)/libhepmcinterface.a
 
50
 ifeq ($(SHAREDLIBS),yes)
 
51
  targets+=$(LIBDIR)/libhepmcinterface.$(SHAREDSUFFIX)
 
52
 endif
 
53
endif
 
54
 
 
55
 
 
56
all: $(targets) config.mk
 
57
 
 
58
config.mk: ./configure
 
59
        ./configure
 
60
 
 
61
# Main part: build Pythia8 library. 
 
62
 
 
63
$(MYTMPDIR)/%.o : $(SRCDIR)/%.cc
 
64
        @mkdir -p $(MYTMPDIR)
 
65
        $(CXX) $(CXXFLAGS) $(CXXFLAGSSHARED) -c -I$(INCDIR) $< -o $@
 
66
 
 
67
$(MYTMPDIR)/archive/%.o : $(SRCDIR)/%.cc
 
68
        @mkdir -p $(MYTMPDIR)/archive
 
69
        $(CXX) $(CXXFLAGS) -c -I$(INCDIR) $< -o $@
 
70
 
 
71
$(MYTMPDIR)/%.o : lhapdfdummy/%.cc
 
72
        @mkdir -p $(MYTMPDIR)
 
73
        $(CXX) $(CXXFLAGS) $(CXXFLAGSSHARED) -c -I$(INCDIR) $< -o $@
 
74
 
 
75
$(MYTMPDIR)/archive/%.o : lhapdfdummy/%.cc
 
76
        @mkdir -p $(MYTMPDIR)/archive
 
77
        $(CXX) $(CXXFLAGS) -c -I$(INCDIR) $< -o $@
 
78
 
 
79
# Creating the dependency files *.d
 
80
# The compiler with option -M is used to build the dependency strings. They
 
81
# are further edited with sed (stream editor). The first sed command adds the
 
82
# dependency for the *.d files themselves, the second one is needed because
 
83
# object files are put in the directory different from src. The last line
 
84
# removes empty *.d files produced in case of error.
 
85
 
 
86
ifeq ($(SHAREDLIBS),yes)
 
87
  $(MYTMPDIR)/%.d : $(SRCDIR)/%.cc
 
88
        @echo Making dependency for file $<; \
 
89
        mkdir -p $(MYTMPDIR); \
 
90
        $(CC) -M -I$(INCDIR) $< | \
 
91
        sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' | \
 
92
        sed 's/$*\.o/$(MYTMPDIR)\/$*.o/' > $@; \
 
93
        [ -s $@ ] || rm -f $@
 
94
endif
 
95
 
 
96
$(MYTMPDIR)/archive/%.d : $(SRCDIR)/%.cc
 
97
        @echo Making dependency for file $<; \
 
98
        mkdir -p $(MYTMPDIR)/archive; \
 
99
        $(CC) -M -I$(INCDIR) $< | \
 
100
        sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' | \
 
101
        sed 's/$*\.o/$(MYTMPDIR)\/archive\/$*.o/' > $@; \
 
102
        [ -s $@ ] || rm -f $@
 
103
 
 
104
objects := $(patsubst $(SRCDIR)/%.cc,$(MYTMPDIR)/%.o,$(wildcard $(SRCDIR)/*.cc))
 
105
objectsarch := $(patsubst $(SRCDIR)/%.cc,$(MYTMPDIR)/archive/%.o,$(wildcard $(SRCDIR)/*.cc))
 
106
 
 
107
$(LIBDIR)/libpythia8.$(SHAREDSUFFIX): $(objects)
 
108
        @mkdir -p $(LIBDIR)
 
109
        $(CXX) $(LDFLAGSSHARED) -o $@ $(objects) $(LDFLAGLIBNAME),$(notdir $@)
 
110
 
 
111
$(LIBDIRARCH)/libpythia8.a: $(objectsarch)
 
112
        @mkdir -p $(LIBDIRARCH)
 
113
        ar cru $@ $(objectsarch)
 
114
 
 
115
objdum := $(patsubst lhapdfdummy/%.cc,$(MYTMPDIR)/%.o,$(wildcard lhapdfdummy/*.cc))
 
116
objdumarch := $(patsubst lhapdfdummy/%.cc,$(MYTMPDIR)/archive/%.o,$(wildcard lhapdfdummy/*.cc))
 
117
 
 
118
$(LIBDIR)/liblhapdfdummy.$(SHAREDSUFFIX): $(objdum)
 
119
        @mkdir -p $(LIBDIR)
 
120
        $(CXX) $(LDFLAGSSHARED) -o $@ $(objdum) $(LDFLAGLIBNAME),$(notdir $@)
 
121
 
 
122
$(LIBDIRARCH)/liblhapdfdummy.a: $(objdumarch)
 
123
        @mkdir -p $(LIBDIRARCH)
 
124
        ar cru $@ $(objdumarch)
 
125
 
 
126
deps := $(patsubst $(SRCDIR)/%.cc,$(MYTMPDIR)/%.d,$(wildcard $(SRCDIR)/*.cc))
 
127
depsarch := $(patsubst $(SRCDIR)/%.cc,$(MYTMPDIR)/archive/%.d,$(wildcard $(SRCDIR)/*.cc))
 
128
 
 
129
 
 
130
# The "if" below is needed in order to avoid producing the dependency files
 
131
# when you want to just clean
 
132
 
 
133
ifeq (,$(findstring clean, $(MAKECMDGOALS)))
 
134
-include $(deps)
 
135
-include $(depsarch)
 
136
endif
 
137
 
 
138
# Build HepMC interface part if HepMC location is set.
 
139
 
 
140
ifneq (x$(HEPMCLOCATION),x)
 
141
 HEPMCINCLUDE=-I$(HEPMCLOCATION)/include
 
142
 
 
143
 ifeq (x$(HEPMCERROR),x)
 
144
 
 
145
   $(MYTMPDIR)/%.o : hepmcinterface/%.cc config.mk
 
146
        @mkdir -p $(MYTMPDIR)
 
147
        $(CXX) $(CXXFLAGS) $(CXXFLAGSSHARED) $(HEPMCVFLAG) -c -I$(INCDIR) $(HEPMCINCLUDE) $< -o $@
 
148
 
 
149
   $(MYTMPDIR)/archive/%.o : hepmcinterface/%.cc config.mk
 
150
        @mkdir -p $(MYTMPDIR)/archive
 
151
        $(CXX) $(CXXFLAGS) $(HEPMCVFLAG) -c -I$(INCDIR) $(HEPMCINCLUDE) $< -o $@
 
152
 
 
153
   $(MYTMPDIR)/%.d : hepmcinterface/%.cc
 
154
        @echo Making dependency for file $<; \
 
155
        mkdir -p $(MYTMPDIR); \
 
156
        $(CC) -M -I$(INCDIR) $(HEPMCINCLUDE) $< | \
 
157
        sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' | \
 
158
        sed 's/$*.o/$(MYTMPDIR)\/$*.o/' > $@; \
 
159
        [ -s $@ ] || rm -f $@
 
160
 
 
161
   $(MYTMPDIR)/archive/%.d : hepmcinterface/%.cc
 
162
        @echo Making dependency for file $<; \
 
163
        mkdir -p $(MYTMPDIR)/archive; \
 
164
        $(CC) -M -I$(INCDIR) $(HEPMCINCLUDE) $< | \
 
165
        sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' | \
 
166
        sed 's/$*.o/$(MYTMPDIR)\/archive\/$*.o/' > $@; \
 
167
        [ -s $@ ] || rm -f $@
 
168
 
 
169
   objectsI := $(patsubst hepmcinterface/%.cc,$(MYTMPDIR)/%.o,$(wildcard hepmcinterface/*.cc))
 
170
   objectsIarch := $(patsubst hepmcinterface/%.cc,$(MYTMPDIR)/archive/%.o,$(wildcard hepmcinterface/*.cc))
 
171
 
 
172
   $(LIBDIR)/libhepmcinterface.$(SHAREDSUFFIX) : $(objectsI)
 
173
        @mkdir -p $(LIBDIR)
 
174
        $(CXX) $(LDFLAGSSHARED) $(objectsI) -o $@ $(LDFLAGLIBNAME),$(notdir $@)
 
175
 
 
176
   $(LIBDIRARCH)/libhepmcinterface.a : $(objectsIarch)
 
177
        @mkdir -p $(LIBDIRARCH)
 
178
        ar cru $(LIBDIRARCH)/libhepmcinterface.a $(objectsIarch)
 
179
 
 
180
   depsI := $(patsubst hepmcinterface/%.cc,$(MYTMPDIR)/%.d,$(wildcard hepmcinterface/*.cc))
 
181
   depsIarch := $(patsubst hepmcinterface/%.cc,$(MYTMPDIR)/archive/%.d,$(wildcard hepmcinterface/*.cc))
 
182
 
 
183
   ifeq (,$(findstring clean, $(MAKECMDGOALS)))
 
184
   -include $(depsI)
 
185
   -include $(depsIarch)
 
186
   endif
 
187
 
 
188
 else
 
189
 
 
190
   $(LIBDIRARCH)/libhepmcinterface.a $(LIBDIR)/libhepmcinterface.$(SHAREDSUFFIX) :
 
191
        @echo $(HEPMCERROR)
 
192
 
 
193
 
 
194
 
 
195
 endif
 
196
 
 
197
endif
 
198
 
 
199
# Clean up: remove (almost?) everything that cannot be recreated.
 
200
 
 
201
.PHONY: clean distclean
 
202
 
 
203
clean:
 
204
        rm -rf $(MYTMPDIR)
 
205
        rm -rf $(LIBDIR)
 
206
        rm -rf $(BINDIR)
 
207
        cd examples; rm -rf bin; rm -f *.exe; cd -
 
208
        cd rootexamples; rm -f *.exe; cd -
 
209
 
 
210
distclean: clean
 
211
        rm -f config.mk
 
212
        rm -f *~; rm -f \#*;
 
213
        cd $(SRCDIR); rm -f *~; rm -f \#*; cd -
 
214
        cd $(INCDIR); rm -f *~; rm -f \#*; cd -
 
215
        cd xmldoc; rm -f *~; rm -f \#*; cd -
 
216
        cd htmldoc; rm -f *~; rm -f \#*; cd -
 
217
        cd phpdoc; rm -f *~; rm -f \#*; cd -
 
218
        cd hepmcinterface; rm -f *~; rm -f \#*; cd -
 
219
        cd lhapdfdummy; rm -f *~; rm -f \#*; cd -
 
220
        cd examples; rm -f *~; rm -f \#*; rm -f core*; rm -f config.*; cd -
 
221
        cd rootexamples; rm -f *~; rm -f \#*; rm -f core*; rm -f config.*; cd -
 
222