imgtools/imaker/src/imaker_tools.mk
author timothy.murphy@nokia.com
Thu, 25 Mar 2010 13:43:28 +0000
branchfix
changeset 408 a819f9223567
parent 1 be27ed110b50
child 584 56dd7656a965
permissions -rw-r--r--
fix: stop using "magic" numbers in string operations for the copyannofile2log feature fix: When using the copylogfromannofile workaround, extract the build ID and build duration and add to the log as these are useful for analysis. The log should now be identical to the stdout file. fix: Remove extra blank lines from output in copylogfromannofile mode.

#
# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
# All rights reserved.
# This component and the accompanying materials are made available
# under the terms of the License "Symbian Foundation License v1.0"
# which accompanies this distribution, and is available
# at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
#
# Initial Contributors:
# Nokia Corporation - initial contribution.
#
# Contributors:
#
# Description: iMaker external tools configuration
#



###############################################################################
# External tools

BLDROM_TOOL     = buildrom
ROMBLD_TOOL     = rombuild
ROFSBLD_TOOL    = rofsbuild
MAKSYM_TOOL     = maksym
MAKSYMROFS_TOOL = maksymrofs
IMGCHK_TOOL     = imgcheck
INTPRSIS_TOOL   = interpretsis
READIMG_TOOL    = readimage

UNZIP_TOOL      = unzip
ZIP_TOOL        = zip
7ZIP_TOOL       = 7za
FILEDISK_TOOL   = filedisk
WINIMAGE_TOOL   = "c:/program files/winimage/winimage.exe"

#==============================================================================

BLDROM_OPT =\
  -loglevel1 $(call iif,$(KEEPTEMP),-p) -v -nosymbols\
  $(call iif,$(USE_FEATVAR),-DFEATUREVARIANT=$(FEATURE_VARIANT))\
  $(if $(IMAGE_TYPE),-D_IMAGE_TYPE_$(IMAGE_TYPE)) $(if $(TYPE),-D_IMAGE_TYPE_$(call ucase,$(TYPE)))

BLDROM_PARSE =\
  parse | \nMissing file(s):\n | Missing file: |\
  parse | \nWarning(s):\n      | /WARNING:\|WARN:/i |\
  parse | \nError(s):\n        | /ERROR:\|ERR :/i   |\
  parse | \nCan$'t locate:\n | Can$'t locate | parse | \ncouldn$'t be located:\n | couldn$'t be located

#* Writing tmp7.oby - result of problem-suppression phase
#Can't open \epoc32\release\ARMV5\urel\apgrfx.dll.map
#Unrecognised option -NO-HEADER0

# For passing extra paramters (from command line)
BLDROPT =
BLDROBY =


###############################################################################
# S60 Configuration Tool CLI

CONFT_TOOL    = cli.cmd
CONFT_TOOLDIR = $(or $(wildcard /s60/tools/toolsextensions/ConfigurationTool),/ext/tools/toolsextensions/ConfigurationTool)

CONFT_DIR     = $(WORKDIR)/ct
CONFT_TMPDIR  = $(CONFT_DIR)/_temp
CONFT_CFGNAME = variant
CONFT_CONFML  = $(call iif,$(USE_VARIANTBLD),$(VARIANT_CONFML),$(WORKDIR)/$(CONFT_CFGNAME).confml)
CONFT_IMPL    = $(CONFIGROOT)/confml_data/s60;$(CONFIGROOT)/confml_data/customsw
CONFT_IBYML   = $(CONFT_TOOLDIR)/ibyml
CONFT_OUTDIR  = $(call iif,$(USE_VARIANTBLD),$(VARIANT_OUTDIR),$(CONFT_DIR)/cenrep)
CONFT_CRLOG   = $(call iif,$(USE_VARIANTBLD),$(VARIANT_PREFIX)_,$(CONFT_DIR))cenrep.log
CONFT_ECLCONF = -configuration $(CONFT_TMPDIR) -data $(CONFT_TMPDIR)
CONFT_CONF    = $(CONFT_ECLCONF)\
  -master $(CONFT_CONFML) -impl $(CONFT_IMPL) $(if $(CONFT_IBYML),-ibyml $(CONFT_IBYML)) -output $(CONFT_DIR)\
  -report $(CONFT_CRLOG) -ignore_errors
CONFT_CONFCP  = $(call iif,$(USE_VARIANTBLD),$(VARIANT_CONFCP),$(CONFT_CFGNAME))

CONFT_CMD     = $(CONFT_TOOL) $(CONFT_CONF)
CONFT_PARSE   = parse | \nWarnings, errors and problems:\n | /warning:\|error:\|problem/i

CLEAN_CENREP =\
  del    | $(CONFT_CRLOG) |\
  deldir | "$(CONFT_DIR)" "$(CONFT_TMPDIR)" $(call iif,$(USE_VARIANTBLD),,"$(CONFT_OUTDIR)")

BUILD_CENREP =\
  echo-q | Calling S60 Configuration Tool |\
  mkcd   | $(CONFT_DIR) |\
  deldir | $(CONFT_TMPDIR) |\
  cmd    | $(CONFT_CMD) | $(CONFT_PARSE) |\
  $(foreach dir,$(CONFT_CONFCP),\
    finddir | $(CONFT_DIR)/$(dir) | * | |\
    copy    | __find__ | $(CONFT_OUTDIR) |)\
  $(call iif,$(KEEPTEMP),,deldir | $(CONFT_TMPDIR))


###############################################################################
# Interpretsis

SISINST_DIR    = $(WORKDIR)/sisinst
SISINST_SISDIR = $(call iif,$(USE_VARIANTBLD),$(VARIANT_SISDIR))
SISINST_OUTDIR = $(call iif,$(USE_VARIANTBLD),$(VARIANT_OUTDIR),$(SISINST_DIR)/output)
#SISINST_ZDIR   = $(SISINST_DIR)/z_drive
SISINST_ZDIR   = $(EPOC32)/data/Z

SISINST_HALINI = $(wildcard $(PRODUCT_DIR)/interpretsis.ini)
SISINST_CONF   = -w info -z $(SISINST_ZDIR) $(if $(SISINST_HALINI),-i $(SISINST_HALINI)) -c $(SISINST_OUTDIR) -s $(SISINST_SISDIR)
SISINST_CMD    = $(INTPRSIS_TOOL) $(SISINST_CONF)
SISINST_PARSE  =\
  parse | \nWarning(s):\n | /^WARN:/ |\
  parse | \nError(s):\n   | /^ERR :/

#CLEAN_SISINSTPRE = deldir | $(SISINST_ZDIR)
#BUILD_SISINSTPRE =\
#  mkdir | $(SISINST_ZDIR) |\
#  $(foreach img,$(ROM_IMG) $(foreach rofs,1 2 3 4 5 6,$(call iif,$(USE_ROFS$(rofs)),$(ROFS$(rofs)_IMG))),\
#    cmd | $(READIMG_TOOL) -z $(SISINST_ZDIR) $(img) |)

CLEAN_SISINST = deldir | "$(SISINST_DIR)" $(call iif,$(USE_VARIANTBLD),,"$(SISINST_OUTDIR)")
BUILD_SISINST =\
  echo-q | Installing SIS |\
  mkdir  | $(SISINST_OUTDIR) |\
  cmd    | $(SISINST_CMD) | $(SISINST_PARSE)


###############################################################################
# Operator Cache Tool

OPC_TOOL     = $(ITOOL_DIR)/opcache_tool.py
OPC_CONF     = -u $(OPC_URL) -e $(OPC_EXPDATE) -m $(OPC_MMAPFILE) -i $(OPC_RAWDIR) -o $(OPC_OUTDIR)/$(OPC_CACHEDIR)
OPC_CMD      = $(PYTHON) $(OPC_TOOL) $(OPC_CONF)
OPC_DIR      = $(WORKDIR)/opcache
OPC_RAWDIR   = $(call iif,$(USE_VARIANTBLD),$(VARIANT_OPCDIR))
OPC_OUTDIR   = $(call iif,$(USE_VARIANTBLD),$(VARIANT_OUTDIR),$(OPC_DIR)/output)
OPC_CACHEDIR = cache
OPC_MMAPFILE = $(OPC_DIR)/mimemap.dat

OPC_URL      = http://www.someoperator.com/Cache_OpCache
OPC_EXPDATE  = 3

define OPC_MIMEMAP
  .bmp:   image/bmp
  .css:   text/css
  .gif:   image/gif
  .htm:   text/html
  .html:  text/html
  .ico:   image/x-icon
  .jpeg:  image/jpeg
  .jpg:   image/jpeg
  .js:    text/javascript
  .mid:   audio/mid
  .midi:  audio/midi
  .png:   image/png
  .tif:   image/tiff
  .tiff:  image/tiff
  .wbmp:  image/vnd.wap.wbmp
  .wml:   text/vnd.wap.wml
  .wmlc:  application/vnd.wap.wmlc
  .xhtml: application/xhtml+xml
endef

CLEAN_OPCACHE = del | $(OPC_MMAPFILE) | deldir | "$(OPC_DIR)" $(call iif,$(USE_VARIANTBLD),,"$(OPC_OUTDIR)")
BUILD_OPCACHE =\
  echo-q | Creating Operator Cache content |\
  write  | $(OPC_MMAPFILE) |\
    $(call def2str,\# Generated `$(OPC_MMAPFILE)$' for Operator Cache content creation$(\n)$(\n)$(OPC_MIMEMAP)) |\
  test   | $(OPC_RAWDIR)/* |\
  mkdir  | $(OPC_OUTDIR)/$(OPC_CACHEDIR) |\
  cmd    | $(OPC_CMD)


###############################################################################
# Widget Pre-installation

WIDGET_WGZIP   = $(WORKDIR)/*.wgz
WIDGET_WGZDIR  = $(EPOC32)/release/winscw/udeb/z/data/WidgetBURTemp
WIDGET_WGZIBY  = $(E32ROMINC)/widgetbackupfiles.iby
WIDGET_WGZPXML = Info.plist

CLEAN_WGZPREINST = del | $(WIDGET_WGZIBY) | deldir | $(WIDGET_WGZDIR)
BUILD_WGZPREINST =\
  echo-q   | Widget Pre-installation |\
  echo-q   | Unzip $(WIDGET_WGZIP) file(s) to $(WIDGET_WGZDIR), generating $(WIDGET_WGZIBY) |\
  wgunzip  | $(WIDGET_WGZIP) | $(WIDGET_WGZDIR) | $(WIDGET_WGZPXML) |\
  geniby-r | $(WIDGET_WGZIBY) | $(WIDGET_WGZDIR) | * | data="%1" "data/WidgetBURTemp/%2" | end


###############################################################################
# Image Checker

IMGCHK_LOG = $($(IMAGE_TYPE)_ICHKLOG)
IMGCHK_OPT = --verbose --dep
IMGCHK_CMD = $(IMGCHK_TOOL) $($(IMAGE_TYPE)_ICHKOPT) $($(IMAGE_TYPE)_ICHKIMG)

define IMGCHK_HDRINFO
  # Image Check log for $($(IMAGE_TYPE)_TITLE) SOS image
  #
  # Filename: $(IMGCHK_LOG)
  # Command : $(IMGCHK_CMD)
endef

CLEAN_IMGCHK = del | "$(basename $(IMGCHK_LOG)).*" "imgcheck.log"
BUILD_IMGCHK =\
  echo-q | Checking $($(IMAGE_TYPE)_TITLE) SOS image file(s) |\
  cd     | $($(IMAGE_TYPE)_DIR) |\
  write  | $(IMGCHK_LOG) | $(call def2str,$(IMGCHK_HDRINFO))\n |\
  cmdtee | $(IMGCHK_CMD) | >>$(IMGCHK_LOG) |\
  del    | imgcheck.log


###############################################################################
# CheckDependency

CHKDEP_TOOL     = CheckDependency.pl
CHKDEP_CONFXML  = $(E32ROMBLD)/iad/iad_rofs_config.xml
CHKDEP_ROFSFILE = $(E32ROMBLD)/IAD_rofsfiles.txt
CHKDEP_OPT      = -i $(CHKDEP_CONFXML) -o $(CHKDEP_ROFSFILE)
CHKDEP_CMD      = $(PERL) -S $(CHKDEP_TOOL) $(CHKDEP_OPT)

CLEAN_CHKDEP = del | $(CHKDEP_ROFSFILE)
BUILD_CHKDEP =\
  echo-q | Running CheckDependency tool |\
  cmd    | $(CHKDEP_CMD)


###############################################################################
# Image to files; extract files from .img using Readimage tool

I2FILE_DIR = $(WORKDIR)/img2file

CLEAN_COREI2F = deldir | $(CORE_I2FDIR)
BUILD_COREI2F = $(call _buildi2file,CORE,$(CORE_I2FDIR),$(ROM_IMG) $(call iif,$(USE_ROFS1),$(ROFS1_IMG)))

CLEAN_VARIANTI2F = $(foreach rofs,2 3 4 5 6,$(call iif,$(USE_ROFS$(rofs)),deldir | $(ROFS$(rofs)_I2FDIR) |))
BUILD_VARIANTI2F =\
  $(foreach rofs,2 3 4 5 6,$(call iif,$(USE_ROFS$(rofs)),\
    $(call _buildi2file,ROFS$(rofs),$(ROFS$(rofs)_I2FDIR),$(ROFS$(rofs)_IMG))))

CLEAN_I2FILE = deldir | $(I2FILE_DIR) | $(CLEAN_COREI2F) | $(CLEAN_VARIANTI2F)
BUILD_I2FILE =\
  $(BUILD_COREI2F) | $(BUILD_VARIANTI2F) |\
  copy | $(CORE_I2FDIR)/* | $(I2FILE_DIR) |\
  $(foreach rofs,2 3 4 5 6,$(call iif,$(USE_ROFS$(rofs)),copy | $(ROFS$(rofs)_I2FDIR)/* | $(I2FILE_DIR) |))

_buildi2file =\
  echo-q | Extracting files from $($1_TITLE) SOS image to $2 |\
  mkcd   | $2 |\
  $(foreach img,$3,\
    cmd | $(READIMG_TOOL) -s $(img)   |\
    cmd | $(READIMG_TOOL) -z . $(img) |)


###############################################################################
# Tool info

define TOOL_INFO
  $(MAKE)          | $(MAKE) -v   | GNU Make (\S+).+(built for \S+) |
  $(PERL)          | $(PERL) -v   | perl, v(.+?)$$ |
  $(CPP)           | $(CPP) -v -h | CPP version (.+?)$$ |
  $(call _grepversion,$(E32TOOLS)/imaker.cmd) |
  $(call _grepversion,$(IMAKER_TOOL)) |
  $(call _grepversion,$(IMAKER_DIR)/imaker.pm) |
  $(if $(wildcard $(IMAKER_DIR)/imaker_extension.pm),$(call _grepversion,$(IMAKER_DIR)/imaker_extension.pm) |)
  $(call _grepversion,$(IMAKER_DIR)/imaker.mk) |
  $(call _grepversion,$(IMAKER_DIR)/imaker_public.mk) |
  $(if $(wildcard $(IMAKER_DIR)/imaker_extension.mk),$(call _grepversion,$(IMAKER_DIR)/imaker_extension.mk) |)
  $(ROMBLD_TOOL)   | $(ROMBLD_TOOL)         | ROMBUILD.+? V(.+?)\s*$$  |
  $(ROFSBLD_TOOL)  | $(ROFSBLD_TOOL)        | ROFSBUILD.+? V(.+?)\s*$$ |
  $(IMGCHK_TOOL)   | $(IMGCHK_TOOL) -h      | IMGCHECK.+? V(.+?)\s*$$  |
  $(INTPRSIS_TOOL) | $(INTPRSIS_TOOL) -h    | INTERPRETSIS\s+Version\s+(.+?)\s*$$ |
  $(READIMG_TOOL)  | $(READIMG_TOOL)        | Readimage.+? V(.+?)\s*$$ |
  $(CONFT_TOOL)    | $(CONFT_TOOL) -version | ^.+?\n(.+?)\n(.+?)\n
endef

BUILD_TOOLINFO = echo-q | | toolchk | $(strip $(TOOL_INFO)) | end

#==============================================================================

_grepversion = $1 | $(PERL) -ne "print, exit if /%version:\s*\S+\s*%/" < $1 | %version:\s*(\S+)\s*%


###############################################################################
# Targets

.PHONY: checkdep opcache sisinst toolinfo wgzpreinst

chkdep opcache sisinst toolinfo wgzpreinst:\
  ;@$(call IMAKER,$(call ucase,$@))


# END OF IMAKER_TOOLS.MK