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


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

# delete linux rs/bcc files
rm build-tools/${PLATFORM_NAME}/llvm-rs-cc
rm build-tools/${PLATFORM_NAME}/libLLVM.so
rm build-tools/${PLATFORM_NAME}/libclang.so
rm build-tools/${PLATFORM_NAME}/libbcc.so
rm build-tools/${PLATFORM_NAME}/libbcinfo.so
rm build-tools/${PLATFORM_NAME}/bcc_compat

###RM(2014-05-02) Temporarily disable rs/bcc for the Windows SDK as we fix cross-compilation issues
###bin/llvm-rs-cc.exe                      strip build-tools/${PLATFORM_NAME}/llvm-rs-cc.exe
###
###lib/libLLVM.dll                         strip build-tools/${PLATFORM_NAME}/libLLVM.dll
###
###lib/libclang.dll                        strip build-tools/${PLATFORM_NAME}/libclang.dll
###
####bcc not yet compiled on windows
###
###lib/libbcc.dll                          strip build-tools/${PLATFORM_NAME}/libbcc.dll
###
###lib/libbcinfo.dll                       strip build-tools/${PLATFORM_NAME}/libbcinfo.dll
###
###bin/bcc_compat.exe                      strip build-tools/${PLATFORM_NAME}/bcc_compat.exe


###XAV(2014-06-17) Temporarily get rs/bcc from a prebuilt.
prebuilts/misc/windows/renderscript/llvm-rs-cc.exe     build-tools/${PLATFORM_NAME}/llvm-rs-cc.exe
prebuilts/misc/windows/renderscript/libLLVM.dll        build-tools/${PLATFORM_NAME}/libLLVM.dll
prebuilts/misc/windows/renderscript/libclang.dll       build-tools/${PLATFORM_NAME}/libclang.dll
prebuilts/misc/windows/renderscript/libbcc.dll         build-tools/${PLATFORM_NAME}/libbcc.dll
prebuilts/misc/windows/renderscript/libbcinfo.dll      build-tools/${PLATFORM_NAME}/libbcinfo.dll
prebuilts/misc/windows/renderscript/bcc_compat.exe     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


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

