use suckless style makefile - sdhcp - simple dhcp client
(HTM) git clone git://git.codemadness.org/sdhcp
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
(DIR) commit 61b1942be50463eb03c55c055df4b8f62a4549e2
(DIR) parent 0d4e3b57668dbabd501b83f2228d18b0a53598d0
(HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Fri, 25 Apr 2014 20:52:34 +0200
use suckless style makefile
- add config.mk,
- use -ansi and -D_BSD_SOURCE (needed for IFF_*) for CFLAGS.
Signed-off-by: Hiltjo Posthuma <hiltjo@codemadness.org>
Diffstat:
M Makefile | 69 ++++++++++++++++++++++++++-----
A config.mk | 13 +++++++++++++
2 files changed, 71 insertions(+), 11 deletions(-)
---
(DIR) diff --git a/Makefile b/Makefile
@@ -1,17 +1,64 @@
-DESTDIR=
-MANDIR = /usr/share/man
+include config.mk
-sdhcp: sdhcp.c
- $(CC) -O2 -o $@ sdhcp.c -static -Wall -ansi
+.POSIX:
+.SUFFIXES: .c .o
-debug: sdhcp.c debug.c
- $(CC) -DDEBUG -o sdhcp sdhcp.c -static -O0 -g -Wall -ansi
+HDR = util.h
+LIB = \
+ util/strlcpy.o
-all: sdhcp
+SRC = sdhcp.c
+
+OBJ = $(SRC:.c=.o) $(LIB)
+BIN = $(SRC:.c=)
+MAN = $(SRC:.c=.8)
+
+all: options binlib
+
+options:
+ @echo sdhcp build options:
+ @echo "CFLAGS = ${CFLAGS}"
+ @echo "LDFLAGS = ${LDFLAGS}"
+ @echo "CC = ${CC}"
+
+binlib: util.a
+ $(MAKE) bin
+
+bin: $(BIN)
+
+$(OBJ): $(HDR) config.mk
+
+.o:
+ @echo LD $@
+ @$(LD) -o $@ $< util.a $(LDFLAGS)
+
+.c.o:
+ @echo CC $<
+ @$(CC) -c -o $@ $< $(CFLAGS)
+
+util.a: $(LIB)
+ @echo AR $@
+ @$(AR) -r -c $@ $(LIB)
+ @ranlib $@
install: all
- install -s sdhcp $(DESTDIR)/sbin
- gzip -c sdhcp.8 > $(DESTDIR)$(MANDIR)/man8/sdhcp.8.gz
-
+ @echo installing executables to $(DESTDIR)$(PREFIX)/sbin
+ @mkdir -p $(DESTDIR)$(PREFIX)/sbin
+ @cp -f $(BIN) $(DESTDIR)$(PREFIX)/sbin
+ @cd $(DESTDIR)$(PREFIX)/sbin && chmod 755 $(BIN)
+ @echo installing manual pages to $(DESTDIR)$(MANPREFIX)/man8
+ @mkdir -p $(DESTDIR)$(MANPREFIX)/man8
+ @for m in $(MAN); do sed "s/VERSION/$(VERSION)/g" < "$$m" > $(DESTDIR)$(MANPREFIX)/man8/"$$m"; done
+ @cd $(DESTDIR)$(MANPREFIX)/man8 && chmod 644 $(MAN)
+
+uninstall:
+ @echo removing executables from $(DESTDIR)$(PREFIX)/bin
+ @cd $(DESTDIR)$(PREFIX)/bin && rm -f $(BIN)
+ @echo removing manual pages from $(DESTDIR)$(MANPREFIX)/man8
+ @cd $(DESTDIR)$(MANPREFIX)/man8 && rm -f $(MAN)
+
clean:
- rm -f sdhcp ?*~
+ @echo cleaning
+ @rm -f $(BIN) $(OBJ)
+
+.PHONY: all options clean install uninstall
(DIR) diff --git a/config.mk b/config.mk
@@ -0,0 +1,13 @@
+# sdhcp version
+VERSION = 0.1
+
+PREFIX = /usr/local
+DESTDIR =
+MANPREFIX = $(PREFIX)/share/man
+
+#CC = gcc
+#CC = musl-gcc
+LD = $(CC)
+CPPFLAGS = -D_BSD_SOURCE
+CFLAGS = -g -Wall -ansi $(CPPFLAGS)
+LDFLAGS = -g