#
# Copyright (C) 2007 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.
#

#
# These are the files that comprise that SDK.
#
# The files that will go in the tools folder are setup through
#    sdk/build/tools.atree
# This is to help when the sdk.git project is branched differently from
# the other projects.
#

##############################################################################
# SDK Root folder
##############################################################################

# the readme
development/docs/SDK_RELEASE_NOTES RELEASE_NOTES.html

# doc redirect
frameworks/base/docs/docs-redirect.html documentation.html

##############################################################################
# Platform Tools Component
##############################################################################

development/sdk/plat_tools_source.properties  platform-tools/source.properties

# host tools from out/host/$(HOST_OS)-$(HOST_ARCH)/
bin/adb                                 strip platform-tools/adb
bin/aapt                                strip platform-tools/aapt
bin/aidl                                strip platform-tools/aidl
bin/fastboot                            strip platform-tools/fastboot
bin/llvm-rs-cc                          strip platform-tools/llvm-rs-cc

# dx
bin/dx                                        platform-tools/dx
bin/dexdump                                   platform-tools/dexdump
framework/dx.jar                              platform-tools/lib/dx.jar

# Framework include for Renderscript
frameworks/base/libs/rs/scriptc               platform-tools/renderscript/include
external/clang/lib/Headers                    platform-tools/renderscript/clang-include
external/clang/LICENSE.TXT                    platform-tools/renderscript/clang-include/LICENSE.TXT

# API database for tools such as lint
development/sdk/api-versions.xml              platform-tools/api/api-versions.xml

##############################################################################
# Platform Component
##############################################################################

# version files for the SDK updater, from development.git
${HOST_OUT}/development/sdk/platform_source.properties platforms/${PLATFORM_NAME}/source.properties

# copy build prop from out/.../sdk/
sdk/sdk-build.prop                            platforms/${PLATFORM_NAME}/build.prop

# the uper-jar file that apps link against. This is the public API
${OUT_DIR}/target/common/obj/PACKAGING/android_jar_intermediates/android.jar platforms/${PLATFORM_NAME}/android.jar

# the aidl precompiled include
obj/framework.aidl platforms/${PLATFORM_NAME}/framework.aidl

# emulator skins from sdk.git
development/tools/emulator/skins/QVGA      platforms/${PLATFORM_NAME}/skins/QVGA
development/tools/emulator/skins/WQVGA432  platforms/${PLATFORM_NAME}/skins/WQVGA432
development/tools/emulator/skins/WQVGA400  platforms/${PLATFORM_NAME}/skins/WQVGA400
development/tools/emulator/skins/HVGA      platforms/${PLATFORM_NAME}/skins/HVGA
development/tools/emulator/skins/WVGA800   platforms/${PLATFORM_NAME}/skins/WVGA800
development/tools/emulator/skins/WVGA854   platforms/${PLATFORM_NAME}/skins/WVGA854
development/tools/emulator/skins/WSVGA     platforms/${PLATFORM_NAME}/skins/WSVGA
development/tools/emulator/skins/WXGA720   platforms/${PLATFORM_NAME}/skins/WXGA720
development/tools/emulator/skins/WXGA800   platforms/${PLATFORM_NAME}/skins/WXGA800

# Platform SDK properties
development/sdk/sdk.properties               platforms/${PLATFORM_NAME}/sdk.properties

# sdk.git Ant templates for project files
development/tools/templates/AndroidManifest.template        platforms/${PLATFORM_NAME}/templates/AndroidManifest.template
development/tools/templates/AndroidManifest.tests.template  platforms/${PLATFORM_NAME}/templates/AndroidManifest.tests.template
development/tools/templates/java_file.template              platforms/${PLATFORM_NAME}/templates/java_file.template
development/tools/templates/java_tests_file.template        platforms/${PLATFORM_NAME}/templates/java_tests_file.template
development/tools/templates/layout.template                 platforms/${PLATFORM_NAME}/templates/layout.template
development/tools/templates/strings.template                platforms/${PLATFORM_NAME}/templates/strings.template
development/tools/templates/ic_launcher_ldpi.png            platforms/${PLATFORM_NAME}/templates/ic_launcher_ldpi.png
development/tools/templates/ic_launcher_mdpi.png            platforms/${PLATFORM_NAME}/templates/ic_launcher_mdpi.png
development/tools/templates/ic_launcher_hdpi.png            platforms/${PLATFORM_NAME}/templates/ic_launcher_hdpi.png

# Eclipse Editors support
framework/layoutlib.jar       platforms/${PLATFORM_NAME}/data/layoutlib.jar
frameworks/base/core/res/res  platforms/${PLATFORM_NAME}/data/res
docs/activity_actions.txt     platforms/${PLATFORM_NAME}/data/activity_actions.txt
docs/broadcast_actions.txt    platforms/${PLATFORM_NAME}/data/broadcast_actions.txt
docs/service_actions.txt      platforms/${PLATFORM_NAME}/data/service_actions.txt
docs/categories.txt           platforms/${PLATFORM_NAME}/data/categories.txt
docs/widgets.txt              platforms/${PLATFORM_NAME}/data/widgets.txt
docs/features.txt             platforms/${PLATFORM_NAME}/data/features.txt

# fonts for layoutlib.
frameworks/base/data/fonts    platforms/${PLATFORM_NAME}/data/fonts

# NOTICE files are copied by build/core/Makefile from sdk.git
sdk/files/sdk_files_NOTICE.txt platforms/${PLATFORM_NAME}/templates/NOTICE.txt
sdk/files/sdk_files_NOTICE.txt platforms/${PLATFORM_NAME}/data/NOTICE.txt
sdk/files/sdk_files_NOTICE.txt platforms/${PLATFORM_NAME}/skins/NOTICE.txt

##############################################################################
# System image Component
##############################################################################

# System images + Kernel
system.img                                 system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/system.img
ramdisk.img                                system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/ramdisk.img
userdata.img                               system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/userdata.img
system/build.prop                          system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/build.prop

# Note: the kernel image is handled by sdk-android-<abi>.atree now.

##############################################################################
# Docs Component
##############################################################################

# version files for the SDK updater, from sdk.git
${HOST_OUT}/development/sdk/doc_source.properties docs/source.properties

# the docs
docs/offline-sdk docs
frameworks/base/docs/docs-samples-redirect.html docs/samples/index.html


##############################################################################
# Samples Component
##############################################################################

# samples to include in the sdk samples package
#
# the list here should match the list of samples that we generate docs for,
# (see web_docs_sample_code_flags in frameworks/base/Android.mk)
development/apps/GestureBuilder                samples/${PLATFORM_NAME}/GestureBuilder
development/samples/samples_source.properties  samples/${PLATFORM_NAME}/source.properties
#
# PLEASE KEEP THE SAMPLES IN ALPHABETICAL ORDER.
#
development/samples/AccelerometerPlay          samples/${PLATFORM_NAME}/AccelerometerPlay
development/samples/ActionBarCompat            samples/${PLATFORM_NAME}/ActionBarCompat
development/samples/AndroidBeamDemo            samples/${PLATFORM_NAME}/AndroidBeamDemo
development/samples/ApiDemos                   samples/${PLATFORM_NAME}/ApiDemos
development/samples/AppNavigation              samples/${PLATFORM_NAME}/AppNavigation
development/samples/BackupRestore              samples/${PLATFORM_NAME}/BackupRestore
development/samples/BasicGLSurfaceView         samples/${PLATFORM_NAME}/BasicGLSurfaceView
development/samples/BluetoothChat              samples/${PLATFORM_NAME}/BluetoothChat
development/samples/BluetoothHDP               samples/${PLATFORM_NAME}/BluetoothHDP
development/samples/ContactManager             samples/${PLATFORM_NAME}/ContactManager
development/samples/CrossCompatibility         samples/${PLATFORM_NAME}/CrossCompatibility
development/samples/CubeLiveWallpaper          samples/${PLATFORM_NAME}/CubeLiveWallpaper
development/samples/Home                       samples/${PLATFORM_NAME}/Home
development/samples/HoneycombGallery           samples/${PLATFORM_NAME}/HoneycombGallery
development/samples/JetBoy                     samples/${PLATFORM_NAME}/JetBoy
development/samples/LunarLander                samples/${PLATFORM_NAME}/LunarLander
development/samples/MultiResolution            samples/${PLATFORM_NAME}/MultiResolution
development/samples/NotePad                    samples/${PLATFORM_NAME}/NotePad
development/samples/NFCDemo                    samples/${PLATFORM_NAME}/NFCDemo
development/samples/RandomMusicPlayer          samples/${PLATFORM_NAME}/RandomMusicPlayer
development/samples/SpellChecker/SampleSpellCheckerService samples/${PLATFORM_NAME}/SpellChecker/SampleSpellCheckerService
development/samples/SpellChecker/HelloSpellChecker samples/${PLATFORM_NAME}/SpellChecker/HelloSpellChecker
development/samples/SampleSyncAdapter          samples/${PLATFORM_NAME}/SampleSyncAdapter
development/samples/SearchableDictionary       samples/${PLATFORM_NAME}/SearchableDictionary
development/samples/SipDemo                    samples/${PLATFORM_NAME}/SipDemo
development/samples/SkeletonApp                samples/${PLATFORM_NAME}/SkeletonApp
development/samples/Snake                      samples/${PLATFORM_NAME}/Snake
development/samples/SoftKeyboard               samples/${PLATFORM_NAME}/SoftKeyboard
development/samples/Spinner                    samples/${PLATFORM_NAME}/Spinner
development/samples/SpinnerTest                samples/${PLATFORM_NAME}/SpinnerTest
development/samples/TicTacToeLib               samples/${PLATFORM_NAME}/TicTacToeLib
development/samples/TicTacToeMain              samples/${PLATFORM_NAME}/TicTacToeMain
development/samples/TtsEngine                  samples/${PLATFORM_NAME}/TtsEngine
development/samples/ToyVpn                     samples/${PLATFORM_NAME}/ToyVpn
development/samples/USB/MissileLauncher        samples/${PLATFORM_NAME}/USB/MissileLauncher
development/samples/USB/AdbTest                samples/${PLATFORM_NAME}/USB/AdbTest
development/samples/VoiceRecognitionService    samples/${PLATFORM_NAME}/VoiceRecognitionService
development/samples/VoicemailProviderDemo      samples/${PLATFORM_NAME}/VoicemailProviderDemo
development/samples/WeatherListWidget          samples/${PLATFORM_NAME}/WeatherListWidget
development/apps/WidgetPreview                 samples/${PLATFORM_NAME}/WidgetPreview
development/samples/WiFiDirectDemo             samples/${PLATFORM_NAME}/WiFiDirectDemo
development/samples/Wiktionary                 samples/${PLATFORM_NAME}/Wiktionary
development/samples/WiktionarySimple           samples/${PLATFORM_NAME}/WiktionarySimple
development/samples/XmlAdapters                samples/${PLATFORM_NAME}/XmlAdapters
development/samples/RenderScript/Balls         samples/${PLATFORM_NAME}/RenderScript/Balls
development/samples/RenderScript/Fountain      samples/${PLATFORM_NAME}/RenderScript/Fountain
development/samples/RenderScript/FountainFbo   samples/${PLATFORM_NAME}/RenderScript/FountainFbo
development/samples/RenderScript/HelloCompute  samples/${PLATFORM_NAME}/RenderScript/HelloCompute
development/samples/RenderScript/HelloWorld    samples/${PLATFORM_NAME}/RenderScript/HelloWorld
development/samples/RenderScript/MiscSamples   samples/${PLATFORM_NAME}/RenderScript/MiscSamples

# NOTICE files are copied by build/core/Makefile from sdk.git
sdk/files/sdk_files_NOTICE.txt samples/${PLATFORM_NAME}/NOTICE.txt

##############################################################################
# Add-on Folder
##############################################################################

# empty add-on folder with just a readme copied from sdk.git
sdk/files/README_add-ons.txt add-ons/README.txt

##############################################################################
# Extra Component: Support
##############################################################################

development/sdk/support_source.properties                                                         extras/android/support/source.properties
development/sdk/support_README.txt                                                                extras/android/support/README.txt
sdk/files/sdk_files_NOTICE.txt                                                                    extras/android/support/NOTICE.txt
${OUT_DIR}/target/common/obj/PACKAGING/android-support-v4_intermediates/android-support-v4.jar    extras/android/support/v4/android-support-v4.jar
frameworks/support/v4                                                                             extras/android/support/v4/src
development/samples/Support4Demos                                                                 extras/android/support/samples/Support4Demos

${OUT_DIR}/target/common/obj/PACKAGING/android-support-v13_intermediates/android-support-v13.jar  extras/android/support/v13/android-support-v13.jar
frameworks/support/v13                                                                            extras/android/support/v13/src
development/samples/Support13Demos                                                                extras/android/support/samples/Support13Demos

development/sdk/prebuilt/v7                                                                       extras/android/support/v7

##############################################################################
# Tests Component
##############################################################################
framework/layoutlib-tests.jar tests/libtests/layoutlib-tests.jar
system/app/ConnectivityTest.apk tests/emulator-test-apps/ConnectivityTest.apk
system/app/GpsLocationTest.apk tests/emulator-test-apps/GpsLocationTest.apk
