|
Packit |
f0b94e |
# -*- makefile -*-
|
|
Packit |
f0b94e |
# vim:set ts=8 sw=8 sts=8 noet:
|
|
Packit |
f0b94e |
#
|
|
Packit |
f0b94e |
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
Packit |
f0b94e |
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
Packit |
f0b94e |
# You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
ifndef INCLUDED_JAVA_BUILD_MK #{
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
default_bootclasspath_jars := \
|
|
Packit |
f0b94e |
$(ANDROID_SDK)/android.jar \
|
|
Packit |
f0b94e |
$(NULL)
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
default_classpath_jars := \
|
|
Packit |
f0b94e |
$(NULL)
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
# Turn a possibly empty list of JAR files into a Java classpath, like a.jar:b.jar.
|
|
Packit |
f0b94e |
# Arg 1: Possibly empty list of JAR files.
|
|
Packit |
f0b94e |
define classpath_template
|
|
Packit |
f0b94e |
$(subst $(NULL) ,:,$(strip $(1)))
|
|
Packit |
f0b94e |
endef
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
ifdef JAVA_JAR_TARGETS #{
|
|
Packit |
f0b94e |
# Arg 1: Output target name with .jar suffix, like jars/jarfile.jar.
|
|
Packit |
f0b94e |
# Intermediate class files are generated in jars/jarfile-classes.
|
|
Packit |
f0b94e |
# Arg 2: Java sources list. We use VPATH and $^ so sources can be
|
|
Packit |
f0b94e |
# relative to $(srcdir) or $(CURDIR).
|
|
Packit |
f0b94e |
# Arg 3: List of extra jars to link against. We do not use VPATH so
|
|
Packit |
f0b94e |
# jars must be relative to $(CURDIR).
|
|
Packit |
f0b94e |
# Arg 4: Additional JAVAC_FLAGS.
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
# Note: Proguard fails when stale .class files corresponding to
|
|
Packit |
f0b94e |
# removed inner classes are present in the object directory. These
|
|
Packit |
f0b94e |
# stale class files get packaged into the .jar file, which then gets
|
|
Packit |
f0b94e |
# processed by Proguard. To work around this, we always delete any
|
|
Packit |
f0b94e |
# existing jarfile-classes directory and start fresh.
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
define java_jar_template
|
|
Packit |
f0b94e |
$(1): $(2) $(3) $(default_bootclasspath_jars) $(default_classpath_jars)
|
|
Packit |
f0b94e |
$$(REPORT_BUILD)
|
|
Packit |
f0b94e |
@$$(RM) -rf $(1:.jar=)-classes
|
|
Packit |
f0b94e |
@$$(NSINSTALL) -D $(1:.jar=)-classes
|
|
Packit |
f0b94e |
@$$(if $$(filter-out .,$$(@D)),$$(NSINSTALL) -D $$(@D))
|
|
Packit |
f0b94e |
$$(JAVAC) $$(JAVAC_FLAGS)\
|
|
Packit |
f0b94e |
$(4)\
|
|
Packit |
f0b94e |
-d $(1:.jar=)-classes\
|
|
Packit |
f0b94e |
$(addprefix -bootclasspath ,$(call classpath_template,$(default_bootclasspath_jars)))\
|
|
Packit |
f0b94e |
$(addprefix -classpath ,$(call classpath_template,$(default_classpath_jars) $(3)))\
|
|
Packit |
f0b94e |
$$(filter %.java,$$^)
|
|
Packit |
f0b94e |
$$(JAR) cMf $$@ -C $(1:.jar=)-classes .
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
GARBAGE += $(1)
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
GARBAGE_DIRS += $(1:.jar=)-classes
|
|
Packit |
f0b94e |
endef
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
$(foreach jar,$(JAVA_JAR_TARGETS),\
|
|
Packit |
f0b94e |
$(if $($(jar)_DEST),,$(error Missing $(jar)_DEST))\
|
|
Packit |
f0b94e |
$(if $($(jar)_JAVAFILES) $($(jar)_PP_JAVAFILES),,$(error Must provide at least one of $(jar)_JAVAFILES and $(jar)_PP_JAVAFILES))\
|
|
Packit |
f0b94e |
$(eval $(call java_jar_template,$($(jar)_DEST),$($(jar)_JAVAFILES) $($(jar)_PP_JAVAFILES),$($(jar)_EXTRA_JARS),$($(jar)_JAVAC_FLAGS)))\
|
|
Packit |
f0b94e |
)
|
|
Packit |
f0b94e |
endif #} JAVA_JAR_TARGETS
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
INCLUDED_JAVA_BUILD_MK := 1
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
endif #} INCLUDED_JAVA_BUILD_MK
|