-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
45 lines (33 loc) · 1.21 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
BASE_DIR=$(shell pwd)
PREFIX=/usr
CC=gcc
CFLAGS=-c -Wall -fPIC -I/usr/lib/jvm/default/include -I/usr/lib/jvm/default/include/linux -I/usr/include/boolector -I/usr/include/boolector-java
LDFLAGS=-fPIC -shared -lboolector
SOURCES_DIR=${BASE_DIR}/src/main/c
OBJECTS_DIR=${BASE_DIR}/target/c
TARGET_DIR=${BASE_DIR}/lib
EXECUTABLE_NAME=libboolector-java.so
EXECUTABLE=${TARGET_DIR}/$(EXECUTABLE_NAME)
SOURCES=$(shell find '$(SOURCES_DIR)' -type f -name '*.c')
OBJECTS=$(SOURCES:$(SOURCES_DIR)/%.c=$(OBJECTS_DIR)/%.o)
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS) headers
mkdir -p $(TARGET_DIR)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@
$(OBJECTS): $(SOURCES)
mkdir -p $(OBJECTS_DIR)
$(CC) $(CFLAGS) $< -o $@
headers:
javah -d $(SOURCES_DIR) -classpath $(BASE_DIR)/src/main/java -force org.vorpal.research.boolector.Native
clean:
rm -rfi $(OBJECTS_DIR) $(EXECUTABLE)
.PHONY: install
install:
mkdir -p $(DESTDIR)$(PREFIX)/lib
mkdir -p $(DESTDIR)$(PREFIX)/include/boolector-java
cp $(EXECUTABLE) $(DESTDIR)$(PREFIX)/lib/$(EXECUTABLE_NAME)
cp $(SOURCES_DIR)/*.h $(DESTDIR)$(PREFIX)/include/boolector-java
.PHONY: uninstall
uninstall:
rm -f $(DESTDIR)$(PREFIX)/lib/$(EXECUTABLE_NAME)
rm -rf $(DESTDIR)$(PREFIX)/include/boolector-java