-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
74 lines (54 loc) · 1.83 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
68
69
70
71
72
73
74
CC=g++
LIBS_FFMPEG=-lavutil -lavformat -lavcodec -lswscale -lswresample
LIBS_MISC= -lstdc++ -lm -ldl -lz -lpthread -lboost_program_options
LIBS=$(LIBS_MISC) $(LIBS_FFMPEG)
FLIBS=libavformat libavutil libswscale libswresample libavcodec
ifdef FFMPEG
INC = -I$(FFMPEG)
LIBPATH = $(addprefix -L$(FFMPEG), $(FLIBS))
# LIBS_FFMPEG=-l:$(FFMPEG)/lib/libavformat.a -l:$(FFMPEG)/lib/libavutil.a \
# -l:$(FFMPEG)/lib/libswscale.a -l:$(FFMPEG)/lib/libswresample.a -l:$(FFMPEG)/lib/libavcodec.a
noop=
space = $(noop) $(noop)
coma =,
PFLIBS = $(addprefix $(FFMPEG), $(FLIBS))
LDPATH=-Wl,$(subst $(space),$(coma),$(addprefix -rpath$(coma), $(PFLIBS)))
endif
ifdef BOOST
INC := $(INC) -I$(BOOST)
LIBPATH := $(LIBPATH) -L$(BOOST)/stage/lib
endif
CFLAGS=-std=c++11 -g -O0 -fPIC
LINKER = g++
# linking flags here
LFLAGS = -Wall
SRCDIR = src
OBJDIR = obj
BINDIR = bin
LIBDIR = lib
TARGET=sndsource
SRC=$(wildcard src/**/*.cc src/*.cc)
OBJ=$(SRC:$(SRCDIR)/%.cc=$(OBJDIR)/%.o)
all: clean $(BINDIR)/$(TARGET) lib
$(MAKE) -C python
$(BINDIR)/$(TARGET): build $(OBJ)
@echo $(LINKER) $(LFLAGS) $(OBJ) $(LIBPATH) $(LIBS) $(LDPATH) -o $@
@$(LINKER) $(LFLAGS) $(OBJ) $(LIBPATH) $(LIBS) $(LDPATH) -Wl,--no-as-needed -o $@
@echo "Linking complete!"
$(OBJ): $(OBJDIR)/%.o : $(SRCDIR)/%.cc
@echo $(CC) $(CFLAGS) -c $< -o $@ $(INC)
@$(CC) $(CFLAGS) -c $< -o $@ $(INC)
@echo "Compiled "$<" successfully!"
build:
@- if [ ! -d "$(OBJDIR)" ]; then mkdir "$(OBJDIR)"; fi
@- if [ ! -d "$(BINDIR)" ]; then mkdir "$(BINDIR)"; fi
.PHONY: lib
lib: libsndsource.so
@- if [ ! -d "$(LIBDIR)" ]; then mkdir "$(LIBDIR)"; fi
@- mv libsndsource.so $(LIBDIR)
libsndsource.so: obj/SndSource.o obj/SndWriter.o obj/ringbuffer.o
$(LINKER) $^ $(LFLAGS) -shared $(LIBPATH) $(LIBS) $(LDPATH) -Wl,-soname,$@ -o $@
.PHONY: clean
clean:
@- $(RM) $(TARGET)
@- $(RM) $(OBJ)