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
)