311e361d9f28f94ac0350ee74f8738394ff2afbc
[satune.git] / src / Makefile
1 include common.mk
2
3 PHONY += directories
4 MKDIR_P = mkdir -p
5 OBJ_DIR = bin
6
7 C_SOURCES := $(wildcard *.c) $(wildcard AST/*.c) $(wildcard Collections/*.c) $(wildcard Backend/*.c) $(wildcard Encoders/*.c)
8
9 HEADERS := $(wildcard *.h) $(wildcard AST/*.h) $(wildcard Collections/*.h) $(wildcard Backend/*.h) $(wildcard Encoders/*.h)
10
11 OBJECTS := $(CPP_SOURCES:%.cc=$(OBJ_DIR)/%.o) $(C_SOURCES:%.c=$(OBJ_DIR)/%.o)
12
13 CFLAGS += -IAST -ICollections -IBackend -I. -IEncoders
14 LDFLAGS := -ldl -lrt -rdynamic
15 SHARED := -shared
16
17 # Mac OSX options
18 ifeq ($(UNAME), Darwin)
19 LDFLAGS := -ldl
20 SHARED := -Wl,-undefined,dynamic_lookup -dynamiclib
21 endif
22
23 MARKDOWN := ../docs/Markdown/Markdown.pl
24
25 all: directories $(LIB_SO)
26
27 directories: ${OBJ_DIR}
28
29 ${OBJ_DIR}:
30         ${MKDIR_P} ${OBJ_DIR}
31         ${MKDIR_P} ${OBJ_DIR}/AST
32         ${MKDIR_P} ${OBJ_DIR}/Collections
33         ${MKDIR_P} ${OBJ_DIR}/Backend
34         ${MKDIR_P} ${OBJ_DIR}/Encoders
35
36 debug: CFLAGS += -DCONFIG_DEBUG
37 debug: all
38
39 PHONY += docs
40 docs: $(C_SOURCES) $(HEADERS)
41         doxygen
42
43 $(LIB_SO): $(OBJECTS)
44         $(CC) -g $(SHARED) -o ${OBJ_DIR}/$(LIB_SO) $+ $(LDFLAGS)
45
46 ${OBJ_DIR}/%.o: %.c
47         $(CC) -fPIC -c $< -o $@ $(CFLAGS) -Wno-unused-variable
48
49 -include $(OBJECTS:%=$OBJ_DIR/.%.d)
50
51 PHONY += clean
52 clean:
53         rm -f *.o *.so
54         rm -rf $(OBJ_DIR)
55
56 PHONY += mrclean
57 mrclean: clean
58         rm -rf docs
59
60 PHONY += tags
61 tags:
62         ctags -R
63
64 tabbing:
65         uncrustify -c C.cfg --no-backup *.c
66         uncrustify -c C.cfg --no-backup *.h */*.h
67
68 wc:
69         wc */*.c */*.h *.c *.h
70
71 .PHONY: $(PHONY)
72
73 # A 1-inch margin PDF generated by 'pandoc'
74 %.pdf: %.md
75         pandoc -o $@ $< -V header-includes='\usepackage[margin=1in]{geometry}'