-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
66 lines (50 loc) · 2.58 KB
/
Makefile
File metadata and controls
66 lines (50 loc) · 2.58 KB
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
.PHONY: test run native native-run native-lib benchmark native-benchmark clean
UNAME_S := $(shell uname -s)
NATIVE_DIR := target/native
SQLITE_CFLAGS ?=
SQLITE_LDFLAGS ?= -lsqlite3
SQLITE_NATIVE_IMAGE_LINKER_OPTION ?= -lsqlite3
BENCH_ARGS ?=
ifeq ($(UNAME_S),Darwin)
SHARED_EXT := dylib
SHARED_FLAGS := -dynamiclib
else
SHARED_EXT := so
SHARED_FLAGS := -shared
endif
SQLITE_ACCEL_LIB := $(NATIVE_DIR)/libffi_sqlite_accel.$(SHARED_EXT)
SQLITE_ACCEL_STATIC_LIB := $(NATIVE_DIR)/libffi_sqlite_accel.a
SQLITE_BENCH_LIB := $(NATIVE_DIR)/libffi_sqlite_bench.$(SHARED_EXT)
SQLITE_BENCH_STATIC_LIB := $(NATIVE_DIR)/libffi_sqlite_bench.a
test:
mvn test
run:
mvn -DskipTests package
java --enable-native-access=ALL-UNNAMED -cp target/classes dev.panama.sqlite.TutorialApp
native:
mvn -DskipTests package
native-image --no-fallback -cp target/classes -o target/ffi-sqlite dev.panama.sqlite.TutorialApp
native-run: native
./target/ffi-sqlite
native-lib: $(SQLITE_ACCEL_LIB) $(SQLITE_ACCEL_STATIC_LIB) $(SQLITE_BENCH_LIB) $(SQLITE_BENCH_STATIC_LIB)
$(NATIVE_DIR):
mkdir -p $(NATIVE_DIR)
$(SQLITE_ACCEL_LIB): src/main/c/ffi_sqlite_accel.c | $(NATIVE_DIR)
cc -O3 -fPIC $(SHARED_FLAGS) $(SQLITE_CFLAGS) $< $(SQLITE_LDFLAGS) -o $@
$(SQLITE_ACCEL_STATIC_LIB): src/main/c/ffi_sqlite_accel.c | $(NATIVE_DIR)
cc -O3 $(SQLITE_CFLAGS) -c $< -o $(NATIVE_DIR)/ffi_sqlite_accel.o
ar rcs $@ $(NATIVE_DIR)/ffi_sqlite_accel.o
$(SQLITE_BENCH_LIB): src/test/c/ffi_sqlite_bench.c | $(NATIVE_DIR)
cc -O3 -fPIC $(SHARED_FLAGS) $(SQLITE_CFLAGS) $< $(SQLITE_LDFLAGS) -o $@
$(SQLITE_BENCH_STATIC_LIB): src/test/c/ffi_sqlite_bench.c | $(NATIVE_DIR)
cc -O3 $(SQLITE_CFLAGS) -c $< -o $(NATIVE_DIR)/ffi_sqlite_bench.o
ar rcs $@ $(NATIVE_DIR)/ffi_sqlite_bench.o
benchmark: native-lib
mvn -DskipTests test-compile org.apache.maven.plugins:maven-dependency-plugin:3.8.1:build-classpath -Dmdep.outputFile=target/benchmark-classpath.txt
java --enable-native-access=ALL-UNNAMED -cp "target/classes:target/test-classes:$$(cat target/benchmark-classpath.txt)" dev.panama.sqlite.SqliteBenchmark $(BENCH_ARGS)
native-benchmark: native-lib
mvn -DskipTests test-compile org.apache.maven.plugins:maven-dependency-plugin:3.8.1:build-classpath -Dmdep.outputFile=target/benchmark-classpath.txt
native-image --no-fallback -H:CLibraryPath=target/native -H:NativeLinkerOption=$(SQLITE_NATIVE_IMAGE_LINKER_OPTION) --initialize-at-build-time=org.sqlite.util.ProcessRunner -cp "target/classes:target/test-classes:$$(cat target/benchmark-classpath.txt)" -o target/sqlite-benchmark dev.panama.sqlite.SqliteBenchmark
./target/sqlite-benchmark $(BENCH_ARGS)
clean:
mvn clean