import org.gradle.language.base.internal.ProjectLayout apply plugin: 'cpp' apply plugin: 'visual-studio' apply plugin: 'edu.wpi.first.NativeUtils' apply from: '../shared/config.gradle' ext.examplesMap = [:] ext.templatesMap = [:] File examplesTree = file("$projectDir/src/main/cpp/examples") examplesTree.list(new FilenameFilter() { @Override public boolean accept(File current, String name) { return new File(current, name).isDirectory(); } }).each { examplesMap.put(it, []) } File templatesTree = file("$projectDir/src/main/cpp/templates") templatesTree.list(new FilenameFilter() { @Override public boolean accept(File current, String name) { return new File(current, name).isDirectory(); } }).each { templatesMap.put(it, []) } ext { sharedCvConfigs = examplesMap + templatesMap staticCvConfigs = [:] useJava = false useCpp = true } apply from: "${rootDir}/shared/opencv.gradle" model { components { examplesMap.each { key, value -> "${key}"(NativeExecutableSpec) { binaries.all { binary -> lib project: ':wpilibc', library: 'wpilibc', linkage: 'shared' lib project: ':ntcore', library: 'ntcore', linkage: 'shared' lib project: ':cscore', library: 'cscore', linkage: 'shared' lib project: ':hal', library: 'hal', linkage: 'shared' lib project: ':cameraserver', library: 'cameraserver', linkage: 'shared' lib project: ':wpiutil', library: 'wpiutil', linkage: 'shared' project(':ni-libraries').addNiLibrariesToLinker(binary) if (binary.targetPlatform.architecture.name != 'athena') { lib project: ':simulation:halsim_lowfi', library: 'halsim_lowfi', linkage: 'shared' lib project: ':simulation:halsim_adx_gyro_accelerometer', library: 'halsim_adx_gyro_accelerometer', linkage: 'shared' lib project: ':simulation:halsim_print', library: 'halsim_print', linkage: 'shared' lib project: ':simulation:halsim_ds_nt', library: 'halsim_ds_nt', linkage: 'shared' } } sources { cpp { source { srcDirs 'src/main/cpp/examples/' + "${key}" include '**/*.cpp' } } } } } templatesMap.each { key, value -> "${key}"(NativeExecutableSpec) { binaries.all { binary -> lib project: ':wpilibc', library: 'wpilibc', linkage: 'shared' lib project: ':ntcore', library: 'ntcore', linkage: 'shared' lib project: ':cscore', library: 'cscore', linkage: 'shared' lib project: ':hal', library: 'hal', linkage: 'shared' lib project: ':cameraserver', library: 'cameraserver', linkage: 'shared' lib project: ':wpiutil', library: 'wpiutil', linkage: 'shared' binary.tasks.withType(CppCompile) { if (!(binary.toolChain in VisualCpp)) { cppCompiler.args "-Wno-error=deprecated-declarations" } } project(':ni-libraries').addNiLibrariesToLinker(binary) if (binary.targetPlatform.architecture.name != 'athena') { lib project: ':simulation:halsim_lowfi', library: 'halsim_lowfi', linkage: 'shared' lib project: ':simulation:halsim_adx_gyro_accelerometer', library: 'halsim_adx_gyro_accelerometer', linkage: 'shared' lib project: ':simulation:halsim_print', library: 'halsim_print', linkage: 'shared' lib project: ':simulation:halsim_ds_nt', library: 'halsim_ds_nt', linkage: 'shared' } } sources { cpp { source { srcDirs 'src/main/cpp/templates/' + "${key}" include '**/*.cpp' } } } } } } tasks { def b = $.binaries b.each { binary-> if (binary in NativeExecutableBinarySpec) { def installDir = binary.tasks.install.installDirectory.get().toString() + File.separatorChar def runFile = binary.tasks.install.runScriptFile.get().asFile.toString() binary.tasks.install.doLast { if (binary.targetPlatform.operatingSystem.isWindows()) { // Windows batch scripts def fileName = binary.component.name + 'LowFi.bat' def file = new File(installDir + fileName) file.withWriter { out -> out.println '@ECHO OFF' out.print 'SET HALSIM_EXTENSIONS=' out.print '"' + new File(installDir + 'lib\\halsim_lowfi.dll').toString() + '";' out.println '"' + new File(installDir + 'lib\\halsim_ds_nt.dll').toString() + '"' out.println runFile + ' %*' } fileName = binary.component.name + 'LowFiRealDS.bat' file = new File(installDir + fileName) file.withWriter { out -> out.println '@ECHO OFF' out.print 'SET HALSIM_EXTENSIONS=' out.print '"' + new File(installDir + 'lib\\halsim_lowfi.dll').toString() + '";' out.println '"' + new File(installDir + 'lib\\halsim_ds_socket.dll').toString() + '"' out.println runFile + ' %*' } } else { def fileName = binary.component.name + 'LowFi.sh' def file = new File(installDir + fileName) file.withWriter { out -> out.print 'export HALSIM_EXTENSIONS=' out.print '"' + new File(installDir + '/lib/libhalsim_lowfi.so').toString() + '";' out.println '"' + new File(installDir + '/lib/libhalsim_ds_nt.so').toString() + '"' out.println runFile + ' "$@"' } fileName = binary.component.name + 'LowFiRealDS.sh' file = new File(installDir + fileName) file.withWriter { out -> out.print 'export HALSIM_EXTENSIONS=' out.print '"' + new File(installDir + '/lib/libhalsim_lowfi.so').toString() + '":' out.println '"' + new File(installDir + '/lib/libhalsim_ds_socket.so').toString() + '"' out.println runFile + ' "$@"' } } } } } } } apply from: 'publish.gradle'