Skip to content

Repository files navigation

wpiutil

wpiutil is a utility library designed for making C++ interfacing easier.

Build Requirements

To build wpiutil, a few requirements must be met:

  • Platform Native Toolchain - You must have a toolchain for your native platform installed if you wish to build wpiutil for your machine. On Windows, this is Visual Studio. On Mac, this is Clang, and on Linux, this is GCC. Your toolchain must support the -std=c++11 language flag.
  • Platform Native JDK - In order to compile wpiutil your native platform, you must have the JDK for your platform installed, so that the correct JNI headers can be included.
  • ARM Toolchain - To crosscompile wpiutil for the roboRIO, you must have the FRC ARM toolchain installed, which can be found here.
  • Cross Toolchains (coming soon)

Building

Gradle is the main build system used by wpiutil. All tasks are run with the gradlew wrapper, which is included in the root of the repository. All targets that can be accomplished by Gradle are referred to as tasks. The main task available is build. To run Gradle, cd into the build directory and run:

./gradlew build

This will build the roboRIO wpiutil library, in addition to the library for your native platform. Note if the roboRIO compiler cannot be found, the build will skip the roboRIO build. To build for either only the roboRIO, or every platform except the roboRIO, use the following flags:

-PskipAthena
-PonlyAthena

Note if you choose the onlyAthena flag, tests will not be ran, as they depend on the current platform being built.

In addition, more platforms can be built. For instance, with additional cross compilers more Arm binaries can be built. In addition, the second bitness for your current platform can be built with an additional flag. To enable every possible platform, use the following flag.

-PbuildAll

If you are building the native version on a 64 bit Linux computer, use a GCC installation which has multilib support enabled (it can compile both 32 and 64 bit programs). The package providing that support on most Linux distributions is called gcc-multilib.

By default, debug binaries of the libraries will be built. To switch to instead build release binaries, use the following flag

-PreleaseBuild

Custom Cross Compilers

Coming soon

Testing

By default, tests will be built for any native platform, and will be run during any execution of the build or publish tasks. To skip building and running the tests, use the -PskipAllTests command line flag.

Publishing

to use wpiutil in downstream projects as a Maven-style dependency, use the publish command. This will publish the following artifact id's:

  • edu.wpi.first.wpiutil:wpiutil-cpp
  • edu.wpi.first.wpiutil:wpiutil-java

The wpiutil-cpp artifact will contain the following 2 classifiers:

  • headers (contains C++ headers)
  • sources (contains C++ sources)

In addition, a classifier will be created for each binary built by the current build. The internal layout of the artifacts will be as follows.

  • /os/arch/shared/ (shared binaries located here)
  • /os/arch/static/ (static binaries located here)

The wpiutil-java artifact will contain a jar with no classifiers. This is the java jar file. In addition, the following 2 classifiers will be contained

  • sources (contains Java sources)
  • javadoc (contains Javadoc sources)

All of these artifacts by default are published to ~/releases/maven/development. To switch to the release repository (~/release/maven/release), use the flag -PreleaseType=OFFICIAL.

All downstream projects are configured to use the individual classifier artifacts. The previouse desktop classifier does not exist anymore.

About

WPI Utility Library

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - ozrien/wpiutil: WPI Utility Library · GitHub
Skip to content

Repository files navigation

wpiutil

wpiutil is a utility library designed for making C++ interfacing easier.

Build Requirements

To build wpiutil, a few requirements must be met:

  • Platform Native Toolchain - You must have a toolchain for your native platform installed if you wish to build wpiutil for your machine. On Windows, this is Visual Studio. On Mac, this is Clang, and on Linux, this is GCC. Your toolchain must support the -std=c++11 language flag.
  • Platform Native JDK - In order to compile wpiutil your native platform, you must have the JDK for your platform installed, so that the correct JNI headers can be included.
  • ARM Toolchain - To crosscompile wpiutil for the roboRIO, you must have the FRC ARM toolchain installed, which can be found here.
  • Cross Toolchains (coming soon)

Building

Gradle is the main build system used by wpiutil. All tasks are run with the gradlew wrapper, which is included in the root of the repository. All targets that can be accomplished by Gradle are referred to as tasks. The main task available is build. To run Gradle, cd into the build directory and run:

./gradlew build

This will build the roboRIO wpiutil library, in addition to the library for your native platform. Note if the roboRIO compiler cannot be found, the build will skip the roboRIO build. To build for either only the roboRIO, or every platform except the roboRIO, use the following flags:

-PskipAthena
-PonlyAthena

Note if you choose the onlyAthena flag, tests will not be ran, as they depend on the current platform being built.

In addition, more platforms can be built. For instance, with additional cross compilers more Arm binaries can be built. In addition, the second bitness for your current platform can be built with an additional flag. To enable every possible platform, use the following flag.

-PbuildAll

If you are building the native version on a 64 bit Linux computer, use a GCC installation which has multilib support enabled (it can compile both 32 and 64 bit programs). The package providing that support on most Linux distributions is called gcc-multilib.

By default, debug binaries of the libraries will be built. To switch to instead build release binaries, use the following flag

-PreleaseBuild

Custom Cross Compilers

Coming soon

Testing

By default, tests will be built for any native platform, and will be run during any execution of the build or publish tasks. To skip building and running the tests, use the -PskipAllTests command line flag.

Publishing

to use wpiutil in downstream projects as a Maven-style dependency, use the publish command. This will publish the following artifact id's:

  • edu.wpi.first.wpiutil:wpiutil-cpp
  • edu.wpi.first.wpiutil:wpiutil-java

The wpiutil-cpp artifact will contain the following 2 classifiers:

  • headers (contains C++ headers)
  • sources (contains C++ sources)

In addition, a classifier will be created for each binary built by the current build. The internal layout of the artifacts will be as follows.

  • /os/arch/shared/ (shared binaries located here)
  • /os/arch/static/ (static binaries located here)

The wpiutil-java artifact will contain a jar with no classifiers. This is the java jar file. In addition, the following 2 classifiers will be contained

  • sources (contains Java sources)
  • javadoc (contains Javadoc sources)

All of these artifacts by default are published to ~/releases/maven/development. To switch to the release repository (~/release/maven/release), use the flag -PreleaseType=OFFICIAL.

All downstream projects are configured to use the individual classifier artifacts. The previouse desktop classifier does not exist anymore.

About

WPI Utility Library

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ozrien/wpiutil: WPI Utility Library · GitHub
Skip to content

Repository files navigation

wpiutil

wpiutil is a utility library designed for making C++ interfacing easier.

Build Requirements

To build wpiutil, a few requirements must be met:

  • Platform Native Toolchain - You must have a toolchain for your native platform installed if you wish to build wpiutil for your machine. On Windows, this is Visual Studio. On Mac, this is Clang, and on Linux, this is GCC. Your toolchain must support the -std=c++11 language flag.
  • Platform Native JDK - In order to compile wpiutil your native platform, you must have the JDK for your platform installed, so that the correct JNI headers can be included.
  • ARM Toolchain - To crosscompile wpiutil for the roboRIO, you must have the FRC ARM toolchain installed, which can be found here.
  • Cross Toolchains (coming soon)

Building

Gradle is the main build system used by wpiutil. All tasks are run with the gradlew wrapper, which is included in the root of the repository. All targets that can be accomplished by Gradle are referred to as tasks. The main task available is build. To run Gradle, cd into the build directory and run:

./gradlew build

This will build the roboRIO wpiutil library, in addition to the library for your native platform. Note if the roboRIO compiler cannot be found, the build will skip the roboRIO build. To build for either only the roboRIO, or every platform except the roboRIO, use the following flags:

-PskipAthena
-PonlyAthena

Note if you choose the onlyAthena flag, tests will not be ran, as they depend on the current platform being built.

In addition, more platforms can be built. For instance, with additional cross compilers more Arm binaries can be built. In addition, the second bitness for your current platform can be built with an additional flag. To enable every possible platform, use the following flag.

-PbuildAll

If you are building the native version on a 64 bit Linux computer, use a GCC installation which has multilib support enabled (it can compile both 32 and 64 bit programs). The package providing that support on most Linux distributions is called gcc-multilib.

By default, debug binaries of the libraries will be built. To switch to instead build release binaries, use the following flag

-PreleaseBuild

Custom Cross Compilers

Coming soon

Testing

By default, tests will be built for any native platform, and will be run during any execution of the build or publish tasks. To skip building and running the tests, use the -PskipAllTests command line flag.

Publishing

to use wpiutil in downstream projects as a Maven-style dependency, use the publish command. This will publish the following artifact id's:

  • edu.wpi.first.wpiutil:wpiutil-cpp
  • edu.wpi.first.wpiutil:wpiutil-java

The wpiutil-cpp artifact will contain the following 2 classifiers:

  • headers (contains C++ headers)
  • sources (contains C++ sources)

In addition, a classifier will be created for each binary built by the current build. The internal layout of the artifacts will be as follows.

  • /os/arch/shared/ (shared binaries located here)
  • /os/arch/static/ (static binaries located here)

The wpiutil-java artifact will contain a jar with no classifiers. This is the java jar file. In addition, the following 2 classifiers will be contained

  • sources (contains Java sources)
  • javadoc (contains Javadoc sources)

All of these artifacts by default are published to ~/releases/maven/development. To switch to the release repository (~/release/maven/release), use the flag -PreleaseType=OFFICIAL.

All downstream projects are configured to use the individual classifier artifacts. The previouse desktop classifier does not exist anymore.

About

WPI Utility Library

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ozrien/wpiutil: WPI Utility Library · GitHub
Skip to content

Repository files navigation

wpiutil

wpiutil is a utility library designed for making C++ interfacing easier.

Build Requirements

To build wpiutil, a few requirements must be met:

  • Platform Native Toolchain - You must have a toolchain for your native platform installed if you wish to build wpiutil for your machine. On Windows, this is Visual Studio. On Mac, this is Clang, and on Linux, this is GCC. Your toolchain must support the -std=c++11 language flag.
  • Platform Native JDK - In order to compile wpiutil your native platform, you must have the JDK for your platform installed, so that the correct JNI headers can be included.
  • ARM Toolchain - To crosscompile wpiutil for the roboRIO, you must have the FRC ARM toolchain installed, which can be found here.
  • Cross Toolchains (coming soon)

Building

Gradle is the main build system used by wpiutil. All tasks are run with the gradlew wrapper, which is included in the root of the repository. All targets that can be accomplished by Gradle are referred to as tasks. The main task available is build. To run Gradle, cd into the build directory and run:

./gradlew build

This will build the roboRIO wpiutil library, in addition to the library for your native platform. Note if the roboRIO compiler cannot be found, the build will skip the roboRIO build. To build for either only the roboRIO, or every platform except the roboRIO, use the following flags:

-PskipAthena
-PonlyAthena

Note if you choose the onlyAthena flag, tests will not be ran, as they depend on the current platform being built.

In addition, more platforms can be built. For instance, with additional cross compilers more Arm binaries can be built. In addition, the second bitness for your current platform can be built with an additional flag. To enable every possible platform, use the following flag.

-PbuildAll

If you are building the native version on a 64 bit Linux computer, use a GCC installation which has multilib support enabled (it can compile both 32 and 64 bit programs). The package providing that support on most Linux distributions is called gcc-multilib.

By default, debug binaries of the libraries will be built. To switch to instead build release binaries, use the following flag

-PreleaseBuild

Custom Cross Compilers

Coming soon

Testing

By default, tests will be built for any native platform, and will be run during any execution of the build or publish tasks. To skip building and running the tests, use the -PskipAllTests command line flag.

Publishing

to use wpiutil in downstream projects as a Maven-style dependency, use the publish command. This will publish the following artifact id's:

  • edu.wpi.first.wpiutil:wpiutil-cpp
  • edu.wpi.first.wpiutil:wpiutil-java

The wpiutil-cpp artifact will contain the following 2 classifiers:

  • headers (contains C++ headers)
  • sources (contains C++ sources)

In addition, a classifier will be created for each binary built by the current build. The internal layout of the artifacts will be as follows.

  • /os/arch/shared/ (shared binaries located here)
  • /os/arch/static/ (static binaries located here)

The wpiutil-java artifact will contain a jar with no classifiers. This is the java jar file. In addition, the following 2 classifiers will be contained

  • sources (contains Java sources)
  • javadoc (contains Javadoc sources)

All of these artifacts by default are published to ~/releases/maven/development. To switch to the release repository (~/release/maven/release), use the flag -PreleaseType=OFFICIAL.

All downstream projects are configured to use the individual classifier artifacts. The previouse desktop classifier does not exist anymore.

About

WPI Utility Library

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - ozrien/wpiutil: WPI Utility Library · GitHub
Skip to content

Repository files navigation

wpiutil

wpiutil is a utility library designed for making C++ interfacing easier.

Build Requirements

To build wpiutil, a few requirements must be met:

  • Platform Native Toolchain - You must have a toolchain for your native platform installed if you wish to build wpiutil for your machine. On Windows, this is Visual Studio. On Mac, this is Clang, and on Linux, this is GCC. Your toolchain must support the -std=c++11 language flag.
  • Platform Native JDK - In order to compile wpiutil your native platform, you must have the JDK for your platform installed, so that the correct JNI headers can be included.
  • ARM Toolchain - To crosscompile wpiutil for the roboRIO, you must have the FRC ARM toolchain installed, which can be found here.
  • Cross Toolchains (coming soon)

Building

Gradle is the main build system used by wpiutil. All tasks are run with the gradlew wrapper, which is included in the root of the repository. All targets that can be accomplished by Gradle are referred to as tasks. The main task available is build. To run Gradle, cd into the build directory and run:

./gradlew build

This will build the roboRIO wpiutil library, in addition to the library for your native platform. Note if the roboRIO compiler cannot be found, the build will skip the roboRIO build. To build for either only the roboRIO, or every platform except the roboRIO, use the following flags:

-PskipAthena
-PonlyAthena

Note if you choose the onlyAthena flag, tests will not be ran, as they depend on the current platform being built.

In addition, more platforms can be built. For instance, with additional cross compilers more Arm binaries can be built. In addition, the second bitness for your current platform can be built with an additional flag. To enable every possible platform, use the following flag.

-PbuildAll

If you are building the native version on a 64 bit Linux computer, use a GCC installation which has multilib support enabled (it can compile both 32 and 64 bit programs). The package providing that support on most Linux distributions is called gcc-multilib.

By default, debug binaries of the libraries will be built. To switch to instead build release binaries, use the following flag

-PreleaseBuild

Custom Cross Compilers

Coming soon

Testing

By default, tests will be built for any native platform, and will be run during any execution of the build or publish tasks. To skip building and running the tests, use the -PskipAllTests command line flag.

Publishing

to use wpiutil in downstream projects as a Maven-style dependency, use the publish command. This will publish the following artifact id's:

  • edu.wpi.first.wpiutil:wpiutil-cpp
  • edu.wpi.first.wpiutil:wpiutil-java

The wpiutil-cpp artifact will contain the following 2 classifiers:

  • headers (contains C++ headers)
  • sources (contains C++ sources)

In addition, a classifier will be created for each binary built by the current build. The internal layout of the artifacts will be as follows.

  • /os/arch/shared/ (shared binaries located here)
  • /os/arch/static/ (static binaries located here)

The wpiutil-java artifact will contain a jar with no classifiers. This is the java jar file. In addition, the following 2 classifiers will be contained

  • sources (contains Java sources)
  • javadoc (contains Javadoc sources)

All of these artifacts by default are published to ~/releases/maven/development. To switch to the release repository (~/release/maven/release), use the flag -PreleaseType=OFFICIAL.

All downstream projects are configured to use the individual classifier artifacts. The previouse desktop classifier does not exist anymore.

About

WPI Utility Library

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ozrien/wpiutil: WPI Utility Library · GitHub
Skip to content

Repository files navigation

wpiutil

wpiutil is a utility library designed for making C++ interfacing easier.

Build Requirements

To build wpiutil, a few requirements must be met:

  • Platform Native Toolchain - You must have a toolchain for your native platform installed if you wish to build wpiutil for your machine. On Windows, this is Visual Studio. On Mac, this is Clang, and on Linux, this is GCC. Your toolchain must support the -std=c++11 language flag.
  • Platform Native JDK - In order to compile wpiutil your native platform, you must have the JDK for your platform installed, so that the correct JNI headers can be included.
  • ARM Toolchain - To crosscompile wpiutil for the roboRIO, you must have the FRC ARM toolchain installed, which can be found here.
  • Cross Toolchains (coming soon)

Building

Gradle is the main build system used by wpiutil. All tasks are run with the gradlew wrapper, which is included in the root of the repository. All targets that can be accomplished by Gradle are referred to as tasks. The main task available is build. To run Gradle, cd into the build directory and run:

./gradlew build

This will build the roboRIO wpiutil library, in addition to the library for your native platform. Note if the roboRIO compiler cannot be found, the build will skip the roboRIO build. To build for either only the roboRIO, or every platform except the roboRIO, use the following flags:

-PskipAthena
-PonlyAthena

Note if you choose the onlyAthena flag, tests will not be ran, as they depend on the current platform being built.

In addition, more platforms can be built. For instance, with additional cross compilers more Arm binaries can be built. In addition, the second bitness for your current platform can be built with an additional flag. To enable every possible platform, use the following flag.

-PbuildAll

If you are building the native version on a 64 bit Linux computer, use a GCC installation which has multilib support enabled (it can compile both 32 and 64 bit programs). The package providing that support on most Linux distributions is called gcc-multilib.

By default, debug binaries of the libraries will be built. To switch to instead build release binaries, use the following flag

-PreleaseBuild

Custom Cross Compilers

Coming soon

Testing

By default, tests will be built for any native platform, and will be run during any execution of the build or publish tasks. To skip building and running the tests, use the -PskipAllTests command line flag.

Publishing

to use wpiutil in downstream projects as a Maven-style dependency, use the publish command. This will publish the following artifact id's:

  • edu.wpi.first.wpiutil:wpiutil-cpp
  • edu.wpi.first.wpiutil:wpiutil-java

The wpiutil-cpp artifact will contain the following 2 classifiers:

  • headers (contains C++ headers)
  • sources (contains C++ sources)

In addition, a classifier will be created for each binary built by the current build. The internal layout of the artifacts will be as follows.

  • /os/arch/shared/ (shared binaries located here)
  • /os/arch/static/ (static binaries located here)

The wpiutil-java artifact will contain a jar with no classifiers. This is the java jar file. In addition, the following 2 classifiers will be contained

  • sources (contains Java sources)
  • javadoc (contains Javadoc sources)

All of these artifacts by default are published to ~/releases/maven/development. To switch to the release repository (~/release/maven/release), use the flag -PreleaseType=OFFICIAL.

All downstream projects are configured to use the individual classifier artifacts. The previouse desktop classifier does not exist anymore.

About

WPI Utility Library

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ozrien/wpiutil: WPI Utility Library · GitHub
Skip to content

Repository files navigation

wpiutil

wpiutil is a utility library designed for making C++ interfacing easier.

Build Requirements

To build wpiutil, a few requirements must be met:

  • Platform Native Toolchain - You must have a toolchain for your native platform installed if you wish to build wpiutil for your machine. On Windows, this is Visual Studio. On Mac, this is Clang, and on Linux, this is GCC. Your toolchain must support the -std=c++11 language flag.
  • Platform Native JDK - In order to compile wpiutil your native platform, you must have the JDK for your platform installed, so that the correct JNI headers can be included.
  • ARM Toolchain - To crosscompile wpiutil for the roboRIO, you must have the FRC ARM toolchain installed, which can be found here.
  • Cross Toolchains (coming soon)

Building

Gradle is the main build system used by wpiutil. All tasks are run with the gradlew wrapper, which is included in the root of the repository. All targets that can be accomplished by Gradle are referred to as tasks. The main task available is build. To run Gradle, cd into the build directory and run:

./gradlew build

This will build the roboRIO wpiutil library, in addition to the library for your native platform. Note if the roboRIO compiler cannot be found, the build will skip the roboRIO build. To build for either only the roboRIO, or every platform except the roboRIO, use the following flags:

-PskipAthena
-PonlyAthena

Note if you choose the onlyAthena flag, tests will not be ran, as they depend on the current platform being built.

In addition, more platforms can be built. For instance, with additional cross compilers more Arm binaries can be built. In addition, the second bitness for your current platform can be built with an additional flag. To enable every possible platform, use the following flag.

-PbuildAll

If you are building the native version on a 64 bit Linux computer, use a GCC installation which has multilib support enabled (it can compile both 32 and 64 bit programs). The package providing that support on most Linux distributions is called gcc-multilib.

By default, debug binaries of the libraries will be built. To switch to instead build release binaries, use the following flag

-PreleaseBuild

Custom Cross Compilers

Coming soon

Testing

By default, tests will be built for any native platform, and will be run during any execution of the build or publish tasks. To skip building and running the tests, use the -PskipAllTests command line flag.

Publishing

to use wpiutil in downstream projects as a Maven-style dependency, use the publish command. This will publish the following artifact id's:

  • edu.wpi.first.wpiutil:wpiutil-cpp
  • edu.wpi.first.wpiutil:wpiutil-java

The wpiutil-cpp artifact will contain the following 2 classifiers:

  • headers (contains C++ headers)
  • sources (contains C++ sources)

In addition, a classifier will be created for each binary built by the current build. The internal layout of the artifacts will be as follows.

  • /os/arch/shared/ (shared binaries located here)
  • /os/arch/static/ (static binaries located here)

The wpiutil-java artifact will contain a jar with no classifiers. This is the java jar file. In addition, the following 2 classifiers will be contained

  • sources (contains Java sources)
  • javadoc (contains Javadoc sources)

All of these artifacts by default are published to ~/releases/maven/development. To switch to the release repository (~/release/maven/release), use the flag -PreleaseType=OFFICIAL.

All downstream projects are configured to use the individual classifier artifacts. The previouse desktop classifier does not exist anymore.

About

WPI Utility Library

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - ozrien/wpiutil: WPI Utility Library · GitHub
Skip to content

Repository files navigation

wpiutil

wpiutil is a utility library designed for making C++ interfacing easier.

Build Requirements

To build wpiutil, a few requirements must be met:

  • Platform Native Toolchain - You must have a toolchain for your native platform installed if you wish to build wpiutil for your machine. On Windows, this is Visual Studio. On Mac, this is Clang, and on Linux, this is GCC. Your toolchain must support the -std=c++11 language flag.
  • Platform Native JDK - In order to compile wpiutil your native platform, you must have the JDK for your platform installed, so that the correct JNI headers can be included.
  • ARM Toolchain - To crosscompile wpiutil for the roboRIO, you must have the FRC ARM toolchain installed, which can be found here.
  • Cross Toolchains (coming soon)

Building

Gradle is the main build system used by wpiutil. All tasks are run with the gradlew wrapper, which is included in the root of the repository. All targets that can be accomplished by Gradle are referred to as tasks. The main task available is build. To run Gradle, cd into the build directory and run:

./gradlew build

This will build the roboRIO wpiutil library, in addition to the library for your native platform. Note if the roboRIO compiler cannot be found, the build will skip the roboRIO build. To build for either only the roboRIO, or every platform except the roboRIO, use the following flags:

-PskipAthena
-PonlyAthena

Note if you choose the onlyAthena flag, tests will not be ran, as they depend on the current platform being built.

In addition, more platforms can be built. For instance, with additional cross compilers more Arm binaries can be built. In addition, the second bitness for your current platform can be built with an additional flag. To enable every possible platform, use the following flag.

-PbuildAll

If you are building the native version on a 64 bit Linux computer, use a GCC installation which has multilib support enabled (it can compile both 32 and 64 bit programs). The package providing that support on most Linux distributions is called gcc-multilib.

By default, debug binaries of the libraries will be built. To switch to instead build release binaries, use the following flag

-PreleaseBuild

Custom Cross Compilers

Coming soon

Testing

By default, tests will be built for any native platform, and will be run during any execution of the build or publish tasks. To skip building and running the tests, use the -PskipAllTests command line flag.

Publishing

to use wpiutil in downstream projects as a Maven-style dependency, use the publish command. This will publish the following artifact id's:

  • edu.wpi.first.wpiutil:wpiutil-cpp
  • edu.wpi.first.wpiutil:wpiutil-java

The wpiutil-cpp artifact will contain the following 2 classifiers:

  • headers (contains C++ headers)
  • sources (contains C++ sources)

In addition, a classifier will be created for each binary built by the current build. The internal layout of the artifacts will be as follows.

  • /os/arch/shared/ (shared binaries located here)
  • /os/arch/static/ (static binaries located here)

The wpiutil-java artifact will contain a jar with no classifiers. This is the java jar file. In addition, the following 2 classifiers will be contained

  • sources (contains Java sources)
  • javadoc (contains Javadoc sources)

All of these artifacts by default are published to ~/releases/maven/development. To switch to the release repository (~/release/maven/release), use the flag -PreleaseType=OFFICIAL.

All downstream projects are configured to use the individual classifier artifacts. The previouse desktop classifier does not exist anymore.

About

WPI Utility Library

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages