aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/wpilib
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/wpilib')
-rw-r--r--vcpkg/ports/wpilib/fix-build-error-with-fmt11.patch36
-rw-r--r--vcpkg/ports/wpilib/fix-fmt.patch32
-rw-r--r--vcpkg/ports/wpilib/fix-usage.patch44
-rw-r--r--vcpkg/ports/wpilib/missing-find_dependency.patch12
-rw-r--r--vcpkg/ports/wpilib/no-werror.patch15
-rw-r--r--vcpkg/ports/wpilib/portfile.cmake61
-rw-r--r--vcpkg/ports/wpilib/vcpkg.json45
-rw-r--r--vcpkg/ports/wpilib/windows-install-location.patch338
8 files changed, 583 insertions, 0 deletions
diff --git a/vcpkg/ports/wpilib/fix-build-error-with-fmt11.patch b/vcpkg/ports/wpilib/fix-build-error-with-fmt11.patch
new file mode 100644
index 0000000..c33eff5
--- /dev/null
+++ b/vcpkg/ports/wpilib/fix-build-error-with-fmt11.patch
@@ -0,0 +1,36 @@
+diff --git a/ntcore/src/dev/native/cpp/main.cpp b/ntcore/src/dev/native/cpp/main.cpp
+index 6e43fdb..ad93644 100644
+--- a/ntcore/src/dev/native/cpp/main.cpp
++++ b/ntcore/src/dev/native/cpp/main.cpp
+@@ -13,6 +13,7 @@
+ #include <thread>
+
+ #include <fmt/format.h>
++#include <fmt/ranges.h>
+ #include <wpi/Synchronization.h>
+ #include <wpi/timestamp.h>
+
+diff --git a/wpiutil/examples/printlog/printlog.cpp b/wpiutil/examples/printlog/printlog.cpp
+index cb89934..4fe4817 100644
+--- a/wpiutil/examples/printlog/printlog.cpp
++++ b/wpiutil/examples/printlog/printlog.cpp
+@@ -6,6 +6,7 @@
+
+ #include <fmt/chrono.h>
+ #include <fmt/format.h>
++#include <fmt/ranges.h>
+
+ #include "wpi/DataLogReader.h"
+ #include "wpi/DenseMap.h"
+diff --git a/wpiutil/src/main/native/include/wpi/Logger.h b/wpiutil/src/main/native/include/wpi/Logger.h
+index 01a02fd..bd524a9 100644
+--- a/wpiutil/src/main/native/include/wpi/Logger.h
++++ b/wpiutil/src/main/native/include/wpi/Logger.h
+@@ -9,6 +9,7 @@
+ #include <utility>
+
+ #include <fmt/format.h>
++#include <fmt/ranges.h>
+
+ namespace wpi {
+
diff --git a/vcpkg/ports/wpilib/fix-fmt.patch b/vcpkg/ports/wpilib/fix-fmt.patch
new file mode 100644
index 0000000..d2b36c2
--- /dev/null
+++ b/vcpkg/ports/wpilib/fix-fmt.patch
@@ -0,0 +1,32 @@
+diff --git a/wpimath/src/main/native/include/units/base.h b/wpimath/src/main/native/include/units/base.h
+index 3c939f3..09c56e5 100644
+--- a/wpimath/src/main/native/include/units/base.h
++++ b/wpimath/src/main/native/include/units/base.h
+@@ -183,9 +183,10 @@ namespace units
+ struct fmt::formatter<units::namespaceName::nameSingular ## _t> \
+ : fmt::formatter<double> \
+ {\
+- template <typename FormatContext>\
+- auto format(const units::namespaceName::nameSingular ## _t& obj,\
+- FormatContext& ctx) -> decltype(ctx.out()) \
++ template <typename FmtContext>\
++ auto format(\
++ const units::namespaceName::nameSingular ## _t& obj,\
++ FmtContext& ctx) const\
+ {\
+ auto out = ctx.out();\
+ out = fmt::formatter<double>::format(obj(), ctx);\
+@@ -2890,9 +2891,10 @@ namespace units
+ template <>
+ struct fmt::formatter<units::dimensionless::dB_t> : fmt::formatter<double>
+ {
+- template <typename FormatContext>
+- auto format(const units::dimensionless::dB_t& obj,
+- FormatContext& ctx) -> decltype(ctx.out())
++ template <typename FmtContext>
++ auto format(
++ const units::dimensionless::dB_t& obj,
++ FmtContext& ctx) const
+ {
+ auto out = ctx.out();
+ out = fmt::formatter<double>::format(obj(), ctx);
diff --git a/vcpkg/ports/wpilib/fix-usage.patch b/vcpkg/ports/wpilib/fix-usage.patch
new file mode 100644
index 0000000..99d22f5
--- /dev/null
+++ b/vcpkg/ports/wpilib/fix-usage.patch
@@ -0,0 +1,44 @@
+diff --git a/wpilibNewCommands/wpilibNewCommands-config.cmake.in b/wpilibNewCommands/wpilibNewCommands-config.cmake.in
+index 75aa6ad7d..8a8d8d8ec 100644
+--- a/wpilibNewCommands/wpilibNewCommands-config.cmake.in
++++ b/wpilibNewCommands/wpilibNewCommands-config.cmake.in
+@@ -1,5 +1,4 @@
+ include(CMakeFindDependencyMacro)
+- @FILENAME_DEP_REPLACE@
+ @WPIUTIL_DEP_REPLACE@
+ @NTCORE_DEP_REPLACE@
+ @CSCORE_DEP_REPLACE@
+@@ -8,4 +7,5 @@ include(CMakeFindDependencyMacro)
+ @WPILIBC_DEP_REPLACE@
+ @WPIMATH_DEP_REPLACE@
+
++ @FILENAME_DEP_REPLACE@
+ include(${SELF_DIR}/wpilibNewCommands.cmake)
+diff --git a/wpimath/wpimath-config.cmake.in b/wpimath/wpimath-config.cmake.in
+index 4769e4317..9100d7943 100644
+--- a/wpimath/wpimath-config.cmake.in
++++ b/wpimath/wpimath-config.cmake.in
+@@ -2,5 +2,9 @@ include(CMakeFindDependencyMacro)
+ @FILENAME_DEP_REPLACE@
+ @WPIUTIL_DEP_REPLACE@
+
++if(@USE_SYSTEM_EIGEN@)
++ find_dependency(Eigen3)
++endif()
++
+ @FILENAME_DEP_REPLACE@
+ include(${SELF_DIR}/wpimath.cmake)
+diff --git a/wpiutil/wpiutil-config.cmake.in b/wpiutil/wpiutil-config.cmake.in
+index fde839e2f..3f696c8a0 100644
+--- a/wpiutil/wpiutil-config.cmake.in
++++ b/wpiutil/wpiutil-config.cmake.in
+@@ -4,5 +4,9 @@ set(THREADS_PREFER_PTHREAD_FLAG ON)
+ find_dependency(Threads)
+ @FMTLIB_SYSTEM_REPLACE@
+
++if(@USE_SYSTEM_FMTLIB@)
++ find_dependency(fmt)
++endif()
++
+ @FILENAME_DEP_REPLACE@
+ include(${SELF_DIR}/wpiutil.cmake)
diff --git a/vcpkg/ports/wpilib/missing-find_dependency.patch b/vcpkg/ports/wpilib/missing-find_dependency.patch
new file mode 100644
index 0000000..06ccb90
--- /dev/null
+++ b/vcpkg/ports/wpilib/missing-find_dependency.patch
@@ -0,0 +1,12 @@
+diff --git a/ntcore/ntcore-config.cmake.in b/ntcore/ntcore-config.cmake.in
+index 17006a583..0a85f8b09 100644
+--- a/ntcore/ntcore-config.cmake.in
++++ b/ntcore/ntcore-config.cmake.in
+@@ -1,6 +1,7 @@
+ include(CMakeFindDependencyMacro)
+ @FILENAME_DEP_REPLACE@
+ @WPIUTIL_DEP_REPLACE@
++@WPINET_DEP_REPLACE@
+
+ @FILENAME_DEP_REPLACE@
+ include(${SELF_DIR}/ntcore.cmake)
diff --git a/vcpkg/ports/wpilib/no-werror.patch b/vcpkg/ports/wpilib/no-werror.patch
new file mode 100644
index 0000000..8bcd699
--- /dev/null
+++ b/vcpkg/ports/wpilib/no-werror.patch
@@ -0,0 +1,15 @@
+diff --git a/cmake/modules/CompileWarnings.cmake b/cmake/modules/CompileWarnings.cmake
+index 93b35b8ab..df7ff7365 100644
+--- a/cmake/modules/CompileWarnings.cmake
++++ b/cmake/modules/CompileWarnings.cmake
+@@ -1,8 +1,8 @@
+ macro(wpilib_target_warnings target)
+ if(NOT MSVC)
+- target_compile_options(${target} PRIVATE -Wall -pedantic -Wextra -Werror -Wno-unused-parameter ${WPILIB_TARGET_WARNINGS})
++ target_compile_options(${target} PRIVATE -Wall -pedantic -Wextra -Wno-unused-parameter ${WPILIB_TARGET_WARNINGS})
+ else()
+- target_compile_options(${target} PRIVATE /wd4146 /wd4244 /wd4251 /wd4267 /WX /D_CRT_SECURE_NO_WARNINGS ${WPILIB_TARGET_WARNINGS})
++ target_compile_options(${target} PRIVATE /wd4146 /wd4244 /wd4251 /wd4267 /D_CRT_SECURE_NO_WARNINGS ${WPILIB_TARGET_WARNINGS})
+ endif()
+
+ # Suppress C++-specific OpenCV warning; C compiler rejects it with an error
diff --git a/vcpkg/ports/wpilib/portfile.cmake b/vcpkg/ports/wpilib/portfile.cmake
new file mode 100644
index 0000000..d9e0220
--- /dev/null
+++ b/vcpkg/ports/wpilib/portfile.cmake
@@ -0,0 +1,61 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO wpilibsuite/allwpilib
+ REF 165ebe4c79c437c7ba6c03af4a88a8c8680f742a
+ SHA512 f6ee07db0a119a7ac5876c4b0cf74abfb6af635d3d3ba913300138c450f62f6595ac4849bc499346f9f0179cc563f548a5e8a9a47122af593b425af453afd99f
+ PATCHES
+ no-werror.patch
+ windows-install-location.patch
+ missing-find_dependency.patch
+ fix-usage.patch
+ fix-build-error-with-fmt11.patch
+ fix-fmt.patch #https://github.com/wpilibsuite/allwpilib/pull/6796
+)
+
+if("allwpilib" IN_LIST FEATURES)
+ vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH_APRILTAG
+ REPO wpilibsuite/apriltag
+ REF e55b751f2465bd40a880d9acb87d24289e2af89e
+ SHA512 a5d824d11312f7f5229bad162349586e9c855cd1dc03f33235c045f2d5235932227eb17f9e9c801b46a28991cddcf7ad16d39549560251d7d9d52ce72f094a73
+ )
+endif()
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ cameraserver WITH_CSCORE
+ allwpilib WITH_SIMULATION_MODULES
+ allwpilib WITH_WPILIB
+)
+
+vcpkg_find_acquire_program(PYTHON3)
+x_vcpkg_get_python_packages(PYTHON_EXECUTABLE "${PYTHON3}" PACKAGES jinja2)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ -DWITH_JAVA=OFF
+ -DWITH_EXAMPLES=OFF
+ -DWITH_TESTS=OFF
+ -DWITH_GUI=OFF
+ -DWITH_SIMULATION_MODULES=OFF
+ -DUSE_SYSTEM_FMTLIB=ON
+ -DUSE_SYSTEM_LIBUV=ON
+ -DUSE_SYSTEM_EIGEN=ON
+ "-DFETCHCONTENT_SOURCE_DIR_APRILTAGLIB=${SOURCE_PATH_APRILTAG}"
+ MAYBE_UNUSED_VARIABLES
+ FETCHCONTENT_SOURCE_DIR_APRILTAGLIB
+)
+vcpkg_cmake_install()
+vcpkg_cmake_config_fixup(PACKAGE_NAME wpilib)
+vcpkg_cmake_config_fixup(PACKAGE_NAME ntcore)
+vcpkg_cmake_config_fixup(PACKAGE_NAME wpimath)
+vcpkg_cmake_config_fixup(PACKAGE_NAME wpinet)
+vcpkg_cmake_config_fixup(PACKAGE_NAME wpiutil)
+
+vcpkg_copy_pdbs()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/debug/share")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.md")
diff --git a/vcpkg/ports/wpilib/vcpkg.json b/vcpkg/ports/wpilib/vcpkg.json
new file mode 100644
index 0000000..01edab8
--- /dev/null
+++ b/vcpkg/ports/wpilib/vcpkg.json
@@ -0,0 +1,45 @@
+{
+ "name": "wpilib",
+ "version-date": "2023-08-24",
+ "port-version": 2,
+ "description": "WPILib is the software library package for the FIRST Robotics Competition. The core install includes wpiutil, a common utilies library, and ntcore, the base NetworkTables library.",
+ "homepage": "https://github.com/wpilibsuite/allwpilib",
+ "license": null,
+ "dependencies": [
+ "eigen3",
+ "fmt",
+ "libuv",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ {
+ "name": "vcpkg-get-python-packages",
+ "host": true
+ }
+ ],
+ "features": {
+ "allwpilib": {
+ "description": "Enables the simulation HAL, and the high level wpilibc library.",
+ "dependencies": [
+ "opencv",
+ {
+ "name": "wpilib",
+ "features": [
+ "cameraserver"
+ ]
+ }
+ ]
+ },
+ "cameraserver": {
+ "description": "Enables the CameraServer and CSCore libraries for manipulating USB Cameras and HTTP Camera Streams",
+ "dependencies": [
+ "opencv"
+ ]
+ }
+ }
+}
diff --git a/vcpkg/ports/wpilib/windows-install-location.patch b/vcpkg/ports/wpilib/windows-install-location.patch
new file mode 100644
index 0000000..36087a7
--- /dev/null
+++ b/vcpkg/ports/wpilib/windows-install-location.patch
@@ -0,0 +1,338 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 012bcb7cc..ff2ab95b8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -153,7 +153,6 @@ endif()
+
+ set( wpilib_dest "")
+ set( include_dest include )
+-set( main_lib_dest lib )
+ set( java_lib_dest java )
+ set( jni_lib_dest jni )
+
+diff --git a/apriltag/CMakeLists.txt b/apriltag/CMakeLists.txt
+index 6f20e3aa0..b5459eb62 100644
+--- a/apriltag/CMakeLists.txt
++++ b/apriltag/CMakeLists.txt
+@@ -62,11 +62,7 @@ if (WITH_JAVA)
+ target_link_libraries(apriltagjni PRIVATE apriltag_jni_headers)
+ add_dependencies(apriltagjni apriltag_jar)
+
+- if (MSVC)
+- install(TARGETS apriltagjni RUNTIME DESTINATION "${jni_lib_dest}" COMPONENT Runtime)
+- endif()
+-
+- install(TARGETS apriltagjni EXPORT apriltagjni DESTINATION "${main_lib_dest}")
++ install(TARGETS apriltagjni EXPORT apriltagjni)
+
+ endif()
+
+@@ -94,13 +90,9 @@ target_include_directories(apriltag PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
+ $<INSTALL_INTERFACE:${include_dest}/apriltag>)
+
+-install(TARGETS apriltag EXPORT apriltag DESTINATION "${main_lib_dest}")
++install(TARGETS apriltag EXPORT apriltag)
+ install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/apriltag")
+
+-if (WITH_JAVA AND MSVC)
+- install(TARGETS apriltag RUNTIME DESTINATION "${jni_lib_dest}" COMPONENT Runtime)
+-endif()
+-
+ if (WITH_FLAT_INSTALL)
+ set (apriltag_config_dir ${wpilib_dest})
+ else()
+diff --git a/cameraserver/CMakeLists.txt b/cameraserver/CMakeLists.txt
+index 4916be3b6..665a4ef41 100644
+--- a/cameraserver/CMakeLists.txt
++++ b/cameraserver/CMakeLists.txt
+@@ -40,13 +40,9 @@ target_link_libraries(cameraserver PUBLIC ntcore cscore wpiutil ${OpenCV_LIBS})
+
+ set_property(TARGET cameraserver PROPERTY FOLDER "libraries")
+
+-install(TARGETS cameraserver EXPORT cameraserver DESTINATION "${main_lib_dest}")
++install(TARGETS cameraserver EXPORT cameraserver)
+ install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/cameraserver")
+
+-if (WITH_JAVA AND MSVC)
+- install(TARGETS cameraserver RUNTIME DESTINATION "${jni_lib_dest}" COMPONENT Runtime)
+-endif()
+-
+ if (WITH_FLAT_INSTALL)
+ set (cameraserver_config_dir ${wpilib_dest})
+ else()
+diff --git a/cscore/CMakeLists.txt b/cscore/CMakeLists.txt
+index 81cdd4ec5..1036cdf31 100644
+--- a/cscore/CMakeLists.txt
++++ b/cscore/CMakeLists.txt
+@@ -40,7 +40,7 @@ target_link_libraries(cscore PUBLIC wpinet wpiutil ${OpenCV_LIBS})
+
+ set_property(TARGET cscore PROPERTY FOLDER "libraries")
+
+-install(TARGETS cscore EXPORT cscore DESTINATION "${main_lib_dest}")
++install(TARGETS cscore EXPORT cscore)
+ install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/cscore")
+
+ if (WITH_FLAT_INSTALL)
+@@ -129,11 +129,7 @@ if (WITH_JAVA)
+ target_link_libraries(cscorejni PRIVATE cscore_jni_headers)
+ add_dependencies(cscorejni cscore_jar)
+
+- if (MSVC)
+- install(TARGETS cscorejni RUNTIME DESTINATION "${jni_lib_dest}" COMPONENT Runtime)
+- endif()
+-
+- install(TARGETS cscorejni EXPORT cscorejni DESTINATION "${main_lib_dest}")
++ install(TARGETS cscorejni EXPORT cscorejni)
+
+ endif()
+
+diff --git a/glass/CMakeLists.txt b/glass/CMakeLists.txt
+index a252c2e83..9192bc7b4 100644
+--- a/glass/CMakeLists.txt
++++ b/glass/CMakeLists.txt
+@@ -22,7 +22,7 @@ target_include_directories(libglass PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/lib/native/include>
+ $<INSTALL_INTERFACE:${include_dest}/glass>)
+
+-install(TARGETS libglass EXPORT libglass DESTINATION "${main_lib_dest}")
++install(TARGETS libglass EXPORT libglass)
+ install(DIRECTORY src/lib/native/include/ DESTINATION "${include_dest}/glass")
+
+ #
+@@ -43,7 +43,7 @@ target_include_directories(libglassnt PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/libnt/native/include>
+ $<INSTALL_INTERFACE:${include_dest}/glass>)
+
+-install(TARGETS libglassnt EXPORT libglassnt DESTINATION "${main_lib_dest}")
++install(TARGETS libglassnt EXPORT libglassnt)
+ install(DIRECTORY src/libnt/native/include/ DESTINATION "${include_dest}/glass")
+
+ #
+diff --git a/hal/CMakeLists.txt b/hal/CMakeLists.txt
+index 45c55675b..52dd44ad6 100644
+--- a/hal/CMakeLists.txt
++++ b/hal/CMakeLists.txt
+@@ -55,7 +55,7 @@ target_link_libraries(hal PUBLIC wpiutil)
+
+ set_property(TARGET hal PROPERTY FOLDER "libraries")
+
+-install(TARGETS hal EXPORT hal DESTINATION "${main_lib_dest}")
++install(TARGETS hal EXPORT hal)
+ install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/hal")
+ install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/gen/ DESTINATION "${include_dest}/hal")
+
+@@ -108,11 +108,7 @@ if (WITH_JAVA)
+ target_link_libraries(haljni PRIVATE hal_jni_headers)
+ add_dependencies(haljni hal_jar)
+
+- if (MSVC)
+- install(TARGETS haljni RUNTIME DESTINATION "${jni_lib_dest}" COMPONENT Runtime)
+- endif()
+-
+- install(TARGETS haljni EXPORT haljni DESTINATION "${main_lib_dest}")
++ install(TARGETS haljni EXPORT haljni)
+
+ endif()
+
+diff --git a/ntcore/CMakeLists.txt b/ntcore/CMakeLists.txt
+index cd5b3fb7d..1a97ac0c0 100644
+--- a/ntcore/CMakeLists.txt
++++ b/ntcore/CMakeLists.txt
+@@ -33,7 +33,7 @@ target_link_libraries(ntcore PUBLIC wpinet wpiutil)
+
+ set_property(TARGET ntcore PROPERTY FOLDER "libraries")
+
+-install(TARGETS ntcore EXPORT ntcore DESTINATION "${main_lib_dest}")
++install(TARGETS ntcore EXPORT ntcore)
+ install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/ntcore")
+ install(DIRECTORY ${WPILIB_BINARY_DIR}/ntcore/generated/main/native/include/ DESTINATION "${include_dest}/ntcore")
+
+@@ -81,7 +81,7 @@ if (WITH_JAVA)
+ target_link_libraries(ntcorejni PRIVATE ntcore_jni_headers)
+ add_dependencies(ntcorejni ntcore_jar)
+
+- install(TARGETS ntcorejni EXPORT ntcorejni DESTINATION "${main_lib_dest}")
++ install(TARGETS ntcorejni EXPORT ntcorejni)
+
+ endif()
+
+diff --git a/simulation/halsim_ds_socket/CMakeLists.txt b/simulation/halsim_ds_socket/CMakeLists.txt
+index 6d770d9a1..4eb23bb70 100644
+--- a/simulation/halsim_ds_socket/CMakeLists.txt
++++ b/simulation/halsim_ds_socket/CMakeLists.txt
+@@ -13,4 +13,4 @@ target_include_directories(halsim_ds_socket PRIVATE src/main/native/include)
+
+ set_property(TARGET halsim_ds_socket PROPERTY FOLDER "libraries")
+
+-install(TARGETS halsim_ds_socket EXPORT halsim_ds_socket DESTINATION "${main_lib_dest}")
++install(TARGETS halsim_ds_socket EXPORT halsim_ds_socket)
+diff --git a/simulation/halsim_gui/CMakeLists.txt b/simulation/halsim_gui/CMakeLists.txt
+index 949f9f1e8..957a9c223 100644
+--- a/simulation/halsim_gui/CMakeLists.txt
++++ b/simulation/halsim_gui/CMakeLists.txt
+@@ -16,4 +16,4 @@ target_include_directories(halsim_gui PRIVATE src/main/native/include)
+
+ set_property(TARGET halsim_gui PROPERTY FOLDER "libraries")
+
+-install(TARGETS halsim_gui EXPORT halsim_gui DESTINATION "${main_lib_dest}")
++install(TARGETS halsim_gui EXPORT halsim_gui)
+diff --git a/simulation/halsim_ws_client/CMakeLists.txt b/simulation/halsim_ws_client/CMakeLists.txt
+index 5bc99dbda..18a2a120d 100644
+--- a/simulation/halsim_ws_client/CMakeLists.txt
++++ b/simulation/halsim_ws_client/CMakeLists.txt
+@@ -13,4 +13,4 @@ target_include_directories(halsim_ws_client PRIVATE src/main/native/include)
+
+ set_property(TARGET halsim_ws_client PROPERTY FOLDER "libraries")
+
+-install(TARGETS halsim_ws_client EXPORT halsim_ws_client DESTINATION "${main_lib_dest}")
++install(TARGETS halsim_ws_client EXPORT halsim_ws_client)
+diff --git a/simulation/halsim_ws_core/CMakeLists.txt b/simulation/halsim_ws_core/CMakeLists.txt
+index 91bcbb25b..f7e240fd2 100644
+--- a/simulation/halsim_ws_core/CMakeLists.txt
++++ b/simulation/halsim_ws_core/CMakeLists.txt
+@@ -13,4 +13,4 @@ target_include_directories(halsim_ws_core PUBLIC src/main/native/include)
+
+ set_property(TARGET halsim_ws_core PROPERTY FOLDER "libraries")
+
+-install(TARGETS halsim_ws_core EXPORT halsim_ws_core DESTINATION "${main_lib_dest}")
++install(TARGETS halsim_ws_core EXPORT halsim_ws_core)
+diff --git a/simulation/halsim_ws_server/CMakeLists.txt b/simulation/halsim_ws_server/CMakeLists.txt
+index e5b55c801..370d2f83f 100644
+--- a/simulation/halsim_ws_server/CMakeLists.txt
++++ b/simulation/halsim_ws_server/CMakeLists.txt
+@@ -13,4 +13,4 @@ target_include_directories(halsim_ws_server PRIVATE src/main/native/include)
+
+ set_property(TARGET halsim_ws_server PROPERTY FOLDER "libraries")
+
+-install(TARGETS halsim_ws_server EXPORT halsim_ws_server DESTINATION "${main_lib_dest}")
++install(TARGETS halsim_ws_server EXPORT halsim_ws_server)
+diff --git a/wpigui/CMakeLists.txt b/wpigui/CMakeLists.txt
+index 59c4d6faf..2a6e6b213 100644
+--- a/wpigui/CMakeLists.txt
++++ b/wpigui/CMakeLists.txt
+@@ -37,7 +37,7 @@ add_executable(wpiguidev src/dev/native/cpp/main.cpp)
+ wpilib_link_macos_gui(wpiguidev)
+ target_link_libraries(wpiguidev wpigui)
+
+-install(TARGETS wpigui EXPORT wpigui DESTINATION "${main_lib_dest}")
++install(TARGETS wpigui EXPORT wpigui)
+ install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpigui")
+
+ #if (WITH_FLAT_INSTALL)
+diff --git a/wpilibNewCommands/CMakeLists.txt b/wpilibNewCommands/CMakeLists.txt
+index dc218fa06..fbebf19ea 100644
+--- a/wpilibNewCommands/CMakeLists.txt
++++ b/wpilibNewCommands/CMakeLists.txt
+@@ -39,7 +39,7 @@ target_include_directories(wpilibNewCommands PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
+ $<INSTALL_INTERFACE:${include_dest}/wpilibNewCommands>)
+
+-install(TARGETS wpilibNewCommands EXPORT wpilibNewCommands DESTINATION "${main_lib_dest}")
++install(TARGETS wpilibNewCommands EXPORT wpilibNewCommands)
+ install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpilibNewCommands")
+
+ if (FLAT_INSTALL_WPILIB)
+diff --git a/wpilibc/CMakeLists.txt b/wpilibc/CMakeLists.txt
+index 8c2c85ce9..ed8583497 100644
+--- a/wpilibc/CMakeLists.txt
++++ b/wpilibc/CMakeLists.txt
+@@ -30,7 +30,7 @@ target_link_libraries(wpilibc PUBLIC hal ntcore wpimath wpiutil)
+
+ set_property(TARGET wpilibc PROPERTY FOLDER "libraries")
+
+-install(TARGETS wpilibc EXPORT wpilibc DESTINATION "${main_lib_dest}")
++install(TARGETS wpilibc EXPORT wpilibc)
+ install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpilibc")
+
+ if (WITH_FLAT_INSTALL)
+diff --git a/wpimath/CMakeLists.txt b/wpimath/CMakeLists.txt
+index 01fd5d0f8..15cede1b3 100644
+--- a/wpimath/CMakeLists.txt
++++ b/wpimath/CMakeLists.txt
+@@ -71,11 +71,7 @@ if (WITH_JAVA)
+ target_link_libraries(wpimathjni PRIVATE wpimath_jni_headers)
+ add_dependencies(wpimathjni wpimath_jar)
+
+- if (MSVC)
+- install(TARGETS wpimathjni RUNTIME DESTINATION "${jni_lib_dest}" COMPONENT Runtime)
+- endif()
+-
+- install(TARGETS wpimathjni EXPORT wpimathjni DESTINATION "${main_lib_dest}")
++ install(TARGETS wpimathjni EXPORT wpimathjni)
+
+ endif()
+
+@@ -116,11 +112,7 @@ target_include_directories(wpimath PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
+ $<INSTALL_INTERFACE:${include_dest}/wpimath>)
+
+-install(TARGETS wpimath EXPORT wpimath DESTINATION "${main_lib_dest}")
+-
+-if (WITH_JAVA AND MSVC)
+- install(TARGETS wpimath RUNTIME DESTINATION "${jni_lib_dest}" COMPONENT Runtime)
+-endif()
++install(TARGETS wpimath EXPORT wpimath)
+
+ if (WITH_FLAT_INSTALL)
+ set (wpimath_config_dir ${wpilib_dest})
+diff --git a/wpinet/CMakeLists.txt b/wpinet/CMakeLists.txt
+index 6d92a5640..c30d21827 100644
+--- a/wpinet/CMakeLists.txt
++++ b/wpinet/CMakeLists.txt
+@@ -34,11 +34,7 @@ if (WITH_JAVA)
+ target_link_libraries(wpinetjni PRIVATE wpinet_jni_headers)
+ add_dependencies(wpinetjni wpinet_jar)
+
+- if (MSVC)
+- install(TARGETS wpinetjni RUNTIME DESTINATION "${jni_lib_dest}" COMPONENT Runtime)
+- endif()
+-
+- install(TARGETS wpinetjni EXPORT wpinetjni DESTINATION "${main_lib_dest}")
++ install(TARGETS wpinetjni EXPORT wpinetjni)
+
+ endif()
+
+@@ -161,11 +157,7 @@ target_include_directories(wpinet PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
+ $<INSTALL_INTERFACE:${include_dest}/wpinet>)
+
+-install(TARGETS wpinet EXPORT wpinet DESTINATION "${main_lib_dest}")
+-
+-if (WITH_JAVA AND MSVC)
+- install(TARGETS wpinet RUNTIME DESTINATION "${jni_lib_dest}" COMPONENT Runtime)
+-endif()
++install(TARGETS wpinet EXPORT wpinet)
+
+ if (WITH_FLAT_INSTALL)
+ set (wpinet_config_dir ${wpilib_dest})
+diff --git a/wpiutil/CMakeLists.txt b/wpiutil/CMakeLists.txt
+index 5db2b4c65..f6486286d 100644
+--- a/wpiutil/CMakeLists.txt
++++ b/wpiutil/CMakeLists.txt
+@@ -55,11 +55,7 @@ if (WITH_JAVA)
+ target_link_libraries(wpiutiljni PRIVATE wpiutil_jni_headers)
+ add_dependencies(wpiutiljni wpiutil_jar)
+
+- if (MSVC)
+- install(TARGETS wpiutiljni RUNTIME DESTINATION "${jni_lib_dest}" COMPONENT Runtime)
+- endif()
+-
+- install(TARGETS wpiutiljni EXPORT wpiutiljni DESTINATION "${main_lib_dest}")
++ install(TARGETS wpiutiljni EXPORT wpiutiljni)
+
+ endif()
+
+@@ -161,11 +157,7 @@ target_include_directories(wpiutil PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
+ $<INSTALL_INTERFACE:${include_dest}/wpiutil>)
+
+-install(TARGETS wpiutil EXPORT wpiutil DESTINATION "${main_lib_dest}")
+-
+-if (WITH_JAVA AND MSVC)
+- install(TARGETS wpiutil RUNTIME DESTINATION "${jni_lib_dest}" COMPONENT Runtime)
+-endif()
++install(TARGETS wpiutil EXPORT wpiutil)
+
+ if (WITH_FLAT_INSTALL)
+ set (wpiutil_config_dir ${wpilib_dest})