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
|
VERSION=$(shell dpkg-parsechangelog | grep ^Version: | cut -d' ' -f2)
libwhoopsie_SOURCES=src/identifier.c
libwhoopsie_OBJECTS=$(libwhoopsie_SOURCES:.c=.o)
libwhoopsie_CFLAGS=$(shell pkg-config --cflags glib-2.0) \
$(shell libgcrypt-config --cflags) \
$(CFLAGS) $(CPPFLAGS)
libwhoopsie_LIBS=$(shell pkg-config --libs glib-2.0) \
$(shell libgcrypt-config --libs) \
$(LDFLAGS)
whoopsie_CFLAGS=$(shell pkg-config --cflags gio-2.0 glib-2.0 libcurl) \
-g -Ilib -Wall -Werror -Os -DVERSION=\"$(VERSION)\" \
$(CFLAGS) $(CPPFLAGS)
whoopsie_LIBS=$(shell pkg-config --libs gio-2.0 glib-2.0 libcurl) -lcap \
$(LDFLAGS)
SOURCES=src/whoopsie.c \
src/utils.c \
src/connectivity.c \
src/monitor.c \
src/logging.c \
lib/bson/bson.c \
lib/bson/encoding.c \
lib/bson/numbers.c
OBJECTS=$(SOURCES:.c=.o)
EXECUTABLE=src/whoopsie
BIN=$(DESTDIR)/usr/bin
DATA=$(DESTDIR)/etc
.PHONY: all clean check install
all: $(SOURCES) $(EXECUTABLE)
$(libwhoopsie_OBJECTS): $(libwhoopsie_SOURCES)
$(CC) -std=c99 -fPIC -c $(libwhoopsie_CFLAGS) -o $@ $^
src/libwhoopsie.so.0.0: $(libwhoopsie_OBJECTS)
$(CC) -std=c99 -shared -Wl,-soname,libwhoopsie.so.0 -o $@ $^ $(libwhoopsie_LIBS)
ln -sf libwhoopsie.so.0.0 src/libwhoopsie.so.0
ln -sf libwhoopsie.so.0.0 src/libwhoopsie.so
$(EXECUTABLE): $(OBJECTS) src/libwhoopsie.so.0.0
$(CC) -std=c99 $(OBJECTS) $(whoopsie_LIBS) -Lsrc -lwhoopsie -o $@
clean:
rm -f $(EXECUTABLE) $(OBJECTS) $(libwhoopsie_OBJECTS) src/libwhoopsie.so*
$(MAKE) -C src/tests clean
check:
$(MAKE) -C src/tests
if type cppcheck >/dev/null 2>&1; then \
cppcheck . --error-exitcode=1; \
fi
find -name "*.py" | xargs pyflakes
if type valgrind >/dev/null 2>&1; then \
APPORT_REPORT_DIR=$(shell mktemp -d) ./tools/check_valgrind; \
fi
coverage:
$(MAKE) -C src/tests coverage
%.o: %.c
$(CC) -std=c99 -c $(whoopsie_CFLAGS) -o $@ $^
install: all
install -d $(BIN)
install src/whoopsie $(BIN)
install -d $(DATA)/init
install -d $(DESTDIR)/lib/systemd/system
install -m644 data/whoopsie.conf $(DATA)/init
install -m644 data/whoopsie.service $(DESTDIR)/lib/systemd/system
install -d $(DATA)/default
install -m644 data/whoopsie $(DATA)/default
install -d $(DESTDIR)/usr/share/apport/package-hooks
install -m644 data/whoopsie.py $(DESTDIR)/usr/share/apport/package-hooks
install -d $(DESTDIR)/usr/lib
install -m644 src/libwhoopsie.so.0.0 $(DESTDIR)/usr/lib
cp -d src/libwhoopsie.so $(DESTDIR)/usr/lib
cp -d src/libwhoopsie.so.0 $(DESTDIR)/usr/lib
install -d $(DESTDIR)/usr/lib/pkgconfig
install -m644 lib/libwhoopsie.pc $(DESTDIR)/usr/lib/pkgconfig
install -d $(DESTDIR)/usr/include/libwhoopsie
install -m644 src/identifier.h $(DESTDIR)/usr/include/libwhoopsie
|