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

# host tools from out/host/$(HOST_OS)-$(HOST_ARCH)/
bin/adb                                       platform-tools/adb
bin/aapt                                      platform-tools/aapt
bin/aidl                                      platform-tools/aidl
bin/llvm-rs-cc                                platform-tools/llvm-rs-cc
# dx
bin/dx                                        platform-tools/dx
bin/dexdump                                   platform-tools/dexdump
framework/dx.jar                              platform-tools/lib/dx.jar

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

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

# version files for the SDK updater, from sdk.git
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

# Framework include for Renderscript
frameworks/base/libs/rs/scriptc  platforms/${PLATFORM_NAME}/renderscript/include
external/clang/lib/Headers       platforms/${PLATFORM_NAME}/renderscript/clang-include
external/clang/LICENSE.TXT       platforms/${PLATFORM_NAME}/renderscript/clang-include/LICENSE.TXT

# System images + Kernel
system.img                              platforms/${PLATFORM_NAME}/images/system.img
ramdisk.img                             platforms/${PLATFORM_NAME}/images/ramdisk.img
userdata.img                            platforms/${PLATFORM_NAME}/images/userdata.img
prebuilt/android-arm/kernel/kernel-qemu platforms/${PLATFORM_NAME}/images/kernel-qemu

# 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/WXGA       platforms/${PLATFORM_NAME}/skins/WXGA

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

# sdk.git Ant templates for project files
sdk/templates/AndroidManifest.template        platforms/${PLATFORM_NAME}/templates/AndroidManifest.template
sdk/templates/AndroidManifest.tests.template  platforms/${PLATFORM_NAME}/templates/AndroidManifest.tests.template
sdk/templates/java_file.template              platforms/${PLATFORM_NAME}/templates/java_file.template
sdk/templates/java_tests_file.template        platforms/${PLATFORM_NAME}/templates/java_tests_file.template
sdk/templates/layout.template                 platforms/${PLATFORM_NAME}/templates/layout.template
sdk/templates/strings.template                platforms/${PLATFORM_NAME}/templates/strings.template
sdk/templates/icon_ldpi.png                   platforms/${PLATFORM_NAME}/templates/icon_ldpi.png
sdk/templates/icon_mdpi.png                   platforms/${PLATFORM_NAME}/templates/icon_mdpi.png
sdk/templates/icon_hdpi.png                   platforms/${PLATFORM_NAME}/templates/icon_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/fonts.xml                 platforms/${PLATFORM_NAME}/data/fonts/fonts.xml
frameworks/base/data/fonts/DroidSans.ttf             platforms/${PLATFORM_NAME}/data/fonts/DroidSans.ttf
frameworks/base/data/fonts/DroidSans-Bold.ttf        platforms/${PLATFORM_NAME}/data/fonts/DroidSans-Bold.ttf
frameworks/base/data/fonts/DroidSansMono.ttf         platforms/${PLATFORM_NAME}/data/fonts/DroidSansMono.ttf
frameworks/base/data/fonts/DroidSerif-Bold.ttf       platforms/${PLATFORM_NAME}/data/fonts/DroidSerif-Bold.ttf
frameworks/base/data/fonts/DroidSerif-BoldItalic.ttf platforms/${PLATFORM_NAME}/data/fonts/DroidSerif-BoldItalic.ttf
frameworks/base/data/fonts/DroidSerif-Italic.ttf     platforms/${PLATFORM_NAME}/data/fonts/DroidSerif-Italic.ttf
frameworks/base/data/fonts/DroidSerif-Regular.ttf    platforms/${PLATFORM_NAME}/data/fonts/DroidSerif-Regular.ttf
frameworks/base/data/fonts/DroidSansFallback.ttf     platforms/${PLATFORM_NAME}/data/fonts/DroidSansFallback.ttf
frameworks/base/data/fonts/DroidSansJapanese.ttf     platforms/${PLATFORM_NAME}/data/fonts/DroidSansJapanese.ttf

# 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

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

# version files for the SDK updater, from sdk.git
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/source.properties        samples/${PLATFORM_NAME}/source.properties
#
# PLEASE KEEP THE SAMPLES IN ALPHABETICAL ORDER.
#
development/samples/AccessibilityService       samples/${PLATFORM_NAME}/AccessibilityService
development/samples/AccelerometerPlay          samples/${PLATFORM_NAME}/AccelerometerPlay
development/samples/ApiDemos                   samples/${PLATFORM_NAME}/ApiDemos
${OUT_DIR}/target/common/obj/PACKAGING/android-support-v4_intermediates/android-support-v4.jar    samples/${PLATFORM_NAME}/ApiDemos/libs/android-support-v4.jar
development/samples/BackupRestore              samples/${PLATFORM_NAME}/BackupRestore
development/samples/BasicGLSurfaceView         samples/${PLATFORM_NAME}/BasicGLSurfaceView
development/samples/BluetoothChat              samples/${PLATFORM_NAME}/BluetoothChat
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/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/VoiceRecognitionService    samples/${PLATFORM_NAME}/VoiceRecognitionService
development/samples/WeatherListWidget          samples/${PLATFORM_NAME}/WeatherListWidget
development/apps/WidgetPreview                 samples/${PLATFORM_NAME}/WidgetPreview
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/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: Compatibility
##############################################################################

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