diff options
author | katherine <ageha@airen-no-jikken.icu> | 2019-12-10 22:40:03 -0700 |
---|---|---|
committer | katherine <ageha@airen-no-jikken.icu> | 2019-12-10 22:40:03 -0700 |
commit | 8cb7ab5550a528b0fdb75533e6dc0bcbc7a42719 (patch) | |
tree | eb02f66c14a5bf3542b2abaacc87cf2144bb032a /configure | |
download | every-8cb7ab5550a528b0fdb75533e6dc0bcbc7a42719.tar.gz |
initial commit
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/configure b/configure new file mode 100755 index 0000000..6a73fa4 --- /dev/null +++ b/configure @@ -0,0 +1,89 @@ +#!/bin/sh + +# kinda brittle, this, but mostly works +# just don't use names with whitespaces + +target='every' +srcdir='src' +sources=`find $srcdir -type f -name '*.c' | sed -e "s/$srcdir\/\(.*\).c/\1.c/"` +objdir='build' +objects=`find $srcdir -type f -name '*.c' | sed -e "s/$srcdir\/\(.*\).c/\1.o/"` + +cc='cc' +cflags='-Wall -O2' +cflagsdebug='-std=c99 -Wall -pedantic -ggdb3 -O0 -DDEBUG' +prefix='/usr/local' + + + +rls_objects=`printf %s "$objects" | sed -e "s/^/$objdir\/release\//" | tr '\n' ' '` +dbg_objects=`printf %s "$objects" | sed -e "s/^/$objdir\/debug\//" | tr '\n' ' '` + +dgen='gcc' +if [ ! `2>/dev/null which gcc` ]; then + if [ ! `2>/dev/null which clang` ]; then + echo 'err: could not find a suitable ' \ + 'compiler for calculating dependencies' + return 1 + fi + dgen='clang' +fi + +if [ -f 'Makefile' ]; then + make clean +fi + +{ + printf %s\\n '.POSIX:' + printf %s\\n '.SUFFIXES:' + printf %s\\n '' + printf %s\\n "CC = $cc" + printf %s\\n "CFLAGS = $cflags" + printf %s\\n "CFLAGSDEBUG = $cflagsdebug" + printf %s\\n "PREFIX = $prefix" + printf %s\\n '' + printf %s\\n "all: $target" + printf %s\\n '' + printf %s\\n "debug: dbg_$target" + printf %s\\n '' + printf %s\\n "install: all" + printf %s\\n ' mkdir -p $(DESTDIR)$(PREFIX)/bin' + printf %s\\n ' mkdir -p $(DESTDIR)$(PREFIX)/share/man/man1' + printf %s\\n " cp -f $target \$(DESTDIR)\$(PREFIX)/bin" + printf %s\\n " gzip < ${target}.1 > \$(DESTDIR)\$(PREFIX)/share/man/man1/${target}.1.gz" + printf %s\\n '' + printf %s\\n "$target: ${objdir}/release $rls_objects" + printf %s\\n " \$(CC) \$(LDFLAGS) -o $target $rls_objects \$(LDLIBS)" + printf %s\\n '' + printf %s\\n "dbg_$target: ${objdir}/debug $dbg_objects" + printf %s\\n " \$(CC) \$(LDFLAGS) -o dbg_$target $dbg_objects \$(LDLIBS)" + printf %s\\n '' + printf %s\\n "${objdir}/release:" + printf %s\\n " mkdir -p ${objdir}/release" + printf %s\\n '' + printf %s\\n "${objdir}/debug:" + printf %s\\n " mkdir -p ${objdir}/debug" + printf %s\\n '' + printf %s\\n 'src/version.h:' + printf %s\\n ' printf "%s\n%s\n\n%s%s%s\n\n%s\n" \' + printf %s\\n ' "#ifndef EVERY_VERSION_H" \' + printf %s\\n ' "#define EVERY_VERSION_H" \' + printf %s\\n " \"#define VERSION \\\"$target-\" \"`git describe --always --tags`\" \"\\\"\" \\" + printf %s\\n ' "#endif" > src/version.h' + printf %s\\n '' + printf %s\\n "$sources" | (while IFS= read -r s; do + $dgen $CFLAGS -MM -MG -MT ${objdir}/release/`printf %s $s | sed -e 's/\.c$/\.o/'` "$srcdir/$s" | sed -e "s/version.h/$srcdir\/version.h/" + printf %s\\n " \$(CC) -c \$(CFLAGS) -o ${objdir}/release/`printf %s $s | sed -e 's/\.c$/\.o/'` ${srcdir}/$s" + done) + printf %s\\n '' + printf %s\\n "$sources" | (while IFS= read -r s; do + $dgen $CFLAGS -MM -MG -MT ${objdir}/debug/`printf %s $s | sed -e 's/\.c$/\.o/'` "$srcdir/$s" | sed -e "s/version.h/$srcdir\/version.h/" + printf %s\\n " \$(CC) -c \$(CFLAGSDEBUG) -o ${objdir}/debug/`printf %s $s | sed -e 's/\.c$/\.o/'` ${srcdir}/$s" + done) + printf %s\\n '' + printf %s\\n 'clean:' + printf %s\\n ' rm -f src/version.h' + printf %s\\n " rm -f $target" + printf %s\\n " rm -f dbg_$target" + printf %s\\n " rm -rf $objdir" +} > Makefile |