#
# Copyright (C) 2010 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 the tools component of the SDK.
#

prebuilts/devtools/tools/lib                  tools/lib

prebuilts/devtools/tools/android              tools/android
prebuilts/devtools/tools/draw9patch           tools/draw9patch
prebuilts/devtools/tools/ddms                 tools/ddms
prebuilts/devtools/tools/hierarchyviewer      tools/hierarchyviewer
prebuilts/devtools/tools/jobb                 tools/jobb
prebuilts/devtools/tools/lint                 tools/lint
prebuilts/devtools/tools/monkeyrunner         tools/monkeyrunner
prebuilts/devtools/tools/traceview            tools/traceview
prebuilts/devtools/tools/uiautomatorviewer    tools/uiautomatorviewer

prebuilts/devtools/notices/NOTICE.txt         tols/NOTICE.txt


##############################################################################
# Tools Component
##############################################################################

# version files for the SDK updater, from sdk.git
sdk/files/tools_source.properties                   tools/source.properties

# copy plugin.prop from sdk.git
sdk/files/plugin.prop                               tools/lib/plugin.prop

# readme regarding adb move to platform-tools
sdk/files/adb_has_moved.txt                         tools/adb_has_moved.txt

# native host tools from out/host/$(HOST_OS)-$(HOST_ARCH)/
bin/sqlite3                                   strip tools/sqlite3
bin/dmtracedump                               strip tools/dmtracedump
bin/etc1tool                                  strip tools/etc1tool
bin/hprof-conv                                strip tools/hprof-conv
bin/mksdcard                                  strip tools/mksdcard
bin/zipalign                                  strip tools/zipalign

# emulator
bin/emulator                                  strip tools/emulator
bin/emulator-x86                              strip tools/emulator-x86
bin/emulator-arm                              strip tools/emulator-arm
bin/emulator-mips                             strip tools/emulator-mips
bin/emulator64-x86                            strip tools/emulator64-x86
bin/emulator64-arm                            strip tools/emulator64-arm
bin/emulator64-mips                           strip tools/emulator64-mips
sdk/emulator/snapshot/snapshots.img                 tools/lib/emulator/snapshots.img
usr/share/pc-bios/bios.bin                          tools/lib/pc-bios/bios.bin
usr/share/pc-bios/vgabios-cirrus.bin                tools/lib/pc-bios/vgabios-cirrus.bin
sdk/emulator/skins/dynamic                          tools/lib/emulator/skins/dynamic

# OpenGLES emulation libraries
lib/libOpenglRender${DLL_EXTENSION}           strip tools/lib/libOpenglRender${DLL_EXTENSION}
lib/libGLES_CM_translator${DLL_EXTENSION}     strip tools/lib/libGLES_CM_translator${DLL_EXTENSION}
lib/libGLES_V2_translator${DLL_EXTENSION}     strip tools/lib/libGLES_V2_translator${DLL_EXTENSION}
lib/libEGL_translator${DLL_EXTENSION}         strip tools/lib/libEGL_translator${DLL_EXTENSION}
lib/lib64OpenglRender${DLL_EXTENSION}         strip tools/lib/lib64OpenglRender${DLL_EXTENSION}
lib/lib64GLES_CM_translator${DLL_EXTENSION}   strip tools/lib/lib64GLES_CM_translator${DLL_EXTENSION}
lib/lib64GLES_V2_translator${DLL_EXTENSION}   strip tools/lib/lib64GLES_V2_translator${DLL_EXTENSION}
lib/lib64EGL_translator${DLL_EXTENSION}       strip tools/lib/lib64EGL_translator${DLL_EXTENSION}


# sdk.git Ant templates for project build files
sdk/templates/build.template                        tools/lib/build.template
sdk/templates/uibuild.template                      tools/lib/uibuild.template
sdk/files/proguard-project.txt                      tools/lib/proguard-project.txt
sdk/files/proguard-android.txt                      tools/proguard/proguard-android.txt
sdk/files/proguard-android-optimize.txt             tools/proguard/proguard-android-optimize.txt

# Ant Build Rules
sdk/files/ant                                       tools/ant
sdk/files/sdk_files_NOTICE.txt                      tools/ant/NOTICE.txt

# layout device definition
sdk/files/devices.xml                               tools/lib/devices.xml

# AVD Hardware property list
external/qemu/android/avd/hardware-properties.ini   tools/lib/hardware-properties.ini

# emacs support from sdk.git
sdk/files/android.el tools/lib/android.el

# Java Libraries for the tools
sdk/apkbuilder/etc/apkbuilder                       tools/apkbuilder

# 3rd Party java libraries
framework/emmalib.jar                                                               tools/lib/emma_device.jar
external/emma/lib/emma.jar                                                          tools/lib/emma.jar
external/emma/lib/emma_ant.jar                                                      tools/lib/emma_ant.jar

# Proguard
# We're skipping the build and src/ trees (except for src/proguard/ant/task.properties)
# and copying in a license.html file
prebuilts/tools/common/proguard/license.html                   tools/proguard/license.html
prebuilts/tools/common/proguard/proguard4.7/README             tools/proguard/README
prebuilts/tools/common/proguard/proguard4.7/docs               tools/proguard/docs
prebuilts/tools/common/proguard/proguard4.7/examples           tools/proguard/examples
prebuilts/tools/common/proguard/proguard4.7/lib                tools/proguard/lib
prebuilts/tools/common/proguard/proguard4.7/bin/proguard.sh    tools/proguard/bin/proguard.sh
prebuilts/tools/common/proguard/proguard4.7/bin/proguardgui.sh tools/proguard/bin/proguardgui.sh
prebuilts/tools/common/proguard/proguard4.7/bin/retrace.sh     tools/proguard/bin/retrace.sh
prebuilts/tools/common/proguard/proguard4.7/src/proguard/ant/task.properties  tools/proguard/ant/task.properties

# Templates
sdk/templates/projects                  tools/templates/projects
sdk/templates/activities                tools/templates/activities
sdk/templates/other                     tools/templates/other

# SDK Controller
sdk/apps/SdkController                  tools/apps/SdkController

# tools specific support jar
framework/annotations.jar               tools/support/annotations.jar

# systrace
external/chromium-trace/systrace.py     tools/systrace/systrace.py
external/chromium-trace/script.js       tools/systrace/script.js
external/chromium-trace/style.css       tools/systrace/style.css
external/chromium-trace/LICENSE         tools/systrace/LICENSE
external/chromium-trace/AUTHORS         tools/systrace/AUTHORS
external/chromium-trace/NOTICE          tools/systrace/NOTICE

# Misspelling databases for lint
sdk/files/typos                         tools/support

##############################################################################
# Tests Component
##############################################################################

sdk/testapps                            tests/testapps

