1BASE_NAME = libfilteraudio
2VERSION = 0.0.0
3PREFIX ?= /usr/local
4LIBDIR ?= lib
5INCLUDEDIR ?= include
6
7STATIC_LIB = $(BASE_NAME).a
8PC_FILE = filteraudio.pc
9
10SRC = $(wildcard aec/*.c) $(wildcard agc/*.c) $(wildcard ns/*.c) $(wildcard other/*.c) $(wildcard zam/*.c) $(wildcard vad/*.c) filter_audio.c
11OBJ = $(SRC:.c=.o)
12HEADER = filter_audio.h
13LDFLAGS += -lm -lpthread
14TARGET_ONLY = NO
15
16# Check on which system we are running
17UNAME_S = $(shell uname -s)
18ifeq ($(UNAME_S), Darwin)
19    SHARED_EXT = dylib
20    TARGET = $(BASE_NAME).$(VERSION).$(SHARED_EXT)
21    SHARED_LIB = $(BASE_NAME).$(shell echo $(VERSION) | rev | cut -d "." -f 1 | rev).$(SHARED_EXT)
22    LDFLAGS += -Wl,-install_name,$(SHARED_LIB)
23else ifneq (, $(shell echo $(UNAME_S) | grep -E 'MSYS|MINGW|CYGWIN'))
24    SHARED_EXT = dll
25    TARGET = $(BASE_NAME).$(SHARED_EXT)
26    TARGET_ONLY = YES
27    NO_STATIC = 1
28    LDFLAGS += -Wl,--out-implib,$(TARGET).a
29else
30    SHARED_EXT = so
31    TARGET = $(BASE_NAME).$(SHARED_EXT).$(VERSION)
32    SHARED_LIB = $(BASE_NAME).$(SHARED_EXT).$(shell echo $(VERSION) | rev | cut -d "." -f 1 | rev)
33    LDFLAGS += -Wl,-soname=$(SHARED_LIB)
34endif
35
36
37all: $(TARGET)
38
39$(TARGET): $(OBJ)
40	@echo "  LD    $@"
41	@$(CC) $(LDFLAGS) -shared -o $@ $^
42	@if [ "$(NO_STATIC)" != "1" ]; then \
43		echo "  AR    $(STATIC_LIB)" ;\
44		ar rcs $(STATIC_LIB) $(OBJ) ;\
45	fi
46
47%.o: %.c
48	@echo "  CC    $@"
49	@$(CC) $(CFLAGS) -fPIC -c -o $@ $<
50
51install: $(TARGET) $(HEADER) $(PC_FILE)
52	mkdir -p $(abspath $(DESTDIR)/$(PREFIX)/$(LIBDIR)data/pkgconfig)
53	mkdir -p $(abspath $(DESTDIR)/$(PREFIX)/$(INCLUDEDIR))
54	@echo "Installing $(TARGET)"
55	@install -m 0755 $(TARGET) $(abspath $(DESTDIR)/$(PREFIX)/$(LIBDIR)/$(TARGET))
56	@echo "Installing $(HEADER)"
57	@install -m 0644 $(HEADER) $(abspath $(DESTDIR)/$(PREFIX)/$(INCLUDEDIR)/$(HEADER))
58	@echo "Installing $(PC_FILE)"
59	@install -m 0644 $(PC_FILE) $(abspath $(DESTDIR)/$(PREFIX)/$(LIBDIR)data/pkgconfig/$(PC_FILE))
60	@if [ "$(NO_STATIC)" != "1" -a -e "$(STATIC_LIB)" ]; then \
61		echo "Installing $(STATIC_LIB)" ;\
62		install -m 0644 $(STATIC_LIB) $(abspath $(DESTDIR)/$(PREFIX)/$(LIBDIR)/$(STATIC_LIB)) ;\
63	fi
64	@if [ "$(TARGET_ONLY)" != "YES" ]; then \
65		cd $(abspath $(DESTDIR)/$(PREFIX)/$(LIBDIR)) ;\
66		ln -sf $(TARGET) $(SHARED_LIB) ;\
67		ln -sf $(SHARED_LIB) $(BASE_NAME).$(SHARED_EXT) ;\
68	fi
69	@pc_file=$(abspath $(DESTDIR)/$(PREFIX)/$(LIBDIR)data/pkgconfig/$(PC_FILE)) ;\
70	sed -e 's:__PREFIX__:'$(abspath $(PREFIX))':g' $$pc_file > temp_file && mv temp_file $$pc_file ;\
71	sed -e 's:__LIBDIR__:'$(abspath $(PREFIX)/$(LIBDIR))':g' $$pc_file > temp_file && mv temp_file $$pc_file ;\
72	sed -e 's:__INCLUDEDIR__:'$(abspath $(PREFIX)/$(INCLUDEDIR))':g' $$pc_file > temp_file && mv temp_file $$pc_file ;\
73	sed -e 's:__VERSION__:'$(VERSION)':g' $$pc_file > temp_file && mv temp_file $$pc_file
74
75clean:
76	rm -f $(TARGET) $(STATIC_LIB) $(OBJ)
77
78.PHONY: all clean install
79