V_AT = $(V_AT_$V)
V_AT_0 = @
-JDK = /usr/lib/jvm/java-8-openjdk-amd64
+JDK = /usr/lib/jvm/default-java
JDK_PLAT = linux
INCLUDES = $(JDK)/include $(JDK)/include/$(JDK_PLAT)
+PKGS = mLib catacomb
+PKGS_CFLAGS := $(foreach p,$(PKGS),$(shell pkg-config --cflags $p))
+PKGS_LIBS := $(foreach p,$(PKGS),$(shell pkg-config --libs $p))
+
CC = gcc
-CFLAGS = -O0 -g -Wall -fPIC $(addprefix -I,$(INCLUDES))
+CFLAGS = -O2 -g -Wall -fPIC $(addprefix -I,$(INCLUDES))
+CFLAGS += $(PKGS_CFLAGS)
LD = gcc
+LIBS = $(PKGS_LIBS)
LDFLAGS.so = -shared
JAVAC = javac
-JAVAFLAGS = -d .
+JAVAFLAGS =
+
+SCALAC = fsc
+SCALAFLAGS = -optimise
-SCALAC = scalac
-SCALAFLAGS = -d . -optimise
+## Hack around https://issues.scala-lang.org/browse/SI-9689
+SCALAFLAGS += -Yno-load-impl-class
all::
.PHONY: all
$(call v_tag,CC)$(CC) -c $(CFLAGS) -MMD -o$@ $<
CLEANFILES += *.o *.d
+CLASSDIR = cls/
%.stamp: %.java
- $(call v_tag,JAVAC)$(JAVAC) $(JAVAFLAGS) $< && echo built >$@
+ $(call v_tag,JAVAC)mkdir -p $(CLASSDIR) && \
+ $(JAVAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(JAVAFLAGS) $< && \
+ echo built >$@
+ $(V_AT)$(SCALAC) -reset
%.stamp: %.scala
- $(call v_tag,SCALAC)$(SCALAC) $(SCALAFLAGS) $< && echo built >$@
+ $(call v_tag,SCALAC)mkdir -p $(CLASSDIR) && \
+ $(SCALAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(SCALAFLAGS) $< && \
+ echo built >$@
CLEANFILES += *.stamp
+clean::; rm -rf $(CLASSDIR)
objects = $(patsubst %.c,%$2,$1)
TARGETS += libtoy.so
libtoy.so_SOURCES = jni.c
libtoy.so: $(call objects,$(libtoy.so_SOURCES),.o)
- $(call v_tag,LD)$(LD) $(LDFLAGS.so) -o$@ $^
+ $(call v_tag,LD)$(LD) $(LDFLAGS.so) -o$@ $^ $(LIBS)
-clean::; rm -rf uk/
+TARGETS += util.stamp
-TARGETS += jni.stamp
+TARGETS += sys.stamp
+sys.stamp: util.stamp
-TARGETS += sock.stamp
-sock.stamp: jni.stamp
+TARGETS += admin.stamp
+admin.stamp: util.stamp sys.stamp
TARGETS += main.stamp
-main.stamp: jni.stamp sock.stamp
+main.stamp: sys.stamp
all:: $(TARGETS)
ALLSOURCES += $(foreach t,$(TARGETS),$($t_SOURCES))