| apply plugin: 'cpp' |
| apply plugin: 'google-test-test-suite' |
| apply plugin: 'visual-studio' |
| apply plugin: 'edu.wpi.first.NativeUtils' |
| apply plugin: SingleNativeBuild |
| apply plugin: ExtraTasks |
| |
| apply from: "${rootDir}/shared/config.gradle" |
| |
| ext { |
| baseId = nativeName |
| groupId = "edu.wpi.first.${nativeName}" |
| } |
| |
| apply from: "${rootDir}/shared/java/javacommon.gradle" |
| |
| project(':').libraryBuild.dependsOn build |
| |
| ext { |
| staticGtestConfigs = [:] |
| } |
| |
| staticGtestConfigs["${nativeName}Test"] = [] |
| |
| apply from: "${rootDir}/shared/googletest.gradle" |
| |
| model { |
| components { |
| "${nativeName}Base"(NativeLibrarySpec) { |
| sources { |
| cpp { |
| source { |
| srcDirs 'src/main/native/cpp' |
| include '**/*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/include' |
| } |
| } |
| } |
| binaries.all { |
| if (it instanceof SharedLibraryBinarySpec) { |
| it.buildable = false |
| return |
| } |
| if (project.hasProperty('extraSetup')) { |
| extraSetup(it) |
| } |
| } |
| } |
| "${nativeName}"(NativeLibrarySpec) { |
| sources { |
| cpp { |
| source { |
| srcDirs "${rootDir}/shared/singlelib" |
| include '**/*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/include' |
| } |
| } |
| } |
| appendDebugPathToBinaries(binaries) |
| } |
| // By default, a development executable will be generated. This is to help the case of |
| // testing specific functionality of the library. |
| "${nativeName}Dev"(NativeExecutableSpec) { |
| targetBuildTypes 'debug' |
| sources { |
| cpp { |
| source { |
| srcDirs 'src/dev/native/cpp' |
| include '**/*.cpp' |
| lib library: nativeName |
| } |
| exportedHeaders { |
| srcDirs 'src/dev/native/include' |
| } |
| } |
| } |
| } |
| } |
| testSuites { |
| "${nativeName}Test"(GoogleTestTestSuiteSpec) { |
| for(NativeComponentSpec c : $.components) { |
| if (c.name == nativeName) { |
| testing c |
| break |
| } |
| } |
| sources { |
| cpp { |
| source { |
| srcDirs 'src/test/native/cpp' |
| include '**/*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/test/native/include', 'src/main/native/cpp' |
| } |
| } |
| } |
| } |
| } |
| binaries { |
| withType(GoogleTestTestSuiteBinarySpec) { |
| lib library: nativeName, linkage: 'shared' |
| } |
| } |
| tasks { |
| def c = $.components |
| project.tasks.create('runCpp', Exec) { |
| group = 'WPILib' |
| description = "Run the ${nativeName}Dev executable" |
| def found = false |
| def systemArch = getCurrentArch() |
| c.each { |
| if (it in NativeExecutableSpec && it.name == "${nativeName}Dev") { |
| it.binaries.each { |
| if (!found) { |
| def arch = it.targetPlatform.name |
| if (arch == systemArch) { |
| dependsOn it.tasks.install |
| commandLine it.tasks.install.runScriptFile.get().asFile.toString() |
| def filePath = it.tasks.install.installDirectory.get().toString() + File.separatorChar + 'lib' |
| test.dependsOn it.tasks.install |
| test.systemProperty 'java.library.path', filePath |
| test.environment 'LD_LIBRARY_PATH', filePath |
| test.workingDir filePath |
| run.dependsOn it.tasks.install |
| run.systemProperty 'java.library.path', filePath |
| run.environment 'LD_LIBRARY_PATH', filePath |
| run.workingDir filePath |
| |
| found = true |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| apply from: "${rootDir}/shared/cppDesktopTestTask.gradle" |
| apply from: "${rootDir}/shared/javaDesktopTestTask.gradle" |
| |
| tasks.withType(RunTestExecutable) { |
| args "--gtest_output=xml:test_detail.xml" |
| outputs.dir outputDir |
| } |
| |
| apply from: "${rootDir}/shared/javacpp/publish.gradle" |