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