commit 86e6dfdd93c1bee7401b5d9e67494b04035085ed
Author: sin <[email protected]>
Date:   Sun Nov 16 16:33:51 2014 +0000

    Convert build system to mk
    
    There's some more cleanup to be done here.

diff --git a/Makefile b/Makefile
deleted file mode 100644
index 575f31b..0000000
--- a/Makefile
+++ /dev/null
@@ -1,195 +0,0 @@
-include config.mk
-
-.POSIX:
-.SUFFIXES: .c .o
-
-HDR = \
-       arg.h    \
-       crypt.h  \
-       fs.h     \
-       md5.h    \
-       queue.h  \
-       sha1.h   \
-       sha256.h \
-       sha512.h \
-       text.h   \
-       util.h
-
-LIB = \
-       util/agetcwd.o   \
-       util/agetline.o  \
-       util/apathmax.o  \
-       util/concat.o    \
-       util/cp.o        \
-       util/crypt.o     \
-       util/ealloc.o    \
-       util/enmasse.o   \
-       util/eprintf.o   \
-       util/eregcomp.o  \
-       util/estrtod.o   \
-       util/estrtol.o   \
-       util/fnck.o      \
-       util/getlines.o  \
-       util/human.o     \
-       util/md5.o       \
-       util/mode.o      \
-       util/putword.o   \
-       util/recurse.o   \
-       util/rm.o        \
-       util/sha1.o      \
-       util/sha256.o    \
-       util/sha512.o    \
-       util/strlcat.o   \
-       util/strlcpy.o
-
-SRC = \
-       basename.c \
-       cal.c      \
-       cat.c      \
-       chgrp.c    \
-       chmod.c    \
-       chown.c    \
-       chroot.c   \
-       cksum.c    \
-       cmp.c      \
-       col.c      \
-       cols.c     \
-       comm.c     \
-       cp.c       \
-       csplit.c   \
-       cut.c      \
-       date.c     \
-       dirname.c  \
-       du.c       \
-       echo.c     \
-       env.c      \
-       expand.c   \
-       expr.c     \
-       false.c    \
-       fold.c     \
-       grep.c     \
-       head.c     \
-       hostname.c \
-       kill.c     \
-       link.c     \
-       ln.c       \
-       logname.c  \
-       ls.c       \
-       md5sum.c   \
-       mkdir.c    \
-       mkfifo.c   \
-       mktemp.c   \
-       mv.c       \
-       nice.c     \
-       nl.c       \
-       nohup.c    \
-       paste.c    \
-       printenv.c \
-       printf.c   \
-       pwd.c      \
-       readlink.c \
-       renice.c   \
-       rm.c       \
-       rmdir.c    \
-       sleep.c    \
-       setsid.c   \
-       sort.c     \
-       split.c    \
-       sponge.c   \
-       strings.c  \
-       sync.c     \
-       tail.c     \
-       tar.c      \
-       tee.c      \
-       test.c     \
-       touch.c    \
-       tr.c       \
-       true.c     \
-       tty.c      \
-       uudecode.c \
-       uuencode.c \
-       uname.c    \
-       unexpand.c \
-       uniq.c     \
-       unlink.c   \
-       seq.c      \
-       sha1sum.c  \
-       sha256sum.c\
-       sha512sum.c\
-       wc.c       \
-       xargs.c    \
-       yes.c
-
-OBJ = $(SRC:.c=.o) $(LIB)
-BIN = $(SRC:.c=)
-MAN = $(SRC:.c=.1)
-
-all: binlib
-
-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 $@ $?
-       @ranlib $@
-
-install: all
-       @echo installing executables to $(DESTDIR)$(PREFIX)/bin
-       @mkdir -p $(DESTDIR)$(PREFIX)/bin
-       @cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin
-       @cd $(DESTDIR)$(PREFIX)/bin && chmod 755 $(BIN)
-       @echo installing manual pages to $(DESTDIR)$(MANPREFIX)/man1
-       @mkdir -p $(DESTDIR)$(MANPREFIX)/man1
-       @for m in $(MAN); do sed "s/VERSION/$(VERSION)/g" < "$$m" > 
$(DESTDIR)$(MANPREFIX)/man1/"$$m"; done
-       @cd $(DESTDIR)$(MANPREFIX)/man1 && 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)/man1
-       @cd $(DESTDIR)$(MANPREFIX)/man1 && rm -f $(MAN)
-
-dist: clean
-       @echo creating dist tarball
-       @mkdir -p sbase-$(VERSION)
-       @cp -r LICENSE Makefile README TODO config.mk $(SRC) $(MAN) util $(HDR) 
sbase-$(VERSION)
-       @tar -cf sbase-$(VERSION).tar sbase-$(VERSION)
-       @gzip sbase-$(VERSION).tar
-       @rm -rf sbase-$(VERSION)
-
-sbase-box: $(SRC) util.a
-       @echo creating box binary
-       @mkdir -p build
-       @cp $(HDR) build
-       @for f in $(SRC); do sed "s/^main(/`basename $$f .c`_&/" < $$f > 
build/$$f; done
-       @echo '#include <libgen.h>'  > build/[email protected]
-       @echo '#include <stdio.h>'  >> build/[email protected]
-       @echo '#include <stdlib.h>' >> build/[email protected]
-       @echo '#include <string.h>' >> build/[email protected]
-       @echo '#include "util.h"'   >> build/[email protected]
-       @for f in $(SRC); do echo "int `basename $$f .c`_main(int, char **);" 
>> build/[email protected]; done
-       @echo 'int main(int argc, char *argv[]) { char *s = basename(argv[0]); 
if(!strcmp(s,"sbase-box")) { argc--; argv++; s = basename(argv[0]); } if(0) ;' 
>> build/[email protected]
-       @for f in $(SRC); do echo "else if(!strcmp(s, \"`basename $$f .c`\")) 
return `basename $$f .c`_main(argc, argv);" >> build/[email protected]; done
-       @echo 'else {' >> build/[email protected]
-       @for f in $(SRC); do echo "printf(\"`basename $$f .c`\"); putchar(' 
');" >> build/[email protected]; done
-       @echo "putchar(0xa); }; return 0; }" >> build/[email protected]
-       @echo LD $@
-       @$(LD) -o $@ build/*.c util.a $(CFLAGS) $(LDFLAGS)
-       @rm -r build
-
-clean:
-       @echo cleaning
-       @rm -f $(BIN) $(OBJ) $(LIB) util.a sbase-box sbase-$(VERSION).tar.gz
diff --git a/config.mk b/config.mk
index c605648..bc418aa 100644
--- a/config.mk
+++ b/config.mk
@@ -3,17 +3,11 @@ VERSION = 0.0
 
 # paths
 PREFIX = /usr/local
-MANPREFIX = $(PREFIX)/share/man
+MANPREFIX = $PREFIX/share/man
 
-#CC = gcc
-#CC = musl-gcc
-LD = $(CC)
+AR = ar
+CC = cc
+LD = $CC
 CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE
-CFLAGS   = -g -std=c99 -Wall -pedantic $(CPPFLAGS)
+CFLAGS   = -g -std=c99 -Wall -pedantic $CPPFLAGS
 LDFLAGS  = -g
-
-#CC = tcc
-#LD = $(CC)
-#CPPFLAGS = -D_POSIX_C_SOURCE=200112L
-#CFLAGS   = -Os -Wall $(CPPFLAGS) -D_GNU_SOURCE
-#LDFLAGS  =
diff --git a/mkfile b/mkfile
new file mode 100644
index 0000000..5ec7d31
--- /dev/null
+++ b/mkfile
@@ -0,0 +1,177 @@
+<config.mk
+
+LIB=libutil.a
+LIBOFILES= \
+       util/agetcwd.o   \
+       util/agetline.o  \
+       util/apathmax.o  \
+       util/concat.o    \
+       util/cp.o        \
+       util/crypt.o     \
+       util/ealloc.o    \
+       util/enmasse.o   \
+       util/eprintf.o   \
+       util/eregcomp.o  \
+       util/estrtod.o   \
+       util/estrtol.o   \
+       util/fnck.o      \
+       util/getlines.o  \
+       util/human.o     \
+       util/md5.o       \
+       util/mode.o      \
+       util/putword.o   \
+       util/recurse.o   \
+       util/rm.o        \
+       util/sha1.o      \
+       util/sha256.o    \
+       util/sha512.o    \
+       util/strlcat.o   \
+       util/strlcpy.o
+
+SRC = \
+       basename.c \
+       cal.c      \
+       cat.c      \
+       chgrp.c    \
+       chmod.c    \
+       chown.c    \
+       chroot.c   \
+       cksum.c    \
+       cmp.c      \
+       col.c      \
+       cols.c     \
+       comm.c     \
+       cp.c       \
+       csplit.c   \
+       cut.c      \
+       date.c     \
+       dirname.c  \
+       du.c       \
+       echo.c     \
+       env.c      \
+       expand.c   \
+       expr.c     \
+       false.c    \
+       fold.c     \
+       grep.c     \
+       head.c     \
+       hostname.c \
+       kill.c     \
+       link.c     \
+       ln.c       \
+       logname.c  \
+       ls.c       \
+       md5sum.c   \
+       mkdir.c    \
+       mkfifo.c   \
+       mktemp.c   \
+       mv.c       \
+       nice.c     \
+       nl.c       \
+       nohup.c    \
+       paste.c    \
+       printenv.c \
+       printf.c   \
+       pwd.c      \
+       readlink.c \
+       renice.c   \
+       rm.c       \
+       rmdir.c    \
+       sleep.c    \
+       setsid.c   \
+       sort.c     \
+       split.c    \
+       sponge.c   \
+       strings.c  \
+       sync.c     \
+       tail.c     \
+       tar.c      \
+       tee.c      \
+       test.c     \
+       touch.c    \
+       tr.c       \
+       true.c     \
+       tty.c      \
+       uudecode.c \
+       uuencode.c \
+       uname.c    \
+       unexpand.c \
+       uniq.c     \
+       unlink.c   \
+       seq.c      \
+       sha1sum.c  \
+       sha256sum.c\
+       sha512sum.c\
+       wc.c       \
+       xargs.c    \
+       yes.c
+
+HFILES = \
+       arg.h    \
+       crypt.h  \
+       fs.h     \
+       md5.h    \
+       queue.h  \
+       sha1.h   \
+       sha256.h \
+       sha512.h \
+       text.h   \
+       util.h
+
+OFILES=${SRC:%.c=%.o}
+TARG=${SRC:%.c=%}
+MAN=${SRC:%.c=%.1}
+
+all:V: $LIB $TARG
+
+$LIB(%):N: %
+$LIB: ${LIBOFILES:%=$LIB(%)}
+       $AR rc $LIB $LIBOFILES
+
+%: %.o
+       $LD $LDFLAGS -o $target $prereq $LIB
+
+%.o: %.c
+       $CC $CFLAGS -o $stem.o -c $stem.c
+
+install:V: all
+       mkdir -p $DESTDIR/$PREFIX/bin
+       cp -f $TARG $DESTDIR/$PREFIX/bin
+       mkdir -p $DESTDIR/$MANPREFIX/man1
+       cp -f $MAN $DESTDIR/$MANPREFIX/man1
+
+uninstall:V: all
+       cd $DESTDIR/$PREFIX/bin
+       rm -f $TARG
+       cd $DESTDIR/$MANPREFIX/man1
+       rm -f $MAN
+
+dist:V: clean
+       mkdir -p sbase-$VERSION
+       cp -r LICENSE Makefile README TODO config.mk $SRC $MAN util $HFILES 
sbase-$VERSION
+       tar -cf sbase-$VERSION.tar sbase-$VERSION
+       gzip sbase-$VERSION.tar
+       rm -rf sbase-$VERSION
+
+sbase-box:V: $LIB $SRC $HFILES
+       echo creating box binary
+       mkdir -p build
+       cp $HFILES build
+       for f in $SRC; do sed "s/^main(/`basename $f .c`_&/" < $f > build/$f; 
done
+       echo '#include <libgen.h>'  > build/$target.c
+       echo '#include <stdio.h>'  >> build/$target.c
+       echo '#include <stdlib.h>' >> build/$target.c
+       echo '#include <string.h>' >> build/$target.c
+       echo '#include "util.h"'   >> build/$target.c
+       for f in $SRC; do echo "int `basename $f .c`_main(int, char **);" >> 
build/$target.c; done
+       echo 'int main(int argc, char *argv[]) { char *s = basename(argv[0]); 
if(!strcmp(s,"sbase-box")) { argc--; argv++; s = basename(argv[0]); } if(0) ;' 
>> build/$target.c
+       for f in $SRC; do echo "else if(!strcmp(s, \"`basename $f .c`\")) 
return `basename $f .c`_main(argc, argv);" >> build/$target.c; done
+       echo 'else {' >> build/$target.c
+       for f in $SRC; do echo "printf(\"`basename $f .c`\"); putchar(' ');" >> 
build/$target.c; done
+       echo "putchar(0xa); }; return 0; }" >> build/$target.c
+       echo LD $target
+       $LD -o $target build/*.c libutil.a $CFLAGS $LDFLAGS
+       rm -r build
+
+clean nuke:V:
+       rm -f $LIBOFILES $LIB $OFILES $TARG sbase-box sbase-$VERSION.tar.gz


Reply via email to