-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
68 lines (51 loc) · 1.95 KB
/
Makefile
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
SRCDIR = src
OBJDIR = obj
SHRDIR = shrobj
#NIXINC = -I/home/tentaclius/.nix-profile/include
#NIXLIB = -L/home/tentaclius/.nix-profile/lib
LIBS = -ljack -lm -ldl -lpthread -lreadline -lunitlib
LIBDIR = -L. $(NIXLIB)
INCDIR = -I$(SRCDIR) $(NIXINC)
CFLAGS = -Wall -g -std=c++14
SFLAGS = -Wall -fPIC -shared -g -std=c++14
TGT = jcplayer
OBJECTS = $(OBJDIR)/main.o \
$(OBJDIR)/exception.o \
$(OBJDIR)/audiounit.o \
$(OBJDIR)/s7.o
SHROBJECTS = $(SHRDIR)/exception.o \
$(SHRDIR)/audiounit.o
## build the executable
$(TGT): $(OBJECTS) libunitlib.so
$(CXX) $(CFLAGS) $(OBJECTS) -o $(TGT) $(LIBDIR) $(LIBS)
## build an object file
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp $(SRCDIR)/%.h
$(CXX) -c $(CFLAGS) -o $@ $< $(INCDIR)
## special rule for sharable objects
$(SHRDIR)/%.o: $(SRCDIR)/%.cpp $(SRCDIR)/%.h
$(CXX) -c -fPIC $(CFLAGS) -o $@ $< $(INCDIR) $(LIBDIR)
## build the shared library file
libunitlib.so: $(SRCDIR)/unitlib.cpp $(SRCDIR)/unitlib.h
$(CXX) $(SFLAGS) $(SRCDIR)/unitlib.cpp -o libunitlib.so $(INCDIR) $(LIBDIR)
## build a loadable module
$(JJ_MODULE).so: $(JJ_MODULE_SOURCE) $(JJ_MAIN_SOURCE) $(SRCDIR)/script.cpp $(SRCDIR)/script.h $(SHROBJECTS)
$(CXX) $(SFLAGS) $(JJ_MAIN_SOURCE) -o $(JJ_MODULE).so $(INCDIR) $(LIBDIR) $(SHROBJECTS)
## build s7
$(OBJDIR)/s7.o: $(SRCDIR)/s7/s7.c $(SRCDIR)/s7/s7.h
gcc -c -fPIC -I$(SRCDIR)/s7 $(SRCDIR)/s7/s7.c -o $(OBJDIR)/s7.o -g3
s7: $(SRCDIR)/s7/s7.c $(SRCDIR)/s7/s7.h
gcc -I$(SRCDIR)/s7 $(SRCDIR)/s7/s7.c -o s7 -g3 -DWITH_MAIN -ldl -lm
## build s7 module
scheme.so: $(SRCDIR)/scheme.cpp $(SRCDIR)/unitlib.h $(SHROBJECTS) $(OBJDIR)/s7.o
$(CXX) $(SFLAGS) $(SRCDIR)/scheme.cpp -o scheme.so $(OBJDIR)/s7.o $(INCDIR) $(LIBDIR) $(SHROBJECTS)
## test
t: libunitlib.so
$(CXX) $(CFLAGS) $(SRCDIR)/test.cpp -o test $(LIBS) $(LIBDIR) $(INCDIR)
## remove all build files except the run files
clean:
rm -f $(OBJDIR)/* $(SHRDIR)/*.o
## remove all build files
clear: clean
rm -f *.so $(TGT) test
## rebuild all
re: clear $(TGT)