<?xml version="1.0" encoding="UTF-8"?>
<!--
    Copyright (C) 2005-2008 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->

<project default="-package-resources">
  <property name="out.dir" location="${OUT_DIR}" />
  <property name="out.absolute.dir" location="${out.dir}" />
  <property name="out.res.absolute.dir" location="${out.dir}/res" />
  <property name="out.manifest.abs.file" location="${out.dir}/AndroidManifest.xml" />

  <!-- tools location -->
  <property name="sdk.dir" location="${ANDROID_SDK_ROOT}"/>
  <property name="project.target.android.jar" location="${ANDROID_SDK_JAR}" />
  <property name="android.sdk.tools.dir" location="${ANDROID_SDK_TOOLS}" />

  <!-- jar file from where the tasks are loaded -->
  <path id="android.antlibs">
    <pathelement path="${sdk.dir}/tools/lib/ant-tasks.jar" />
  </path>

  <!-- Custom tasks -->
  <taskdef resource="anttasks.properties" classpathref="android.antlibs" />

  <condition property="build.target" value="release" else="debug">
    <equals arg1="${CONFIGURATION_NAME}" arg2="Release" />
  </condition>
  <condition property="build.is.packaging.debug" value="true" else="false">
    <equals arg1="${build.target}" arg2="debug" />
  </condition>

  <property name="resource.dir" value="${RESOURCE_DIR}"/>
  <property name="resource.absolute.dir" location="${resource.dir}"/>

  <property name="asset.dir" value="${ASSET_DIR}" />
  <property name="asset.absolute.dir" location="${asset.dir}" />

  <property name="aapt" location="${android.sdk.tools.dir}/aapt" />

  <property name="version.code" value="${APP_MANIFEST_VERSION_CODE}"/>
  <property name="version.name" value="${APP_MANIFEST_VERSION_NAME}"/>

  <property name="aapt.resource.filter" value="" />
  <!-- 'aapt.ignore.assets' is the list of file patterns to ignore under /res and /assets.
         Default is "!.svn:!.git:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"

         Overall patterns syntax is:
           [!][<dir>|<file>][*suffix-match|prefix-match*|full-match]:more:patterns...

         - The first character flag ! avoids printing a warning.
         - Pattern can have the flag "<dir>" to match only directories
           or "<file>" to match only files. Default is to match both.
         - Match is not case-sensitive.
  -->
  <property name="aapt.ignore.assets" value="" />

  <!--
      Include additional resource folders in the apk, e.g. content/.../res.  We
      list the res folders in project.library.res.folder.path and the
      corresponding java packages in project.library.packages, which must be
      semicolon-delimited while ADDITIONAL_RES_PACKAGES is space-delimited, hence
      the replacestring filterchain task.
  -->
  <path id="project.library.res.folder.path">
    <filelist files="${ADDITIONAL_RES_DIRS}"/>
  </path>
  <path id="project.library.bin.r.file.path">
    <filelist files="${ADDITIONAL_R_TEXT_FILES}"/>
  </path>

  <loadresource property="project.library.packages">
    <propertyresource name="ADDITIONAL_RES_PACKAGES"/>
    <filterchain>
      <replacestring from=" " to=";"/>
    </filterchain>
  </loadresource>
  <!-- Set to empty if not set by the loadresource above -->
  <property name="project.library.packages" value=""/>

  <property name="build.packaging.nocrunch" value="true" />

  <!-- Intermediate files -->
  <property name="resource.package.file.name" value="${APK_NAME}.ap_" />

  <target name="-crunch">
    <!-- Updates the pre-processed PNG cache -->
    <exec executable="${aapt}" taskName="crunch">
      <arg value="crunch" />
      <arg value="-v" />
      <arg value="-S" />
      <arg path="${resource.absolute.dir}" />
      <arg value="-C" />
      <arg path="${out.res.absolute.dir}" />
    </exec>
  </target>

  <target name="-package-resources" depends="-crunch">
    <aapt
        executable="${aapt}"
        command="package"
        versioncode="${version.code}"
        versionname="${version.name}"
        debug="${build.is.packaging.debug}"
        manifest="${out.manifest.abs.file}"
        assets="${asset.absolute.dir}"
        androidjar="${project.target.android.jar}"
        apkfolder="${out.absolute.dir}"
        nocrunch="${build.packaging.nocrunch}"
        resourcefilename="${resource.package.file.name}"
        resourcefilter="${aapt.resource.filter}"
        libraryResFolderPathRefid="project.library.res.folder.path"
        libraryPackagesRefid="project.library.packages"
        libraryRFileRefid="project.library.bin.r.file.path"
        previousBuildType=""
        buildType="${build.target}"
        ignoreAssets="${aapt.ignore.assets}">
      <res path="${out.res.absolute.dir}" />
      <res path="${resource.absolute.dir}" />
      <!-- <nocompress /> forces no compression on any files in assets or res/raw -->
      <!-- <nocompress extension="xml" /> forces no compression on specific file extensions in assets and res/raw -->
    </aapt>

    <touch file="${STAMP}" />
  </target>
</project>
