-
Notifications
You must be signed in to change notification settings - Fork 4
/
Makefile
72 lines (53 loc) · 1.97 KB
/
Makefile
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
# Makefile for Wikilon's Awelon Bytecode Runtime
W := -Wall -Wextra -pedantic -Werror -Wno-unused-parameter
THREADS := -pthread
OPT := -O2 -flto
CFLAGS := $(THREADS) $(OPT) $(W) -fPIC -g -std=gnu11
CC := gcc $(CFLAGS)
OBJECTS := lmdb/mdb.o lmdb/midl.o murmur3/murmur3.o futil.o utf8.o wikrt.o wikrt_db.o
INSTALL_PREFIX := /usr/local
.PHONY: all lib clean install uninstall runtests
all: lib runtests
lib: libwikilon-runtime.so
clean:
rm -f $(OBJECTS)
rm -f libwikilon-runtime.so
rm -f test
rm -rf testdir
install: libwikilon-runtime.so wikilon-runtime.h
mkdir -p $(INSTALL_PREFIX) && test -w $(INSTALL_PREFIX)
mkdir -p $(INSTALL_PREFIX)/lib
mkdir -p $(INSTALL_PREFIX)/include
cp ./libwikilon-runtime.so $(INSTALL_PREFIX)/lib
cp ./wikilon-runtime.h $(INSTALL_PREFIX)/include
uninstall:
test -w $(INSTALL_PREFIX)
rm -f $(INSTALL_PREFIX)/lib/libwikilon-runtime.so
rm -f $(INSTALL_PREFIX)/include/wikilon-runtime.h
runtests: testSuite
LD_LIBRARY_PATH=. ./testSuite
testSuite: wikilon-runtime.h libwikilon-runtime.so testSuite.c
$(CC) -o $@ testSuite.c -L. -lwikilon-runtime
libwikilon-runtime.so: $(OBJECTS) wikrt.lds
$(CC) -shared -Wl,--version-script=wikrt.lds,--strip-all,-soname=$@ -o $@ $(OBJECTS)
# I'll add more files as I need them.
wikrt.o: wikrt.c wikrt.h utf8.h lmdb/lmdb.h
$(CC) -o $@ -c wikrt.c
wikrt_db.o: wikrt_db.c wikrt.h futil.h lmdb/lmdb.h
$(CC) -o $@ -c wikrt_db.c
# unicode utilities
utf8.o: utf8.c utf8.h
$(CC) -o $@ -c utf8.c
# filesystem utilities
futil.o: futil.c futil.h
$(CC) -o $@ -c futil.c
# Directly include copy of LMDB key-value database
lmdb/mdb.o: lmdb/mdb.c lmdb/lmdb.h lmdb/midl.h
$(CC) -Ilmdb -o $@ -c lmdb/mdb.c
lmdb/midl.o: lmdb/midl.c lmdb/midl.h
$(CC) -Ilmdb -o $@ -c lmdb/midl.c
# Directly include copy of Murmur3 hash
murmur3/murmur3.o: murmur3/murmur3.c murmur3/murmur3.h
$(CC) -Imurmur3 -o $@ -c murmur3/murmur3.c
# Maybe introduce Keccak or Blake2? E.g. for HMAC on stowage?
# Maybe introduce zstd to compress stowed data and streams