-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile_lib
127 lines (110 loc) · 4.24 KB
/
Makefile_lib
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
SHELL:=/bin/sh
# ----------------------------------------------------------------------------
# Build libTB.so for Test Beam 2014 code
# Created 5 June 2014 HBP
# ----------------------------------------------------------------------------
ifndef ROOTSYS
$(error *** Please set up environment variable ROOTSYS)
endif
# ----------------------------------------------------------------------------
NAME := TB
BLDDIR := build
LIBDIR := build/lib
SRCDIR := src
INCDIR := include
LIBRARY := $(LIBDIR)/lib$(NAME).so
$(shell mkdir -p build/lib)
# ----------------------------------------------------------------------------
# sources for which dictionaries are to be created,
# but without the use of LinkDefs
SRCSNOLINKDEF := Mapper.cc waveInterface.cc CalReco.cc Connection.cc Slot.cc Util.cc Dialog.cc
# sources for which dictionaries are to be created,
# using LinkDefs
SRCSWITHLINKDEF:= TBEvent.cc PadeChannel.cc Hodoscope.cc TBRecHit.cc
# ----------------------------------------------------------------------------
SRCSNOLINKDEF := $(patsubst %.cc,$(SRCDIR)/%.cc,$(SRCSNOLINKDEF))
DICTSNOLINKDEF := $(patsubst $(SRCDIR)/%.cc,$(BLDDIR)/%Dict.cxx,$(SRCSNOLINKDEF))
SRCSWITHLINKDEF := $(patsubst %.cc,$(SRCDIR)/%.cc,$(SRCSWITHLINKDEF))
DICTSWITHLINKDEF:= $(patsubst $(SRCDIR)/%.cc,$(BLDDIR)/%Dict.cxx,$(SRCSWITHLINKDEF))
CCSRCS := $(SRCSNOLINKDEF)
CCSRCS += $(SRCSWITHLINKDEF)
# add other sources
CCSRCS += $(filter-out $(CCSRCS),$(wildcard $(SRCDIR)/*.cc))
CXXSRCS := $(DICTSNOLINKDEF) $(DICTSWITHLINKDEF)
# objects
CXXOBJS := $(patsubst %.cxx,%.o,$(CXXSRCS))
CCOBJS := $(patsubst $(SRCDIR)/%.cc,$(BLDDIR)/%.o,$(CCSRCS))
OBJECTS := $(CCOBJS) $(CXXOBJS)
# ----------------------------------------------------------------------------
CINT := rootcint
PYCFLAGS:= $(shell python-config --includes)
CPPFLAGS:= -I. -I$(INCDIR) -DR__HAVE_CONFIG \
$(filter-out -stdlib=libc++,$(shell root-config --cflags)) $(PYCFLAGS)
CXXFLAGS:= -O -Wall -fPIC -g -ansi -Wextra -Wshadow
LDFLAGS := -g
# ----------------------------------------------------------------------------
# which operating system?
OS := $(shell uname -s)
ifeq ($(OS),Darwin)
CXX := g++
LD := g++
LDFLAGS += -dynamiclib
ROOTLIBS:= $(shell root-config --glibs --nonew) -lMathMore
else
CXX := g++
LD := g++
LDFLAGS += -shared -Wl,-soname,lib$(NAME).so
ROOTLIBS:= $(filter-out -stdlib=libc++,$(shell root-config --glibs --nonew))
endif
# ----------------------------------------------------------------------------
# libs
# ----------------------------------------------------------------------------
PYHOME := $(shell python-config --prefix)
PYLIB := -L$(PYHOME)/lib
PYLIBS := $(shell python-config --libs)
LDFLAGS += $(shell root-config --ldflags) $(PYLIB)
LIBS := -lMathMore -lSpectrum -lPyROOT $(ROOTLIBS) $(PYLIBS)
ifdef DEBUG
say := $(shell echo "CCSRCS: $(CCSRCS)" >& 2)
say := $(shell echo "CCOBJS: $(CCOBJS)\n" >& 2)
say := $(shell echo "CXXSRCS: $(CXXSRCS)" >& 2)
say := $(shell echo "CXXOBJS: $(CXXOBJS)\n" >& 2)
say := $(shell echo "DICTSNOLINKDEF: $(DICTSNOLINKDEF)" >& 2)
say := $(shell echo "DICTSWITHLINKDEF: $(DICTSWITHLINKDEF)" >& 2)
say := $(shell echo "LIBRARY: $(LIBRARY)\n" >& 2)
say := $(shell echo "CPPFLAGS: $(CPPFLAGS)\n" >& 2)
say := $(shell echo "CXXFLAGS: $(CXXFLAGS)\n" >& 2)
say := $(shell echo "LDFLAGS: $(LDFLAGS)\n" >& 2)
say := $(shell echo "LIBS: $(LIBS)\n" >& 2)
$(error bye)
endif
# ----------------------------------------------------------------------------
all: $(LIBRARY)
$(LIBRARY) : $(OBJECTS)
@echo "===> Linking shared library $@"
$(LD) $(LDFLAGS) $^ $(LIBS) -o $@
@echo ""
$(CCOBJS) : $(BLDDIR)/%.o : $(SRCDIR)/%.cc
@echo "==> Compiling $<"
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@
@echo ""
$(CXXOBJS) : %.o : %.cxx
@echo "==> Compiling $<"
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@
@echo ""
$(DICTSNOLINKDEF) : $(BLDDIR)/%Dict.cxx : $(INCDIR)/%.h
@echo "===> Building dictionary for $*"
@rm -f $(BLDDIR)/$*.[ch]*
$(CINT) -f $@ -c $^
@echo ""
$(DICTSWITHLINKDEF) : $(BLDDIR)/%Dict.cxx : $(INCDIR)/%.h $(INCDIR)/%LinkDef.h
@echo "===> Building dictionary for $*"
@rm -f $(BLDDIR)/$*Dict.[ch]*
$(CINT) $@ -c $^
@echo ""
clean:
rm -rf $(LIBRARY) $(BLDDIR)/*Dict.* $(BLDDIR)/*.o
cleanall: clean
rm -f python/*pyc python/gui/*pyc rootscript/*_C.d
rm -f rootscript/*.so *~ */*~
rm -rf tmp build