aboutsummaryrefslogtreecommitdiffstats
path: root/configure
blob: 6a73fa4ae499ff6c5bc41bb69c9753cf674c0f7a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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