Makefile: add a more proper Makefile - extractjson - extract embedded JSON metadata from HTML pages
(HTM) git clone git://git.codemadness.org/extractjson
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 44593668820d73cad338f948e9e46ebc7ce37e90
(DIR) parent ca6dbc057f9c2370476eef735ac8506c45a0958f
(HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Sun, 14 Aug 2022 12:07:31 +0200
Makefile: add a more proper Makefile
Diffstat:
M Makefile | 78 +++++++++++++++++++++++++++++--
1 file changed, 75 insertions(+), 3 deletions(-)
---
(DIR) diff --git a/Makefile b/Makefile
@@ -1,5 +1,77 @@
-build: clean
- ${CC} -o extractjson extractjson.c ${CFLAGS} ${LDFLAGS}
+.POSIX:
+
+NAME = extractjson
+VERSION = 0.1
+
+# paths
+PREFIX = /usr/local
+MANPREFIX = ${PREFIX}/man
+DOCPREFIX = ${PREFIX}/share/doc/${NAME}
+
+RANLIB = ranlib
+
+# use system flags.
+EXTRACTJSON_CFLAGS = ${CFLAGS}
+EXTRACTJSON_LDFLAGS = ${LDFLAGS}
+EXTRACTJSON_CPPFLAGS = -D_DEFAULT_SOURCE
+
+# uncomment for conservative locked I/O.
+#EXTRACTJSON_CPPFLAGS = -D_DEFAULT_SOURCE -DGETNEXT=getchar
+
+BIN = ${NAME}
+SRC = ${BIN:=.c}
+MAN1 = ${BIN:=.1}
+DOC = \
+ LICENSE\
+ README
+
+all: ${BIN}
+
+${BIN}: ${@:=.o}
+
+OBJ = ${SRC:.c=.o}
+
+${OBJ}: ${HDR}
+
+.o:
+ ${CC} ${EXTRACTJSON_LDFLAGS} -o $@ $<
+
+.c.o:
+ ${CC} ${EXTRACTJSON_CFLAGS} ${EXTRACTJSON_CPPFLAGS} -o $@ -c $<
+
+dist:
+ rm -rf "${NAME}-${VERSION}"
+ mkdir -p "${NAME}-${VERSION}"
+ cp -f ${MAN1} ${DOC} ${HDR} \
+ ${SRC} Makefile "${NAME}-${VERSION}"
+ # make tarball
+ tar cf - "${NAME}-${VERSION}" | gzip -c > "${NAME}-${VERSION}.tar.gz"
+ rm -rf "${NAME}-${VERSION}"
clean:
- rm -f *.o extractjson
+ rm -f ${BIN} ${OBJ}
+
+install: all
+ # installing executable files.
+ mkdir -p "${DESTDIR}${PREFIX}/bin"
+ cp -f ${BIN} "${DESTDIR}${PREFIX}/bin"
+ for f in ${BIN}; do chmod 755 "${DESTDIR}${PREFIX}/bin/$$f"; done
+ # installing example files.
+ mkdir -p "${DESTDIR}${DOCPREFIX}"
+ cp -f ${DOC} "${DESTDIR}${DOCPREFIX}"
+ for d in ${DOC}; do chmod 644 "${DESTDIR}${DOCPREFIX}/$$d"; done
+ # installing manual pages for general commands: section 1.
+ mkdir -p "${DESTDIR}${MANPREFIX}/man1"
+ cp -f ${MAN1} "${DESTDIR}${MANPREFIX}/man1"
+ for m in ${MAN1}; do chmod 644 "${DESTDIR}${MANPREFIX}/man1/$$m"; done
+
+uninstall:
+ # removing executable files.
+ for f in ${BIN}; do rm -f "${DESTDIR}${PREFIX}/bin/$$f"; done
+ # removing example files.
+ for d in ${DOC}; do rm -f "${DESTDIR}${DOCPREFIX}/$$d"; done
+ -rmdir "${DESTDIR}${DOCPREFIX}"
+ # removing manual pages.
+ for m in ${MAN1}; do rm -f "${DESTDIR}${MANPREFIX}/man1/$$m"; done
+
+.PHONY: all clean dist install uninstall