sbase/Makefile
sin 74ac827587 Require GNU make to build sbase
We seem to have problems building individual tools across various
make implementations.  If anyone can step up and fix this we will
remove the dependency on GNU make.
2014-11-17 13:54:24 +00:00

187 lines
3.2 KiB
Makefile

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 = libutil.a
LIBSRC =\
util/agetcwd.c\
util/agetline.c\
util/apathmax.c\
util/concat.c\
util/cp.c\
util/crypt.c\
util/ealloc.c\
util/enmasse.c\
util/eprintf.c\
util/eregcomp.c\
util/estrtod.c\
util/estrtol.c\
util/fnck.c\
util/getlines.c\
util/human.c\
util/md5.c\
util/mode.c\
util/putword.c\
util/recurse.c\
util/rm.c\
util/sha1.c\
util/sha256.c\
util/sha512.c\
util/strlcat.c\
util/strlcpy.c
BIN =\
basename\
cal\
cat\
chgrp\
chmod\
chown\
chroot\
cksum\
cmp\
col\
cols\
comm\
cp\
csplit\
cut\
date\
dirname\
du\
echo\
env\
expand\
expr\
false\
fold\
grep\
head\
hostname\
kill\
link\
ln\
logname\
ls\
md5sum\
mkdir\
mkfifo\
mktemp\
mv\
nice\
nl\
nohup\
paste\
printenv\
printf\
pwd\
readlink\
renice\
rm\
rmdir\
sleep\
setsid\
sort\
split\
sponge\
strings\
sync\
tail\
tar\
tee\
test\
touch\
tr\
true\
tty\
uudecode\
uuencode\
uname\
unexpand\
uniq\
unlink\
seq\
sha1sum\
sha256sum\
sha512sum\
wc\
xargs\
yes
LIBOBJ = $(LIBSRC:.c=.o)
OBJ = $(BIN:=.o) $(LIBOBJ)
SRC = $(BIN:=.c)
MAN = $(BIN:=.1)
all: $(BIN)
$(BIN): $(LIB)
$(OBJ): $(HDR) config.mk
.o:
$(LD) $(LDFLAGS) -o $@ $< $(LIB)
.c.o:
$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
$(LIB): $(LIBOBJ)
$(AR) -r -c $@ $?
$(RANLIB) $@
install: all
mkdir -p $(DESTDIR)$(PREFIX)/bin
cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin
cd $(DESTDIR)$(PREFIX)/bin && chmod 755 $(BIN)
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:
cd $(DESTDIR)$(PREFIX)/bin && rm -f $(BIN)
cd $(DESTDIR)$(MANPREFIX)/man1 && rm -f $(MAN)
dist: clean
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: $(LIB) $(SRC)
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/$@.c
echo '#include <stdio.h>' >> build/$@.c
echo '#include <stdlib.h>' >> build/$@.c
echo '#include <string.h>' >> build/$@.c
echo '#include "util.h"' >> build/$@.c
for f in $(SRC); do echo "int `basename $$f .c`_main(int, char **);" >> build/$@.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/$@.c
for f in $(SRC); do echo "else if(!strcmp(s, \"`basename $$f .c`\")) return `basename $$f .c`_main(argc, argv);" >> build/$@.c; done
echo 'else {' >> build/$@.c
for f in $(SRC); do echo "printf(\"`basename $$f .c`\"); putchar(' ');" >> build/$@.c; done
echo "putchar(0xa); }; return 0; }" >> build/$@.c
$(LD) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ build/*.c $(LIB)
rm -r build
clean:
rm -f $(BIN) $(OBJ) $(LIBOBJ) $(LIB) sbase-box sbase-$(VERSION).tar.gz
.PHONY:
all binlib bin install uninstall dist sbase-box clean