forked from bitly/dablooms
/
Makefile
126 lines (103 loc) · 3.65 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
HELPTEXT = "\
\n dablooms Makefile usage \
\n \
\n Options (current value) \
\n \
\n BLDDIR ($(BLDDIR)) \
\n DESTDIR ($(DESTDIR)) \
\n PREFIX ($(PREFIX)) \
\n LIBDIR ($(LIBDIR)) \
\n INCDIR ($(INCDIR)) \
\n \
\n CC ($(CC)) \
\n CFLAGS ($(CFLAGS)) \
\n INCPATH ($(INCPATH)) \
\n LDFLAGS ($(LDFLAGS)) \
\n LIBPATH ($(LIBPATH)) \
\n INSTALL ($(INSTALL)) \
\n \
\n PYTHON ($(PYTHON)) \
\n PY_MOD_DIR ($(PY_MOD_DIR)) \
\n \
\n Targets \
\n \
\n all \
\n libdablooms \
\n pydablooms \
\n \
\n install \
\n install_libdablooms \
\n install_pydablooms \
\n \
\n clean \
\n test \
\n help \
\n\n \
"
PREFIX = /usr/local
LIBDIR = $(PREFIX)/lib
INCDIR = $(PREFIX)/include
DESTDIR =
SRCDIR = src
BLDDIR = build
INCPATH =
CFLAGS = -g -Wall -fPIC $(patsubst %, -I%, $(INCPATH))
LIBPATH =
LDFLAGS = -g $(patsubst %, -L%, $(LIBPATH))
LDLIBS = -lm
PYTHON = python
INSTALL = install
CC = gcc
AR = ar
PY_SRCDIR = pydablooms
PY_BLDDIR = $(BLDDIR)/python
PY_MOD_DIR := $(shell $(PYTHON) -c "import distutils.sysconfig ; print(distutils.sysconfig.get_python_lib())")
PY_FLAGS = --build-lib=$(PY_BLDDIR) --build-temp=$(PY_BLDDIR)
PY_BLD_ENV = INCPATH="$(SRCDIR) $(INCPATH)" LIBPATH="$(BLDDIR) $(LIBPATH)"
SRCS_LIBDABLOOMS = city.c dablooms.c
SRCS_TESTS = test_dablooms.c
WORDS = /usr/share/dict/words
OBJS_LIBDABLOOMS = $(patsubst %.c, $(BLDDIR)/%.o, $(SRCS_LIBDABLOOMS))
OBJS_TESTS = $(patsubst %.c, $(BLDDIR)/%.o, $(SRCS_TESTS))
all: libdablooms pydablooms $(BLDDIR)/test_dablooms
# sort removes duplicates
DEPS := $(sort $(patsubst %.o, %.o.deps, $(OBJS_LIBDABLOOMS) $(OBJS_TESTS)))
-include $(DEPS)
install: install_libdablooms install_pydablooms
install_libdablooms: $(DESTDIR)$(LIBDIR)/libdablooms.a $(DESTDIR)$(INCDIR)/dablooms.h
install_pydablooms: $(DESTDIR)$(PY_MOD_DIR)/pydablooms.so
libdablooms: $(BLDDIR)/libdablooms.a
pydablooms: libdablooms $(PY_BLDDIR)/pydablooms.so
$(DESTDIR)$(LIBDIR)/libdablooms.a: $(BLDDIR)/libdablooms.a
$(DESTDIR)$(INCDIR)/dablooms.h: $(SRCDIR)/dablooms.h
$(DESTDIR)$(PY_MOD_DIR)/pydablooms.so: $(PY_BLDDIR)/pydablooms.so
@echo " PY_INSTALL " $@
@$(INSTALL) -d $(dir $@)
@$(INSTALL) -C $< $@
$(DESTDIR)$(PREFIX)/%:
@echo " INSTALL " $@
@$(INSTALL) -d $(dir $@)
@$(INSTALL) -C $< $@
$(BLDDIR)/test_dablooms: $(OBJS_TESTS) $(BLDDIR)/libdablooms.a
@echo " LD " $@
@$(CC) -o $@ $(OBJS_TESTS) -L$(BLDDIR) $(LDFLAGS) -l dablooms $(LDLIBS)
test: $(BLDDIR)/test_dablooms
$(BLDDIR)/test_dablooms $(WORDS)
$(PY_BLDDIR)/pydablooms.so: $(BLDDIR)/libdablooms.a
@echo " PY_BUILD" $@
@$(PY_BLD_ENV) $(PYTHON) $(PY_SRCDIR)/setup.py build $(PY_FLAGS) >/dev/null
$(BLDDIR)/%.o: $(SRCDIR)/%.c
@echo " CC " $@
@mkdir -p $(dir $@)
@$(CC) -o $@ -c $< $(CFLAGS) -MMD -MF $@.deps
$(BLDDIR)/libdablooms.a: $(OBJS_LIBDABLOOMS)
@echo " AR " $@
@rm -f $@
@$(AR) rcs $@ $^
clean:
$(PYTHON) $(PY_SRCDIR)/setup.py clean $(PY_FLAGS)
rm -f $(OBJS_LIBDABLOOMS) $(BLDDIR)/libdablooms.a $(OBJS_TESTS) $(BLDDIR)/test_dablooms $(DEPS) $(BLDDIR)/pydablooms.so
rmdir $(BLDDIR)
help:
@printf $(HELPTEXT)
.PHONY: all clean help install test install_libdablooms install_pydablooms libdablooms pydablooms