Adds a section on design philosophy so we have something to point to when people suggest features that aren't compatible with the way WPILib is designed. Fixes some missed reorg changes (although the native-utils link intentionally points to main as to be up-to-date in the future) and generally cleans up any outdated information. Also includes wording about supporting FTC. Per discussion in Slack, the LabVIEW wording has been removed, and anything to do with LabVIEW is going to have to be NI's job. And pursuant to #2757 and #5331, additional (light) developer documentation has been added to some subprojects, mostly being a quick summary of the what the project does and what it's for (or not for). --------- Co-authored-by: sciencewhiz <sciencewhiz@users.noreply.github.com> Co-authored-by: Joseph Eng <91924258+KangarooKoala@users.noreply.github.com>
Benchmark
This is a benchmark project built directly against this repo's sources.
Desktop benchmarking
This command runs the Java benchmarks on desktop.
./gradlew benchmark:run
This command runs the C++ benchmarks on desktop.
./gradlew benchmark:runCpp
Deploy to a Systemcore
This project can only deploy over USB. If an alternate IP address is preferred, the address block in benchmark/build.gradle can be changed to point to another address.
This command deploys the C++ project using shared dependencies. Prefer this one for most C++ development.
./gradlew benchmark:deployShared
This command deploys the C++ project with all dependencies statically linked.
./gradlew benchmark:deployStatic
This command deploys the Java project and all required dependencies.
./gradlew benchmark:deployJava
Those commands won't start the robot executable, so you have to manually ssh in and start it. The following command will do that.
ssh systemcore@robot.local sudo systemctl stop robot
ssh systemcore@robot.local sudo ~/robotCommand
Console log prints will appear in the terminal.
Deploying any of these to a Systemcore will disable the current startup project until it is redeployed.
Faster builds
If your benchmarks only need some projects, you can comment out or delete unnecessary subprojects from the dependencies, benchmarkCpp, and benchmarkCppStatic blocks in benchmark/build.gradle (Java or C++) and from target_link_libraries() in benchmark/CMakeLists.txt (C++ only).