change tabbing
[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 := set.c mutableset.c element.c function.c order.c table.c predicate.c boolean.c csolver.c structs.c constraint.c inc_solver.c
8
9 TABBING_H := boolean.h classlist.h common.h config.h constraint.h csolver.h element.h function.h inc_solver.h mutableset.h mymemory.h ops.h order.h predicate.h set.h solver_interface.h structs.h table.h
10
11 OBJECTS := $(CPP_SOURCES:%.cc=$(OBJ_DIR)/%.o) $(C_SOURCES:%.c=$(OBJ_DIR)/%.o)
12
13 CPPFLAGS += -Iinclude -I.
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
32 debug: CPPFLAGS += -DCONFIG_DEBUG
33 debug: all
34
35 PHONY += docs
36 docs: *.c *.cc *.h
37         doxygen
38
39 $(LIB_SO): $(OBJECTS)
40         $(CXX) -g $(SHARED) -o $(LIB_SO) $+ $(LDFLAGS)
41
42 ${OBJ_DIR}/%.o: %.c
43         $(CC) -fPIC -c $< -o $@ $(CPPFLAGS) -Wno-unused-variable
44
45 ${OBJ_DIR}/%.o: %.cc
46         $(CXX) -MMD -MF $@.d -o $@ -fPIC -c $< $(CPPFLAGS)
47
48 %.pdf: %.dot
49         dot -Tpdf $< -o $@
50
51 -include $(OBJECTS:%=$OBJ_DIR/.%.d)
52
53 PHONY += clean
54 clean:
55         rm -f *.o *.so
56         rm -rf $(OBJ_DIR)
57
58 PHONY += mrclean
59 mrclean: clean
60         rm -rf docs
61
62 PHONY += tags
63 tags:
64         ctags -R
65
66 tabbing:
67         uncrustify -c C.cfg --no-backup *.c
68         uncrustify -c C.cfg --no-backup $(TABBING_H)
69
70 .PHONY: $(PHONY)
71
72 # A 1-inch margin PDF generated by 'pandoc'
73 %.pdf: %.md
74         pandoc -o $@ $< -V header-includes='\usepackage[margin=1in]{geometry}'