plugins { id 'cpp' id 'java' id 'edu.wpi.first.wpilib.repositories.WPILibRepositoriesPlugin' version '2020.1' id 'edu.wpi.first.NativeUtils' version '2020.1.0' id 'edu.wpi.first.GradleJni' version '0.9.1' id 'edu.wpi.first.GradleVsCode' version '0.9.4' } repositories { mavenCentral() } if (project.hasProperty('releaseMode')) { wpilibRepositories.addAllReleaseRepositories(project) } else { wpilibRepositories.addAllDevelopmentRepositories(project) } // Apply C++ configuration apply from: 'config.gradle' // Apply Java configuration dependencies { compile 'edu.wpi.first.cscore:cscore-java:2019.+' compile 'edu.wpi.first.cameraserver:cameraserver-java:2019.+' compile 'edu.wpi.first.ntcore:ntcore-java:2019.+' compile 'edu.wpi.first.wpilibj:wpilibj-java:2019.+' compile 'edu.wpi.first.wpiutil:wpiutil-java:2019.+' compile 'edu.wpi.first.hal:hal-java:2019.+' compile 'edu.wpi.first.thirdparty.frc2020.opencv:opencv-java:3.4.7-1' } // Set up exports properly nativeUtils { exportsConfigs { // Main library is just default empty. This will export everything Vendor { } } privateExportsConfigs { // Only export explicit symbols from driver library VendorDriver { exportsFile = project.file("src/main/driver/symbols.txt") } } } model { components { Vendor(NativeLibrarySpec) { sources { cpp { source { srcDirs 'src/main/native/cpp' include '**/*.cpp' } exportedHeaders { srcDirs 'src/main/native/include' } } } binaries.all { lib library: 'VendorDriver', linkage: 'shared' } nativeUtils.useRequiredLibrary(it, 'wpilib_shared') } VendorDriver(JniNativeLibrarySpec) { enableCheckTask true javaCompileTasks << compileJava jniCrossCompileOptions << JniCrossCompileOptions(nativeUtils.wpi.platforms.roborio) // Leave these for future proofing jniCrossCompileOptions << JniCrossCompileOptions(nativeUtils.wpi.platforms.raspbian) jniCrossCompileOptions << JniCrossCompileOptions(nativeUtils.wpi.platforms.aarch64bionic) sources { cpp { source { srcDirs 'src/main/driver/cpp' include '**/*.cpp' } exportedHeaders { srcDirs 'src/main/driver/include' } } } nativeUtils.useRequiredLibrary(it, "driver_shared") } } } apply from: 'publish.gradle' wrapper { gradleVersion '5.4.1' }