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

