Makefile
1 include make.inc
2 
3 #Name of libraries to create
4 LIB_PHOTOSPP_SO = libPhotospp.so
5 LIB_PHOTOSPP_A = libPhotospp.a
6 LIB_PHOTOSPP_HEPEVT_SO = libPhotosppHEPEVT.so
7 LIB_PHOTOSPP_HEPEVT_A = libPhotosppHEPEVT.a
8 LIB_PHOTOSPP_HEPMC_SO = libPhotosppHepMC.so
9 LIB_PHOTOSPP_HEPMC_A = libPhotosppHepMC.a
10 LIB_PHOTOSPP_HEPMC3_SO = libPhotosppHepMC3.so
11 LIB_PHOTOSPP_HEPMC3_A = libPhotosppHepMC3.a
12 
13 
14 #directories containing source code
15 EVENT_RECORD_INTERFACE_DIR = eventRecordInterfaces
16 PHOTOS_C_INTERFACE_DIR = photosCInterfaces
17 PHOTOS_C_DIR = photos-C
18 UTILITIES_DIR = utilities
19 
20 LIB_PHOTOSPP_OBJECTS = src/$(PHOTOS_C_INTERFACE_DIR)/*.o \
21  src/$(PHOTOS_C_DIR)/*.o \
22  src/$(UTILITIES_DIR)/*.o
23 
24 LIB_PHOTOSPP_HEPEVT_OBJECTS = src/$(EVENT_RECORD_INTERFACE_DIR)/PhotosHEPEVTParticle.o src/$(EVENT_RECORD_INTERFACE_DIR)/PhotosHEPEVTEvent.o
25 LIB_PHOTOSPP_HEPMC_OBJECTS = src/$(EVENT_RECORD_INTERFACE_DIR)/PhotosHepMCParticle.o src/$(EVENT_RECORD_INTERFACE_DIR)/PhotosHepMCEvent.o
26 LIB_PHOTOSPP_HEPMC3_OBJECTS = src/$(EVENT_RECORD_INTERFACE_DIR)/PhotosHepMC3Particle.o src/$(EVENT_RECORD_INTERFACE_DIR)/PhotosHepMC3Event.o
27 
28 ##### Link objects to make library ######
29 all: include_dir lib_dir $(EVENT_RECORD_INTERFACE_DIR) $(FORTRAN_PHOTOS_INTERFACE_DIR) $(PHOTOS_C_INTERFACE_DIR) $(PHOTOS_C_DIR) $(UTILITIES_DIR)
30  ar cr lib/$(LIB_PHOTOSPP_A) $(LIB_PHOTOSPP_OBJECTS)
31  $(LD) $(LDFLAGS) $(SOFLAGS) -o lib/$(LIB_PHOTOSPP_SO).$(LIB_VER) -Wl,-soname,$(LIB_PHOTOSPP_SO) $(LIB_PHOTOSPP_OBJECTS)
32  ar cr lib/$(LIB_PHOTOSPP_HEPEVT_A) $(LIB_PHOTOSPP_HEPEVT_OBJECTS)
33  $(LD) $(LDFLAGS) $(SOFLAGS) -o lib/$(LIB_PHOTOSPP_HEPEVT_SO).$(LIB_VER) -Wl,-soname,$(LIB_PHOTOSPP_HEPEVT_SO) $(LIB_PHOTOSPP_HEPEVT_OBJECTS)
34  ln -sf $(LIB_PHOTOSPP_SO).$(LIB_VER) lib/$(LIB_PHOTOSPP_SO)
35  ln -sf $(LIB_PHOTOSPP_HEPEVT_SO).$(LIB_VER) lib/$(LIB_PHOTOSPP_HEPEVT_SO)
36 ifneq ($(HEPMCLOCATION), )
37  ar cr lib/$(LIB_PHOTOSPP_HEPMC_A) $(LIB_PHOTOSPP_HEPMC_OBJECTS)
38  $(LD) $(LDFLAGS) $(SOFLAGS) -o lib/$(LIB_PHOTOSPP_HEPMC_SO).$(LIB_VER) -Wl,-soname,$(LIB_PHOTOSPP_HEPMC_SO) $(LIB_PHOTOSPP_HEPMC_OBJECTS)
39  ln -sf $(LIB_PHOTOSPP_HEPMC_SO).$(LIB_VER) lib/$(LIB_PHOTOSPP_HEPMC_SO)
40 endif
41 ifneq ($(HEPMC3LOCATION), )
42  ar cr lib/$(LIB_PHOTOSPP_HEPMC3_A) $(LIB_PHOTOSPP_HEPMC3_OBJECTS)
43  $(LD) $(LDFLAGS) $(SOFLAGS) -o lib/$(LIB_PHOTOSPP_HEPMC3_SO).$(LIB_VER) -Wl,-soname,$(LIB_PHOTOSPP_HEPMC3_SO) $(LIB_PHOTOSPP_HEPMC3_OBJECTS)
44  ln -sf $(LIB_PHOTOSPP_HEPMC3_SO).$(LIB_VER) lib/$(LIB_PHOTOSPP_HEPMC3_SO)
45 endif
46 
47  @echo "##################################################################"
48  @echo " Photos C++ libraries created and moved to lib/ directory "
49  @echo "##################################################################"
50  @echo ""
51  @echo "##################################################################"
52  @echo " To run examples, cd examples/ directory and there './configure' "
53  @echo " and 'make' again. Examples require Pythia8, ROOT and MC-Tester "
54  @echo " installed. For details see examples/README. "
55  @echo "##################################################################"
56 
57 include_dir:
58  mkdir -p include/Photos
59 
60 lib_dir:
61  mkdir -p lib
62 
63 ####### Make object files ########
64 $(EVENT_RECORD_INTERFACE_DIR):
65  +make -C src/$(EVENT_RECORD_INTERFACE_DIR)
66  cp src/$(EVENT_RECORD_INTERFACE_DIR)/*.h include/Photos
67 
68 $(PHOTOS_C_INTERFACE_DIR):
69  +make -C src/$(PHOTOS_C_INTERFACE_DIR)
70  cp src/$(PHOTOS_C_INTERFACE_DIR)/*.h include/Photos
71 
72 $(UTILITIES_DIR):
73  +make -C src/$(UTILITIES_DIR)
74  cp src/$(UTILITIES_DIR)/*.h include/Photos
75 
76 $(PHOTOS_C_DIR):
77  +make -C src/$(PHOTOS_C_DIR)
78  cp src/$(PHOTOS_C_DIR)/*.h include/Photos
79 
80 install:
81  mkdir -p $(DESTDIR)$(PREFIX)/include/Photos/
82  install -m 644 include/Photos/* $(DESTDIR)$(PREFIX)/include/Photos/
83  mkdir -p $(DESTDIR)$(LIBDIR)/
84  install lib/*.$(LIB_VER) $(DESTDIR)$(LIBDIR)/
85  install lib/*.a $(DESTDIR)$(LIBDIR)/
86  cp -P lib/*.so $(DESTDIR)$(LIBDIR)/
87 clean:
88  make clean -C src/$(EVENT_RECORD_INTERFACE_DIR)
89  make clean -C src/$(PHOTOS_C_INTERFACE_DIR)
90  make clean -C src/$(PHOTOS_C_DIR)
91  make clean -C src/$(UTILITIES_DIR)
92  rm -f *~
93 
94 Clean: clean
95  rm -f lib/* include/Photos/*
96  rm -rf config.log config.status autom4te.cache
97  rm -rf configure.paths.sh configure.paths.csh
98  rm -f platform/make.inc make.inc
99  rm -f examples/make.inc
100 
101 make.inc:
102  @echo ""
103  @echo "Please execute ./configure first!"
104  @echo ""
105  @false
106 
107 always:
108  @true