blob: 17c04e24b5e36326a6830df987dd66347e6d5fa4 [file] [log] [blame]
defineNetworkTablesProperties()
defineWpiUtilProperties()
defineCsCoreProperties()
debugStripSetup(project)
def ntSourceDir = "$buildDir/ntSources"
model {
components {
wpilibc(NativeLibrarySpec) {
targetPlatform 'roborio-arm'
binaries.all {
tasks.withType(CppCompile) {
dependsOn generateCppVersion
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'
}
}
}
}
tasks { tasks ->
tasks.wpilibcZip.dependsOn tasks.wpilibcSharedLibrary
}
}
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'
}
}
if (checkDoxygen()) {
configurations.create('doc')
dependencies {
doc ntcoreDep('cpp', 'sources', 'zip')
}
task unzipCppNtSources(type: Copy) {
description = 'Unzips the C++ networktables sources for doc creation.'
group = 'Dependencies'
configurations.doc.files.each {
from zipTree(it)
}
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
}