#
# Copyright (C) 2011 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 *Windows* SDK.
#
# The Windows SDK is based on the Linux one so in this file we
# need to remove Linux binaries and replace them by their
# Windows counterparts.
#
# This file only includes platform-dependent files.
# Tools-dependent files (and not tied to a specific platform)
# are controled by sdk/build/tools.windows.atree.
#

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

rm platform-tools/adb
rm platform-tools/fastboot
bin/adb.exe                             strip platform-tools/adb.exe
bin/fastboot.exe                        strip platform-tools/fastboot.exe
bin/AdbWinUsbApi.dll                          platform-tools/AdbWinUsbApi.dll
bin/AdbWinApi.dll                             platform-tools/AdbWinApi.dll

rm platform-tools/sqlite3
bin/sqlite3.exe                        strip platform-tools/sqlite3.exe

rm platform-tools/dmtracedump
bin/dmtracedump.exe                    strip platform-tools/dmtracedump.exe

rm platform-tools/hprof-conv
bin/hprof-conv.exe                     strip platform-tools/hprof-conv.exe

rm platform-tools/etc1tool
bin/etc1tool.exe                       strip platform-tools/etc1tool.exe



##############################################################################
# Build Tools Component
##############################################################################
# Note that the build-tools sub-folder uses the platform-name as a placeholder
# at build-time. Packaging will later change that to the actual build-tools
# revision as specified in the source.properties.

rm build-tools/${PLATFORM_NAME}/aapt
bin/aapt.exe                            strip build-tools/${PLATFORM_NAME}/aapt.exe

rm build-tools/${PLATFORM_NAME}/split-select
bin/split-select.exe                    strip build-tools/${PLATFORM_NAME}/split-select.exe

rm build-tools/${PLATFORM_NAME}/aidl
bin/aidl.exe                            strip build-tools/${PLATFORM_NAME}/aidl.exe

rm build-tools/${PLATFORM_NAME}/zipalign
bin/zipalign.exe                        strip build-tools/${PLATFORM_NAME}/zipalign.exe

rm build-tools/${PLATFORM_NAME}/dx
dalvik/dx/etc/dx.bat                          build-tools/${PLATFORM_NAME}/dx.bat
rm build-tools/${PLATFORM_NAME}/dexdump
bin/dexdump.exe                         strip build-tools/${PLATFORM_NAME}/dexdump.exe

rm build-tools/${PLATFORM_NAME}/llvm-rs-cc
bin/llvm-rs-cc.exe                      strip build-tools/${PLATFORM_NAME}/llvm-rs-cc.exe

rm build-tools/${PLATFORM_NAME}/../lib/libLLVM.so
lib/libLLVM.dll                         strip build-tools/${PLATFORM_NAME}/../lib/libLLVM.dll

rm build-tools/${PLATFORM_NAME}/../lib/libclang.so
lib/libclang.dll                        strip build-tools/${PLATFORM_NAME}/../lib/libclang.dll

#bcc not yet compiled on windows

rm build-tools/${PLATFORM_NAME}/../lib/libbcc.so
lib/libbcc.dll                          strip build-tools/${PLATFORM_NAME}/../lib/libbcc.dll

rm build-tools/${PLATFORM_NAME}/../lib/libbcinfo.so
lib/libbcinfo.dll                       strip build-tools/${PLATFORM_NAME}/../lib/libbcinfo.dll

rm build-tools/${PLATFORM_NAME}/bcc_compat
bin/bcc_compat.exe                      strip build-tools/${PLATFORM_NAME}/bcc_compat.exe

rm build-tools/${PLATFORM_NAME}/arm-linux-androideabi-ld
prebuilts/sdk/tools/windows/arm-linux-androideabi-ld.exe   strip build-tools/${PLATFORM_NAME}/arm-linux-androideabi-ld.exe

rm build-tools/${PLATFORM_NAME}/i686-linux-android-ld
prebuilts/sdk/tools/windows/i686-linux-android-ld.exe      strip build-tools/${PLATFORM_NAME}/i686-linux-android-ld.exe

rm build-tools/${PLATFORM_NAME}/mipsel-linux-android-ld
prebuilts/sdk/tools/windows/mipsel-linux-android-ld.exe    strip build-tools/${PLATFORM_NAME}/mipsel-linux-android-ld.exe

dalvik/dx/etc/mainDexClasses.bat             build-tools/${PLATFORM_NAME}/mainDexClasses.bat


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

external/sonivox/docs/JET_Authoring_Guidelines.html   docs/JetCreator/JET_Authoring_Guidelines.html
external/sonivox/docs/JET_Authoring_Guidelines_files  docs/JetCreator/JET_Authoring_Guidelines_files
external/sonivox/docs/JET_Creator_User_Manual.html    docs/JetCreator/JET_Creator_User_Manual.html
external/sonivox/docs/JET_Creator_User_Manual_files   docs/JetCreator/JET_Creator_User_Manual_files

