apply plugin: 'sdk-files'

import com.android.tools.internal.emulator.BuildEmulator

task buildDefaultEmulator(type: BuildEmulator) {
    output = new File(project.buildDir, "default")
}

task buildWindowsEmulator(type: BuildEmulator) {
    output = new File(project.buildDir, "windows")
    windows = true
}

sdk {

    common(mac, linux) {
        item('android/avd/hardware-properties.ini') {
            into 'lib'
            notice null
        }
        item("$buildDefaultEmulator.output/emulator") {
            executable true
            builtBy buildDefaultEmulator
        }
        item("$buildDefaultEmulator.output/qemu") {
            into 'qemu'
            builtBy buildDefaultEmulator
        }
        item("$buildDefaultEmulator.output/lib") {
            into 'lib'
            builtBy buildDefaultEmulator
        }
        item("$buildDefaultEmulator.output/lib64") {
            into 'lib64'
            builtBy buildDefaultEmulator
        }
        item("$project.rootDir/../prebuilts/qemu-kernel/x86/pc-bios/bios.bin") {
            into 'lib/pc-bios'
        }
        item("$project.rootDir/../prebuilts/qemu-kernel/x86/pc-bios/vgabios-cirrus.bin") {
            into 'lib/pc-bios'
        }

        item("$buildDefaultEmulator.output/emulator64-ranchu-arm64") {
            executable true
            builtBy buildDefaultEmulator
        }

        item("$buildDefaultEmulator.output/emulator64-ranchu-mips64") {
            executable true
            builtBy buildDefaultEmulator
        }

        item("$buildDefaultEmulator.output/emulator64-arm") {
            executable true
            builtBy buildDefaultEmulator
        }

        item("$buildDefaultEmulator.output/emulator64-mips") {
            executable true
            builtBy buildDefaultEmulator
        }

        item("$buildDefaultEmulator.output/emulator64-x86") {
            executable true
            builtBy buildDefaultEmulator
        }
    }

    // 32 bit binaries are linux only
    linux {
        item("$buildDefaultEmulator.output/emulator-arm") {
            executable true
            builtBy buildDefaultEmulator
        }
        item("$buildDefaultEmulator.output/emulator-mips") {
            executable true
            builtBy buildDefaultEmulator
        }
        item("$buildDefaultEmulator.output/emulator-x86") {
            executable true
            builtBy buildDefaultEmulator
        }
        item("$buildDefaultEmulator.output/emulator-ranchu-arm64") {
            executable true
            builtBy buildDefaultEmulator
        }
        item("$buildDefaultEmulator.output/emulator-ranchu-mips64") {
            executable true
            builtBy buildDefaultEmulator
        }
    }

    windows {
        item('android/avd/hardware-properties.ini') {
            into 'lib'
            notice null
        }
        item("$buildWindowsEmulator.output/emulator.exe") {
            builtBy buildWindowsEmulator
        }
        item("$buildWindowsEmulator.output/qemu") {
            into 'qemu'
            builtBy buildWindowsEmulator
        }
        item("$buildWindowsEmulator.output/lib") {
            into 'lib'
            builtBy buildWindowsEmulator
        }
        item("$project.rootDir/../prebuilts/qemu-kernel/x86/pc-bios/bios.bin") {
            into 'lib/pc-bios'
        }
        item("$project.rootDir/../prebuilts/qemu-kernel/x86/pc-bios/vgabios-cirrus.bin") {
            into 'lib/pc-bios'
        }

        item("$buildWindowsEmulator.output/emulator64-ranchu-arm64.exe") {
            builtBy buildWindowsEmulator
        }
        item("$buildWindowsEmulator.output/emulator64-ranchu-mips64.exe") {
            builtBy buildWindowsEmulator
        }
        item("$buildWindowsEmulator.output/emulator-ranchu-arm64.exe") {
            builtBy buildWindowsEmulator
        }
        item("$buildWindowsEmulator.output/emulator-ranchu-mips64.exe") {
            builtBy buildWindowsEmulator
        }
        item("$buildWindowsEmulator.output/emulator-arm.exe") {
            builtBy buildWindowsEmulator
        }
        item("$buildWindowsEmulator.output/emulator-mips.exe") {
            builtBy buildWindowsEmulator
        }
        item("$buildWindowsEmulator.output/emulator-x86.exe") {
            builtBy buildWindowsEmulator
        }

/*
XAV(2014-06-17): DISABLE win64 exe until it's ready
        item("$buildWindowsEmulator.output/emulator64-arm.exe") {
            builtBy buildWindowsEmulator
        }

        item("$buildWindowsEmulator.output/emulator64-mips.exe") {
            builtBy buildWindowsEmulator
        }

        item("$buildWindowsEmulator.output/emulator64-x86.exe") {
            builtBy buildWindowsEmulator
        }
*/
    }
}

