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