farbfeld

suckless image format with conversion tools
git clone git://git.suckless.org/farbfeld
Log | Files | Refs | README | LICENSE

commit bbe28227eb80da62fec59aa79ba7a97f5c3937b4
parent 65829635d9f5f9f4a23c2f890c60c315bcbafee2
Author: Laslo Hunhold <dev@frign.de>
Date:   Thu, 30 Mar 2017 08:41:17 +0200

Make Makefile strictly POSIX compliant

Thanks Hiltjo for the feedback! GNUisms need to be avoided like a
plague, even if it means having to be a little more creative.

Strict POSIX compliance means that I just worked within the bounds of
the POSIX specification, hopefully without using any GNU or BSD
extensions. If I did, please let me know.

Tip to all Linux users: Test your Makefiles with pmake(1) instead of
make(1) (= GNU make) and refer to the newest POSIX 2016 make
specification[0].

[0]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html

Diffstat:
MMakefile | 27+++++++++++++--------------
Mconfig.mk | 6++++--
2 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/Makefile b/Makefile @@ -1,31 +1,32 @@ -# farbfeld - suckless image format with conversion tools # See LICENSE file for copyright and license details +# farbfeld - suckless image format with conversion tools +.POSIX: + include config.mk -REQ = HDR = arg.h BIN = png2ff ff2png jpg2ff ff2jpg ff2pam ff2ppm -SCRIPTS = 2ff +SCR = 2ff MAN1 = 2ff.1 $(BIN:=.1) MAN5 = farbfeld.5 all: $(BIN) -$(BIN): % : %.o $(REQ:=.o) - $(CC) $^ $(LDFLAGS) -o $@ +.o: $(REQ:=.o) + $(CC) $(CFLAGS) $($*-LDFLAGS) -o $@ $< $(REQ:=.o) -$(BIN:=.o): $(HDR) $(REQ:=.h) - -%.o: %.c config.mk +.c.o: $(CC) $(CPPFLAGS) $(CFLAGS) -c $< +$(BIN:=.o): config.mk $(HDR) $(REQ:=.h) + clean: rm -f $(BIN) $(BIN:=.o) $(REQ:=.o) dist: rm -rf "farbfeld-$(VERSION)" mkdir -p "farbfeld-$(VERSION)" - cp -R FORMAT LICENSE Makefile README TODO config.mk $(SCRIPTS) \ + cp -R FORMAT LICENSE Makefile README TODO config.mk $(SCR) \ $(HDR) $(BIN:=.c) $(REQ:=.c) $(REQ:=.h) \ $(MAN1) $(MAN5) "farbfeld-$(VERSION)" tar -cf - "farbfeld-$(VERSION)" | gzip -c > "farbfeld-$(VERSION).tar.gz" @@ -33,8 +34,8 @@ dist: install: all mkdir -p "$(DESTDIR)$(PREFIX)/bin" - cp -f $(SCRIPTS) $(BIN) "$(DESTDIR)$(PREFIX)/bin" - for f in $(BIN) $(SCRIPTS); do chmod 755 "$(DESTDIR)$(PREFIX)/bin/$$f"; done + cp -f $(SCR) $(BIN) "$(DESTDIR)$(PREFIX)/bin" + for f in $(BIN) $(SCR); do chmod 755 "$(DESTDIR)$(PREFIX)/bin/$$f"; done mkdir -p "$(DESTDIR)$(MANPREFIX)/man1" cp -f $(MAN1) "$(DESTDIR)$(MANPREFIX)/man1" for m in $(MAN1); do chmod 644 "$(DESTDIR)$(MANPREFIX)/man1/$$m"; done @@ -43,8 +44,6 @@ install: all for m in $(MAN5); do chmod 644 "$(DESTDIR)$(MANPREFIX)/man5/$$m"; done uninstall: - for f in $(BIN) $(SCRIPTS); do rm -f "$(DESTDIR)$(PREFIX)/bin/$$f"; done + for f in $(BIN) $(SCR); do rm -f "$(DESTDIR)$(PREFIX)/bin/$$f"; done for m in $(MAN1); do rm -f "$(DESTDIR)$(MANPREFIX)/man1/$$m"; done for m in $(MAN5); do rm -f "$(DESTDIR)$(MANPREFIX)/man5/$$m"; done - -.PHONY: all clean dist install uninstall diff --git a/config.mk b/config.mk @@ -12,8 +12,10 @@ CPPFLAGS = -D_DEFAULT_SOURCE CFLAGS = -std=c89 -pedantic -Wall -Os LDFLAGS = -s -png2ff ff2png: LDFLAGS += -lpng -jpg2ff ff2jpg: LDFLAGS += -ljpeg +png2ff-LDFLAGS = -lpng +ff2png-LDFLAGS = -lpng +jpg2ff-LDFLAGS = -ljpeg +ff2jpg-LDFLAGS = -ljpeg # compiler and linker CC = cc