From 90518ee01fe2f0d41a0661b8f4de5cd903de60a1 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 4 Feb 2020 07:29:32 +0100 Subject: Makefile: use $PKGCONFIG, use += and ?= BSD extensions Allows to use cross-compilation for ${triple}-pkg-config on systems like Exherbo without special handling. The BSD extensions += and ?= for variable extension is used to avoid having to explicitely pass a list of variables to make, thus making build recipies simpler. Only issue is when CC is unset, you will get CC=c99, which doesn't works as c11 is used. Consider doing something like the following in your build recipes: make CC=${CC:-cc} Reported-by: danyspin97 --- Makefile | 40 ++++++++++++++++++++++++---------------- README.md | 2 +- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index 024eb56..d8e9195 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,26 @@ .POSIX: +# POSIX Makefile with extensions common to *BSD and GNU such as: +# - Usage of backticks for shell evaluation +# - Usage of ?= for defining variables when not already defined +# - Usage of += for appending to a variable +PACKAGE = Badwolf VERSION = 0.4.0 -VERSION_FULL = $(VERSION)$(shell ./version.sh) +VERSION_FULL = $(VERSION)`./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 +PREFIX ?= /usr/local +BINDIR ?= $(PREFIX)/bin +MANDIR ?= $(PREFIX)/share/man +DOCDIR ?= $(PREFIX)/share/doc/badwolf-$(VERSION) +DATADIR ?= $(PREFIX)/share/badwolf +APPSDIR ?= $(PREFIX)/share/applications + +CC ?= cc +DBG ?= +PKGCONFIG ?= pkg-config +MSGFMT ?= msgfmt + +CFLAGS ?= -g -Wall -Wextra -Wconversion -Wsign-conversion -O2 DEPS = gtk+-3.0 webkit2gtk-4.0 libsoup-2.4 SRCS = uri.c uri_test.c keybindings.c badwolf.c @@ -20,12 +31,9 @@ EXE_test = uri_test TRANS = fr.mo pt_BR.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 +CFLAGS += -DDATADIR=\"$(DATADIR)\" -DPACKAGE=\"$(PACKAGE)\" -D_POSIX_C_SOURCE=200809L -DVERSION=\"$(VERSION_FULL)\" +CFLAGS += `$(PKGCONFIG) --cflags $(DEPS)` +LIBS = `$(PKGCONFIG) --libs $(DEPS)` all: $(EXE) $(TRANS) @@ -43,10 +51,10 @@ badwolf: $(OBJS) $(CC) -std=c11 -o $@ $(OBJS) $(LDFLAGS) $(LIBS) .c: - $(CC) -std=c11 $(CFLAGS) $(CDEPS) $(LDFLAGS) $(LIBS) -o $@ $< + $(CC) -std=c11 $(CFLAGS) $(LDFLAGS) $(LIBS) -o $@ $< .c.o: - $(CC) -std=c11 $(CFLAGS) $(CDEPS) -c -o $@ $< + $(CC) -std=c11 $(CFLAGS) -c -o $@ $< uri_test: uri.o uri_test.o $(CC) -std=c11 -o $@ uri.o uri_test.o $(LDFLAGS) $(LIBS) diff --git a/README.md b/README.md index 75752b0..6ce8eef 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ Dependencies are: - A pkg-config implementation (pkgconf is recommended) - (optionnal) gettext implementation (such as GNU Gettext) -Compilation is done with `make`, install with `make install`. An example AppArmor profile is provided at `usr.bin.badwolf`, please do runtime checks before deploying. +Compilation is done with `make CC=${CC:-cc}`, install with `make install`. An example AppArmor profile is provided at `usr.bin.badwolf`, please do runtime checks before deploying. ## Notes Most of the privacy/security stuff will be done with patches against WebKit as quite a lot isn’t into [WebKitSettings](https://webkitgtk.org/reference/webkit2gtk/stable/WebKitSettings.html) and with generic WebKit extensions that should be resuseable. -- cgit v1.3.1-23-gd82d