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 }