apply plugin: 'cpp'
apply plugin: 'sdk-files'
apply plugin: 'windows-setup'

executables {
    findJava {}
}

sources {
    findJava {
        cpp {
            source {
                srcDir "src/source"
                include "**/*.cpp"
            }
        }
    }
}

sdk {
    windows {
        item( { getExeName("windows32FindJavaExecutable") } ) {
            into 'lib'
            name 'find_java32.exe'
            builtBy 'windows32FindJavaExecutable'
            notice 'NOTICE'
        }
        item( { getExeName("windows64FindJavaExecutable") } ) {
            into 'lib'
            name 'find_java64.exe'
            builtBy 'windows64FindJavaExecutable'
            notice 'NOTICE'
        }
        item('find_java.bat') {
            into 'lib'
            notice 'NOTICE'
        }
    }
}

def getExeName(String name) {
    // binaries will return a set of binaries
    def binaries = executables.findJava.binaries.matching { it.name == name }
    // calling .exeFile on the set returns an array with the result from each item in the set...
    return binaries.executableFile.get(0)
}

