diff options
author | Michael Stahl <mstahl@redhat.com> | 2013-10-24 21:58:25 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2013-10-25 11:42:40 +0200 |
commit | 30fc3d6cff15ceabea6e1f9c4683cd383c322d72 (patch) | |
tree | 69f026eb0cfd6c07e22c0862db468dd08be9af7d | |
parent | 4bd53d1a8011988920a33d89b4d70b7d232bdbeb (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.mk | 44 | ||||
-rw-r--r-- | solenv/gbuild/JavaClassSet.mk | 6 | ||||
-rw-r--r-- | solenv/gbuild/JunitTest.mk | 4 | ||||
-rw-r--r-- | solenv/gbuild/TargetLocations.mk | 3 |
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 |