Commit | Line | Data |
---|---|---|
3a2f1a4b MW |
1 | ### -*-makefile-*- |
2 | ||
3 | V = 0 | |
4 | v_tag = $(call v_tag_$V,$1) | |
5 | v_tag_0 = @printf " %-8s %s\n" "$1" "$@"; | |
6 | V_AT = $(V_AT_$V) | |
7 | V_AT_0 = @ | |
8 | ||
ac8e32b7 | 9 | JDK = /usr/lib/jvm/default-java |
3a2f1a4b MW |
10 | JDK_PLAT = linux |
11 | INCLUDES = $(JDK)/include $(JDK)/include/$(JDK_PLAT) | |
12 | ||
8eabb4ff MW |
13 | PKGS = mLib catacomb |
14 | PKGS_CFLAGS := $(foreach p,$(PKGS),$(shell pkg-config --cflags $p)) | |
15 | PKGS_LIBS := $(foreach p,$(PKGS),$(shell pkg-config --libs $p)) | |
16 | ||
3a2f1a4b | 17 | CC = gcc |
8eabb4ff MW |
18 | CFLAGS = -O2 -g -Wall -fPIC $(addprefix -I,$(INCLUDES)) |
19 | CFLAGS += $(PKGS_CFLAGS) | |
3a2f1a4b MW |
20 | |
21 | LD = gcc | |
8eabb4ff | 22 | LIBS = $(PKGS_LIBS) |
3a2f1a4b MW |
23 | LDFLAGS.so = -shared |
24 | ||
25 | JAVAC = javac | |
b4cf5ec4 | 26 | JAVAFLAGS = |
3a2f1a4b | 27 | |
81502866 | 28 | SCALAC = fsc |
b4cf5ec4 | 29 | SCALAFLAGS = -optimise |
3a2f1a4b | 30 | |
8eabb4ff MW |
31 | ## Hack around https://issues.scala-lang.org/browse/SI-9689 |
32 | SCALAFLAGS += -Yno-load-impl-class | |
33 | ||
3a2f1a4b MW |
34 | all:: |
35 | .PHONY: all | |
36 | ||
37 | %.o: %.c | |
38 | $(call v_tag,CC)$(CC) -c $(CFLAGS) -MMD -o$@ $< | |
39 | CLEANFILES += *.o *.d | |
40 | ||
2a02a846 | 41 | CLASSDIR = cls/ |
3a2f1a4b | 42 | %.stamp: %.java |
2a02a846 MW |
43 | $(call v_tag,JAVAC)mkdir -p $(CLASSDIR) && \ |
44 | $(JAVAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(JAVAFLAGS) $< && \ | |
45 | echo built >$@ | |
8eabb4ff | 46 | $(V_AT)$(SCALAC) -reset |
3a2f1a4b | 47 | %.stamp: %.scala |
2a02a846 MW |
48 | $(call v_tag,SCALAC)mkdir -p $(CLASSDIR) && \ |
49 | $(SCALAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(SCALAFLAGS) $< && \ | |
50 | echo built >$@ | |
3a2f1a4b | 51 | CLEANFILES += *.stamp |
2a02a846 | 52 | clean::; rm -rf $(CLASSDIR) |
3a2f1a4b MW |
53 | |
54 | objects = $(patsubst %.c,%$2,$1) | |
55 | ||
56 | TARGETS += libtoy.so | |
57 | libtoy.so_SOURCES = jni.c | |
58 | libtoy.so: $(call objects,$(libtoy.so_SOURCES),.o) | |
8eabb4ff MW |
59 | $(call v_tag,LD)$(LD) $(LDFLAGS.so) -o$@ $^ $(LIBS) |
60 | ||
61 | TARGETS += util.stamp | |
3a2f1a4b | 62 | |
8eabb4ff | 63 | TARGETS += sys.stamp |
25c35469 | 64 | sys.stamp: util.stamp |
3a2f1a4b | 65 | |
7894831e | 66 | TARGETS += admin.stamp |
25c35469 | 67 | admin.stamp: util.stamp sys.stamp |
7894831e | 68 | |
3a2f1a4b | 69 | TARGETS += main.stamp |
25c35469 | 70 | main.stamp: sys.stamp |
3a2f1a4b MW |
71 | |
72 | all:: $(TARGETS) | |
73 | ALLSOURCES += $(foreach t,$(TARGETS),$($t_SOURCES)) | |
74 | ||
75 | clean::; rm -f $(CLEANFILES) $(TARGETS) | |
76 | .PHONY: clean | |
77 | ||
78 | -include $(call objects,$(ALLSOURCES),.d) |