Summary Files Commits Branches @commit @diff @stats
path: root / Makefile
blob: f3fcbc53a670a05bae3d411d8442cd10b4638f35 (plain) (blame)
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
.POSIX:

VERSION = 0.4.0
VERSION_FULL = $(VERSION)$(shell ./version.sh)

PREFIX  = /usr/local
BINDIR  = $(PREFIX)/bin
MANDIR  = $(PREFIX)/share/man
DOCDIR  = $(PREFIX)/share/doc/badwolf-$(VERSION)
DATADIR = $(PREFIX)/share/badwolf
APPSDIR = $(PREFIX)/share/applications
PACKAGE = Badwolf

DEPS  = gtk+-3.0 webkit2gtk-4.0 libsoup-2.4
SRCS  = uri.c uri_test.c keybindings.c badwolf.c
OBJS  = uri.o keybindings.o badwolf.o
OBJS_test = uri_test.o
EXE   = badwolf
EXE_test = uri_test
TRANS = fr.mo
DOCS  = usr.bin.badwolf README.md KnowledgeBase.md

CC     = cc
DBG    =
CFLAGS = -g -Wall -Wextra -Wconversion -Wsign-conversion -O2
CDEPS  = `pkg-config --cflags $(DEPS)` -DDATADIR=\"$(DATADIR)\" -DPACKAGE=\"$(PACKAGE)\" -D_POSIX_C_SOURCE=200809L -DVERSION=\"$(VERSION_FULL)\"
LIBS   = `pkg-config --libs $(DEPS)`
MSGFMT = msgfmt

all: $(EXE) $(TRANS)

po/messages.pot: $(SRCS)
	xgettext --keyword=_ --language=C --from-code=UTF-8 -o $@ --add-comments --sort-output --copyright-holder="Haelwenn (lanodan) Monnier <contact+badwolf-copyright@hacktivis.me>" --package-name="$(PACKAGE)" --package-version="$(VERSION_FULL)" --msgid-bugs-address="contact+badwolf-msgid@hacktivis.me" $(SRCS)

po/%.po: po/messages.pot
	msgmerge --update $@ $<

${TRANS}: po/${@:.mo=.po}
	mkdir -p locale/${@:.mo=}/LC_MESSAGES
	$(MSGFMT) -o locale/${@:.mo=}/LC_MESSAGES/$(PACKAGE).mo po/${@:.mo=.po}

badwolf: $(OBJS)
	$(CC) -std=c11 -o $@ $(OBJS) $(LDFLAGS) $(LIBS)

.c:
	$(CC) -std=c11 $(CFLAGS) $(CDEPS) $(LDFLAGS) $(LIBS) -o $@ $<

.c.o:
	$(CC) -std=c11 $(CFLAGS) $(CDEPS) -c -o $@ $<

uri_test: uri.o uri_test.o
	$(CC) -std=c11 -o $@ uri.o uri_test.o $(LDFLAGS) $(LIBS)
	$(DBG) ./$@

.PHONY: test
test: $(EXE_test)

.PHONY: install
install: all
	mkdir -p $(DESTDIR)$(BINDIR)
	cp -p badwolf $(DESTDIR)$(BINDIR)/badwolf
	mkdir -p $(DESTDIR)$(MANDIR)/man1
	cp -p badwolf.1 $(DESTDIR)$(MANDIR)/man1
	mkdir -p $(DESTDIR)$(DATADIR)/locale
	cp -r locale/ $(DESTDIR)$(DATADIR)
	mkdir -p $(DESTDIR)$(APPSDIR)
	cp -p badwolf.desktop $(DESTDIR)$(APPSDIR)/
	mkdir -p $(DESTDIR)$(DOCDIR)
	cp -p $(DOCS) $(DESTDIR)$(DOCDIR)/
	@printf '\nNote: An example AppArmor profile has been installed at '$(DOCDIR)/usr.bin.badwolf'\n'

.PHONY: clean
clean:
	rm -fr locale $(OBJS) $(OBJS_test) $(EXE) $(EXE_test)

format: *.c *.h
	clang-format -style=file -assume-filename=.clang-format -i *.c *.h