build/nativejava.flm
author hgs
Mon, 04 Oct 2010 11:29:25 +0300
changeset 78 71ad690e91f5
parent 50 023eef975703
permissions -rw-r--r--
v2.2.17_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
#
50
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
     2
# Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
# All rights reserved.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
# This component and the accompanying materials are made available
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
# under the terms of "Eclipse Public License v1.0"
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
# which accompanies this distribution, and is available
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
#
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
# Initial Contributors:
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
# Nokia Corporation - initial contribution.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
#
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
# Contributors:
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
#
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
# Description: Header file exporting Function Like Makefile (FLM)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
#              The file destinations are relative to EPOCROOT
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
#
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
78
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    18
# Find Java build dir of component $(NAME) from $(TO_BLDINF). 
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
# (TO_BLDINF refers to the directory having initial bld.inf, i.e.
78
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    20
#  - combined build root, which contains directory $(NAME)
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    21
#  - $(NAME)/group (9.2 S60)
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    22
#  - $(NAME)/group/sf (9.2 SF)
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    23
#  - $(NAME) (10.1 SF/S60) 
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    24
#  therefore the $(NAME)-directory is found from finding first directory having
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    25
#  subsystem.mk, going first down to $(NAME) and then up to max. three directory levels)
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
78
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    27
JAVABUILDDIR:= $(dir $(firstword $(wildcard $(TO_BLDINF)/$(NAME)/subsystem.mk $(TO_BLDINF)/subsystem.mk $(TO_BLDINF)/../subsystem.mk $(TO_BLDINF)/../../subsystem.mk)))
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
50
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    29
# General Java makefile command
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    30
JAVACMD:= make -C $(JAVABUILDDIR) -f subsystem.mk EPOCROOT=$(EPOCROOT)/ \
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
               PLATFORM=$(PLATFORM) CFG=$(CFG) BLD_INF_JAVA=1
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
50
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    33
# General build command, targetting armv5 urel files
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    34
JAVABUILDCMD:= make -C $(JAVABUILDDIR) -f subsystem.mk EPOCROOT=$(EPOCROOT)/ \
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    35
               PLATFORM=armv5 CFG=urel BLD_INF_JAVA=1 java finalactions
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    36
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    37
# Marker file to prevent multiple Java compilations of the
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    38
# same platform/cfg, when building e.g. device variants.
78
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    39
NATIVEJAVAMARKER := $(EPOCBLD)/nativejavamarker_$(NAME)_$(PLATFORM)_$(CFG).done
50
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    40
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    41
# Java build artifact file source and target
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    42
JAVABUILD_ARTIFACT_SRC := $(EPOCROOT)/epoc32/release/armv5/urel
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    43
JAVABUILD_ARTIFACT_DST := $(EPOCROOT)/epoc32/release/$(PLATFORM)/$(CFG)
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    44
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    45
define compilenativejava
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    46
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    47
# This is the general Java compilation, done once for the component
78
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    48
ifeq ($(GUARD_nativejavatarget_$(NAME)),)
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    49
GUARD_nativejavatarget_$(NAME):=1
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    50
.PHONY:: nativejavatarget_$(NAME)
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    51
nativejavatarget_$(NAME):
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
	$(call startrule,compilenativejava,,javasources) \
50
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    53
	$(JAVABUILDCMD) \
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
	$(call endrule,compilenativejava)
78
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    55
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    56
# If component depends on some other Java compilation, do the dependant
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    57
# first (if on same build sequence)
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    58
ifneq ($(DEPENDS),)
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    59
.PHONY:: nativejavatarget_$(DEPENDS)
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    60
nativejavatarget_$(NAME): nativejavatarget_$(DEPENDS)
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    61
nativejavatarget_$(DEPENDS): ignored_dependency
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    62
endif
50
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    63
endif 
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    64
78
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    65
# Phony ignored dependency, just so that we have something to use when needed
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    66
ifeq ($(GUARD_ignored_dependency),)
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    67
GUARD_ignored_dependency:=1
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    68
.PHONY:: ignored_dependency
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    69
ignored_dependency:
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    70
endif
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    71
50
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    72
# Actual resource target, one for each platform/cfg variant
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    73
ifeq ($(GUARD_$(call sanitise,$(NATIVEJAVAMARKER))),)
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    74
GUARD_$(call sanitise,$(NATIVEJAVAMARKER)):=1
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    75
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    76
RESOURCE:: $(NATIVEJAVAMARKER)
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    77
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    78
# Copy the build artifacts to target
78
71ad690e91f5 v2.2.17_1
hgs
parents: 50
diff changeset
    79
$(NATIVEJAVAMARKER): nativejavatarget_$(NAME)
50
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    80
ifeq ($(filter armv5_urel ARMV5_urel ARMV5_UREL,$(PLATFORM)_$(CFG)),)
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    81
	$(call makepath,$(JAVABUILD_ARTIFACT_DST)/z/resource/java/jvm/lib/jrt)
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    82
	$(call makepath,$(JAVABUILD_ARTIFACT_DST)/z/resource/java/security)
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    83
	$(call startrule,copynativejavaresults) \
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    84
	$(foreach f,java_impl_cdc.jar java_impl_cldc.jar java_platform_api.jar java_public_api.jar java_signature_test.jar, $(GNUCP) -v $(JAVABUILD_ARTIFACT_SRC)/$f $(JAVABUILD_ARTIFACT_DST) &&) \
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    85
	$(GNUCP) -Rv $(JAVABUILD_ARTIFACT_SRC)/z/resource/java/jvm/lib/jrt $(JAVABUILD_ARTIFACT_DST)/z/resource/java/jvm/lib && \
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    86
	$(GNUCP) -Rv $(JAVABUILD_ARTIFACT_SRC)/z/resource/java/security $(JAVABUILD_ARTIFACT_DST)/z/resource/java \
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    87
	$(call endrule,copynativejavaresults)
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    88
endif
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    89
endif
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    90
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    91
# Use normal clean for all variants
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    92
CLEAN::
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
	$(call startrule,cleannativejava,,javasources) \
50
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    94
	$(JAVACMD) clean_java \
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
	$(call endrule,cleannativejava)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    96
endef
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    97
50
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
    98
$(eval $(compilenativejava))
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
50
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
   100
RELEASABLES:= $(shell $(JAVACMD) -s javareleasables)
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
$(eval $(call whatmacro,$(RELEASABLES),WHATRESOURCES))
50
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
   102
023eef975703 v2.2.4_1
hgs
parents: 21
diff changeset
   103
$(eval $(call GenerateStandardCleanTarget,$(NATIVEJAVAMARKER)))