Subversion Repositories f9daq

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
146 f9daq 1
# Makefile tutorial: https://www.gnu.org/software/make/manual/html_node/index.html#SEC_Contents
2
 
3
# Make variables ----------------------------------------------------
4
 
5
# ROOT include and libraries
6
ROOTINC=$(shell root-config --incdir)
7
ROOTLIB=$(shell root-config --libs)
8
GRROOTLIB=$(shell root-config --cflags --glibs)
9
 
10
# Source and debug directories
11
SRC=./src
12
DBG=./dbg
13
IDIR=./include
14
BIN=./bin
15
DICT=./dict
16
LDIR=./lib
17
 
18
# Includes and libraries, 32 vs. 64 bit type, libraries
19
INC=-I. -I$(ROOTINC)
20
OSTYPE=none
21
LIBS=$(ROOTLIB) -L. -lm
22
 
23
# Compiler options
24
COMPOPT=-fPIC -g -Wno-unused-value
25
#COMPOPT=-fPIC -g -Wall
26
 
27
# CAMAC DAQ library variables
28
OBJ_FILES =  $(SRC)/wusbxx_dll.o $(SRC)/libxxusb.o 
29
LIBFILE = $(LDIR)/libdaqusb.a
30
 
31
# Specific variables for the main program
32
TARGET=sipmscan
33
#FILES=$(SRC)/sipmscan.cpp $(SRC)/substructure.cpp $(SRC)/connections.cpp $(SRC)/window_layout.cpp $(SRC)/separate_functions.cpp $(SRC)/tooltips.cpp
34
DAQFILE  = $(SRC)/daqusb.C
35
#FILES=$(wildcard $(SRC)/*.cpp) $(SRC)/daqusb.C $(SRC)/daqscope.C
36
FILES=$(shell find $(SRC)/ ! -name "libxxusb.cpp" -name "*.cpp") $(SRC)/daqusb.C $(SRC)/daqscope.C
37
HEADER=$(IDIR)/daq.h $(IDIR)/workstation.h $(IDIR)/sipmscan.h $(IDIR)/root_include.h
38
CAMLIB = $(LIBFILE)
39
SHLIB = $(LIBFILE) $(LDIR)/libvxi11.a
40
 
41
# VXI scope connection variables, Scope DAQ library variables
42
VXIDIR = $(IDIR)/vxi11_$(OSTYPE)
43
#VXI_FILES = $(VXIDIR)/vxi11_user.o $(VXIDIR)/vxi11.h $(VXIDIR)/vxi11_clnt.c $(VXIDIR)/vxi11_xdr.c
44
VXI_OBJECT = $(VXIDIR)/vxi11_user.o $(VXIDIR)/vxi11_clnt.o $(VXIDIR)/vxi11_xdr.o
45
 
46
# -------------------------------------------------------------------
47
 
48
# Base rules --------------------------------------------------------
49
 
50
# Make the main program and libraries
51
all: libsubstr.so $(LDIR)/libdaqusb.so $(LDIR)/libvxi11.so $(TARGET) 
52
 
53
# Rules for making the main program
54
$(TARGET): $(FILES) library
55
	@echo "\n# Generating dictionary GuiDict.C ---------------------------"
56
	rootcint -f $(DICT)/GuiDict.C -c -p $(INC) $(CPPFLAGS) $(IDIR)/sipmscan.h $(DICT)/GuiLinkDef.h
57
	@echo "\n# Checking to see if bin directory already exists -----------"
58
	if [ ! -d "$(BIN)" ];then  mkdir $(BIN);  fi
59
	@echo "\n# Compiling main program ------------------------------------"
60
	$(CXX) $(INC) $(COMPOPT) $(FILES) $(DICT)/GuiDict.C $(CPPFLAGS) $(VXI_OBJECT) -o $(BIN)/$(TARGET) $(SHLIB) $(GRROOTLIB) -lstdc++ -lSpectrum -L$(LDIR)/libsubstr.so -L$(LDIR)/libdaqusb.so -L$(LDIR)/libvxi11.so
61
	@echo "\n# Compilation successful ------------------------------------"
62
	@echo "# Use ./start.sh to run the program -------------------------"
63
 
64
# -------------------------------------------------------------------
65
 
66
# CAMAC DAQ library rules -----------------------------------------------------
67
 
68
# Rules for making CAMAC DAQ library source files (wusbxx_dll and libxxusb)
69
library: $(OBJ_FILES)
70
 
71
$(OBJ_FILES): $(SRC)/wusbxx_dll.c $(IDIR)/wusbxx_dll.h $(SRC)/libxxusb.cpp $(IDIR)/libxxusb.h
72
	@echo "\n# Compiling CAMAC USB source files --------------------------"
73
	$(CXX) $(CPPFLAGS) $(INC) -c $(SRC)/wusbxx_dll.c -o $(SRC)/wusbxx_dll.o
74
	$(CXX) $(CPPFLAGS) $(INC) -c $(SRC)/libxxusb.cpp -o $(SRC)/libxxusb.o
75
 
76
.cc.o:
77
	@echo "\n# Creating a static CAMAC USB library (libdaqusb.a) ---------"
78
	$(CXX) -fPIC -c $<
79
	ar r $(LIBFILE) $@
80
 
81
.cpp.o:
82
	@echo "\n# Creating a static CAMAC USB library (libdaqusb.a) ---------"
83
	$(CXX) -fPIC -c $<
84
	ar r $(LIBFILE) $@
85
 
86
.c.o:
87
	@echo "\n# Creating a static CAMAC USB library (libdaqusb.a) ---------"
88
	$(CXX) -fPIC -c  $<
89
	ar r $(LIBFILE) $@
90
 
91
# Rule for making the CAMAC DAQ library (libdaqusb.so)
92
$(LDIR)/libdaqusb.so: $(LIBFILE) $(DAQFILE)
93
	@echo "\n# Generating dictionary Dict.C ------------------------------"
94
	rootcint -f $(DICT)/Dict.C -c $(INC)  $(CPPFLAGS) $(HEADER) $(DICT)/LibLinkDef.h
95
	@echo "\n# Checking to see if lib directory already exists -----------"
96
	if [ ! -d "$(LDIR)" ];then  mkdir $(LDIR);  fi
97
	@echo "\n# Compiling CAMAC DAQ library (libdaqusb.so) ----------------"
98
	$(CXX) $(CPPFLAGS) $(INC) -fPIC -g -Wall $(DAQFILE) $(DICT)/Dict.C $(CAMLIB) -shared -o $@
99
 
100
# Rule for making the CAMAC DAQ library (libdaqusb.a)
101
$(LIBFILE): $(OBJ_FILES)
102
	@echo "\n# Creating a static CAMAC USB library (libdaqusb.a) ---------"
103
	ar r $@ $^
104
# -----------------------------------------------------------------------------
105
 
106
# Scope DAQ library rules -----------------------------------------------------
107
 
108
$(LDIR)/libvxi11.so: $(LDIR)/libvxi11.a
109
	@echo "\n# Generating dictionary VxiDict.C ---------------------------"
110
	rootcint -f $(DICT)/VxiDict.C -c $(INC) $(CPPFLAGS) $(IDIR)/daqscope.h $(DICT)/LibLinkDef.h
111
	@echo "\n# Checking to see if lib directory already exists -----------"
112
	if [ ! -d "$(LDIR)" ];then  mkdir $(LDIR);  fi
113
	@echo "\n# Compiling scope VXI library (libvxi11.so) -----------------"
114
	$(CXX) $(CPPFLAGS) $(INC) -fPIC -g -Wall $(SRC)/daqscope.C $(DICT)/VxiDict.C -L. $(LDIR)/libvxi11.a -shared -o $@
115
 
116
$(LDIR)/libvxi11.a: $(VXI_OBJECT)
117
	ar r $@ $^
118
# -----------------------------------------------------------------------------
119
 
120
# Substructue library rules ---------------------------------------------------
121
 
122
# Rules for making user defined libraries
123
libsubstr.so: libsubstr.a
124
	@echo "\n# Creating a shared testing library -------------------------"
125
	rootcint -f $(DICT)/TestDict.C -c $(INC) $(CPPFLAGS) $(IDIR)/substructure.h $(DICT)/TestLinkDef.h
126
	$(CXX) $(CPPFLAGS) $(INC) $(COMPOPT) $(SRC)/substructure.cpp $(DICT)/TestDict.C libsubstr.a -shared -o $@
127
	@echo "\n# Checking to see if lib directory already exists -----------"
128
	if [ ! -d "$(LDIR)" ];then  mkdir $(LDIR);  fi
129
	mv $@ $^ $(LDIR)/
130
 
131
libsubstr.a: $(SRC)/substructure.o
132
	@echo "\n# Creating a static testing library -------------------------"
133
	ar r $@ $^
134
 
135
$(SRC)/substructure.o: $(SRC)/substructure.cpp $(IDIR)/substructure.h
136
	@echo "\n# Compiling separate source files ---------------------------"
137
	$(CXX) $(CPPFLAGS) $(INC) -c $(SRC)/substructure.cpp -o $(SRC)/substructure.o
138
 
139
# -------------------------------------------------------------------
140
 
141
# Cleaning rules ----------------------------------------------------
142
 
143
# Rules for cleaning the installation
144
clean:
145
	@echo "# Cleaning the installation directory -------------------------"
146
	rm -fr $(DICT)/*Dict.C $(DICT)/*Dict.h $(BIN) $(LDIR) start.sh *.o $(SRC)/*.o
147
	rm -fr $(IDIR)/workstation.h $(SRC)/daqscope.C $(SRC)/daqusb.C $(IDIR)/usb.h $(IDIR)/libxxusb.h $(DBG)/finish_sig.txt
148
 
149
# -------------------------------------------------------------------