mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
current platform by default, and only builds tests when building for the current platform. Mac builds and VS2015 builds are fixed. The other big change in this update is the introduction of Debug and Release builds. Debug builds are built with -O0 and -g. Release builds are built with -O2 and -g. For GCC-based builds, the resulting shared object is copied, stripped of debug information, and a debug link is set up to the copied shared object. This allows the release build to clock in at around 600 KB. On Windows, the debug info is already stored in a separate PDB file, so this copy and strip is not necessary. ntcore is being separated out from the rest of allwpilib. All other builds will consume a published maven dependency from this project. There are 4 possible publishing targets now: release, stable, beta, and development. These are specified on the command line via -Prepo=<repo name>. Change-Id: Ie8cb21f910953e09b80a5192317033eb0866cb70
121 lines
3.7 KiB
Groovy
121 lines
3.7 KiB
Groovy
import org.gradle.internal.os.OperatingSystem
|
|
|
|
apply plugin: 'java'
|
|
|
|
def generatedJNIHeaderLoc = 'build/include'
|
|
|
|
sourceSets {
|
|
main {
|
|
java {
|
|
srcDirs = ['java/src']
|
|
}
|
|
}
|
|
}
|
|
|
|
jar {
|
|
description = 'Generates NetworkTables jar, with the JNI shared libraries embedded'
|
|
|
|
if (buildPlatform == 'arm') {
|
|
dependsOn { ntcoreSharedLibrary }
|
|
} else {
|
|
dependsOn { x64NtcoreSharedLibrary }
|
|
dependsOn { x86NtcoreSharedLibrary }
|
|
}
|
|
|
|
dependsOn { classes }
|
|
binaries.withType(SharedLibraryBinary) { binary ->
|
|
from(file(binary.sharedLibraryFile)) {
|
|
into getPlatformPath(binary)
|
|
}
|
|
}
|
|
}
|
|
|
|
task networktablesJavaSource(type: Jar, dependsOn: classes) {
|
|
description = 'Generates the source jar for NetworkTables java'
|
|
group = 'WPILib'
|
|
classifier = 'source'
|
|
from sourceSets.main.allJava
|
|
}
|
|
|
|
task networktablesJavadoc(type: Jar, dependsOn: javadoc) {
|
|
description = 'Generates the javadoc jar for NetworkTables java'
|
|
group = 'WPILib'
|
|
classifier = 'javadoc'
|
|
from javadoc.destinationDir
|
|
}
|
|
|
|
/**
|
|
* Generates the JNI headers
|
|
*/
|
|
task jniHeadersNetworkTables {
|
|
description = 'Generates JNI headers from edu.wpi.first.wpilibj.networktables.*'
|
|
group = 'WPILib'
|
|
def outputFolder = file(generatedJNIHeaderLoc)
|
|
inputs.files sourceSets.main.output
|
|
outputs.file outputFolder
|
|
doLast {
|
|
outputFolder.mkdirs()
|
|
exec {
|
|
executable org.gradle.internal.jvm.Jvm.current().getExecutable('javah')
|
|
args '-d', outputFolder
|
|
args '-classpath', sourceSets.main.output.classesDir
|
|
args 'edu.wpi.first.wpilibj.networktables.NetworkTablesJNI'
|
|
}
|
|
}
|
|
}
|
|
|
|
clean {
|
|
delete generatedJNIHeaderLoc
|
|
}
|
|
|
|
compileJava {
|
|
options.compilerArgs << '-Xlint:unchecked'
|
|
}
|
|
|
|
javadoc {
|
|
options.addStringOption('Xdoclint:none', '-quiet')
|
|
}
|
|
|
|
// This creates a lambda that the main build.gradle can access, which sets up the JNI includes for the
|
|
// target build platform. This lambda is exposed as a property in the main build.gradle.
|
|
ext.setupJniIncludes = { binaries ->
|
|
def platformSpecificIncludeFlag = { loc, cppCompiler ->
|
|
if (OperatingSystem.current().isWindows()) {
|
|
cppCompiler.args "/I$loc"
|
|
} else {
|
|
cppCompiler.args '-I', loc
|
|
}
|
|
}
|
|
binaries.all {
|
|
tasks.withType(CppCompile) {
|
|
if (buildPlatform == 'arm') {
|
|
cppCompiler.args '-I', file('java/arm-linux').absolutePath
|
|
cppCompiler.args '-I', file('java/arm-linux/linux').absolutePath
|
|
} else {
|
|
def jdkLocation = org.gradle.internal.jvm.Jvm.current().javaHome
|
|
platformSpecificIncludeFlag("${jdkLocation}/include", cppCompiler)
|
|
|
|
if (targetPlatform.operatingSystem.macOsX) {
|
|
platformSpecificIncludeFlag("${jdkLocation}/include/darwin", cppCompiler)
|
|
} else if (targetPlatform.operatingSystem.linux) {
|
|
platformSpecificIncludeFlag("${jdkLocation}/include/linux", cppCompiler)
|
|
} else if (targetPlatform.operatingSystem.windows) {
|
|
platformSpecificIncludeFlag("${jdkLocation}/include/win32", cppCompiler)
|
|
} else if (targetPlatform.operatingSystem.freeBSD) {
|
|
platformSpecificIncludeFlag("${jdkLocation}/include/freebsd", cppCompiler)
|
|
}
|
|
}
|
|
|
|
jniHeadersNetworkTables.outputs.files.each { file ->
|
|
if (buildPlatform == 'arm') {
|
|
cppCompiler.args '-I', file.getPath()
|
|
} else {
|
|
platformSpecificIncludeFlag(file.getPath(), cppCompiler)
|
|
}
|
|
}
|
|
|
|
dependsOn jniHeadersNetworkTables
|
|
}
|
|
}
|
|
}
|