build/nativejava.flm
changeset 78 71ad690e91f5
parent 50 023eef975703
--- a/build/nativejava.flm	Fri Sep 17 16:44:34 2010 +0300
+++ b/build/nativejava.flm	Mon Oct 04 11:29:25 2010 +0300
@@ -15,15 +15,16 @@
 #              The file destinations are relative to EPOCROOT
 #
 
-# Find Java build dir by going up from $(TO_BLDINF). 
+# Find Java build dir of component $(NAME) from $(TO_BLDINF). 
 # (TO_BLDINF refers to the directory having initial bld.inf, i.e.
-#  - jrt/group (9.2 S60)
-#  - jrt/group/sf (9.2 SF)
-#  - jrt (10.1 SF/S60) 
-#  therefore the jrt-directory is found from finding first directory having
-#  subsystem.mk, going up to max. three directory levels)
+#  - combined build root, which contains directory $(NAME)
+#  - $(NAME)/group (9.2 S60)
+#  - $(NAME)/group/sf (9.2 SF)
+#  - $(NAME) (10.1 SF/S60) 
+#  therefore the $(NAME)-directory is found from finding first directory having
+#  subsystem.mk, going first down to $(NAME) and then up to max. three directory levels)
 
-JAVABUILDDIR:= $(dir $(firstword $(wildcard $(TO_BLDINF)/subsystem.mk $(TO_BLDINF)/../subsystem.mk $(TO_BLDINF)/../../subsystem.mk)))
+JAVABUILDDIR:= $(dir $(firstword $(wildcard $(TO_BLDINF)/$(NAME)/subsystem.mk $(TO_BLDINF)/subsystem.mk $(TO_BLDINF)/../subsystem.mk $(TO_BLDINF)/../../subsystem.mk)))
 
 # General Java makefile command
 JAVACMD:= make -C $(JAVABUILDDIR) -f subsystem.mk EPOCROOT=$(EPOCROOT)/ \
@@ -35,7 +36,7 @@
 
 # Marker file to prevent multiple Java compilations of the
 # same platform/cfg, when building e.g. device variants.
-NATIVEJAVAMARKER := $(EPOCBLD)/nativejavamarker_$(PLATFORM)_$(CFG).done
+NATIVEJAVAMARKER := $(EPOCBLD)/nativejavamarker_$(NAME)_$(PLATFORM)_$(CFG).done
 
 # Java build artifact file source and target
 JAVABUILD_ARTIFACT_SRC := $(EPOCROOT)/epoc32/release/armv5/urel
@@ -44,15 +45,30 @@
 define compilenativejava
 
 # This is the general Java compilation, done once for the component
-ifeq ($(GUARD_nativejavatarget),)
-GUARD_nativejavatarget:=1
-.PHONY:: nativejavatarget
-nativejavatarget:
+ifeq ($(GUARD_nativejavatarget_$(NAME)),)
+GUARD_nativejavatarget_$(NAME):=1
+.PHONY:: nativejavatarget_$(NAME)
+nativejavatarget_$(NAME):
 	$(call startrule,compilenativejava,,javasources) \
 	$(JAVABUILDCMD) \
 	$(call endrule,compilenativejava)
+
+# If component depends on some other Java compilation, do the dependant
+# first (if on same build sequence)
+ifneq ($(DEPENDS),)
+.PHONY:: nativejavatarget_$(DEPENDS)
+nativejavatarget_$(NAME): nativejavatarget_$(DEPENDS)
+nativejavatarget_$(DEPENDS): ignored_dependency
+endif
 endif 
 
+# Phony ignored dependency, just so that we have something to use when needed
+ifeq ($(GUARD_ignored_dependency),)
+GUARD_ignored_dependency:=1
+.PHONY:: ignored_dependency
+ignored_dependency:
+endif
+
 # Actual resource target, one for each platform/cfg variant
 ifeq ($(GUARD_$(call sanitise,$(NATIVEJAVAMARKER))),)
 GUARD_$(call sanitise,$(NATIVEJAVAMARKER)):=1
@@ -60,7 +76,7 @@
 RESOURCE:: $(NATIVEJAVAMARKER)
 
 # Copy the build artifacts to target
-$(NATIVEJAVAMARKER): nativejavatarget
+$(NATIVEJAVAMARKER): nativejavatarget_$(NAME)
 ifeq ($(filter armv5_urel ARMV5_urel ARMV5_UREL,$(PLATFORM)_$(CFG)),)
 	$(call makepath,$(JAVABUILD_ARTIFACT_DST)/z/resource/java/jvm/lib/jrt)
 	$(call makepath,$(JAVABUILD_ARTIFACT_DST)/z/resource/java/security)
@@ -85,5 +101,3 @@
 $(eval $(call whatmacro,$(RELEASABLES),WHATRESOURCES))
 
 $(eval $(call GenerateStandardCleanTarget,$(NATIVEJAVAMARKER)))
-
-