summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2013-10-24 21:58:25 +0200
committerMichael Stahl <mstahl@redhat.com>2013-10-25 11:42:40 +0200
commit30fc3d6cff15ceabea6e1f9c4683cd383c322d72 (patch)
tree69f026eb0cfd6c07e22c0862db468dd08be9af7d
parent4bd53d1a8011988920a33d89b4d70b7d232bdbeb (diff)
gbuild: refactor Jar target to stop using OUTDIR
- gb_Jar_get_target points to layer-specific location - remove gb_Jar_get_outdir_target - add OXT and NONE layers - add a rule for every installed Jar to avoid problems with conflicting pattern rules in instdir Change-Id: Icf11869a454a7a52791c5ae257fc5da87aa46dc2
-rw-r--r--solenv/gbuild/Jar.mk44
-rw-r--r--solenv/gbuild/JavaClassSet.mk6
-rw-r--r--solenv/gbuild/JunitTest.mk4
-rw-r--r--solenv/gbuild/TargetLocations.mk3
4 files changed, 30 insertions, 27 deletions
diff --git a/solenv/gbuild/Jar.mk b/solenv/gbuild/Jar.mk
index b71c9dcd3631..2c6ba148a711 100644
--- a/solenv/gbuild/Jar.mk
+++ b/solenv/gbuild/Jar.mk
@@ -23,8 +23,11 @@ gb_Jar_JAVACOMMAND := $(JAVAINTERPRETER)
gb_Jar_JARCOMMAND := jar
gb_Jar_LAYER_DIRS := \
- OOO:$(LIBO_SHARE_JAVA_FOLDER) \
- URE:$(LIBO_URE_SHARE_JAVA_FOLDER)
+ URE:$(INSTROOT)/$(LIBO_URE_SHARE_JAVA_FOLDER) \
+ OOO:$(INSTROOT)/$(LIBO_SHARE_JAVA_FOLDER) \
+ OXT:$(WORKDIR)/Jar \
+ NONE:$(WORKDIR)/Jar \
+
# location of files going to be packed into .jar file
define gb_Jar_get_workdir
@@ -37,7 +40,7 @@ $(call gb_Jar_get_workdir,$(1))/META-INF/MANIFEST.MF
endef
gb_Jar__get_layer = $(strip $(foreach group,$(gb_Jar_VALIDGROUPS),$(if $(filter $(1),$(gb_Jar_$(group))),$(group))))
-gb_Jar__get_dir_for_layer = $(patsubst $(1):%,$(INSTROOT)/%,$(filter $(1):%,$(gb_Jar_LAYER_DIRS)))
+gb_Jar__get_dir_for_layer = $(patsubst $(1):%,%,$(filter $(1):%,$(gb_Jar_LAYER_DIRS)))
gb_Jar_get_install_target = $(call gb_Jar__get_dir_for_layer,$(call gb_Jar__get_layer,$(1)))/$(1).jar
# creates classset and META-INF folders if they don't exist
@@ -52,7 +55,7 @@ gb_Jar_get_install_target = $(call gb_Jar__get_dir_for_layer,$(call gb_Jar__get_
# the archive with the main class hierarchy and then updating it from
# the other one(s), which seems to work .-)
define gb_Jar__command
- $(call gb_Output_announce,$*,$(true),JAR,3)
+ $(call gb_Output_announce,$(1),$(true),JAR,3)
$(call gb_Helper_abbreviate_dirs,\
mkdir -p $(call gb_Jar_get_workdir,$(1))/META-INF && \
echo Manifest-Version: 1.0 > $(call gb_Jar_get_manifest_target,$(1)) && \
@@ -70,20 +73,25 @@ endef
$(call gb_Jar_get_clean_target,%) : $(call gb_JavaClassSet_get_clean_target,$(call gb_Jar_get_classsetname,%))
$(call gb_Output_announce,$*,$(false),JAR,3)
$(call gb_Helper_abbreviate_dirs,\
- rm -f $(call gb_Jar_get_target,$*) $(call gb_Jar_get_outdir_target,$*))
+ rm -f $(call gb_Jar_get_target,$*))
-# the outdir target depends on the workdir target and is built by delivering the latter
# the workdir target is created by cd'ing to the target directory and adding/updating the files
# rule for creating the jar file using the command defined above
-$(call gb_Jar_get_target,%) : $(call gb_JavaClassSet_get_target,$(call gb_Jar_get_classsetname,%))
- $(call gb_Jar__command,$*,$@,$*,$?)
+$(WORKDIR)/Jar/%.jar :
+ $(call gb_Jar__command,$*,$@)
+
+# call gb_Jar__make_installed_rule,jar
+define gb_Jar__make_installed_rule
+$(call gb_Jar_get_target,$(1)) :
+ $$(call gb_Jar__command,$(1),$(call gb_Jar_get_target,$(1)))
+
+endef
# resets scoped variables (see explanations where they are set)
# creates a class set and a dependency to it
# registers target and clean target
# adds jar files to DeliverLogTarget
-# adds dependency for outdir target to workdir target (pattern rule for delivery is in Package.mk)
define gb_Jar_Jar
ifeq (,$$(findstring $(1),$$(gb_Jar_KNOWN)))
$$(eval $$(call gb_Output_info,Currently known jars are: $(sort $(gb_Jar_KNOWN)),ALL))
@@ -94,18 +102,14 @@ $(call gb_Jar_get_target,$(1)) : JARCLASSPATH :=
$(call gb_Jar_get_target,$(1)) : PACKAGEROOTS :=
$(call gb_Jar_get_target,$(1)) : PACKAGEDIRS :=
$(call gb_Jar_get_target,$(1)) : PACKAGEFILES :=
+$(call gb_Jar_get_target,$(1)) : \
+ $(call gb_JavaClassSet_get_target,$(call gb_Jar_get_classsetname,$(1)))
$(call gb_JavaClassSet_JavaClassSet,$(call gb_Jar_get_classsetname,$(1)))
-$(eval $(call gb_Module_register_target,$(call gb_Jar_get_outdir_target,$(1)),$(call gb_Jar_get_clean_target,$(1))))
-$(call gb_Helper_make_userfriendly_targets,$(1),Jar,$(call gb_Jar_get_outdir_target,$(1)))
-$(call gb_Deliver_add_deliverable,$(call gb_Jar_get_outdir_target,$(1)),$(call gb_Jar_get_target,$(1)),$(1))
-$(call gb_Jar_get_outdir_target,$(1)) : $(call gb_Jar_get_target,$(1))
-$(call gb_Jar_get_outdir_target,$(1)) :| $(dir $(call gb_Jar_get_outdir_target,$(1))).dir
-
-$(if $(filter OOO URE,$(call gb_Jar__get_layer,$(1))),\
-$(call gb_Helper_install,$(call gb_Jar_get_outdir_target,$(1)), \
- $(call gb_Jar_get_install_target,$(1)), \
- $(call gb_Jar_get_target,$(1))) \
-)
+$(eval $(call gb_Module_register_target,$(call gb_Jar_get_target,$(1)),$(call gb_Jar_get_clean_target,$(1))))
+$(call gb_Helper_make_userfriendly_targets,$(1),Jar,$(call gb_Jar_get_target,$(1)))
+
+# installed jars need a rule to build!
+$(if $(findstring $(INSTDIR),$(call gb_Jar_get_target,$(1))),$(call gb_Jar__make_installed_rule,$(1)))
endef
diff --git a/solenv/gbuild/JavaClassSet.mk b/solenv/gbuild/JavaClassSet.mk
index 64a2fdc6661b..806300820d3a 100644
--- a/solenv/gbuild/JavaClassSet.mk
+++ b/solenv/gbuild/JavaClassSet.mk
@@ -120,9 +120,9 @@ ifneq (,$$(filter-out $(gb_Jar_KNOWN),$(2)))
$$(eval $$(call gb_Output_info,currently known jars are: $(sort $(gb_Jar_KNOWN)),ALL))
$$(eval $$(call gb_Output_error,Cannot link against jar $$(filter-out $(gb_Jar_KNOWN),$(2)). Jars must be registered in Repository.mk))
endif
-$(call gb_JavaClassSet_get_target,$(1)) : $(call gb_Jar_get_outdir_target,$(2))
-$(call gb_JavaClassSet_get_target,$(1)) : JARDEPS += $(call gb_Jar_get_outdir_target,$(2))
-$(call gb_JavaClassSet_add_classpath,$(1),$(call gb_Jar_get_outdir_target,$(2)))
+$(call gb_JavaClassSet_get_target,$(1)) : $(call gb_Jar_get_target,$(2))
+$(call gb_JavaClassSet_get_target,$(1)) : JARDEPS += $(call gb_Jar_get_target,$(2))
+$(call gb_JavaClassSet_add_classpath,$(1),$(call gb_Jar_get_target,$(2)))
endef
diff --git a/solenv/gbuild/JunitTest.mk b/solenv/gbuild/JunitTest.mk
index 3d01c5c5e361..5e6e695ff2d7 100644
--- a/solenv/gbuild/JunitTest.mk
+++ b/solenv/gbuild/JunitTest.mk
@@ -102,8 +102,8 @@ endef
define gb_JunitTest_use_jar
$(call gb_JavaClassSet_use_jar,$(call gb_JunitTest_get_classsetname,$(1)),$(2))
-$(call gb_JunitTest_get_target,$(1)) : T_CP := $$(T_CP)$$(gb_CLASSPATHSEP)$(call gb_Jar_get_outdir_target,$(2))
-$(call gb_JunitTest_get_target,$(1)) : $(call gb_Jar_get_outdir_target,$(2))
+$(call gb_JunitTest_get_target,$(1)) : T_CP := $$(T_CP)$$(gb_CLASSPATHSEP)$(call gb_Jar_get_target,$(2))
+$(call gb_JunitTest_get_target,$(1)) : $(call gb_Jar_get_target,$(2))
endef
diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk
index 040dfdf4722a..6131af1ababe 100644
--- a/solenv/gbuild/TargetLocations.mk
+++ b/solenv/gbuild/TargetLocations.mk
@@ -36,7 +36,6 @@ gb_InstallScript_get_target = $(OUTDIR)/bin/$(1)$(gb_InstallScript_EXT)
gb_ResTarget_get_unittest_target = \
$(OUTDIR)/unittest/install/$(LIBO_SHARE_RESOURCE_FOLDER)/$(1).res
gb_UnoApi_get_target = $(OUTDIR)/bin/$(1).rdb
-gb_Jar_get_outdir_target = $(OUTDIR)/bin/$(1).jar
# instdir target patterns
@@ -121,7 +120,7 @@ gb_InstallModuleTarget_get_filelist = $(WORKDIR)/InstallModuleTarget/$(1).fileli
gb_InstallModuleTarget_get_target = $(WORKDIR)/InstallModuleTarget/$(1).filelist
gb_InstallScriptTarget_get_target = $(WORKDIR)/InstallScriptTarget/$(1)$(gb_InstallScript_EXT)
gb_InternalUnoApi_get_target = $(WORKDIR)/InternalUnoApi/$(1).done
-gb_Jar_get_target = $(WORKDIR)/Jar/$(1).jar
+gb_Jar_get_target = $(call gb_Jar_get_install_target,$(1))
gb_Jar_get_classsetname = Jar/$(1)
gb_JavaClassSet_get_classdir = $(WORKDIR)/JavaClassSet/$(1)
gb_JavaClassSet_get_repo_target = $(WORKDIR)/JavaClassSet/$(2)/$(1).done