4 v_tag = $(call v_tag_$V,$1)
5 v_tag_0 = @printf " %-8s %s\n" "$1" "$@";
9 JDK = /usr/lib/jvm/default-java
11 INCLUDES = $(JDK)/include $(JDK)/include/$(JDK_PLAT)
14 PKGS_CFLAGS := $(foreach p,$(PKGS),$(shell pkg-config --cflags $p))
15 PKGS_LIBS := $(foreach p,$(PKGS),$(shell pkg-config --libs $p))
18 CFLAGS = -O2 -g -Wall -pedantic -Werror \
19 -fPIC $(addprefix -I,$(INCLUDES))
20 CFLAGS += $(PKGS_CFLAGS)
30 SCALAFLAGS = -optimise -Xlint -Xlint:-package-object-classes \
31 -Yinline-warnings:false
33 ## Hack around https://issues.scala-lang.org/browse/SI-9689
34 SCALAFLAGS += -Yno-load-impl-class
42 $(call v_tag,CC)mkdir -p $(OUTDIR) && $(CC) -c $(CFLAGS) -MMD -o$@ $<
43 CLEANFILES += $(OUTDIR)*.o $(OUTDIR)*.d
45 stamp = $(patsubst %,$(OUTDIR)%.stamp,$1)
46 CLASSDIR = $(OUTDIR)cls/
47 $(OUTDIR)%.stamp: %.java
48 $(call v_tag,JAVAC)mkdir -p $(CLASSDIR) && \
49 $(JAVAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(JAVAFLAGS) $< && \
51 $(V_AT)$(SCALAC) -reset
52 $(OUTDIR)%.stamp: %.scala
53 $(call v_tag,SCALAC)mkdir -p $(CLASSDIR) && \
54 $(SCALAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(SCALAFLAGS) $< && \
56 CLEANFILES += $(OUTDIR)*.stamp
57 clean::; rm -rf $(CLASSDIR)
59 objects = $(patsubst %.c,$(OUTDIR)%$2,$1)
61 TARGETS += $(OUTDIR)libtoy.so
62 libtoy.so_SOURCES = jni.c
63 $(OUTDIR)libtoy.so: $(call objects,$(libtoy.so_SOURCES),.o)
64 $(call v_tag,LD)$(LD) $(LDFLAGS.so) -o$@ $^ $(LIBS)
74 keys_DEPS = tar sys util
78 $(foreach c,$(CLASSES),$(eval $(call stamp,$c): $(call stamp,$($c_DEPS))))
79 TARGETS += $(call stamp,$(CLASSES))
82 ALLSOURCES += $(foreach t,$(TARGETS),$($t_SOURCES))
85 scala -cp $(CLASSDIR) -Djava.library.path=$(OUTDIR)
87 clean::; rm -f $(CLEANFILES) $(TARGETS)
90 -include $(call objects,$(ALLSOURCES),.d)