Commit bbe28227 authored by Laslo Hunhold's avatar Laslo Hunhold

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
parent 65829635
# 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
......@@ -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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment