Files
allwpilib/wpilibc/athena.gradle
Thad House a06dd25d56 Adds cscore and opencv to wpilib (#332)
Unit tests now run using shared wpilib as well, since we had to add a ton
of sharedl ibraries anyway. Test scripts also updated to work properly.
2016-11-06 21:47:18 -08:00

176 lines
5.3 KiB
Groovy

defineNetworkTablesProperties()
defineWpiUtilProperties()
defineCsCoreProperties()
debugStripSetup(project)
def ntSourceDir = "$buildDir/ntSources"
model {
components {
wpilibc(NativeLibrarySpec) {
targetPlatform 'arm'
binaries.all {
tasks.withType(CppCompile) {
cppCompiler.args "-DNAMESPACED_WPILIB"
addNiLibraryLinks(linker, targetPlatform)
addNetworkTablesLibraryLinks(it, linker, targetPlatform)
addCsCoreLibraryLinks(it, linker, targetPlatform)
}
}
sources {
cpp {
source {
srcDirs = ["${project.shared}/src", "${project.athena}/src"]
includes = ['**/*.cpp']
}
exportedHeaders {
srcDirs = ["${project.shared}/include", "${project.athena}/include", netTablesInclude, wpiUtilInclude, csCoreInclude]
includes = ['**/*.h']
}
lib project: ':hal', library: 'HALAthena', linkage: 'shared'
}
}
}
}
}
task wpilibcZip(type: Zip) {
description = 'Zips all of the libraries for wpilibc'
group = 'WPILib'
baseName = 'wpilibc'
destinationDir = project.buildDir
duplicatesStrategy = 'exclude'
// Include the shared library file and header files from this project
model {
binaries {
withType(SharedLibraryBinarySpec) { spec ->
from(spec.sharedLibraryFile) {
into 'lib'
}
from(new File(spec.sharedLibraryFile.absolutePath + ".debug")) {
into 'lib'
}
}
}
}
from (file("${project.shared}/include")) {
into 'include'
}
from (file("${project.athena}/include")) {
into 'include'
}
// Finally, include all of the shared library objects from the ni directory
from(project.file('../ni-libraries/lib')) {
include 'libwpi.so'
into 'lib'
}
}
// Add the dependency on the wpilib_nonsharedStaticLibrary task to the wpilibc task. Because of the gradle lifecycle,
// this cannot be done purely with dependsOn in the task, as the static library task doesn't exist yet. Same goes for
// the networkTablesStaticLibrary task and the two HAL tasks below
tasks.whenTaskAdded { task ->
if (task.name.toLowerCase() == 'wpilibcsharedlibrary') {
wpilibcZip.dependsOn task
}
}
// Add the hal static and shared libraries as a dependency
project(':hal').tasks.whenTaskAdded { task ->
if (task.name.toLowerCase() == 'halathenastaticlibrary' || task.name.toLowerCase() == 'halathenasharedlibrary') {
wpilibcZip.dependsOn task
}
}
// Add the generate version file task as a dependency
tasks.whenTaskAdded { task ->
if (task.name.toLowerCase().startsWith('compilewpilib')) {
task.dependsOn generateCppVersion
}
}
if (checkDoxygen()) {
def ntSourcesDependency = project.dependencies.create('edu.wpi.first.wpilib.networktables.cpp:NetworkTables:+:sources@zip')
def ntSourcesConfig = project.configurations.detachedConfiguration(ntSourcesDependency)
ntSourcesDependency.setTransitive(false)
def ntSources = ntSourcesConfig.singleFile
task unzipCppNtSources(type: Copy) {
description = 'Unzips the C++ networktables sources for doc creation'
group = 'WPILib'
from zipTree(ntSources)
exclude 'META-INF/*'
into ntSourceDir
}
doxygen {
def halLocation = '../hal'
source new File("${project.shared}/src")
source new File("${project.shared}/include")
source new File("${project.athena}/src")
source new File("${project.athena}/include")
source new File("$ntSourceDir/src")
source new File("$ntSourceDir/include")
source new File("$halLocation/shared")
source new File("$halLocation/athena")
source new File("$halLocation/include")
// template file('cpp.doxy')
exclude 'nivision.h'
extension_mapping 'inc=C++'
project_name 'WPILibC++'
javadoc_autobrief true
recursive true
quiet true
warnings false
warn_if_doc_error false
warn_no_paramdoc false
warn_format false
warn_logfile false
warn_if_undocumented false
generate_latex false
html_timestamp true
generate_treeview true
outputDir new File("$buildDir/docs")
}
doxygen.dependsOn unzipCppNtSources
task doxygenZip(type: Zip) {
description = 'Generates doxygen zip file for publishing'
group = 'WPILib'
dependsOn doxygen
duplicatesStrategy = 'exclude'
from doxygen.outputDir
}
}
publishing {
publications {
wpilibc(MavenPublication) {
artifact wpilibcZip
if (checkDoxygen()) {
artifact (doxygenZip) {
classifier = 'doxygen'
}
}
groupId 'edu.wpi.first.wpilibc'
artifactId 'athena'
version WPILibVersion.version
}
}
setupWpilibRepo(it)
}
clean {
ntSourceDir
}