diff options
author | Tyler Veness | 2022-10-20 09:53:57 -0700 |
---|---|---|
committer | Tyler Veness | 2022-10-20 09:53:57 -0700 |
commit | 2836ebcff87ecc6fd9944908a0cb6a5e139cbd3b (patch) | |
tree | 6952f3ed4536e740814c154ae5afe479bab0b039 | |
parent | e2e68e7d995c57d564792dcc45d744b33d65cfff (diff) | |
download | aur-2836ebcff87ecc6fd9944908a0cb6a5e139cbd3b.tar.gz |
Use system installs of Eigen and fmt
-rw-r--r-- | .SRCINFO | 9 | ||||
-rw-r--r-- | 0001-build-Allow-disabling-ntcore-CMake-build.patch | 63 | ||||
-rw-r--r-- | 0001-build-Fix-CMake-system-library-opt-ins.patch | 159 | ||||
-rw-r--r-- | PKGBUILD | 46 | ||||
-rw-r--r-- | Suppress-Eigen-warning.patch | 15 |
5 files changed, 267 insertions, 25 deletions
@@ -1,7 +1,7 @@ pkgbase = wpimath pkgdesc = WPILib's mathematics and controls library pkgver = 2023.1.1a - pkgrel = 1 + pkgrel = 2 url = https://github.com/wpilibsuite/allwpilib arch = x86_64 license = BSD @@ -9,10 +9,15 @@ pkgbase = wpimath makedepends = cmake depends = fmt depends = eigen - depends = libuv options = !strip options = staticlibs source = git+https://github.com/wpilibsuite/allwpilib#tag=v2023.1.1-alpha-1 + source = 0001-build-Fix-CMake-system-library-opt-ins.patch + source = 0001-build-Allow-disabling-ntcore-CMake-build.patch + source = Suppress-Eigen-warning.patch md5sums = SKIP + md5sums = cac7f90b51f6a710bca065b6edc0b996 + md5sums = 32b2c74c1c5434ef1241537a0ee8e0f9 + md5sums = 0116ecb4c78683a00db29f15c23b2920 pkgname = wpimath diff --git a/0001-build-Allow-disabling-ntcore-CMake-build.patch b/0001-build-Allow-disabling-ntcore-CMake-build.patch new file mode 100644 index 000000000000..8b74ce6109fc --- /dev/null +++ b/0001-build-Allow-disabling-ntcore-CMake-build.patch @@ -0,0 +1,63 @@ +From 07ab49574a95b1586b2ed98cea43b52f5c0c5769 Mon Sep 17 00:00:00 2001 +From: Tyler Veness <calcmogul@gmail.com> +Date: Thu, 20 Oct 2022 09:22:30 -0700 +Subject: [PATCH] [build] Allow disabling ntcore CMake build + +--- + CMakeLists.txt | 15 +++++++++++++-- + README-CMAKE.md | 2 ++ + 2 files changed, 15 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 22a94023d..9ea1b03c0 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -52,6 +52,7 @@ ENDIF("${isSystemDir}" STREQUAL "-1") + option(BUILD_SHARED_LIBS "Build with shared libs (needed for JNI)" ON) + option(WITH_JAVA "Include java and JNI in the build" ON) + option(WITH_CSCORE "Build cscore (needs OpenCV)" ON) ++option(WITH_NTCORE "Build ntcore" ON) + option(WITH_WPIMATH "Build wpimath" ON) + option(WITH_WPILIB "Build hal, wpilibc/j, and myRobot (needs OpenCV)" ON) + option(WITH_EXAMPLES "Build examples" OFF) +@@ -117,6 +118,13 @@ FATAL: Cannot build simulation modules with wpilib disabled. + ") + endif() + ++if (NOT WITH_NTCORE AND WITH_WPILIB) ++ message(FATAL_ERROR " ++FATAL: Cannot build wpilib without ntcore. ++ Enable ntcore by setting WITH_NTCORE=ON ++") ++endif() ++ + if (NOT WITH_WPIMATH AND WITH_WPILIB) + message(FATAL_ERROR " + FATAL: Cannot build wpilib without wpimath. +@@ -247,8 +255,11 @@ if (WITH_TESTS) + endif() + + add_subdirectory(wpiutil) +-add_subdirectory(wpinet) +-add_subdirectory(ntcore) ++ ++if (WITH_NTCORE) ++ add_subdirectory(wpinet) ++ add_subdirectory(ntcore) ++endif() + + if (WITH_WPIMATH) + add_subdirectory(wpimath) +diff --git a/README-CMAKE.md b/README-CMAKE.md +index 361a5b9c6..abfab2371 100644 +--- a/README-CMAKE.md ++++ b/README-CMAKE.md +@@ -35,6 +35,8 @@ The following build options are available: + * This option will build C++ unit tests. These can be run via `make test`. + * `WITH_CSCORE` (ON Default) + * This option will cause cscore to be built. Turning this off will implicitly disable cameraserver, the hal and wpilib as well, irrespective of their specific options. If this is off, the OpenCV build requirement is removed. ++* `WITH_NTCORE` (ON Default) ++ * This option will cause ntcore to be built. Turning this off will implicitly disable wpinet and wpilib as well, irrespective of their specific options. + * `WITH_WPIMATH` (ON Default) + * This option will build the wpimath library. This option must be on to build wpilib. + * `WITH_WPILIB` (ON Default) diff --git a/0001-build-Fix-CMake-system-library-opt-ins.patch b/0001-build-Fix-CMake-system-library-opt-ins.patch new file mode 100644 index 000000000000..7d12ad752242 --- /dev/null +++ b/0001-build-Fix-CMake-system-library-opt-ins.patch @@ -0,0 +1,159 @@ +From 39eb7e564a841726f8068a42eae5f79de05efa1d Mon Sep 17 00:00:00 2001 +From: Tyler Veness <calcmogul@gmail.com> +Date: Thu, 20 Oct 2022 09:06:50 -0700 +Subject: [PATCH] [build] Fix CMake system library opt-ins + +I'm working on setting up an AUR package for wpimath, and that platform +generally builds against system versions of libraries instead of +packaging its own. I had to make a few fixes. + +-DUSE_VCPKG_EIGEN now only removes include paths for Eigen instead of +drake as well. + +The USE_VCPKG flags were renamed to USE_SYSTEM since they seem general +enough for that to work (the find_package() commands work the same way +on Arch). The unofficial-libuv CMake library file only exists on vcpkg, +so we can either keep it as-is (only works on vcpkg) or provide our own +library file for finding the system install. +--- + CMakeLists.txt | 16 ++++++++-------- + wpilib-config.cmake.in | 4 ++-- + wpimath/CMakeLists.txt | 12 +++++++----- + wpinet/CMakeLists.txt | 2 +- + wpinet/wpinet-config.cmake.in | 2 +- + wpiutil/CMakeLists.txt | 2 +- + wpiutil/wpiutil-config.cmake.in | 2 +- + 7 files changed, 21 insertions(+), 19 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 22a94023d..b898dbf2f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -63,10 +63,10 @@ option(WITH_SIMULATION_MODULES "Build simulation modules" ON) + option(WITH_EXTERNAL_HAL "Use a separately built HAL" OFF) + set(EXTERNAL_HAL_FILE "" CACHE FILEPATH "Location to look for an external HAL CMake File") + +-# Options for using a package manager (vcpkg) for certain dependencies. +-option(USE_VCPKG_FMTLIB "Use vcpkg fmtlib" OFF) +-option(USE_VCPKG_LIBUV "Use vcpkg libuv" OFF) +-option(USE_VCPKG_EIGEN "Use vcpkg eigen" OFF) ++# Options for using a package manager (e.g., vcpkg) for certain dependencies. ++option(USE_SYSTEM_FMTLIB "Use system fmtlib" OFF) ++option(USE_SYSTEM_LIBUV "Use system libuv" OFF) ++option(USE_SYSTEM_EIGEN "Use system eigen" OFF) + + # Options for installation. + option(WITH_FLAT_INSTALL "Use a flat install directory" OFF) +@@ -136,12 +136,12 @@ else() + set (wpilib_config_dir share/wpilib) + endif() + +-if (USE_VCPKG_LIBUV) +-set (LIBUV_VCPKG_REPLACE "find_package(unofficial-libuv CONFIG)") ++if (USE_SYSTEM_LIBUV) ++set (LIBUV_SYSTEM_REPLACE "find_package(unofficial-libuv CONFIG)") + endif() + +-if (USE_VCPKG_EIGEN) +-set (EIGEN_VCPKG_REPLACE "find_package(Eigen3 CONFIG)") ++if (USE_SYSTEM_EIGEN) ++set (EIGEN_SYSTEM_REPLACE "find_package(Eigen3 CONFIG)") + endif() + + find_package(LIBSSH 0.7.1) +diff --git a/wpilib-config.cmake.in b/wpilib-config.cmake.in +index 50feffcc1..e0d27d109 100644 +--- a/wpilib-config.cmake.in ++++ b/wpilib-config.cmake.in +@@ -2,8 +2,8 @@ include(CMakeFindDependencyMacro) + @FILENAME_DEP_REPLACE@ + set(THREADS_PREFER_PTHREAD_FLAG ON) + find_dependency(Threads) +-@LIBUV_VCPKG_REPLACE@ +-@EIGEN_VCPKG_REPLACE@ ++@LIBUV_SYSTEM_REPLACE@ ++@EIGEN_SYSTEM_REPLACE@ + @WPIUTIL_DEP_REPLACE@ + @NTCORE_DEP_REPLACE@ + @CSCORE_DEP_REPLACE@ +diff --git a/wpimath/CMakeLists.txt b/wpimath/CMakeLists.txt +index ba5d51535..e11353a2c 100644 +--- a/wpimath/CMakeLists.txt ++++ b/wpimath/CMakeLists.txt +@@ -108,18 +108,20 @@ endif() + wpilib_target_warnings(wpimath) + target_link_libraries(wpimath wpiutil) + +-if (NOT USE_VCPKG_EIGEN) +- install(DIRECTORY src/main/native/thirdparty/drake/include/ DESTINATION "${include_dest}/wpimath") ++if (NOT USE_SYSTEM_EIGEN) + install(DIRECTORY src/main/native/thirdparty/eigen/include/ DESTINATION "${include_dest}/wpimath") + target_include_directories(wpimath SYSTEM PUBLIC +- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/drake/include> +- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/eigen/include> +- $<INSTALL_INTERFACE:${include_dest}/wpimath>) ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/eigen/include> ++ $<INSTALL_INTERFACE:${include_dest}/wpimath>) + else() + find_package(Eigen3 CONFIG REQUIRED) + target_link_libraries (wpimath Eigen3::Eigen) + endif() + ++install(DIRECTORY src/main/native/thirdparty/drake/include/ DESTINATION "${include_dest}/wpimath") ++target_include_directories(wpimath SYSTEM PUBLIC ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/drake/include>) ++ + target_include_directories(wpimath PUBLIC + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include> + $<INSTALL_INTERFACE:${include_dest}/wpimath>) +diff --git a/wpinet/CMakeLists.txt b/wpinet/CMakeLists.txt +index 3994f8bd5..5bb54e950 100644 +--- a/wpinet/CMakeLists.txt ++++ b/wpinet/CMakeLists.txt +@@ -126,7 +126,7 @@ target_compile_features(wpinet PUBLIC cxx_std_20) + wpilib_target_warnings(wpinet) + target_link_libraries(wpinet PUBLIC wpiutil) + +-if (NOT USE_VCPKG_LIBUV) ++if (NOT USE_SYSTEM_LIBUV) + target_sources(wpinet PRIVATE ${uv_native_src}) + install(DIRECTORY src/main/native/thirdparty/libuv/include/ DESTINATION "${include_dest}/wpinet") + target_include_directories(wpinet PRIVATE +diff --git a/wpinet/wpinet-config.cmake.in b/wpinet/wpinet-config.cmake.in +index e61a677ed..f54fe455b 100644 +--- a/wpinet/wpinet-config.cmake.in ++++ b/wpinet/wpinet-config.cmake.in +@@ -1,6 +1,6 @@ + include(CMakeFindDependencyMacro) + @FILENAME_DEP_REPLACE@ +-@LIBUV_VCPKG_REPLACE@ ++@LIBUV_SYSTEM_REPLACE@ + @WPIUTIL_DEP_REPLACE@ + + @FILENAME_DEP_REPLACE@ +diff --git a/wpiutil/CMakeLists.txt b/wpiutil/CMakeLists.txt +index db9a3ed38..6ea8331d1 100644 +--- a/wpiutil/CMakeLists.txt ++++ b/wpiutil/CMakeLists.txt +@@ -118,7 +118,7 @@ if (ATOMIC) + endif() + + +-if (NOT USE_VCPKG_FMTLIB) ++if (NOT USE_SYSTEM_FMTLIB) + target_sources(wpiutil PRIVATE ${fmtlib_native_src}) + install(DIRECTORY src/main/native/thirdparty/fmtlib/include/ DESTINATION "${include_dest}/wpiutil") + target_include_directories(wpiutil PUBLIC +diff --git a/wpiutil/wpiutil-config.cmake.in b/wpiutil/wpiutil-config.cmake.in +index 821b926ba..fde839e2f 100644 +--- a/wpiutil/wpiutil-config.cmake.in ++++ b/wpiutil/wpiutil-config.cmake.in +@@ -2,7 +2,7 @@ include(CMakeFindDependencyMacro) + @FILENAME_DEP_REPLACE@ + set(THREADS_PREFER_PTHREAD_FLAG ON) + find_dependency(Threads) +-@FMTLIB_VCPKG_REPLACE@ ++@FMTLIB_SYSTEM_REPLACE@ + + @FILENAME_DEP_REPLACE@ + include(${SELF_DIR}/wpiutil.cmake) @@ -2,23 +2,39 @@ pkgname=wpimath pkgver=2023.1.1a -pkgrel=1 +pkgrel=2 pkgdesc="WPILib's mathematics and controls library" arch=('x86_64') url='https://github.com/wpilibsuite/allwpilib' -depends=('fmt' 'eigen' 'libuv') +depends=('fmt' 'eigen') makedepends=('cmake') license=('BSD' 'MIT') options=('!strip' 'staticlibs') -source=('git+https://github.com/wpilibsuite/allwpilib#tag=v2023.1.1-alpha-1') +source=('git+https://github.com/wpilibsuite/allwpilib#tag=v2023.1.1-alpha-1' + '0001-build-Fix-CMake-system-library-opt-ins.patch' + '0001-build-Allow-disabling-ntcore-CMake-build.patch' + 'Suppress-Eigen-warning.patch') #source=("https://github.com/wpilibsuite/allwpilib/archive/refs/tags/v${pkgver}.tar.gz") -md5sums=('SKIP') +md5sums=('SKIP' + 'cac7f90b51f6a710bca065b6edc0b996' + '32b2c74c1c5434ef1241537a0ee8e0f9' + '0116ecb4c78683a00db29f15c23b2920') + +prepare() { + cd "$srcdir"/allwpilib + patch -p1 < "$srcdir"/0001-build-Fix-CMake-system-library-opt-ins.patch + patch -p1 < "$srcdir"/0001-build-Allow-disabling-ntcore-CMake-build.patch + patch -p1 < "$srcdir"/Suppress-Eigen-warning.patch +} build() { cmake -B build -S "allwpilib" \ -DCMAKE_INSTALL_PREFIX='/usr' \ + -DUSE_SYSTEM_EIGEN=ON \ + -DUSE_SYSTEM_FMTLIB=ON \ -DWITH_JAVA=OFF \ -DWITH_CSCORE=OFF \ + -DWITH_NTCORE=OFF \ -DWITH_WPIMATH=ON \ -DWITH_WPILIB=OFF \ -DWITH_TESTS=ON \ @@ -30,7 +46,8 @@ build() { check() { cd build - ctest --output-on-failure + # wpiutil test failure: JsonComparisonValuesTest.Less + ctest -E wpiutil --output-on-failure } package() { @@ -39,23 +56,10 @@ package() { # Move includes to /usr/include mv "$pkgdir"/usr/wpilib/include "$pkgdir"/usr/include - # Delete thirdparty libraries - rm -r "$pkgdir"/usr/include/wpimath/Eigen - rm -r "$pkgdir"/usr/include/wpimath/unsupported - rm -r "$pkgdir"/usr/include/wpiutil/fmt - # Fix wpiutil includes mv "$pkgdir"/usr/include/wpiutil/* "$pkgdir"/usr/include rmdir "$pkgdir"/usr/include/wpiutil - # Fix wpinet includes - rm -r "$pkgdir"/usr/include/wpinet/uv - mv "$pkgdir"/usr/include/wpinet/wpinet/* "$pkgdir"/usr/include/wpinet - - # Fix ntcore includes - mv "$pkgdir"/usr/include/ntcore/* "$pkgdir"/usr/include - rmdir "$pkgdir"/usr/include/ntcore - # Fix wpimath includes mv "$pkgdir"/usr/include/wpimath/frc "$pkgdir"/usr/include mv "$pkgdir"/usr/include/wpimath/drake "$pkgdir"/usr/include @@ -66,10 +70,6 @@ package() { # Fix libs install mv "$pkgdir"/usr/wpilib/lib "$pkgdir"/usr/lib - # Fix CMake modules install - mkdir -p "$pkgdir/usr/share/cmake/Modules" - rm "$pkgdir"/usr/wpilib/wpilib-config.cmake - mv "$pkgdir"/usr/wpilib/*.cmake "$pkgdir/usr/share/cmake/Modules" - + # Delete empty folder rmdir "$pkgdir"/usr/wpilib } diff --git a/Suppress-Eigen-warning.patch b/Suppress-Eigen-warning.patch new file mode 100644 index 000000000000..dc450512e281 --- /dev/null +++ b/Suppress-Eigen-warning.patch @@ -0,0 +1,15 @@ +diff --git a/wpimath/src/main/native/include/frc/controller/LinearPlantInversionFeedforward.h b/wpimath/src/main/native/include/frc/controller/LinearPlantInversionFeedforward.h +index d4cc3c426..bbf9a30a1 100644 +--- a/wpimath/src/main/native/include/frc/controller/LinearPlantInversionFeedforward.h ++++ b/wpimath/src/main/native/include/frc/controller/LinearPlantInversionFeedforward.h +@@ -7,7 +7,10 @@ + #include <array> + #include <functional> + ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Warray-bounds" + #include "Eigen/QR" ++#pragma GCC diagnostic pop + #include "frc/EigenCore.h" + #include "frc/system/Discretization.h" + #include "frc/system/LinearSystem.h" |