Adding .gitignore
[satune.git] / src / Makefile
1 include common.mk
2
3 PHONY += directories
4 MKDIR_P = mkdir -p
5 OBJ_DIR = bin
6
7 CPP_SOURCES := constraint.cc inc_solver.cc
8
9 OBJECTS := $(CPP_SOURCES:%.cc=$(OBJ_DIR)/%.o) $(C_SOURCES:%.c=$(OBJ_DIR)/%.o)
10
11 CPPFLAGS += -Iinclude -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
30 debug: CPPFLAGS += -DCONFIG_DEBUG
31 debug: all
32
33 PHONY += docs
34 docs: *.cc *.h
35         doxygen
36
37 $(LIB_SO): $(OBJECTS)
38         $(CXX) -g $(SHARED) -o $(LIB_SO) $+ $(LDFLAGS)
39
40 ${OBJ_DIR}/%.o: %.c
41         $(CC) -fPIC -c $< -o $@ $(CPPFLAGS) -Wno-unused-variable
42
43 ${OBJ_DIR}/%.o: %.cc
44         $(CXX) -MMD -MF $@.d -o $@ -fPIC -c $< $(CPPFLAGS)
45
46 %.pdf: %.dot
47         dot -Tpdf $< -o $@
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 *.cc
66         uncrustify -c C.cfg --no-backup *.h
67
68 .PHONY: $(PHONY)
69
70 # A 1-inch margin PDF generated by 'pandoc'
71 %.pdf: %.md
72         pandoc -o $@ $< -V header-includes='\usepackage[margin=1in]{geometry}'