mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-23 01:21:42 +00:00
194 lines
5.8 KiB
Groovy
194 lines
5.8 KiB
Groovy
defineNetworkTablesProperties()
|
|
|
|
def ntSourceDir = "$buildDir/ntSources"
|
|
|
|
model {
|
|
components {
|
|
wpilib_nonshared(NativeLibrarySpec) {
|
|
targetPlatform 'arm'
|
|
binaries.all {
|
|
tasks.withType(CppCompile) {
|
|
addNiLibraryLinks(linker, targetPlatform)
|
|
addNetworkTablesLibraryLinks(it, linker, targetPlatform)
|
|
}
|
|
}
|
|
sources {
|
|
cpp {
|
|
source {
|
|
srcDirs = ["${project.shared}/src", "${project.athena}/src"]
|
|
includes = ['**/*.cpp']
|
|
}
|
|
exportedHeaders {
|
|
srcDirs = ["${project.shared}/include", "${project.athena}/include", netTablesInclude]
|
|
includes = ['**/*.h']
|
|
}
|
|
lib project: ':hal', library: 'HALAthena', linkage: 'static'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
task wpilibcZip(type: Zip) {
|
|
description = 'Zips all of the libraries for wpilibc'
|
|
group = 'WPILib'
|
|
baseName = 'wpilibc'
|
|
destinationDir = project.buildDir
|
|
duplicatesStrategy = 'exclude'
|
|
|
|
// Include the static library file and header files from this project
|
|
model {
|
|
binaries {
|
|
withType(StaticLibraryBinarySpec) { spec ->
|
|
spec.headerDirs.each {
|
|
from(it) {
|
|
into 'include'
|
|
}
|
|
}
|
|
from(spec.staticLibraryFile) {
|
|
into 'lib'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Include the static library file and shared library object from hal project
|
|
def hal = project(':hal')
|
|
hal.model{
|
|
binaries{
|
|
withType(StaticLibraryBinarySpec) { spec ->
|
|
spec.headerDirs.each {
|
|
from(it) {
|
|
into 'include'
|
|
// We don't want to include any of the .cpp files that are in some of the header directories
|
|
exclude '**/*.cpp'
|
|
}
|
|
}
|
|
from(spec.staticLibraryFile) {
|
|
into 'lib'
|
|
}
|
|
}
|
|
withType(SharedLibraryBinarySpec) { spec ->
|
|
from(spec.sharedLibraryFile) {
|
|
into 'lib'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Include the ntcore static and shared libraries
|
|
from(netSharedLib) {
|
|
into 'lib'
|
|
}
|
|
from(netStaticLib) {
|
|
into 'lib'
|
|
}
|
|
|
|
// We rename the libHALAthena.so object to libHALAthena_shared.so, and the same for libntcore.so
|
|
rename('(libHALAthena)(.so)', '$1_shared$2')
|
|
rename('(libntcore)(.so)', '$1_shared$2')
|
|
|
|
// Finally, include all of the shared library objects from the ni directory
|
|
from(project.file('../ni-libraries')) {
|
|
into 'lib'
|
|
exclude 'genlinks'
|
|
}
|
|
}
|
|
|
|
// 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 == 'wpilib_nonsharedStaticLibrary') {
|
|
wpilibcZip.dependsOn task
|
|
}
|
|
}
|
|
|
|
// Add the hal static and shared libraries as a dependency
|
|
project(':hal').tasks.whenTaskAdded { task ->
|
|
if (task.name == 'hALAthenaStaticLibrary' || task.name == 'hALAthenaSharedLibrary') {
|
|
wpilibcZip.dependsOn task
|
|
}
|
|
}
|
|
|
|
if (checkDoxygen()) {
|
|
|
|
def ntSourcesDependency = project.dependencies.create('edu.wpi.first.wpilib.networktables.cpp:NetworkTables:3.0.0-SNAPSHOT: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.wpilib.cmake'
|
|
artifactId 'cpp-root'
|
|
version '1.0.0'
|
|
}
|
|
}
|
|
|
|
setupWpilibRepo(it)
|
|
}
|
|
|
|
clean {
|
|
ntSourceDir
|
|
}
|