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