1#
2# Makefile
3#
4# Copyright (C) 2010 Creytiv.com
5#
6
7# Master version number
8VER_MAJOR := 0
9VER_MINOR := 5
10VER_PATCH := 3
11
12PROJECT   := rem
13VERSION   := 0.5.3
14OPT_SPEED := 1
15
16LIBRE_MK  := $(shell [ -f ../re/mk/re.mk ] && \
17	echo "../re/mk/re.mk")
18ifeq ($(LIBRE_MK),)
19LIBRE_MK  := $(shell [ -f /usr/share/re/re.mk ] && \
20	echo "/usr/share/re/re.mk")
21endif
22ifeq ($(LIBRE_MK),)
23LIBRE_MK  := $(shell [ -f /usr/local/share/re/re.mk ] && \
24	echo "/usr/local/share/re/re.mk")
25endif
26
27include $(LIBRE_MK)
28
29# List of modules
30MODULES += fir goertzel
31MODULES += g711
32MODULES += aubuf aufile auresamp autone dtmf
33MODULES += au auconv
34
35ifneq ($(HAVE_LIBPTHREAD),)
36MODULES += aumix vidmix
37endif
38
39MODULES += vid vidconv
40
41LIBS    += -lm
42
43INSTALL := install
44ifeq ($(DESTDIR),)
45PREFIX  := /usr/local
46else
47PREFIX  := /usr
48endif
49ifeq ($(LIBDIR),)
50LIBDIR  := $(PREFIX)/lib
51endif
52INCDIR  := $(PREFIX)/include/rem
53CFLAGS	+= -I$(LIBRE_INC) -Iinclude
54
55
56# XXX
57ifneq ($(HAVE_ARMV6),)
58CFLAGS		+= -DHAVE_ARMV6=1
59endif
60ifneq ($(HAVE_NEON),)
61CFLAGS		+= -DHAVE_NEON=1
62endif
63
64
65MODMKS	:= $(patsubst %,src/%/mod.mk,$(MODULES))
66SHARED  := librem$(LIB_SUFFIX)
67STATIC	:= librem.a
68
69
70include $(MODMKS)
71
72
73OBJS	?= $(patsubst %.c,$(BUILD)/%.o,$(filter %.c,$(SRCS)))
74OBJS	+= $(patsubst %.S,$(BUILD)/%.o,$(filter %.S,$(SRCS)))
75
76
77all: $(SHARED) $(STATIC)
78
79
80-include $(OBJS:.o=.d)
81
82
83$(SHARED): $(OBJS)
84	@echo "  LD      $@"
85	@$(LD) $(LFLAGS) $(SH_LFLAGS) $^ -L$(LIBRE_SO) -lre $(LIBS) -o $@
86
87
88$(STATIC): $(OBJS)
89	@echo "  AR      $@"
90	@$(AR) $(AFLAGS) $@ $^
91ifneq ($(RANLIB),)
92	@$(RANLIB) $@
93endif
94
95librem.pc:
96	@echo 'prefix='$(PREFIX) > librem.pc
97	@echo 'exec_prefix=$${prefix}' >> librem.pc
98	@echo 'libdir=$${prefix}/lib' >> librem.pc
99	@echo 'includedir=$${prefix}/include/rem' >> librem.pc
100	@echo '' >> librem.pc
101	@echo 'Name: librem' >> librem.pc
102	@echo 'Description: Audio and video processing media library' \
103		>> librem.pc
104	@echo 'Version: '$(VERSION) >> librem.pc
105	@echo 'URL: http://creytiv.com/rem.html' >> librem.pc
106	@echo 'Libs: -L$${libdir} -lrem -lre' >> librem.pc
107	@echo 'Cflags: -I$${includedir}' >> librem.pc
108
109$(BUILD)/%.o: src/%.c $(BUILD) Makefile $(MK) $(MODMKS)
110	@echo "  CC      $@"
111	@$(CC) $(CFLAGS) -c $< -o $@ $(DFLAGS)
112
113
114$(BUILD)/%.o: src/%.S $(BUILD) Makefile $(MK) $(MODMKS)
115	@echo "  AS      $@"
116	@$(CC) $(CFLAGS) -c $< -o $@ $(DFLAGS)
117
118
119$(BUILD): Makefile $(MK) $(MODMKS)
120	@mkdir -p $(patsubst %,$(BUILD)/%,$(sort $(dir $(SRCS))))
121	@touch $@
122
123
124.PHONY: clean
125clean:
126	@rm -rf $(SHARED) $(STATIC) librem.pc test.d test.o test $(BUILD)
127
128
129install: $(SHARED) $(STATIC) librem.pc
130	@mkdir -p $(DESTDIR)$(LIBDIR) $(DESTDIR)$(LIBDIR)/pkgconfig \
131		$(DESTDIR)$(INCDIR)
132	$(INSTALL) -m 0644 $(shell find include -name "*.h") \
133		$(DESTDIR)$(INCDIR)
134	$(INSTALL) -m 0755 $(SHARED) $(DESTDIR)$(LIBDIR)
135	$(INSTALL) -m 0755 $(STATIC) $(DESTDIR)$(LIBDIR)
136	$(INSTALL) -m 0644 librem.pc $(DESTDIR)$(LIBDIR)/pkgconfig
137
138.PHONY: uninstall
139uninstall:
140	@rm -rf $(DESTDIR)$(INCDIR)
141	@rm -f $(DESTDIR)$(LIBDIR)/$(SHARED)
142	@rm -f $(DESTDIR)$(LIBDIR)/$(STATIC)
143	@rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/librem.pc
144
145-include test.d
146
147test.o:	test.c
148	@echo "  CC      $@"
149	@$(CC) $(CFLAGS) -c $< -o $@ $(DFLAGS)
150
151test$(BIN_SUFFIX): test.o $(SHARED) $(STATIC)
152	@echo "  LD      $@"
153	@$(LD) $(LFLAGS) $< -L. -lrem -lre $(LIBS) -o $@
154