# Copyright 2017 The Cobalt Authors. All Rights Reserved.
#
# 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.
{
  'variables': {
    'GRADLE_BUILD_TYPE': '<(cobalt_config)',
    'GRADLE_FILES_DIR': '<(PRODUCT_DIR)/gradle/<(executable_name)',
    'executable_file': '<(PRODUCT_DIR)/lib/lib<(executable_name).so',
    'apk': '<(PRODUCT_DIR)/<(executable_name).apk',
  },
  'conditions': [
    [ 'cobalt_config == "gold"', {
      'variables': {
        # Android Gradle wants a "release" build type, so use that for "gold".
        'GRADLE_BUILD_TYPE': 'release'
      }
    }]
  ],
  'dependencies': [ '<(DEPTH)/starboard/android/apk/apk.gyp:apk_sources' ],
  'includes': [ '<(DEPTH)/starboard/build/collect_deploy_content.gypi' ],
  'actions': [
    {
      'action_name': 'build_apk',
      'inputs': [
        '<(executable_file)',
        '<(PRODUCT_DIR)/gradle/apk_sources.stamp',
        '<(content_deploy_stamp_file)',
      ],
      'outputs': [ '<(apk)' ],
      'action': [
        '<(DEPTH)/starboard/android/apk/cobalt-gradle.sh',
        '--sdk', '<(ANDROID_HOME)',
        '--cache', '$${PWD}/<(GRADLE_FILES_DIR)/cache',
        '--project-dir', '$${PWD}/<(DEPTH)/starboard/android/apk/',
        '-P', 'cobaltBuildAbi=<(ANDROID_ABI)',
        '-P', 'cobaltDeployApk=$${PWD}/<(apk)',
        '-P', 'cobaltContentDir=$${PWD}/<(content_deploy_dir)',
        '-P', 'cobaltGradleDir=$${PWD}/<(GRADLE_FILES_DIR)',
        '-P', 'cobaltProductDir=$${PWD}/<(PRODUCT_DIR)',
        '-P', 'cobaltLibraryDir=$${PWD}/<(PRODUCT_DIR)/lib',
        '-P', 'cobaltTarget=<(executable_name)',
        '-P', 'enableVulkan=<(enable_vulkan)',
        'assembleCobalt_<(GRADLE_BUILD_TYPE)',
      ],
      'message': 'Build APK: <(apk)',
    },
    {
      # Clean the gradle directory to conserve space after we have the APK
      'action_name': 'delete_gradle_dir',
      'inputs': [ '<(apk)' ],
      'outputs': [ '<(GRADLE_FILES_DIR).deleted.stamp' ],
      'action': [
        'sh', '-c',
        'rm -rf <(GRADLE_FILES_DIR) && touch <(GRADLE_FILES_DIR).deleted.stamp',
      ],
      'message': 'Cleanup Gradle: <(executable_name)',
    },
  ],
}
