diff -r 1f0034e370aa -r 71ad690e91f5 build/nativejava.flm --- 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))) - -