<?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 javascript 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>
  <script language="javascript">
    var before = project.getProperty("ADDITIONAL_RES_PACKAGES");
    project.setProperty("project.library.packages", before.replaceAll(" ", ";"));
  </script>

  <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>
