Skip to content

Commit 34ce6f9

Browse files
authored
Initial commit
0 parents  commit 34ce6f9

24 files changed

Lines changed: 1497 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
name: CI
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
validation:
7+
name: "Validation"
8+
runs-on: ubuntu-latest
9+
steps:
10+
- uses: actions/checkout@v4
11+
- uses: gradle/actions/wrapper-validation@v4
12+
13+
build-docker:
14+
needs: [validation]
15+
strategy:
16+
fail-fast: false
17+
matrix:
18+
include:
19+
- container: wpilib/roborio-cross-ubuntu:2025-22.04
20+
artifact-name: Athena
21+
build-options: "-Ponlylinuxathena"
22+
- container: wpilib/raspbian-cross-ubuntu:bookworm-22.04
23+
artifact-name: Arm32
24+
build-options: "-Ponlylinuxarm32"
25+
- container: wpilib/aarch64-cross-ubuntu:bookworm-22.04
26+
artifact-name: Arm64
27+
build-options: "-Ponlylinuxarm64"
28+
- container: wpilib/ubuntu-base:22.04
29+
artifact-name: Linux
30+
build-options: ""
31+
name: "Build - ${{ matrix.artifact-name }}"
32+
runs-on: ubuntu-22.04
33+
container: ${{ matrix.container }}
34+
steps:
35+
- uses: actions/checkout@v4
36+
with:
37+
submodules: true
38+
fetch-depth: 0
39+
- name: Fetch all history and metadata
40+
run: |
41+
git config --global --add safe.directory /__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}
42+
- name: Build with Gradle
43+
run: ./gradlew build ${{ matrix.build-options }}
44+
- uses: actions/upload-artifact@v4
45+
with:
46+
name: ${{ matrix.artifact-name }}
47+
path: build/allOutputs
48+
49+
build-host:
50+
needs: [validation]
51+
env:
52+
MACOSX_DEPLOYMENT_TARGET: 13.3
53+
strategy:
54+
fail-fast: false
55+
matrix:
56+
include:
57+
- os: windows-2022
58+
artifact-name: Win64
59+
architecture: x64
60+
- os: macos-14
61+
artifact-name: macOS
62+
architecture: aarch64
63+
name: "Build - ${{ matrix.artifact-name }}"
64+
runs-on: ${{ matrix.os }}
65+
steps:
66+
- uses: actions/checkout@v4
67+
with:
68+
submodules: true
69+
- name: Fetch all history and metadata
70+
run: git fetch --prune --unshallow
71+
- uses: actions/setup-java@v4
72+
with:
73+
distribution: 'temurin'
74+
java-version: 17
75+
architecture: ${{ matrix.architecture }}
76+
- name: Build with Gradle
77+
run: ./gradlew build -Pbuildalldesktop
78+
- uses: actions/upload-artifact@v4
79+
with:
80+
name: ${{ matrix.artifact-name }}
81+
path: build/allOutputs
82+
83+
combine:
84+
name: Combine
85+
needs: [build-docker, build-host]
86+
runs-on: ubuntu-22.04
87+
steps:
88+
- uses: actions/checkout@v4
89+
with:
90+
repository: wpilibsuite/build-tools
91+
- uses: actions/download-artifact@v4
92+
with:
93+
path: combiner/products/build/allOutputs
94+
- name: Flatten Artifacts
95+
run: rsync -a --delete combiner/products/build/allOutputs/*/* combiner/products/build/allOutputs/
96+
- uses: actions/setup-java@v4
97+
with:
98+
distribution: 'temurin'
99+
java-version: 17
100+
- name: Combine
101+
# if: |
102+
# !startsWith(github.ref, 'refs/tags/v')
103+
run: ./gradlew publish -Pthirdparty
104+
working-directory: combiner
105+
# - name: Combine (Release)
106+
# if: |
107+
# github.repository_owner == 'wpilibsuite' &&
108+
# startsWith(github.ref, 'refs/tags/v')
109+
# run: |
110+
# ./gradlew publish -Pthirdparty
111+
# working-directory: combiner
112+
# env:
113+
# RUN_AZURE_ARTIFACTORY_RELEASE: 'TRUE'
114+
# ARTIFACTORY_PUBLISH_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
115+
# ARTIFACTORY_PUBLISH_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
116+
- uses: actions/upload-artifact@v4
117+
with:
118+
name: Maven
119+
path: ~/releases

.gitignore

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
# Created by https://www.gitignore.io/api/c++,java,linux,macos,gradle,windows,visualstudiocode
2+
3+
### C++ ###
4+
# Prerequisites
5+
*.d
6+
7+
# Compiled Object files
8+
*.slo
9+
*.lo
10+
*.o
11+
*.obj
12+
13+
# Precompiled Headers
14+
*.gch
15+
*.pch
16+
17+
# Compiled Dynamic libraries
18+
*.so
19+
*.dylib
20+
*.dll
21+
22+
# Fortran module files
23+
*.mod
24+
*.smod
25+
26+
# Compiled Static libraries
27+
*.lai
28+
*.la
29+
*.a
30+
*.lib
31+
32+
# Executables
33+
*.exe
34+
*.out
35+
*.app
36+
37+
### Java ###
38+
# Compiled class file
39+
*.class
40+
41+
# Log file
42+
*.log
43+
44+
# BlueJ files
45+
*.ctxt
46+
47+
# Mobile Tools for Java (J2ME)
48+
.mtj.tmp/
49+
50+
# Package Files #
51+
*.jar
52+
*.war
53+
*.nar
54+
*.ear
55+
*.zip
56+
*.tar.gz
57+
*.rar
58+
59+
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
60+
hs_err_pid*
61+
62+
### Linux ###
63+
*~
64+
65+
# temporary files which can be created if a process still has a handle open of a deleted file
66+
.fuse_hidden*
67+
68+
# KDE directory preferences
69+
.directory
70+
71+
# Linux trash folder which might appear on any partition or disk
72+
.Trash-*
73+
74+
# .nfs files are created when an open file is removed but is still being accessed
75+
.nfs*
76+
77+
### macOS ###
78+
# General
79+
.DS_Store
80+
.AppleDouble
81+
.LSOverride
82+
83+
# Icon must end with two \r
84+
Icon
85+
86+
# Thumbnails
87+
._*
88+
89+
# Files that might appear in the root of a volume
90+
.DocumentRevisions-V100
91+
.fseventsd
92+
.Spotlight-V100
93+
.TemporaryItems
94+
.Trashes
95+
.VolumeIcon.icns
96+
.com.apple.timemachine.donotpresent
97+
98+
# Directories potentially created on remote AFP share
99+
.AppleDB
100+
.AppleDesktop
101+
Network Trash Folder
102+
Temporary Items
103+
.apdisk
104+
105+
### VisualStudioCode ###
106+
.vscode/*
107+
!.vscode/settings.json
108+
!.vscode/tasks.json
109+
!.vscode/launch.json
110+
!.vscode/extensions.json
111+
112+
### Windows ###
113+
# Windows thumbnail cache files
114+
Thumbs.db
115+
ehthumbs.db
116+
ehthumbs_vista.db
117+
118+
# Dump file
119+
*.stackdump
120+
121+
# Folder config file
122+
[Dd]esktop.ini
123+
124+
# Recycle Bin used on file shares
125+
$RECYCLE.BIN/
126+
127+
# Windows Installer files
128+
*.cab
129+
*.msi
130+
*.msix
131+
*.msm
132+
*.msp
133+
134+
# Windows shortcuts
135+
*.lnk
136+
137+
### Gradle ###
138+
.gradle
139+
/build/
140+
141+
# Ignore Gradle GUI config
142+
gradle-app.setting
143+
144+
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
145+
!gradle-wrapper.jar
146+
147+
# Cache of project
148+
.gradletasknamecache
149+
150+
# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
151+
# gradle/wrapper/gradle-wrapper.properties
152+
153+
# # VS Code Specific Java Settings
154+
.classpath
155+
.project
156+
.settings/
157+
bin/
158+
159+
160+
# End of https://www.gitignore.io/api/c++,java,linux,macos,gradle,windows,visualstudiocode

.vscode/settings.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"java.configuration.updateBuildConfiguration": "automatic",
3+
"files.exclude": {
4+
"**/.classpath": true,
5+
"**/.project": true,
6+
"**/.settings": true,
7+
"**/.factorypath": true
8+
},
9+
"C_Cpp.default.configurationProvider": "vscode-wpilib"
10+
}

.wpilib/wpilib_preferences.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"enableCppIntellisense": true,
3+
"currentLanguage": "cpp",
4+
"projectYear": "intellisense",
5+
"teamNumber": 9999
6+
}

ExampleVendorJson.json

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
{
2+
"fileName": "ExampleVendorJson.json",
3+
"name": "ExampleVendorDep",
4+
"version": "${version}",
5+
"frcYear": "2026beta",
6+
"uuid": "Generate A Unique GUID https://guidgenerator.com/online-guid-generator.aspx and insert it here", This line is to purposely make this fail to parse
7+
"mavenUrls": [
8+
"ThisNeedsToBeTheRootMavenUrl"
9+
],
10+
"jsonUrl": "InsertSomeUrlHere",
11+
"javaDependencies": [
12+
{
13+
"groupId": "${groupId}",
14+
"artifactId": "${artifactId}-java",
15+
"version": "${version}"
16+
}
17+
],
18+
"jniDependencies": [
19+
{
20+
"groupId": "${groupId}",
21+
"artifactId": "${artifactId}-driver",
22+
"version": "${version}",
23+
"skipInvalidPlatforms": true,
24+
"isJar": false,
25+
"validPlatforms": [
26+
"windowsx86-64",
27+
"linuxarm64",
28+
"linuxx86-64",
29+
"linuxathena",
30+
"linuxarm32",
31+
"osxuniversal"
32+
]
33+
}
34+
],
35+
"cppDependencies": [
36+
{
37+
"groupId": "${groupId}",
38+
"artifactId": "${artifactId}-cpp",
39+
"version": "${version}",
40+
"libName": "Vendor",
41+
"headerClassifier": "headers",
42+
"sharedLibrary": false,
43+
"skipInvalidPlatforms": true,
44+
"binaryPlatforms": [
45+
"windowsx86-64",
46+
"linuxarm64",
47+
"linuxx86-64",
48+
"linuxathena",
49+
"linuxarm32",
50+
"osxuniversal"
51+
]
52+
},
53+
{
54+
"groupId": "${groupId}",
55+
"artifactId": "${artifactId}-driver",
56+
"version": "${version}",
57+
"libName": "VendorDriver",
58+
"headerClassifier": "headers",
59+
"sharedLibrary": false,
60+
"skipInvalidPlatforms": true,
61+
"binaryPlatforms": [
62+
"windowsx86-64",
63+
"linuxarm64",
64+
"linuxx86-64",
65+
"linuxathena",
66+
"linuxarm32",
67+
"osxuniversal"
68+
]
69+
}
70+
]
71+
}

0 commit comments

Comments
 (0)