#
# 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 User Data image configuration
#



###############################################################################
#  _   _ ___   _
# | | | |   \ /_\
# | |_| | |) / _ \
#  \___/|___/_/ \_\
#

USE_FILEDISK = 0
USE_SOSUDA   = 0
USE_UDAFGEN  = 0

UDA_TITLE       = UDA
UDA_DIR         = $(WORKDIR)/uda
UDA_NAME        = $(NAME)
UDA_PREFIX      = $(UDA_DIR)/$(UDA_NAME)
UDA_IDIR        =
UDA_HBY         =
UDA_OBY         =
UDA_OPT         = $(BLDROM_OPT) -D_EABI=$(ARM_VERSION)
UDA_MSTOBY      = $(UDA_PREFIX)_uda_master.oby
UDA_HEADER      =
UDA_INLINE      =
UDA_FOOTER      =
UDA_TIME        = $(DAY)/$(MONTH)/$(YEAR)

UDA_CPDIR       =
UDA_ZIP         =
UDA_DATADIR     = $(UDA_DIR)/datadrive
UDA_SISCONFFILE = $(UDA_PREFIX)_uda_sisconf.txt
UDA_SISCONF     =\
  -d $(UDA_DRIVE): -c $(UDA_DATADIR) $(if $(SISINST_SISDIR),-s $(SISINST_SISDIR))\
  -z $(SISINST_ZDIR) $(if $(SISINST_HALINI),-i $(SISINST_HALINI)) -w info

UDA_VERSION     = $(CORE_VERSION)
UDA_SWVERFILE   = "$(UDA_DATADIR)/Resource/Versions/User Content Package_UDA.txt"
UDA_SWVERINFO   = $(UDA_VERSION)
UDA_EXCLFILE    = $(UDA_DATADIR)/private/100059C9/excludelist.txt
UDA_TOUCH       = $(call iif,$(USE_SOSUDA),,$(YEAR)$(MONTH)$(DAY)000000)

UDA_IMG         = $(UDA_PREFIX).uda.img
UDA_LOG         = $(UDA_PREFIX).uda.log
UDA_OUTOBY      = $(UDA_PREFIX).uda.oby
UDA_EMPTYIMG    = $(UDA_PREFIX).udaempty.img

UDA_PLUGINLOG   = $(UDA_PREFIX)_uda_bldromplugin.log
UDA_UDEBFILE    = $(TRACE_UDEBFILE)

UDA_DRIVE       = C
UDA_FATTYPE     = fat16
UDA_FATSIZE     = 20480

define UDA_EXCLADD
*
endef

define UDA_EXCLRM
endef

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

UDA_FDISKCONF = /mount 0
UDA_FDISKCMD  =\
  $(FILEDISK_TOOL) $(UDA_FDISKCONF) $(call peval,GetAbsFname($(call pquote,$(UDA_IMG)),1,1)) $(call peval,$$iVar[0] = GetFreeDrive()) |\
  copy  | $(UDA_DATADIR)/* | $(call peval,$$iVar[0])/ |\
  cmd   | $(FILEDISK_TOOL) /status $(call peval,$$iVar[0]) |\
  sleep | 1 |\
  cmd   | $(FILEDISK_TOOL) /umount $(call peval,$$iVar[0])

UDA_WINIMGCMD = $(WINIMAGE_TOOL) $(call pathconv,$(UDA_IMG)) /i $(call pathconv,$(UDA_DATADIR)) /h /q

UDA_CMD       = $(call iif,$(USE_FILEDISK),$(UDA_FDISKCMD),$(UDA_WINIMGCMD))
UDA_EMPTYCMD  =

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

define UDA_MSTOBYINFO
  $(BLDROM_HDRINFO)

  ROM_IMAGE  0 non-xip size=0x00000000

  DATA_IMAGE 0 $(basename $(UDA_IMG)) size=$(call peval,$(UDA_FATSIZE) * 1024) $(UDA_FATTYPE)

  // UDA header
  //
  $(UDA_HDRINFO)

  DATA_IMAGE[0] {
    $(BLR.UDA.OBY)
    $(UDA_INLINE)
    $(UDA_FOOTERINFO)
  }
endef

define UDA_HDRINFO
  $(DEFINE) _IMAGE_WORKDIR $(UDA_DIR)
  $(call mac2cppdef,$(BLR.UDA.OPT))
  $(BLR.UDA.HBY)
  $(UDA_HEADER)
  $(if $(filter u U,$(USE_VARIANTBLD)),$(VARIANT_HEADER))
endef

define UDA_FOOTERINFO
  $(if $(UDA_TIME),time=$(UDA_TIME))
  $(UDA_FOOTER)
endef

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

CLEAN_UDAFILE =\
  del | "$(UDA_MSTOBY)" "$(UDA_SISCONFFILE)" "$(UDA_SWVERFILE)" "$(UDA_EXCLFILE)"

BUILD_UDAFILE =\
  echo-q | Generating file(s) for UDA image creation |\
  $(call iif,$(USE_SOSUDA),\
    write  | $(UDA_MSTOBY) | $(call def2str,$(UDA_MSTOBYINFO)) |\
    write  | $(UDA_SISCONFFILE) | $(call quote,$(UDA_SISCONF)) |)\
  $(call iif,$(USE_UDAFGEN),\
    $(if $(UDA_SWVERINFO),\
      writeu | $(UDA_SWVERFILE) | $(UDA_SWVERINFO) |)\
    $(if $(UDA_EXCLFILE),\
      genexclst | $(UDA_EXCLFILE) | $(UDA_DATADIR) | $(UDA_DRIVE):/ |\
        "$(subst $(\n)," ",$(UDA_EXCLADD))" | "$(subst $(\n)," ",$(UDA_EXCLRM))")\
  )


###############################################################################
# UDA pre

CLEAN_UDAPRE = $(if $(filter u U,$(USE_VARIANTBLD)),$(CLEAN_CUSTVARIANT),deldir | $(UDA_DATADIR)) | $(CLEAN_UDAFILE)

BUILD_UDAPRE =\
  echo-q | Preparing UDA image creation |\
  $(if $(filter u U,$(USE_VARIANTBLD)),$(BUILD_CUSTVARIANT) |,\
    mkdir | $(UDA_DATADIR) |\
    $(if $(UDA_ZIP),\
      $(eval __i_zip := $(foreach zip,$(UDA_ZIP),$(zip)$(if $(filter %.zip,$(call lcase,$(zip))),,/*.zip)))\
      echo-q | Extracting `$(__i_zip)$' to `$(UDA_DATADIR)$' |\
      unzip  | $(__i_zip) | $(UDA_DATADIR) |)\
    $(if $(UDA_CPDIR),\
      copy | $(UDA_CPDIR)/* | $(UDA_DATADIR) |))\
  mkcd | $(UDA_DIR) |\
  $(BUILD_UDAFILE) |\
  $(call iif,$(USE_FILEDISK),\
    cmd | attrib -r -a -s -h $(call pathconv,$(UDA_DATADIR)) /s /d |)\
  $(if $(UDA_TOUCH),\
    finddir-r | $(UDA_DATADIR) | * | |\
    find-ar   | $(UDA_DATADIR) | * | |\
    touch     | __find__ | $(UDA_TOUCH))

#==============================================================================
# UDA build

BLR.UDA.IDIR   = $(call dir2inc,$(UDA_IDIR) $(call iif,$(USE_FEATVAR),,$(FEATVAR_IDIR)))
BLR.UDA.HBY    = $(call includeiby,$(IMAGE_HBY) $(UDA_HBY))
BLR.UDA.OBY    = $(call includeiby,$(UDA_OBY) $(if $(filter u U,$(USE_VARIANTBLD)),$(VARIANT_OBY)))
BLR.UDA.OPT    = $(UDA_OPT) -p -retainfolder -pfile=$(UDA_SISCONFFILE) -o$(UDA_NAME).dummy0.img $(BLDROPT)
BLR.UDA.POST   =\
  move | $(UDA_OUTOBY).log | $(UDA_LOG)

BLR.UDA.CLEAN  = del | "$(UDA_EMPTYIMG)" "$(UDA_IMG)"
BLR.UDA.BUILD  =\
  $(call iif,$(USE_SOSUDA),,\
    echo-q | Creating $(UDA_TITLE) SOS image |\
    $(if $(UDA_EMPTYCMD),\
      cmd  | $(UDA_EMPTYCMD) |\
      move | $(UDA_EMPTYIMG) | $(UDA_IMG) |)\
    cmd | $(UDA_CMD))

CLEAN_UDA = $(CLEAN_BLDROM)
BUILD_UDA = $(BUILD_BLDROM)

# UDA Empty
#
CLEAN_UDAEMPTY = del | $(UDA_EMPTYIMG)
BUILD_UDAEMPTY =\
  echo-q | Creating empty UDA FAT image |\
  mkdir  | $(UDA_DIR) |\
  cmd    | $(UDA_EMPTYCMD)

#==============================================================================
# UDA post

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

SOS.UDA.STEPS      = $(call iif,$(SKIPPRE),,UDAPRE) UDA $(SOS.UDAEMPTY.STEPS)
SOS.UDAEMPTY.STEPS = UDAEMPTY

ALL.UDA.STEPS      = $(SOS.UDA.STEPS)
ALL.UDAEMPTY.STEPS = $(SOS.UDAEMPTY.STEPS)

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

.PHONY: uda uda-image uda-pre uda-empty uda-empty-image variantuda

uda uda-%: IMAGE_TYPE = UDA

uda      : ;@$(call IMAKER,$$(ALL.UDA.STEPS))
uda-image: ;@$(call IMAKER,$$(SOS.UDA.STEPS))
uda-pre  : ;@$(call IMAKER,UDAPRE)

uda-empty:       ;@$(call IMAKER,$$(ALL.UDAEMPTY.STEPS))
uda-empty-image: ;@$(call IMAKER,$$(SOS.UDAEMPTY.STEPS))

variantuda variantuda%: USE_CUSTVARIANTBLD = 1
variantuda variantuda%: USE_VARIANTBLD     = u
variantuda variantuda%: uda$(TARGETEXT) ;


# END OF IMAKER_UDA.MK
