~xnox/whoopsie/fix-realloc

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