URI:
       improve build, Makefile - tscrape - twitter scraper
  HTML git clone git://git.codemadness.org/tscrape
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 6b4de933fb56b745de11b6190b8cda65b9bcf843
   DIR parent 93e46a59d2e61d9218312b5459166256964d8408
  HTML Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Wed,  9 Mar 2016 22:27:37 +0100
       
       improve build, Makefile
       
       just always build strlcpy and strlcat, these are synced from OpenBSD.
       
       Diffstat:
         M Makefile                            |      74 ++++++++++++++++++-------------
         M config.mk                           |      31 ++++++++++++++-----------------
         M tscrape.c                           |       8 +++++++-
       
       3 files changed, 64 insertions(+), 49 deletions(-)
       ---
   DIR diff --git a/Makefile b/Makefile
       @@ -2,59 +2,75 @@ include config.mk
        
        NAME = tscrape
        VERSION = 0.1
       -SRC = \
       -        tscrape.c\
       -        xml.c
       -COMPATSRC = \
       -        strlcat.c\
       -        strlcpy.c
        BIN = \
                tscrape
       -MAN1 = \
       -        tscrape.1
       +
       +SRC = ${BIN:=.c}
       +
       +LIBUTIL = libutil.a
       +LIBUTILSRC = \
       +        strlcat.c\
       +        strlcpy.c
       +LIBUTILOBJ = ${LIBUTILSRC:.c=.o}
       +
       +LIBXML = libxml.a
       +LIBXMLSRC = \
       +        xml.c
       +LIBXMLOBJ = ${LIBXMLSRC:.c=.o}
       +
       +LIB = ${LIBUTIL} ${LIBXML}
       +
       +MAN1 = ${BIN:=.1}
       +
        DOC = \
                LICENSE\
                README
        HDR = \
       -        compat.h\
                xml.h
        
       -OBJ = ${SRC:.c=.o} ${EXTRAOBJ}
       -
        all: $(BIN)
        
       +${BIN}: ${LIB} ${@:=.o}
       +
       +OBJ = ${SRC:.c=.o} ${LIBUTILOBJ} ${LIBXMLOBJ}
       +
       +${OBJ}: config.mk ${HDR}
       +
       +.o:
       +        ${CC} ${LDFLAGS} -o $@ $< ${LIB}
       +
        .c.o:
       -        ${CC} -c ${CFLAGS} $<
       +        ${CC} -c ${CFLAGS} ${CPPFLAGS} -o $@ -c $<
       +
       +${LIBUTIL}: ${LIBUTILOBJ}
       +        ${AR} rc $@ $?
       +        ${RANLIB} $@
       +
       +${LIBXML}: ${LIBXMLOBJ}
       +        ${AR} rc $@ $?
       +        ${RANLIB} $@
        
        dist: $(BIN)
                rm -rf release/${VERSION}
                mkdir -p release/${VERSION}
       -        cp -f ${MAN1} ${HDR} ${SRC} ${COMPATSRC} ${DOC} \
       +        cp -f ${MAN1} ${DOC} ${HDR} \
       +                ${SRC} ${LIBXMLSRC} ${LIBUTILSRC} \
                        Makefile config.mk \
                        release/${VERSION}/
                # make tarball
       -        rm -f sfeed-${VERSION}.tar.gz
       +        rm -f tscrape-${VERSION}.tar.gz
                (cd release/${VERSION}; \
       -        tar -czf ../../sfeed-${VERSION}.tar.gz .)
       -
       -${OBJ}: config.mk ${HDR}
       -
       -tscrape: tscrape.o xml.o ${EXTRAOBJ}
       -        ${CC} -o $@ tscrape.o xml.o ${EXTRAOBJ} ${LDFLAGS}
       +        tar -czf ../../tscrape-${VERSION}.tar.gz .)
        
        clean:
       -        rm -f ${BIN} ${OBJ}
       +        rm -f ${BIN} ${OBJ} ${LIB}
        
        install: all
                # installing executable files.
                mkdir -p ${DESTDIR}${PREFIX}/bin
       -        cp -f ${BIN} ${DESTDIR}${PREFIX}/bin
       +        cp -f ${BIN} ${SCRIPTS} ${DESTDIR}${PREFIX}/bin
                for f in $(BIN); do chmod 755 ${DESTDIR}${PREFIX}/bin/$$f; done
       -        # installing example files.
       -        mkdir -p ${DESTDIR}${PREFIX}/share/${NAME}
       -        cp -f README\
       -                ${DESTDIR}${PREFIX}/share/${NAME}
       -        # installing manual pages.
       +        # installing manual pages for tools.
                mkdir -p ${DESTDIR}${MANPREFIX}/man1
                cp -f ${MAN1} ${DESTDIR}${MANPREFIX}/man1
                for m in $(MAN1); do chmod 644 ${DESTDIR}${MANPREFIX}/man1/$$m; done
       @@ -62,10 +78,6 @@ install: all
        uninstall:
                # removing executable files.
                for f in $(BIN); do rm -f ${DESTDIR}${PREFIX}/bin/$$f; done
       -        # removing example files.
       -        rm -f \
       -                ${DESTDIR}${PREFIX}/share/${NAME}/README
       -        -rmdir ${DESTDIR}${PREFIX}/share/${NAME}
                # removing manual pages.
                for m in $(MAN1); do rm -f ${DESTDIR}${MANPREFIX}/man1/$$m; done
        
   DIR diff --git a/config.mk b/config.mk
       @@ -2,30 +2,27 @@
        
        # paths
        PREFIX = /usr/local
       -MANPREFIX = ${PREFIX}/share/man
       +MANPREFIX = ${PREFIX}/man
        
       -# includes and libs
       -LIBS = -lc
       +# compiler and linker
       +CC = cc
       +AR = ar
       +RANLIB = ranlib
        
        # debug
        #CFLAGS = -fstack-protector-all -O0 -g -std=c99 -Wall -Wextra -pedantic \
        #        -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -D_BSD_SOURCE
       -#LDFLAGS = ${LIBS}
       +#LDFLAGS =
        
        # optimized
       -CFLAGS = -O2 -std=c99 \
       -        -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -D_BSD_SOURCE
       -LDFLAGS = -s ${LIBS}
       +CFLAGS = -O2 -std=c99
       +CPPFLAGS = -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -D_BSD_SOURCE
       +LDFLAGS = -s
        
        # optimized static
       -#CFLAGS = -static -O2 -std=c99 \
       -#        -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -D_BSD_SOURCE
       -#LDFLAGS = -static -s ${LIBS}
       +#CFLAGS = -static -O2 -std=c99
       +CPPFLAGS = -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -D_BSD_SOURCE
       +#LDFLAGS = -static -s
        
       -# uncomment for compat
       -CFLAGS += -DCOMPAT
       -# uncomment if your libc doesn't support strlcat, strlcpy and strtonum.
       -EXTRAOBJ = strlcat.o strlcpy.o
       -
       -# compiler and linker
       -#CC = cc
       +# OpenBSD 5.9+: use pledge(2)
       +#CPPFLAGS += -DUSE_PLEDGE
   DIR diff --git a/tscrape.c b/tscrape.c
       @@ -11,7 +11,6 @@
        #include <time.h>
        #include <unistd.h>
        
       -#include "compat.h"
        #include "xml.h"
        
        #define STRP(s) s,sizeof(s)-1
       @@ -27,6 +26,13 @@ enum {
                Username  = 64
        };
        
       +/* for compatibility with libcs that don't have strlcat or strlcpy. The
       + * functions are synced from OpenBSD */
       +#undef strlcat
       +size_t strlcat(char *, const char *, size_t);
       +#undef strlcpy
       +size_t strlcpy(char *, const char *, size_t);
       +
        /* data */
        static char fullname[128];
        static char timestamp[16];