From 4fcf0b25a1eea4bc7707f9d3f60bd805da482c23 Mon Sep 17 00:00:00 2001 From: Gold856 <117957790+Gold856@users.noreply.github.com> Date: Thu, 30 Nov 2023 19:52:21 -0500 Subject: [PATCH] [build] Apply a formatter for CMake files (#5973) --- .gersemirc | 6 + .github/workflows/lint-format.yml | 2 +- .styleguide | 1 + CMakeLists.txt | 266 ++++++++++++------- apriltag/CMakeLists.txt | 152 ++++++----- cameraserver/CMakeLists.txt | 48 ++-- cmake/modules/AddTest.cmake | 4 +- cmake/modules/CompileWarnings.cmake | 38 ++- cmake/modules/DownloadAndCheck.cmake | 16 +- cmake/modules/FindLIBSSH.cmake | 93 ++++--- cmake/modules/GenResources.cmake | 50 ++-- cmake/modules/LinkMacOSGUI.cmake | 7 +- cmake/modules/SubDirList.cmake | 24 +- cmake/scripts/GenResource.cmake | 48 ++-- cscore/CMakeLists.txt | 101 +++++-- datalogtool/CMakeLists.txt | 12 +- fieldImages/CMakeLists.txt | 32 ++- glass/CMakeLists.txt | 22 +- googletest/CMakeLists.txt | 11 +- hal/CMakeLists.txt | 87 +++--- imgui/CMakeLists.txt | 90 +++---- ntcore/CMakeLists.txt | 92 ++++--- outlineviewer/CMakeLists.txt | 12 +- roborioteamnumbersetter/CMakeLists.txt | 17 +- romiVendordep/CMakeLists.txt | 73 +++-- simulation/CMakeLists.txt | 2 +- sysid/CMakeLists.txt | 9 +- wpigui/CMakeLists.txt | 19 +- wpilibNewCommands/CMakeLists.txt | 90 ++++--- wpilibc/CMakeLists.txt | 33 ++- wpilibcExamples/CMakeLists.txt | 66 +++-- wpilibj/CMakeLists.txt | 74 ++++-- wpimath/CMakeLists.txt | 353 +++++++++++++++---------- wpinet/CMakeLists.txt | 136 ++++++---- wpiunits/CMakeLists.txt | 4 +- wpiutil/CMakeLists.txt | 229 +++++++++------- xrpVendordep/CMakeLists.txt | 73 +++-- 37 files changed, 1496 insertions(+), 896 deletions(-) create mode 100644 .gersemirc diff --git a/.gersemirc b/.gersemirc new file mode 100644 index 0000000000..19ed2c239f --- /dev/null +++ b/.gersemirc @@ -0,0 +1,6 @@ +color: false +definitions: [] +line_length: 100 +list_expansion: favour-inlining +quiet: false +unsafe: false diff --git a/.github/workflows/lint-format.yml b/.github/workflows/lint-format.yml index cac0a2f8a9..e3735c417a 100644 --- a/.github/workflows/lint-format.yml +++ b/.github/workflows/lint-format.yml @@ -27,7 +27,7 @@ jobs: with: python-version: 3.8 - name: Install wpiformat - run: pip3 install wpiformat==2023.34 + run: pip3 install wpiformat==2023.36 - name: Run run: wpiformat - name: Check output diff --git a/.styleguide b/.styleguide index 1ba4e1dcce..f67c100e08 100644 --- a/.styleguide +++ b/.styleguide @@ -10,6 +10,7 @@ cppSrcFileInclude { } modifiableFileExclude { + cmake/toolchains/ \.patch$ gradlew } diff --git a/CMakeLists.txt b/CMakeLists.txt index e10ad6135a..dc0a628b7d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,12 +1,15 @@ # Disable in-source builds to prevent source tree corruption. if(" ${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL " ${CMAKE_CURRENT_BINARY_DIR}") - message(FATAL_ERROR " + message( + FATAL_ERROR + " FATAL: In-source builds are not allowed. You should create a separate directory for build files. -") +" + ) endif() -if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") +if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") set(CMAKE_SYSTEM_VERSION 10.0.18362.0 CACHE STRING INTERNAL FORCE) set(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION 10.0.18362.0 CACHE STRING INTERNAL FORCE) endif() @@ -16,7 +19,7 @@ project(allwpilib) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") # Make timestamps of extracted files from FetchContent the time of extraction -if (POLICY CMP0135) +if(POLICY CMP0135) cmake_policy(SET CMP0135 NEW) endif() @@ -24,7 +27,7 @@ message(STATUS "Platform version: ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}") set(WPILIB_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) -INCLUDE(CPack) +include(CPack) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) set_property(GLOBAL PROPERTY USE_FOLDERS ON) @@ -35,23 +38,23 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${WPILIB_BINARY_DIR}/bin) set(CMAKE_JAVA_TARGET_OUTPUT_DIR ${WPILIB_BINARY_DIR}/jar) # use, i.e. don't skip the full RPATH for the build tree -SET(CMAKE_SKIP_BUILD_RPATH FALSE) +set(CMAKE_SKIP_BUILD_RPATH FALSE) # when building, don't use the install RPATH already # (but later on when installing) -SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) +set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) -SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") +set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") # add the automatically determined parts of the RPATH # which point to directories outside the build tree to the install RPATH -SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) # the RPATH to be used when installing, but only if it's not a system directory -LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir) -IF("${isSystemDir}" STREQUAL "-1") - SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") -ENDIF("${isSystemDir}" STREQUAL "-1") +list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir) +if("${isSystemDir}" STREQUAL "-1") + set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") +endif("${isSystemDir}" STREQUAL "-1") # Options for building certain parts of the repo. Everything is built by default. option(BUILD_SHARED_LIBS "Build with shared libs (needed for JNI)" ON) @@ -81,105 +84,134 @@ set(OPENCV_JAVA_INSTALL_DIR "" CACHE PATH "Location to search for the OpenCV jar # Set default build type to release with debug info (i.e. release mode optimizations # are performed, but debug info still exists). -if (NOT CMAKE_BUILD_TYPE) - set (CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "" FORCE) +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "" FORCE) endif() -if (WITH_JAVA AND NOT BUILD_SHARED_LIBS) - message(FATAL_ERROR " +if(WITH_JAVA AND NOT BUILD_SHARED_LIBS) + message( + FATAL_ERROR + " FATAL: Cannot build static libs with Java enabled. Static libs requires both BUILD_SHARED_LIBS=OFF and WITH_JAVA=OFF -") +" + ) endif() -if (WITH_SIMULATION_MODULES AND NOT BUILD_SHARED_LIBS) - message(FATAL_ERROR " +if(WITH_SIMULATION_MODULES AND NOT BUILD_SHARED_LIBS) + message( + FATAL_ERROR + " FATAL: Cannot build static libs with simulation modules enabled. Static libs requires both BUILD_SHARED_LIBS=OFF and WITH_SIMULATION_MODULES=OFF -") +" + ) endif() -if (NOT WITH_JAVA OR NOT WITH_CSCORE) +if(NOT WITH_JAVA OR NOT WITH_CSCORE) if(NOT "${OPENCV_JAVA_INSTALL_DIR}" STREQUAL "") - message(WARNING " + message( + WARNING + " WARNING: OpenCV Java dir set but java is not enabled! It will be ignored. -") +" + ) endif() endif() -if (NOT WITH_WPILIB AND WITH_SIMULATION_MODULES) - message(FATAL_ERROR " +if(NOT WITH_WPILIB AND WITH_SIMULATION_MODULES) + message( + FATAL_ERROR + " FATAL: Cannot build simulation modules with wpilib disabled. Enable wpilib by setting WITH_WPILIB=ON -") +" + ) endif() -if (NOT WITH_NTCORE AND WITH_CSCORE) - message(FATAL_ERROR " +if(NOT WITH_NTCORE AND WITH_CSCORE) + message( + FATAL_ERROR + " FATAL: Cannot build cameraserver without ntcore. Enable ntcore by setting WITH_NTCORE=ON -") +" + ) endif() -if (NOT WITH_NTCORE AND WITH_GUI) - message(FATAL_ERROR " +if(NOT WITH_NTCORE AND WITH_GUI) + message( + FATAL_ERROR + " FATAL: Cannot build GUI modules without ntcore. Enable ntcore by setting WITH_NTCORE=ON -") +" + ) endif() -if (NOT WITH_NTCORE AND WITH_SIMULATION_MODULES) - message(FATAL_ERROR " +if(NOT WITH_NTCORE AND WITH_SIMULATION_MODULES) + message( + FATAL_ERROR + " FATAL: Cannot build simulation modules without ntcore. Enable ntcore by setting WITH_NTCORE=ON -") +" + ) endif() -if (NOT WITH_NTCORE AND WITH_WPILIB) - message(FATAL_ERROR " +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 " +if(NOT WITH_WPIMATH AND WITH_WPILIB) + message( + FATAL_ERROR + " FATAL: Cannot build wpilib without wpimath. Enable wpimath by setting WITH_WPIMATH=ON -") +" + ) endif() -if (NOT WITH_WPIUNITS AND WITH_WPIMATH AND WITH_JAVA) - message(FATAL_ERROR " +if(NOT WITH_WPIUNITS AND WITH_WPIMATH AND WITH_JAVA) + message( + FATAL_ERROR + " FATAL: Cannot build Java wpimath without wpiunits. Enable wpiunits by setting WITH_WPIUNITS=ON or disable the Java build by setting WITH_JAVA=OFF -") +" + ) endif() -set( include_dest include ) -set( java_lib_dest java ) -set( jni_lib_dest jni ) +set(include_dest include) +set(java_lib_dest java) +set(jni_lib_dest jni) -if (USE_SYSTEM_LIBUV) -set (LIBUV_SYSTEM_REPLACE " +if(USE_SYSTEM_LIBUV) + set(LIBUV_SYSTEM_REPLACE + " find_dependency(libuv CONFIG) -") +" + ) endif() -if (USE_SYSTEM_EIGEN) -set (EIGEN_SYSTEM_REPLACE "find_package(Eigen3 CONFIG)") +if(USE_SYSTEM_EIGEN) + set(EIGEN_SYSTEM_REPLACE "find_package(Eigen3 CONFIG)") endif() find_package(LIBSSH 0.7.1) find_package(Protobuf REQUIRED) -find_program(Quickbuf_EXECUTABLE - NAMES protoc-gen-quickbuf - DOC "The Quickbuf protoc plugin" -) +find_program(Quickbuf_EXECUTABLE NAMES protoc-gen-quickbuf DOC "The Quickbuf protoc plugin") set(WPIUTIL_DEP_REPLACE "find_dependency(wpiutil)") set(WPINET_DEP_REPLACE "find_dependency(wpinet)") @@ -208,7 +240,15 @@ if(isMultiConfig) list(APPEND CMAKE_CONFIGURATION_TYPES Ubsan) endif() else() - set(allowedBuildTypes Asan Tsan Ubsan Debug Release RelWithDebInfo MinSizeRel) + set(allowedBuildTypes + Asan + Tsan + Ubsan + Debug + Release + RelWithDebInfo + MinSizeRel + ) set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "${allowedBuildTypes}") if(CMAKE_BUILD_TYPE AND NOT CMAKE_BUILD_TYPE IN_LIST allowedBuildTypes) @@ -217,54 +257,90 @@ else() endif() set(CMAKE_C_FLAGS_ASAN - "${CMAKE_C_FLAGS_DEBUG} -fsanitize=address -fno-omit-frame-pointer" CACHE STRING - "Flags used by the C compiler for Asan build type or configuration." FORCE) + "${CMAKE_C_FLAGS_DEBUG} -fsanitize=address -fno-omit-frame-pointer" + CACHE STRING + "Flags used by the C compiler for Asan build type or configuration." + FORCE +) set(CMAKE_CXX_FLAGS_ASAN - "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address -fno-omit-frame-pointer" CACHE STRING - "Flags used by the C++ compiler for Asan build type or configuration." FORCE) + "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address -fno-omit-frame-pointer" + CACHE STRING + "Flags used by the C++ compiler for Asan build type or configuration." + FORCE +) set(CMAKE_EXE_LINKER_FLAGS_ASAN - "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=address" CACHE STRING - "Linker flags to be used to create executables for Asan build type." FORCE) + "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=address" + CACHE STRING + "Linker flags to be used to create executables for Asan build type." + FORCE +) set(CMAKE_SHARED_LINKER_FLAGS_ASAN - "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=address" CACHE STRING - "Linker lags to be used to create shared libraries for Asan build type." FORCE) + "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=address" + CACHE STRING + "Linker lags to be used to create shared libraries for Asan build type." + FORCE +) set(CMAKE_C_FLAGS_TSAN - "${CMAKE_C_FLAGS_DEBUG} -fsanitize=thread -fno-omit-frame-pointer" CACHE STRING - "Flags used by the C compiler for Tsan build type or configuration." FORCE) + "${CMAKE_C_FLAGS_DEBUG} -fsanitize=thread -fno-omit-frame-pointer" + CACHE STRING + "Flags used by the C compiler for Tsan build type or configuration." + FORCE +) set(CMAKE_CXX_FLAGS_TSAN - "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=thread -fno-omit-frame-pointer" CACHE STRING - "Flags used by the C++ compiler for Tsan build type or configuration." FORCE) + "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=thread -fno-omit-frame-pointer" + CACHE STRING + "Flags used by the C++ compiler for Tsan build type or configuration." + FORCE +) set(CMAKE_EXE_LINKER_FLAGS_TSAN - "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=thread" CACHE STRING - "Linker flags to be used to create executables for Tsan build type." FORCE) + "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=thread" + CACHE STRING + "Linker flags to be used to create executables for Tsan build type." + FORCE +) set(CMAKE_SHARED_LINKER_FLAGS_TSAN - "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=thread" CACHE STRING - "Linker lags to be used to create shared libraries for Tsan build type." FORCE) + "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=thread" + CACHE STRING + "Linker lags to be used to create shared libraries for Tsan build type." + FORCE +) set(CMAKE_C_FLAGS_UBSAN - "${CMAKE_C_FLAGS_DEBUG} -fsanitize=undefined -fno-sanitize-recover=all -fno-omit-frame-pointer" CACHE STRING - "Flags used by the C compiler for Ubsan build type or configuration." FORCE) + "${CMAKE_C_FLAGS_DEBUG} -fsanitize=undefined -fno-sanitize-recover=all -fno-omit-frame-pointer" + CACHE STRING + "Flags used by the C compiler for Ubsan build type or configuration." + FORCE +) set(CMAKE_CXX_FLAGS_UBSAN - "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=undefined -fno-sanitize-recover=all -fno-omit-frame-pointer" CACHE STRING - "Flags used by the C++ compiler for Ubsan build type or configuration." FORCE) + "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=undefined -fno-sanitize-recover=all -fno-omit-frame-pointer" + CACHE STRING + "Flags used by the C++ compiler for Ubsan build type or configuration." + FORCE +) set(CMAKE_EXE_LINKER_FLAGS_UBSAN - "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=undefined -fno-sanitize-recover=all" CACHE STRING - "Linker flags to be used to create executables for Ubsan build type." FORCE) + "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=undefined -fno-sanitize-recover=all" + CACHE STRING + "Linker flags to be used to create executables for Ubsan build type." + FORCE +) set(CMAKE_SHARED_LINKER_FLAGS_UBSAN - "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=undefined" CACHE STRING - "Linker lags to be used to create shared libraries for Ubsan build type." FORCE) + "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=undefined" + CACHE STRING + "Linker lags to be used to create shared libraries for Ubsan build type." + FORCE +) -if (WITH_TESTS) +if(WITH_TESTS) enable_testing() add_subdirectory(googletest) include(GoogleTest) @@ -272,49 +348,49 @@ endif() add_subdirectory(wpiutil) -if (WITH_NTCORE) +if(WITH_NTCORE) add_subdirectory(wpinet) add_subdirectory(ntcore) endif() -if (WITH_WPIMATH) - if (WITH_JAVA) +if(WITH_WPIMATH) + if(WITH_JAVA) add_subdirectory(wpiunits) endif() add_subdirectory(wpimath) endif() -if (WITH_WPIUNITS AND NOT WITH_WPIMATH) +if(WITH_WPIUNITS AND NOT WITH_WPIMATH) # In case of building wpiunits standalone add_subdirectory(wpiunits) endif() -if (WITH_GUI) +if(WITH_GUI) add_subdirectory(fieldImages) add_subdirectory(imgui) add_subdirectory(wpigui) add_subdirectory(glass) add_subdirectory(outlineviewer) add_subdirectory(sysid) - if (LIBSSH_FOUND) + if(LIBSSH_FOUND) add_subdirectory(roborioteamnumbersetter) add_subdirectory(datalogtool) endif() endif() -if (WITH_WPILIB OR WITH_SIMULATION_MODULES) +if(WITH_WPILIB OR WITH_SIMULATION_MODULES) set(HAL_DEP_REPLACE ${HAL_DEP_REPLACE_IMPL}) add_subdirectory(hal) endif() -if (WITH_CSCORE) +if(WITH_CSCORE) set(CSCORE_DEP_REPLACE ${CSCORE_DEP_REPLACE_IMPL}) set(CAMERASERVER_DEP_REPLACE ${CAMERASERVER_DEP_REPLACE_IMPL}) add_subdirectory(cscore) add_subdirectory(cameraserver) endif() -if (WITH_WPILIB) +if(WITH_WPILIB) set(WPILIBC_DEP_REPLACE ${WPILIBC_DEP_REPLACE_IMPL}) add_subdirectory(apriltag) add_subdirectory(wpilibj) @@ -322,15 +398,15 @@ if (WITH_WPILIB) add_subdirectory(wpilibNewCommands) add_subdirectory(romiVendordep) add_subdirectory(xrpVendordep) - if (WITH_EXAMPLES) + if(WITH_EXAMPLES) add_subdirectory(wpilibcExamples) endif() add_subdirectory(myRobot) endif() -if (WITH_SIMULATION_MODULES AND NOT WITH_EXTERNAL_HAL) +if(WITH_SIMULATION_MODULES AND NOT WITH_EXTERNAL_HAL) add_subdirectory(simulation) endif() -configure_file(wpilib-config.cmake.in ${WPILIB_BINARY_DIR}/wpilib-config.cmake ) +configure_file(wpilib-config.cmake.in ${WPILIB_BINARY_DIR}/wpilib-config.cmake) install(FILES ${WPILIB_BINARY_DIR}/wpilib-config.cmake DESTINATION share/wpilib) diff --git a/apriltag/CMakeLists.txt b/apriltag/CMakeLists.txt index 984c502687..0e9ed8e607 100644 --- a/apriltag/CMakeLists.txt +++ b/apriltag/CMakeLists.txt @@ -4,116 +4,148 @@ include(CompileWarnings) include(GenResources) include(FetchContent) -FetchContent_Declare( +fetchcontent_declare( apriltaglib - GIT_REPOSITORY https://github.com/wpilibsuite/apriltag.git - GIT_TAG 64be6ab26abf5e995321997fd0752c609a7e30f4 + GIT_REPOSITORY https://github.com/wpilibsuite/apriltag.git + GIT_TAG 64be6ab26abf5e995321997fd0752c609a7e30f4 ) # Don't use apriltag's CMakeLists.txt due to conflicting naming and JNI -FetchContent_GetProperties(apriltaglib) +fetchcontent_getproperties(apriltaglib) if(NOT apriltaglib_POPULATED) - FetchContent_Populate(apriltaglib) + fetchcontent_populate(apriltaglib) endif() aux_source_directory(${apriltaglib_SOURCE_DIR}/common APRILTAGLIB_COMMON_SRC) file(GLOB TAG_FILES ${apriltaglib_SOURCE_DIR}/tag*.c) -set(APRILTAGLIB_SRCS ${apriltaglib_SOURCE_DIR}/apriltag.c ${apriltaglib_SOURCE_DIR}/apriltag_pose.c ${apriltaglib_SOURCE_DIR}/apriltag_quad_thresh.c) +set(APRILTAGLIB_SRCS + ${apriltaglib_SOURCE_DIR}/apriltag.c + ${apriltaglib_SOURCE_DIR}/apriltag_pose.c + ${apriltaglib_SOURCE_DIR}/apriltag_quad_thresh.c +) file(GLOB apriltag_jni_src src/main/native/cpp/jni/AprilTagJNI.cpp) -if (WITH_JAVA) - find_package(Java REQUIRED) - find_package(JNI REQUIRED) - include(UseJava) - set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") +if(WITH_JAVA) + find_package(Java REQUIRED) + find_package(JNI REQUIRED) + include(UseJava) + set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") - set(CMAKE_JNI_TARGET true) + set(CMAKE_JNI_TARGET true) - file(GLOB EJML_JARS "${WPILIB_BINARY_DIR}/wpimath/thirdparty/ejml/*.jar") - file(GLOB JACKSON_JARS "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson/*.jar") - find_file(OPENCV_JAR_FILE - NAMES opencv-${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.jar - PATHS ${OPENCV_JAVA_INSTALL_DIR} ${OpenCV_INSTALL_PATH}/bin ${OpenCV_INSTALL_PATH}/share/java - NO_DEFAULT_PATH) + file(GLOB EJML_JARS "${WPILIB_BINARY_DIR}/wpimath/thirdparty/ejml/*.jar") + file(GLOB JACKSON_JARS "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson/*.jar") + find_file( + OPENCV_JAR_FILE + NAMES opencv-${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.jar + PATHS + ${OPENCV_JAVA_INSTALL_DIR} + ${OpenCV_INSTALL_PATH}/bin + ${OpenCV_INSTALL_PATH}/share/java + NO_DEFAULT_PATH + ) - set(CMAKE_JAVA_INCLUDE_PATH apriltag.jar ${EJML_JARS} ${JACKSON_JARS}) + set(CMAKE_JAVA_INCLUDE_PATH apriltag.jar ${EJML_JARS} ${JACKSON_JARS}) - file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) - file(GLOB_RECURSE JAVA_RESOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} src/main/native/resources/*.json) - add_jar(apriltag_jar - SOURCES ${JAVA_SOURCES} - RESOURCES NAMESPACE "edu/wpi/first/apriltag" ${JAVA_RESOURCES} - INCLUDE_JARS wpimath_jar wpiunits_jar ${EJML_JARS} wpiutil_jar ${OPENCV_JAR_FILE} - OUTPUT_NAME apriltag - GENERATE_NATIVE_HEADERS apriltag_jni_headers) + file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) + file( + GLOB_RECURSE JAVA_RESOURCES + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + src/main/native/resources/*.json + ) + add_jar( + apriltag_jar + SOURCES ${JAVA_SOURCES} + RESOURCES + NAMESPACE "edu/wpi/first/apriltag" ${JAVA_RESOURCES} + INCLUDE_JARS wpimath_jar wpiunits_jar ${EJML_JARS} wpiutil_jar ${OPENCV_JAR_FILE} + OUTPUT_NAME apriltag + GENERATE_NATIVE_HEADERS apriltag_jni_headers + ) - get_property(APRILTAG_JAR_FILE TARGET apriltag_jar PROPERTY JAR_FILE) - install(FILES ${APRILTAG_JAR_FILE} DESTINATION "${java_lib_dest}") + get_property(APRILTAG_JAR_FILE TARGET apriltag_jar PROPERTY JAR_FILE) + install(FILES ${APRILTAG_JAR_FILE} DESTINATION "${java_lib_dest}") - set_property(TARGET apriltag_jar PROPERTY FOLDER "java") + set_property(TARGET apriltag_jar PROPERTY FOLDER "java") - add_library(apriltagjni ${apriltag_jni_src}) - wpilib_target_warnings(apriltagjni) - target_link_libraries(apriltagjni PUBLIC apriltag) + add_library(apriltagjni ${apriltag_jni_src}) + wpilib_target_warnings(apriltagjni) + target_link_libraries(apriltagjni PUBLIC apriltag) - set_property(TARGET apriltagjni PROPERTY FOLDER "libraries") + set_property(TARGET apriltagjni PROPERTY FOLDER "libraries") - target_link_libraries(apriltagjni PRIVATE apriltag_jni_headers) - add_dependencies(apriltagjni apriltag_jar) - - install(TARGETS apriltagjni EXPORT apriltagjni) + target_link_libraries(apriltagjni PRIVATE apriltag_jni_headers) + add_dependencies(apriltagjni apriltag_jar) + install(TARGETS apriltagjni EXPORT apriltagjni) endif() -if (WITH_JAVA_SOURCE) - find_package(Java REQUIRED) - include(UseJava) - file(GLOB APRILTAG_SOURCES src/main/java/edu/wpi/first/apriltag/*.java) - add_jar(apriltag_src_jar - RESOURCES NAMESPACE "edu/wpi/first/apriltag" ${APRILTAG_SOURCES} - NAMESPACE "edu/wpi/first/apriltag/jni" src/main/java/edu/wpi/first/apriltag/jni/AprilTagJNI.java - OUTPUT_NAME apriltag-sources) +if(WITH_JAVA_SOURCE) + find_package(Java REQUIRED) + include(UseJava) + file(GLOB APRILTAG_SOURCES src/main/java/edu/wpi/first/apriltag/*.java) + add_jar( + apriltag_src_jar + RESOURCES + NAMESPACE "edu/wpi/first/apriltag" ${APRILTAG_SOURCES} + NAMESPACE + "edu/wpi/first/apriltag/jni" + src/main/java/edu/wpi/first/apriltag/jni/AprilTagJNI.java + OUTPUT_NAME apriltag-sources + ) - get_property(APRILTAG_SRC_JAR_FILE TARGET apriltag_src_jar PROPERTY JAR_FILE) - install(FILES ${APRILTAG_SRC_JAR_FILE} DESTINATION "${java_lib_dest}") + get_property(APRILTAG_SRC_JAR_FILE TARGET apriltag_src_jar PROPERTY JAR_FILE) + install(FILES ${APRILTAG_SRC_JAR_FILE} DESTINATION "${java_lib_dest}") - set_property(TARGET apriltag_src_jar PROPERTY FOLDER "java") + set_property(TARGET apriltag_src_jar PROPERTY FOLDER "java") endif() generate_resources(src/main/native/resources/edu/wpi/first/apriltag generated/main/cpp APRILTAG frc apriltag_resources_src) file(GLOB apriltag_native_src src/main/native/cpp/*.cpp) -add_library(apriltag ${apriltag_native_src} ${apriltag_resources_src} ${APRILTAGLIB_SRCS} ${APRILTAGLIB_COMMON_SRC} ${TAG_FILES}) +add_library( + apriltag + ${apriltag_native_src} + ${apriltag_resources_src} + ${APRILTAGLIB_SRCS} + ${APRILTAGLIB_COMMON_SRC} + ${TAG_FILES} +) set_target_properties(apriltag PROPERTIES DEBUG_POSTFIX "d") set_property(TARGET apriltag PROPERTY FOLDER "libraries") target_compile_features(apriltag PUBLIC cxx_std_20) wpilib_target_warnings(apriltag) # disable warnings that apriltaglib can't handle -if (MSVC) - target_compile_options(apriltag PRIVATE /wd4018 /wd4005 /wd4996) +if(MSVC) + target_compile_options(apriltag PRIVATE /wd4018 /wd4005 /wd4996) else() - target_compile_options(apriltag PRIVATE -Wno-sign-compare -Wno-gnu-zero-variadic-macro-arguments -Wno-type-limits) + target_compile_options( + apriltag + PRIVATE -Wno-sign-compare -Wno-gnu-zero-variadic-macro-arguments -Wno-type-limits + ) endif() target_link_libraries(apriltag wpimath) -target_include_directories(apriltag PUBLIC - $ - $ - $) +target_include_directories( + apriltag + PUBLIC + $ + $ + $ +) install(TARGETS apriltag EXPORT apriltag) install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/apriltag") - -configure_file(apriltag-config.cmake.in ${WPILIB_BINARY_DIR}/apriltag-config.cmake ) +configure_file(apriltag-config.cmake.in ${WPILIB_BINARY_DIR}/apriltag-config.cmake) install(FILES ${WPILIB_BINARY_DIR}/apriltag-config.cmake DESTINATION share/apriltag) install(EXPORT apriltag DESTINATION share/apriltag) -if (WITH_TESTS) +if(WITH_TESTS) wpilib_add_test(apriltag src/test/native/cpp) target_include_directories(apriltag_test PRIVATE src/test/native/include) target_link_libraries(apriltag_test apriltag gmock_main) diff --git a/cameraserver/CMakeLists.txt b/cameraserver/CMakeLists.txt index c2e2bd5f76..fc1a3acf31 100644 --- a/cameraserver/CMakeLists.txt +++ b/cameraserver/CMakeLists.txt @@ -3,10 +3,10 @@ project(cameraserver) include(CompileWarnings) include(AddTest) -find_package( OpenCV REQUIRED ) +find_package(OpenCV REQUIRED) # Java bindings -if (WITH_JAVA) +if(WITH_JAVA) find_package(Java REQUIRED) include(UseJava) set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") @@ -15,28 +15,40 @@ if (WITH_JAVA) set(OPENCV_JAVA_INSTALL_DIR ${OpenCV_INSTALL_PATH}/share/OpenCV/java/) - find_file(OPENCV_JAR_FILE NAMES opencv-${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.jar PATHS ${OPENCV_JAVA_INSTALL_DIR} ${OpenCV_INSTALL_PATH}/bin NO_DEFAULT_PATH) + find_file( + OPENCV_JAR_FILE + NAMES opencv-${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.jar + PATHS ${OPENCV_JAVA_INSTALL_DIR} ${OpenCV_INSTALL_PATH}/bin + NO_DEFAULT_PATH + ) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) - add_jar(cameraserver_jar ${JAVA_SOURCES} INCLUDE_JARS wpiutil_jar cscore_jar ntcore_jar ${OPENCV_JAR_FILE} OUTPUT_NAME cameraserver) + add_jar( + cameraserver_jar + ${JAVA_SOURCES} + INCLUDE_JARS wpiutil_jar cscore_jar ntcore_jar ${OPENCV_JAR_FILE} + OUTPUT_NAME cameraserver + ) get_property(CAMERASERVER_JAR_FILE TARGET cameraserver_jar PROPERTY JAR_FILE) install(FILES ${CAMERASERVER_JAR_FILE} DESTINATION "${java_lib_dest}") set_property(TARGET cameraserver_jar PROPERTY FOLDER "java") - endif() -if (WITH_JAVA_SOURCE) +if(WITH_JAVA_SOURCE) find_package(Java REQUIRED) include(UseJava) file(GLOB CAMERASERVER_SOURCES src/main/java/edu/wpi/first/cameraserver/*.java) file(GLOB VISION_SOURCES src/main/java/edu/wpi/first/vision/*.java) - add_jar(cameraserver_src_jar - RESOURCES NAMESPACE "edu/wpi/first/cameraserver" ${CAMERASERVER_SOURCES} - NAMESPACE "edu/wpi/first/vision" ${VISION_SOURCES} - OUTPUT_NAME cameraserver-sources) + add_jar( + cameraserver_src_jar + RESOURCES + NAMESPACE "edu/wpi/first/cameraserver" ${CAMERASERVER_SOURCES} + NAMESPACE "edu/wpi/first/vision" ${VISION_SOURCES} + OUTPUT_NAME cameraserver-sources + ) get_property(CAMERASERVER_SRC_JAR_FILE TARGET cameraserver_src_jar PROPERTY JAR_FILE) install(FILES ${CAMERASERVER_SRC_JAR_FILE} DESTINATION "${java_lib_dest}") @@ -44,13 +56,15 @@ if (WITH_JAVA_SOURCE) set_property(TARGET cameraserver_src_jar PROPERTY FOLDER "java") endif() -file(GLOB_RECURSE - cameraserver_native_src src/main/native/cpp/*.cpp) +file(GLOB_RECURSE cameraserver_native_src src/main/native/cpp/*.cpp) add_library(cameraserver ${cameraserver_native_src}) set_target_properties(cameraserver PROPERTIES DEBUG_POSTFIX "d") -target_include_directories(cameraserver PUBLIC - $ - $) +target_include_directories( + cameraserver + PUBLIC + $ + $ +) wpilib_target_warnings(cameraserver) target_link_libraries(cameraserver PUBLIC ntcore cscore wpiutil ${OpenCV_LIBS}) @@ -59,7 +73,7 @@ set_property(TARGET cameraserver PROPERTY FOLDER "libraries") install(TARGETS cameraserver EXPORT cameraserver) install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/cameraserver") -configure_file(cameraserver-config.cmake.in ${WPILIB_BINARY_DIR}/cameraserver-config.cmake ) +configure_file(cameraserver-config.cmake.in ${WPILIB_BINARY_DIR}/cameraserver-config.cmake) install(FILES ${WPILIB_BINARY_DIR}/cameraserver-config.cmake DESTINATION share/cameraserver) install(EXPORT cameraserver DESTINATION share/cameraserver) @@ -70,7 +84,7 @@ target_link_libraries(multiCameraServer cameraserver) set_property(TARGET multiCameraServer PROPERTY FOLDER "examples") -if (WITH_TESTS) +if(WITH_TESTS) wpilib_add_test(cameraserver src/test/native/cpp) target_link_libraries(cameraserver_test cameraserver gtest) endif() diff --git a/cmake/modules/AddTest.cmake b/cmake/modules/AddTest.cmake index eef41131e2..4896c4a222 100644 --- a/cmake/modules/AddTest.cmake +++ b/cmake/modules/AddTest.cmake @@ -4,10 +4,10 @@ macro(wpilib_add_test name srcdir) file(GLOB_RECURSE test_src ${srcdir}/*.cpp) add_executable(${name}_test ${test_src}) wpilib_target_warnings(${name}_test) - if (BUILD_SHARED_LIBS) + if(BUILD_SHARED_LIBS) target_compile_definitions(${name}_test PRIVATE -DGTEST_LINKED_AS_SHARED_LIBRARY) endif() - if (MSVC) + if(MSVC) target_compile_options(${name}_test PRIVATE /wd4101 /wd4251) endif() add_test(NAME ${name} COMMAND ${name}_test) diff --git a/cmake/modules/CompileWarnings.cmake b/cmake/modules/CompileWarnings.cmake index 8f5d54ea6c..af21d1d001 100644 --- a/cmake/modules/CompileWarnings.cmake +++ b/cmake/modules/CompileWarnings.cmake @@ -1,28 +1,48 @@ 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 -Werror -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 + /WX + /D_CRT_SECURE_NO_WARNINGS + ${WPILIB_TARGET_WARNINGS} + ) endif() # Suppress C++-specific OpenCV warning; C compiler rejects it with an error # https://github.com/opencv/opencv/issues/20269 if(UNIX AND NOT APPLE) - target_compile_options(${target} PRIVATE $<$:-Wno-deprecated-enum-enum-conversion>) + target_compile_options( + ${target} + PRIVATE $<$:-Wno-deprecated-enum-enum-conversion> + ) elseif(UNIX AND APPLE) - target_compile_options(${target} PRIVATE $<$:-Wno-deprecated-anon-enum-enum-conversion>) + target_compile_options( + ${target} + PRIVATE $<$:-Wno-deprecated-anon-enum-enum-conversion> + ) endif() # Suppress warning "enumeration types with a fixed underlying type are a # Clang extension" if(APPLE) - target_compile_options(${target} PRIVATE $<$:-Wno-fixed-enum-extension>) + target_compile_options(${target} PRIVATE $<$:-Wno-fixed-enum-extension>) endif() # Compress debug info with GCC - if ((${CMAKE_BUILD_TYPE} STREQUAL "Debug" OR - ${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo") AND - ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") - target_compile_options(${target} PRIVATE -gz=zlib) + if( + (${CMAKE_BUILD_TYPE} STREQUAL "Debug" OR ${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo") + AND ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" + ) + target_compile_options(${target} PRIVATE -gz=zlib) endif() endmacro() diff --git a/cmake/modules/DownloadAndCheck.cmake b/cmake/modules/DownloadAndCheck.cmake index 59c87998e9..a1807d590d 100644 --- a/cmake/modules/DownloadAndCheck.cmake +++ b/cmake/modules/DownloadAndCheck.cmake @@ -1,11 +1,11 @@ macro(download_and_check source destination) - file(DOWNLOAD ${source} ${destination} STATUS download_status) - list(GET download_status 0 status_code) - list(GET download_status 1 status_message) + file(DOWNLOAD ${source} ${destination} STATUS download_status) + list(GET download_status 0 status_code) + list(GET download_status 1 status_message) - if(${status_code} EQUAL 0) - message(VERBOSE "Download of \"${source}\" successful.") - else() - message(FATAL_ERROR "Download of \"${source}\" failed: ${status_message}") - endif() + if(${status_code} EQUAL 0) + message(VERBOSE "Download of \"${source}\" successful.") + else() + message(FATAL_ERROR "Download of \"${source}\" failed: ${status_message}") + endif() endmacro() diff --git a/cmake/modules/FindLIBSSH.cmake b/cmake/modules/FindLIBSSH.cmake index ba2d778381..6578aa9976 100644 --- a/cmake/modules/FindLIBSSH.cmake +++ b/cmake/modules/FindLIBSSH.cmake @@ -38,30 +38,28 @@ if(LIBSSH_LIBRARIES AND LIBSSH_INCLUDE_DIRS) # in cache already set(LIBSSH_FOUND TRUE) else() - find_path(LIBSSH_INCLUDE_DIR - NAMES - libssh/libssh.h + find_path( + LIBSSH_INCLUDE_DIR + NAMES libssh/libssh.h PATHS - /usr/include - /usr/local/include - /opt/local/include - /sw/include - ${CMAKE_INCLUDE_PATH} - ${CMAKE_INSTALL_PREFIX}/include + /usr/include + /usr/local/include + /opt/local/include + /sw/include + ${CMAKE_INCLUDE_PATH} + ${CMAKE_INSTALL_PREFIX}/include ) - find_library(LIBSSH_LIBRARY - NAMES - ssh.so - libssh.so - libssh.dylib + find_library( + LIBSSH_LIBRARY + NAMES ssh.so libssh.so libssh.dylib PATHS - /usr/lib - /usr/local/lib - /opt/local/lib - /sw/lib - ${CMAKE_LIBRARY_PATH} - ${CMAKE_INSTALL_PREFIX}/lib + /usr/lib + /usr/local/lib + /opt/local/lib + /sw/lib + ${CMAKE_LIBRARY_PATH} + ${CMAKE_INSTALL_PREFIX}/lib ) if(LIBSSH_INCLUDE_DIR AND LIBSSH_LIBRARY) @@ -71,34 +69,60 @@ else() else() set(LIBSSH_HEADER_PATH ${LIBSSH_INCLUDE_DIR}/libssh/libssh.h) endif() - file(STRINGS ${LIBSSH_HEADER_PATH} LIBSSH_VERSION_MAJOR - REGEX "#define[ ]+LIBSSH_VERSION_MAJOR[ ]+[0-9]+") + file( + STRINGS + ${LIBSSH_HEADER_PATH} + LIBSSH_VERSION_MAJOR + REGEX "#define[ ]+LIBSSH_VERSION_MAJOR[ ]+[0-9]+" + ) if(NOT LIBSSH_VERSION_MAJOR) - message(STATUS "LIBSSH_VERSION_MAJOR not found, assuming libssh is too old and cannot be used!") + message( + STATUS + "LIBSSH_VERSION_MAJOR not found, assuming libssh is too old and cannot be used!" + ) set(LIBSSH_INCLUDE_DIR "LIBSSH_INCLUDE_DIR-NOTFOUND") set(LIBSSH_LIBRARY "LIBSSH_LIBRARY-NOTFOUND") else() string(REGEX MATCH "[0-9]+" LIBSSH_VERSION_MAJOR ${LIBSSH_VERSION_MAJOR}) - file(STRINGS ${LIBSSH_HEADER_PATH} LIBSSH_VERSION_MINOR - REGEX "#define[ ]+LIBSSH_VERSION_MINOR[ ]+[0-9]+") + file( + STRINGS + ${LIBSSH_HEADER_PATH} + LIBSSH_VERSION_MINOR + REGEX "#define[ ]+LIBSSH_VERSION_MINOR[ ]+[0-9]+" + ) string(REGEX MATCH "[0-9]+" LIBSSH_VERSION_MINOR ${LIBSSH_VERSION_MINOR}) - file(STRINGS ${LIBSSH_HEADER_PATH} LIBSSH_VERSION_PATCH - REGEX "#define[ ]+LIBSSH_VERSION_MICRO[ ]+[0-9]+") + file( + STRINGS + ${LIBSSH_HEADER_PATH} + LIBSSH_VERSION_PATCH + REGEX "#define[ ]+LIBSSH_VERSION_MICRO[ ]+[0-9]+" + ) string(REGEX MATCH "[0-9]+" LIBSSH_VERSION_PATCH ${LIBSSH_VERSION_PATCH}) - set(LIBSSH_VERSION ${LIBSSH_VERSION_MAJOR}.${LIBSSH_VERSION_MINOR}.${LIBSSH_VERSION_PATCH}) + set(LIBSSH_VERSION + ${LIBSSH_VERSION_MAJOR}.${LIBSSH_VERSION_MINOR}.${LIBSSH_VERSION_PATCH} + ) if(LIBSSH_VERSION VERSION_LESS 0.8.0) # libssh_threads also needs to be linked for these versions - string(REPLACE "libssh.so" "libssh_threads.so" + string( + REPLACE + "libssh.so" + "libssh_threads.so" LIBSSH_THREADS_LIBRARY ${LIBSSH_LIBRARY} ) - string(REPLACE "libssh.dylib" "libssh_threads.dylib" + string( + REPLACE + "libssh.dylib" + "libssh_threads.dylib" LIBSSH_THREADS_LIBRARY ${LIBSSH_THREADS_LIBRARY} ) - string(REPLACE "ssh.so" "ssh_threads.so" + string( + REPLACE + "ssh.so" + "ssh_threads.so" LIBSSH_THREADS_LIBRARY ${LIBSSH_THREADS_LIBRARY} ) @@ -110,7 +134,10 @@ else() set(LIBSSH_LIBRARIES ${LIBSSH_LIBRARY} ${LIBSSH_THREADS_LIBRARY}) mark_as_advanced(LIBSSH_INCLUDE_DIRS LIBSSH_LIBRARIES) - find_package_handle_standard_args(LIBSSH FOUND_VAR LIBSSH_FOUND + find_package_handle_standard_args( + LIBSSH + FOUND_VAR LIBSSH_FOUND REQUIRED_VARS LIBSSH_INCLUDE_DIRS LIBSSH_LIBRARIES - VERSION_VAR LIBSSH_VERSION) + VERSION_VAR LIBSSH_VERSION + ) endif() diff --git a/cmake/modules/GenResources.cmake b/cmake/modules/GenResources.cmake index d80a364066..c7d9f92f8e 100644 --- a/cmake/modules/GenResources.cmake +++ b/cmake/modules/GenResources.cmake @@ -1,26 +1,30 @@ set(scripts_dir "${CMAKE_CURRENT_LIST_DIR}/../scripts") -macro(generate_resources inputDir outputDir prefix namespace outputFiles) - file(GLOB inputFiles ${inputDir}/*) - set(${outputFiles}) - foreach(input ${inputFiles}) - get_filename_component(inputBase ${input} NAME) - if("${inputBase}" MATCHES "^\\.") - continue() - endif() - set(output "${outputDir}/${inputBase}.cpp") - list(APPEND ${outputFiles} "${output}") +macro( + generate_resources + inputDir + outputDir + prefix + namespace + outputFiles +) + file(GLOB inputFiles ${inputDir}/*) + set(${outputFiles}) + foreach(input ${inputFiles}) + get_filename_component(inputBase ${input} NAME) + if("${inputBase}" MATCHES "^\\.") + continue() + endif() + set(output "${outputDir}/${inputBase}.cpp") + list(APPEND ${outputFiles} "${output}") - add_custom_command( - OUTPUT ${output} - COMMAND ${CMAKE_COMMAND} - "-Dinput=${input}" - "-Doutput=${output}" - "-Dprefix=${prefix}" - "-Dnamespace=${namespace}" - -P "${scripts_dir}/GenResource.cmake" - MAIN_DEPENDENCY ${input} - DEPENDS ${scripts_dir}/GenResource.cmake - VERBATIM - ) - endforeach() + add_custom_command( + OUTPUT ${output} + COMMAND + ${CMAKE_COMMAND} "-Dinput=${input}" "-Doutput=${output}" "-Dprefix=${prefix}" + "-Dnamespace=${namespace}" -P "${scripts_dir}/GenResource.cmake" + MAIN_DEPENDENCY ${input} + DEPENDS ${scripts_dir}/GenResource.cmake + VERBATIM + ) + endforeach() endmacro() diff --git a/cmake/modules/LinkMacOSGUI.cmake b/cmake/modules/LinkMacOSGUI.cmake index f76554eee8..6bfe5403fd 100644 --- a/cmake/modules/LinkMacOSGUI.cmake +++ b/cmake/modules/LinkMacOSGUI.cmake @@ -1,5 +1,8 @@ macro(wpilib_link_macos_gui target) - if (APPLE) - set_target_properties(${target} PROPERTIES LINK_FLAGS "-framework Metal -framework QuartzCore") + if(APPLE) + set_target_properties( + ${target} + PROPERTIES LINK_FLAGS "-framework Metal -framework QuartzCore" + ) endif() endmacro() diff --git a/cmake/modules/SubDirList.cmake b/cmake/modules/SubDirList.cmake index 0776098fff..409eb18914 100644 --- a/cmake/modules/SubDirList.cmake +++ b/cmake/modules/SubDirList.cmake @@ -1,17 +1,17 @@ macro(subdir_list result curdir) - file(GLOB children RELATIVE ${curdir} ${curdir}/*) - set(dirlist "") - foreach(child ${children}) - if(IS_DIRECTORY ${curdir}/${child}) - list(APPEND dirlist ${child}) - endif() - endforeach() - set(${result} ${dirlist}) + file(GLOB children RELATIVE ${curdir} ${curdir}/*) + set(dirlist "") + foreach(child ${children}) + if(IS_DIRECTORY ${curdir}/${child}) + list(APPEND dirlist ${child}) + endif() + endforeach() + set(${result} ${dirlist}) endmacro() macro(add_all_subdirectories curdir) - subdir_list(_SUBPROJECTS ${curdir}) - foreach(dir ${_SUBPROJECTS}) - add_subdirectory(${dir}) - endforeach() + subdir_list(_SUBPROJECTS ${curdir}) + foreach(dir ${_SUBPROJECTS}) + add_subdirectory(${dir}) + endforeach() endmacro() diff --git a/cmake/scripts/GenResource.cmake b/cmake/scripts/GenResource.cmake index 3c6e2515e2..ad9ca913d1 100644 --- a/cmake/scripts/GenResource.cmake +++ b/cmake/scripts/GenResource.cmake @@ -1,23 +1,35 @@ # Parameters: input output prefix namespace -FILE(READ ${input} fileHex HEX) -STRING(LENGTH "${fileHex}" fileHexSize) -MATH(EXPR fileSize "${fileHexSize} / 2") +file(READ ${input} fileHex HEX) +string(LENGTH "${fileHex}" fileHexSize) +math(EXPR fileSize "${fileHexSize} / 2") -GET_FILENAME_COMPONENT(inputBase ${input} NAME) -STRING(REGEX REPLACE "[^a-zA-Z0-9]" "_" funcName "${inputBase}") -SET(funcName "GetResource_${funcName}") +get_filename_component(inputBase ${input} NAME) +string(REGEX REPLACE "[^a-zA-Z0-9]" "_" funcName "${inputBase}") +set(funcName "GetResource_${funcName}") -FILE(WRITE "${output}" "#include \n#include \nextern \"C\" {\nstatic const unsigned char contents[] = {") +file( + WRITE + "${output}" + "#include \n#include \nextern \"C\" {\nstatic const unsigned char contents[] = {" +) -STRING(REGEX MATCHALL ".." outputData "${fileHex}") -STRING(REGEX REPLACE ";" ", 0x" outputData "${outputData}") -FILE(APPEND "${output}" " 0x${outputData} };\n") -FILE(APPEND "${output}" "const unsigned char* ${prefix}${funcName}(size_t* len) {\n *len = ${fileSize};\n return contents;\n}\n}\n") +string(REGEX MATCHALL ".." outputData "${fileHex}") +string(REGEX REPLACE ";" ", 0x" outputData "${outputData}") +file(APPEND "${output}" " 0x${outputData} };\n") +file( + APPEND + "${output}" + "const unsigned char* ${prefix}${funcName}(size_t* len) {\n *len = ${fileSize};\n return contents;\n}\n}\n" +) -IF(NOT namespace STREQUAL "") - FILE(APPEND "${output}" "namespace ${namespace} {\n") -ENDIF() -FILE(APPEND "${output}" "std::string_view ${funcName}() {\n return std::string_view(reinterpret_cast(contents), ${fileSize});\n}\n") -IF(NOT namespace STREQUAL "") - FILE(APPEND "${output}" "}\n") -ENDIF() +if(NOT namespace STREQUAL "") + file(APPEND "${output}" "namespace ${namespace} {\n") +endif() +file( + APPEND + "${output}" + "std::string_view ${funcName}() {\n return std::string_view(reinterpret_cast(contents), ${fileSize});\n}\n" +) +if(NOT namespace STREQUAL "") + file(APPEND "${output}" "}\n") +endif() diff --git a/cscore/CMakeLists.txt b/cscore/CMakeLists.txt index e19579caa0..e334564465 100644 --- a/cscore/CMakeLists.txt +++ b/cscore/CMakeLists.txt @@ -5,10 +5,9 @@ include(CompileWarnings) include(AddTest) include(LinkMacOSGUI) -find_package( OpenCV REQUIRED ) +find_package(OpenCV REQUIRED) -file(GLOB - cscore_native_src src/main/native/cpp/*.cpp) +file(GLOB cscore_native_src src/main/native/cpp/*.cpp) file(GLOB cscore_linux_src src/main/native/linux/*.cpp) file(GLOB cscore_osx_src src/main/native/osx/*.cpp) file(GLOB cscore_osx_objc_src src/main/native/objcpp/*.mm) @@ -18,10 +17,15 @@ add_library(cscore ${cscore_native_src}) set_target_properties(cscore PROPERTIES DEBUG_POSTFIX "d") if(NOT MSVC) - if (APPLE) + if(APPLE) target_sources(cscore PRIVATE ${cscore_osx_src} ${cscore_osx_objc_src}) target_compile_options(cscore PRIVATE "-fobjc-arc") - set_target_properties(cscore PROPERTIES LINK_FLAGS "-framework CoreFoundation -framework AVFoundation -framework Foundation -framework CoreMedia -framework CoreVideo") + set_target_properties( + cscore + PROPERTIES + LINK_FLAGS + "-framework CoreFoundation -framework AVFoundation -framework Foundation -framework CoreMedia -framework CoreVideo" + ) else() target_sources(cscore PRIVATE ${cscore_linux_src}) endif() @@ -31,9 +35,12 @@ else() target_compile_definitions(cscore PRIVATE -D_CRT_SECURE_NO_WARNINGS) endif() -target_include_directories(cscore PUBLIC - $ - $) +target_include_directories( + cscore + PUBLIC + $ + $ +) target_include_directories(cscore PRIVATE src/main/native/cpp) wpilib_target_warnings(cscore) target_link_libraries(cscore PUBLIC wpinet wpiutil ${OpenCV_LIBS}) @@ -43,7 +50,7 @@ set_property(TARGET cscore PROPERTY FOLDER "libraries") install(TARGETS cscore EXPORT cscore) install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/cscore") -configure_file(cscore-config.cmake.in ${WPILIB_BINARY_DIR}/cscore-config.cmake ) +configure_file(cscore-config.cmake.in ${WPILIB_BINARY_DIR}/cscore-config.cmake) install(FILES ${WPILIB_BINARY_DIR}/cscore-config.cmake DESTINATION share/cscore) install(EXPORT cscore DESTINATION share/cscore) @@ -62,7 +69,7 @@ foreach(example ${cscore_examples}) add_executable(cscore_${example} ${cscore_example_src}) wpilib_target_warnings(cscore_${example}) - if (${example} STREQUAL "usbviewer") + if(${example} STREQUAL "usbviewer") wpilib_link_macos_gui(cscore_${example}) endif() @@ -72,7 +79,7 @@ foreach(example ${cscore_examples}) endforeach() # Java bindings -if (WITH_JAVA) +if(WITH_JAVA) find_package(Java REQUIRED) find_package(JNI REQUIRED) include(UseJava) @@ -84,30 +91,64 @@ if (WITH_JAVA) set(OPENCV_JAVA_INSTALL_DIR ${OpenCV_INSTALL_PATH}/share/OpenCV/java/) endif() - find_file(OPENCV_JAR_FILE NAMES opencv-${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.jar PATHS ${OPENCV_JAVA_INSTALL_DIR} ${OpenCV_INSTALL_PATH}/bin ${OpenCV_INSTALL_PATH}/share/java NO_DEFAULT_PATH) - find_file(OPENCV_JNI_FILE NAMES libopencv_java${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.so - libopencv_java${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.dylib - opencv_java${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.dll - PATHS ${OPENCV_JAVA_INSTALL_DIR} ${OpenCV_INSTALL_PATH}/bin ${OpenCV_INSTALL_PATH}/bin/Release ${OpenCV_INSTALL_PATH}/bin/Debug ${OpenCV_INSTALL_PATH}/lib ${OpenCV_INSTALL_PATH}/lib/jni NO_DEFAULT_PATH) + find_file( + OPENCV_JAR_FILE + NAMES opencv-${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.jar + PATHS + ${OPENCV_JAVA_INSTALL_DIR} + ${OpenCV_INSTALL_PATH}/bin + ${OpenCV_INSTALL_PATH}/share/java + NO_DEFAULT_PATH + ) + find_file( + OPENCV_JNI_FILE + NAMES + libopencv_java${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.so + libopencv_java${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.dylib + opencv_java${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.dll + PATHS + ${OPENCV_JAVA_INSTALL_DIR} + ${OpenCV_INSTALL_PATH}/bin + ${OpenCV_INSTALL_PATH}/bin/Release + ${OpenCV_INSTALL_PATH}/bin/Debug + ${OpenCV_INSTALL_PATH}/lib + ${OpenCV_INSTALL_PATH}/lib/jni + NO_DEFAULT_PATH + ) - file(GLOB - cscore_jni_src src/main/native/cpp/jni/CameraServerJNI.cpp) + file(GLOB cscore_jni_src src/main/native/cpp/jni/CameraServerJNI.cpp) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) set(CMAKE_JNI_TARGET true) - add_jar(cscore_jar ${JAVA_SOURCES} INCLUDE_JARS wpiutil_jar ${OPENCV_JAR_FILE} OUTPUT_NAME cscore GENERATE_NATIVE_HEADERS cscore_jni_headers) + add_jar( + cscore_jar + ${JAVA_SOURCES} + INCLUDE_JARS wpiutil_jar ${OPENCV_JAR_FILE} + OUTPUT_NAME cscore + GENERATE_NATIVE_HEADERS cscore_jni_headers + ) get_property(CSCORE_JAR_FILE TARGET cscore_jar PROPERTY JAR_FILE) install(FILES ${CSCORE_JAR_FILE} DESTINATION "${java_lib_dest}") install(FILES ${OPENCV_JAR_FILE} DESTINATION "${java_lib_dest}") - if (MSVC) + if(MSVC) install(FILES ${OPENCV_JNI_FILE} DESTINATION "${jni_lib_dest}") foreach(cvFile ${OpenCV_LIBS}) - find_file(${cvFile}Loc NAMES ${cvFile}${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.dll - PATHS ${OPENCV_JAVA_INSTALL_DIR} ${OpenCV_INSTALL_PATH}/bin ${OpenCV_INSTALL_PATH}/bin/Release ${OpenCV_INSTALL_PATH}/bin/Debug ${OpenCV_INSTALL_PATH}/lib NO_DEFAULT_PATH) + find_file( + ${cvFile}Loc + NAMES + ${cvFile}${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.dll + PATHS + ${OPENCV_JAVA_INSTALL_DIR} + ${OpenCV_INSTALL_PATH}/bin + ${OpenCV_INSTALL_PATH}/bin/Release + ${OpenCV_INSTALL_PATH}/bin/Debug + ${OpenCV_INSTALL_PATH}/lib + NO_DEFAULT_PATH + ) install(FILES ${${cvFile}Loc} DESTINATION "${jni_lib_dest}") endforeach() endif() @@ -124,18 +165,20 @@ if (WITH_JAVA) add_dependencies(cscorejni cscore_jar) install(TARGETS cscorejni EXPORT cscorejni) - endif() -if (WITH_JAVA_SOURCE) +if(WITH_JAVA_SOURCE) find_package(Java REQUIRED) include(UseJava) file(GLOB CSCORE_SOURCES src/main/java/edu/wpi/first/cscore/*.java) file(GLOB CSCORE_RAW_SOURCES src/main/java/edu/wpi/first/cscore/raw/*.java) - add_jar(cscore_src_jar - RESOURCES NAMESPACE "edu/wpi/first/cscore" ${CSCORE_SOURCES} - NAMESPACE "edu/wpi/first/cscore/raw" ${CSCORE_RAW_SOURCES} - OUTPUT_NAME cscore-sources) + add_jar( + cscore_src_jar + RESOURCES + NAMESPACE "edu/wpi/first/cscore" ${CSCORE_SOURCES} + NAMESPACE "edu/wpi/first/cscore/raw" ${CSCORE_RAW_SOURCES} + OUTPUT_NAME cscore-sources + ) get_property(CSCORE_SRC_JAR_FILE TARGET cscore_src_jar PROPERTY JAR_FILE) install(FILES ${CSCORE_SRC_JAR_FILE} DESTINATION "${java_lib_dest}") @@ -143,7 +186,7 @@ if (WITH_JAVA_SOURCE) set_property(TARGET cscore_src_jar PROPERTY FOLDER "java") endif() -if (WITH_TESTS) +if(WITH_TESTS) wpilib_add_test(cscore src/test/native/cpp) target_link_libraries(cscore_test cscore gmock) endif() diff --git a/datalogtool/CMakeLists.txt b/datalogtool/CMakeLists.txt index 72a05c6d82..00b760e14a 100644 --- a/datalogtool/CMakeLists.txt +++ b/datalogtool/CMakeLists.txt @@ -9,7 +9,7 @@ generate_resources(src/main/native/resources generated/main/cpp DLT dlt datalogt file(GLOB datalogtool_src src/main/native/cpp/*.cpp ${CMAKE_CURRENT_BINARY_DIR}/WPILibVersion.cpp) -if (WIN32) +if(WIN32) set(datalogtool_rc src/main/native/win/datalogtool.rc) elseif(APPLE) set(MACOSX_BUNDLE_ICON_FILE datalogtool.icns) @@ -17,12 +17,18 @@ elseif(APPLE) set_source_files_properties(${APP_ICON_MACOSX} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") endif() -add_executable(datalogtool ${datalogtool_src} ${datalogtool_resources_src} ${datalogtool_rc} ${APP_ICON_MACOSX}) +add_executable( + datalogtool + ${datalogtool_src} + ${datalogtool_resources_src} + ${datalogtool_rc} + ${APP_ICON_MACOSX} +) wpilib_link_macos_gui(datalogtool) target_link_libraries(datalogtool libglass ${LIBSSH_LIBRARIES}) target_include_directories(datalogtool SYSTEM PRIVATE ${LIBSSH_INCLUDE_DIRS}) -if (WIN32) +if(WIN32) set_target_properties(datalogtool PROPERTIES WIN32_EXECUTABLE YES) elseif(APPLE) set_target_properties(datalogtool PROPERTIES MACOSX_BUNDLE YES OUTPUT_NAME "datalogTool") diff --git a/fieldImages/CMakeLists.txt b/fieldImages/CMakeLists.txt index 3532790796..45fe49c4c3 100644 --- a/fieldImages/CMakeLists.txt +++ b/fieldImages/CMakeLists.txt @@ -3,7 +3,7 @@ project(fieldImages) include(CompileWarnings) include(GenResources) -if (WITH_JAVA) +if(WITH_JAVA) find_package(Java REQUIRED) include(UseJava) @@ -11,30 +11,42 @@ if (WITH_JAVA) set(CMAKE_JAVA_INCLUDE_PATH fieldImages.jar ${JACKSON_JARS}) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) - file(GLOB_RECURSE JAVA_RESOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} src/main/native/resources/*.json src/main/native/resources/*.png src/main/native/resources/*.jpg) - add_jar(field_images_jar SOURCES ${JAVA_SOURCES} RESOURCES NAMESPACE "edu/wpi/first/fields" ${JAVA_RESOURCES} OUTPUT_NAME fieldImages) + file( + GLOB_RECURSE JAVA_RESOURCES + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + src/main/native/resources/*.json + src/main/native/resources/*.png + src/main/native/resources/*.jpg + ) + add_jar( + field_images_jar + SOURCES ${JAVA_SOURCES} + RESOURCES + NAMESPACE "edu/wpi/first/fields" ${JAVA_RESOURCES} + OUTPUT_NAME fieldImages + ) get_property(FIELD_IMAGES_JAR_FILE TARGET field_images_jar PROPERTY JAR_FILE) install(FILES ${FIELD_IMAGES_JAR_FILE} DESTINATION "${java_lib_dest}") set_property(TARGET field_images_jar PROPERTY FOLDER "java") - endif() - generate_resources(src/main/native/resources/edu/wpi/first/fields generated/main/cpp FIELDS fields field_images_resources_src) - add_library(fieldImages src/main/native/cpp/fields.cpp ${field_images_resources_src}) set_target_properties(fieldImages PROPERTIES DEBUG_POSTFIX "d") set_property(TARGET fieldImages PROPERTY FOLDER "libraries") target_compile_features(fieldImages PUBLIC cxx_std_20) -if (MSVC) +if(MSVC) target_compile_options(fieldImages PUBLIC /bigobj) endif() wpilib_target_warnings(fieldImages) -target_include_directories(fieldImages PUBLIC - $ - $) +target_include_directories( + fieldImages + PUBLIC + $ + $ +) diff --git a/glass/CMakeLists.txt b/glass/CMakeLists.txt index e71b407e6f..36f94f5f1b 100644 --- a/glass/CMakeLists.txt +++ b/glass/CMakeLists.txt @@ -18,9 +18,12 @@ set_property(TARGET libglass PROPERTY FOLDER "libraries") wpilib_target_warnings(libglass) target_link_libraries(libglass PUBLIC wpigui wpimath wpiutil fieldImages) -target_include_directories(libglass PUBLIC - $ - $) +target_include_directories( + libglass + PUBLIC + $ + $ +) install(TARGETS libglass EXPORT libglass) install(DIRECTORY src/lib/native/include/ DESTINATION "${include_dest}/glass") @@ -39,9 +42,12 @@ set_property(TARGET libglassnt PROPERTY FOLDER "libraries") wpilib_target_warnings(libglassnt) target_link_libraries(libglassnt PUBLIC ntcore libglass) -target_include_directories(libglassnt PUBLIC - $ - $) +target_include_directories( + libglassnt + PUBLIC + $ + $ +) install(TARGETS libglassnt EXPORT libglassnt) install(DIRECTORY src/libnt/native/include/ DESTINATION "${include_dest}/glass") @@ -55,7 +61,7 @@ generate_resources(src/app/native/resources generated/app/cpp GLASS glass glass_ file(GLOB glass_src src/app/native/cpp/*.cpp ${CMAKE_CURRENT_BINARY_DIR}/WPILibVersion.cpp) -if (WIN32) +if(WIN32) set(glass_rc src/app/native/win/glass.rc) elseif(APPLE) set(MACOSX_BUNDLE_ICON_FILE glass.icns) @@ -68,7 +74,7 @@ wpilib_link_macos_gui(glass) wpilib_target_warnings(glass) target_link_libraries(glass libglassnt libglass) -if (WIN32) +if(WIN32) set_target_properties(glass PROPERTIES WIN32_EXECUTABLE YES) elseif(APPLE) set_target_properties(glass PROPERTIES MACOSX_BUNDLE YES OUTPUT_NAME "Glass") diff --git a/googletest/CMakeLists.txt b/googletest/CMakeLists.txt index e53fca1b21..9c092596b7 100644 --- a/googletest/CMakeLists.txt +++ b/googletest/CMakeLists.txt @@ -1,14 +1,15 @@ include(FetchContent) -FetchContent_Declare( +fetchcontent_declare( googletest - GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG 58d77fa8070e8cec2dc1ed015d66b454c8d78850 # 1.12.1 + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG + 58d77fa8070e8cec2dc1ed015d66b454c8d78850 # 1.12.1 ) -FetchContent_GetProperties(googletest) +fetchcontent_getproperties(googletest) if(NOT googletest_POPULATED) - FetchContent_Populate(googletest) + fetchcontent_populate(googletest) # Prevent overriding the parent project's compiler/linker # settings on Windows diff --git a/hal/CMakeLists.txt b/hal/CMakeLists.txt index 39c018a6c1..060aeb0ac3 100644 --- a/hal/CMakeLists.txt +++ b/hal/CMakeLists.txt @@ -6,10 +6,10 @@ include(AddTest) file(STRINGS src/generate/Instances.txt RAW_INSTANCES) file(STRINGS src/generate/ResourceType.txt RAW_RESOURCE_TYPES) -SET(usage_reporting_types_cpp "") -SET(usage_reporting_instances_cpp "") -SET(usage_reporting_types "") -SET(usage_reporting_instances "") +set(usage_reporting_types_cpp "") +set(usage_reporting_instances_cpp "") +set(usage_reporting_types "") +set(usage_reporting_instances "") foreach(ITEM ${RAW_INSTANCES}) list(APPEND usage_reporting_instances_cpp " ${ITEM},") @@ -24,12 +24,18 @@ endforeach() string(REPLACE ";" "\n" usage_reporting_types_cpp "${usage_reporting_types_cpp}") string(REPLACE ";" "\n" usage_reporting_instances_cpp "${usage_reporting_instances_cpp}") -file(GLOB - hal_shared_native_src src/main/native/cpp/*.cpp - hal_shared_native_src src/main/native/cpp/cpp/*.cpp - hal_shared_native_src src/main/native/cpp/handles/*.cpp - hal_sim_native_src src/main/native/sim/*.cpp - hal_sim_native_src src/main/native/sim/mockdata/*.cpp) +file( + GLOB hal_shared_native_src + src/main/native/cpp/*.cpp + hal_shared_native_src + src/main/native/cpp/cpp/*.cpp + hal_shared_native_src + src/main/native/cpp/handles/*.cpp + hal_sim_native_src + src/main/native/sim/*.cpp + hal_sim_native_src + src/main/native/sim/mockdata/*.cpp +) add_library(hal ${hal_shared_native_src}) wpilib_target_warnings(hal) set_target_properties(hal PROPERTIES DEBUG_POSTFIX "d") @@ -44,13 +50,19 @@ configure_file(src/generate/FRCUsageReporting.h.in gen/hal/FRCUsageReporting.h) set_target_properties(hal PROPERTIES OUTPUT_NAME "wpiHal") -target_include_directories(hal PUBLIC - $ - $) +target_include_directories( + hal + PUBLIC + $ + $ +) -target_include_directories(hal PUBLIC - $ - $) +target_include_directories( + hal + PUBLIC + $ + $ +) target_link_libraries(hal PUBLIC wpiutil) set_property(TARGET hal PROPERTY FOLDER "libraries") @@ -59,12 +71,12 @@ 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") -configure_file(hal-config.cmake.in ${WPILIB_BINARY_DIR}/hal-config.cmake ) +configure_file(hal-config.cmake.in ${WPILIB_BINARY_DIR}/hal-config.cmake) install(FILES ${WPILIB_BINARY_DIR}/hal-config.cmake DESTINATION share/hal) install(EXPORT hal DESTINATION share/hal) # Java bindings -if (WITH_JAVA) +if(WITH_JAVA) find_package(Java REQUIRED) find_package(JNI REQUIRED) include(UseJava) @@ -77,7 +89,14 @@ if (WITH_JAVA) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) set(CMAKE_JNI_TARGET true) - add_jar(hal_jar ${JAVA_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/FRCNetComm.java INCLUDE_JARS wpiutil_jar OUTPUT_NAME wpiHal GENERATE_NATIVE_HEADERS hal_jni_headers) + add_jar( + hal_jar + ${JAVA_SOURCES} + ${CMAKE_CURRENT_BINARY_DIR}/FRCNetComm.java + INCLUDE_JARS wpiutil_jar + OUTPUT_NAME wpiHal + GENERATE_NATIVE_HEADERS hal_jni_headers + ) get_property(HAL_JAR_FILE TARGET hal_jar PROPERTY JAR_FILE) install(FILES ${HAL_JAR_FILE} DESTINATION "${java_lib_dest}") @@ -101,23 +120,31 @@ if (WITH_JAVA) add_dependencies(haljni hal_jar) install(TARGETS haljni EXPORT haljni) - endif() -if (WITH_JAVA_SOURCE) +if(WITH_JAVA_SOURCE) find_package(Java REQUIRED) include(UseJava) - file(GLOB HAL_SOURCES src/main/java/edu/wpi/first/hal/*.java ${CMAKE_CURRENT_BINARY_DIR}/FRCNetComm.java) + file( + GLOB HAL_SOURCES + src/main/java/edu/wpi/first/hal/*.java + ${CMAKE_CURRENT_BINARY_DIR}/FRCNetComm.java + ) file(GLOB HAL_CAN_SOURCES src/main/java/edu/wpi/first/hal/can/*.java) file(GLOB HAL_SIMULATION_SOURCES src/main/java/edu/wpi/first/hal/simulation/*.java) file(GLOB HAL_UTIL_SOURCES src/main/java/edu/wpi/first/hal/util/*.java) - add_jar(hal_src_jar - RESOURCES NAMESPACE "edu/wpi/first/hal" ${HAL_SOURCES} - NAMESPACE "edu/wpi/first/hal/can" ${HAL_CAN_SOURCES} - NAMESPACE "edu/wpi/first/hal/communication" src/main/java/edu/wpi/first/hal/communication/NIRioStatus.java - NAMESPACE "edu/wpi/first/hal/simulation" ${HAL_SIMULATION_SOURCES} - NAMESPACE "edu/wpi/first/hal/util" ${HAL_UTIL_SOURCES} - OUTPUT_NAME wpiHal-sources) + add_jar( + hal_src_jar + RESOURCES + NAMESPACE "edu/wpi/first/hal" ${HAL_SOURCES} + NAMESPACE "edu/wpi/first/hal/can" ${HAL_CAN_SOURCES} + NAMESPACE + "edu/wpi/first/hal/communication" + src/main/java/edu/wpi/first/hal/communication/NIRioStatus.java + NAMESPACE "edu/wpi/first/hal/simulation" ${HAL_SIMULATION_SOURCES} + NAMESPACE "edu/wpi/first/hal/util" ${HAL_UTIL_SOURCES} + OUTPUT_NAME wpiHal-sources + ) get_property(HAL_SRC_JAR_FILE TARGET hal_src_jar PROPERTY JAR_FILE) install(FILES ${HAL_SRC_JAR_FILE} DESTINATION "${java_lib_dest}") @@ -125,7 +152,7 @@ if (WITH_JAVA_SOURCE) set_property(TARGET hal_src_jar PROPERTY FOLDER "java") endif() -if (WITH_TESTS) +if(WITH_TESTS) wpilib_add_test(hal src/test/native/cpp) target_link_libraries(hal_test hal gtest) endif() diff --git a/imgui/CMakeLists.txt b/imgui/CMakeLists.txt index 6ba8455bc7..f267a2c38c 100644 --- a/imgui/CMakeLists.txt +++ b/imgui/CMakeLists.txt @@ -1,49 +1,44 @@ -INCLUDE(FetchContent) +include(FetchContent) -FetchContent_Declare( +fetchcontent_declare( glfw3 - GIT_REPOSITORY https://github.com/glfw/glfw.git - GIT_TAG 6b57e08bb0078c9834889eab871bac2368198c15 + GIT_REPOSITORY https://github.com/glfw/glfw.git + GIT_TAG 6b57e08bb0078c9834889eab871bac2368198c15 ) -FetchContent_Declare( +fetchcontent_declare( gl3w - GIT_REPOSITORY https://github.com/skaslev/gl3w - GIT_TAG 5f8d7fd191ba22ff2b60c1106d7135bb9a335533 + GIT_REPOSITORY https://github.com/skaslev/gl3w + GIT_TAG 5f8d7fd191ba22ff2b60c1106d7135bb9a335533 ) -FetchContent_Declare( +fetchcontent_declare( imgui - GIT_REPOSITORY https://github.com/ocornut/imgui.git - # docking branch - GIT_TAG 64b1e448d20c9be9275af731c34b4c7bf14a8e95 + GIT_REPOSITORY https://github.com/ocornut/imgui.git + # docking branch + GIT_TAG 64b1e448d20c9be9275af731c34b4c7bf14a8e95 ) -FetchContent_Declare( +fetchcontent_declare( implot - GIT_REPOSITORY https://github.com/epezent/implot.git - # v0.16 - GIT_TAG 18c72431f8265e2b0b5378a3a73d8a883b2175ff + GIT_REPOSITORY https://github.com/epezent/implot.git + # v0.16 + GIT_TAG 18c72431f8265e2b0b5378a3a73d8a883b2175ff ) -FetchContent_Declare( +fetchcontent_declare( fonts - URL https://github.com/wpilibsuite/thirdparty-fonts/releases/download/v0.2/fonts.zip - URL_HASH SHA256=cedf365657fab0770e11f72d49e4f0f889f564d2e635a4d214029d0ab6bcd324 + URL https://github.com/wpilibsuite/thirdparty-fonts/releases/download/v0.2/fonts.zip + URL_HASH SHA256=cedf365657fab0770e11f72d49e4f0f889f564d2e635a4d214029d0ab6bcd324 ) -FetchContent_Declare( +fetchcontent_declare( stb - GIT_REPOSITORY https://github.com/nothings/stb.git - GIT_TAG c9064e317699d2e495f36ba4f9ac037e88ee371a + GIT_REPOSITORY https://github.com/nothings/stb.git + GIT_TAG c9064e317699d2e495f36ba4f9ac037e88ee371a ) -FetchContent_MakeAvailable( - imgui - implot - fonts - stb -) +fetchcontent_makeavailable(imgui implot fonts stb) # Add glfw directly to our build. -FetchContent_GetProperties(glfw3) +fetchcontent_getproperties(glfw3) if(NOT glfw3_POPULATED) - FetchContent_Populate(glfw3) + fetchcontent_populate(glfw3) set(SAVE_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS}) set(BUILD_SHARED_LIBS OFF) set(GLFW_INSTALL OFF) @@ -53,9 +48,9 @@ if(NOT glfw3_POPULATED) endif() # Don't use gl3w CMakeLists.txt due to https://github.com/skaslev/gl3w/issues/66 -FetchContent_GetProperties(gl3w) +fetchcontent_getproperties(gl3w) if(NOT gl3w_POPULATED) - FetchContent_Populate(gl3w) + fetchcontent_populate(gl3w) endif() if(NOT EXISTS "${gl3w_BINARY_DIR}/src/gl3w.c") find_package(Python COMPONENTS Interpreter Development REQUIRED) @@ -76,17 +71,18 @@ set(imgui_all_sources ${imgui_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp ${gl3w_BINARY_DIR}/src/gl3w.c ${fonts_sources} - src/stb_image.cpp) -if (MSVC) - add_library(imgui STATIC ${imgui_all_sources}) + src/stb_image.cpp +) +if(MSVC) + add_library(imgui STATIC ${imgui_all_sources}) else() - add_library(imgui ${imgui_all_sources}) + add_library(imgui ${imgui_all_sources}) endif() target_compile_definitions(imgui PUBLIC IMGUI_IMPL_OPENGL_LOADER_GL3W) -if (MSVC) +if(MSVC) target_sources(imgui PRIVATE ${imgui_SOURCE_DIR}/backends/imgui_impl_dx11.cpp) else() - if (APPLE) + if(APPLE) target_compile_options(imgui PRIVATE -fobjc-arc) set_target_properties(imgui PROPERTIES LINK_FLAGS "-framework Metal -framework QuartzCore") target_sources(imgui PRIVATE ${imgui_SOURCE_DIR}/backends/imgui_impl_metal.mm) @@ -95,17 +91,17 @@ else() endif() endif() target_link_libraries(imgui PUBLIC glfw) -target_include_directories(imgui +target_include_directories( + imgui PUBLIC - "$" - "$" - "$" - "$" - "$" - "$" - "$" - PRIVATE - "$" + "$" + "$" + "$" + "$" + "$" + "$" + "$" + PRIVATE "$" ) set_property(TARGET imgui PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/ntcore/CMakeLists.txt b/ntcore/CMakeLists.txt index 141613bcd6..ded26b54ee 100644 --- a/ntcore/CMakeLists.txt +++ b/ntcore/CMakeLists.txt @@ -3,30 +3,40 @@ project(ntcore) include(CompileWarnings) include(AddTest) -execute_process(COMMAND python3 ${CMAKE_CURRENT_SOURCE_DIR}/generate_topics.py ${WPILIB_BINARY_DIR}/ntcore RESULT_VARIABLE generateResult) +execute_process( + COMMAND python3 ${CMAKE_CURRENT_SOURCE_DIR}/generate_topics.py ${WPILIB_BINARY_DIR}/ntcore + RESULT_VARIABLE generateResult +) if(NOT (generateResult EQUAL "0")) - # Try python - execute_process(COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/generate_topics.py ${WPILIB_BINARY_DIR}/ntcore RESULT_VARIABLE generateResult) - if(NOT (generateResult EQUAL "0")) - message(FATAL_ERROR "python and python3 generate_topics.py failed") - endif() + # Try python + execute_process( + COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/generate_topics.py ${WPILIB_BINARY_DIR}/ntcore + RESULT_VARIABLE generateResult + ) + if(NOT (generateResult EQUAL "0")) + message(FATAL_ERROR "python and python3 generate_topics.py failed") + endif() endif() -file(GLOB ntcore_native_src +file( + GLOB ntcore_native_src src/main/native/cpp/*.cpp ${WPILIB_BINARY_DIR}/ntcore/generated/main/native/cpp/*.cpp src/main/native/cpp/net/*.cpp src/main/native/cpp/net3/*.cpp src/main/native/cpp/networktables/*.cpp - src/main/native/cpp/tables/*.cpp) + src/main/native/cpp/tables/*.cpp +) add_library(ntcore ${ntcore_native_src}) set_target_properties(ntcore PROPERTIES DEBUG_POSTFIX "d") -target_include_directories(ntcore - PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/cpp - PUBLIC - $ - $ - $) +target_include_directories( + ntcore + PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/cpp + PUBLIC + $ + $ + $ +) wpilib_target_warnings(ntcore) target_compile_features(ntcore PUBLIC cxx_std_20) target_link_libraries(ntcore PUBLIC wpinet wpiutil) @@ -35,32 +45,46 @@ set_property(TARGET ntcore PROPERTY FOLDER "libraries") 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") +install( + DIRECTORY ${WPILIB_BINARY_DIR}/ntcore/generated/main/native/include/ + DESTINATION "${include_dest}/ntcore" +) -configure_file(ntcore-config.cmake.in ${WPILIB_BINARY_DIR}/ntcore-config.cmake ) +configure_file(ntcore-config.cmake.in ${WPILIB_BINARY_DIR}/ntcore-config.cmake) install(FILES ${WPILIB_BINARY_DIR}/ntcore-config.cmake DESTINATION share/ntcore) install(EXPORT ntcore DESTINATION share/ntcore) # Java bindings -if (WITH_JAVA) +if(WITH_JAVA) find_package(Java REQUIRED) find_package(JNI REQUIRED) include(UseJava) set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") - file(GLOB QUICKBUF_JAR - ${WPILIB_BINARY_DIR}/wpiutil/thirdparty/quickbuf/*.jar) + file(GLOB QUICKBUF_JAR ${WPILIB_BINARY_DIR}/wpiutil/thirdparty/quickbuf/*.jar) set(CMAKE_JAVA_INCLUDE_PATH wpimath.jar ${QUICKBUF_JAR}) - file(GLOB ntcore_jni_src + file( + GLOB ntcore_jni_src src/main/native/cpp/jni/*.cpp - ${WPILIB_BINARY_DIR}/ntcore/generated/main/native/cpp/jni/*.cpp) + ${WPILIB_BINARY_DIR}/ntcore/generated/main/native/cpp/jni/*.cpp + ) - file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java ${WPILIB_BINARY_DIR}/ntcore/generated/*.java) + file( + GLOB_RECURSE JAVA_SOURCES + src/main/java/*.java + ${WPILIB_BINARY_DIR}/ntcore/generated/*.java + ) set(CMAKE_JNI_TARGET true) - add_jar(ntcore_jar ${JAVA_SOURCES} INCLUDE_JARS wpiutil_jar OUTPUT_NAME ntcore GENERATE_NATIVE_HEADERS ntcore_jni_headers) + add_jar( + ntcore_jar + ${JAVA_SOURCES} + INCLUDE_JARS wpiutil_jar + OUTPUT_NAME ntcore + GENERATE_NATIVE_HEADERS ntcore_jni_headers + ) get_property(NTCORE_JAR_FILE TARGET ntcore_jar PROPERTY JAR_FILE) install(FILES ${NTCORE_JAR_FILE} DESTINATION "${java_lib_dest}") @@ -73,7 +97,7 @@ if (WITH_JAVA) set_property(TARGET ntcorejni PROPERTY FOLDER "libraries") - if (MSVC) + if(MSVC) install(TARGETS ntcorejni RUNTIME DESTINATION "${jni_lib_dest}" COMPONENT Runtime) endif() @@ -81,16 +105,22 @@ if (WITH_JAVA) add_dependencies(ntcorejni ntcore_jar) install(TARGETS ntcorejni EXPORT ntcorejni) - endif() -if (WITH_JAVA_SOURCE) +if(WITH_JAVA_SOURCE) find_package(Java REQUIRED) include(UseJava) - file(GLOB NTCORE_SOURCES src/main/java/edu/wpi/first/networktables/*.java ${WPILIB_BINARY_DIR}/ntcore/generated/*.java) - add_jar(ntcore_src_jar - RESOURCES NAMESPACE "edu/wpi/first/networktables" ${NTCORE_SOURCES} - OUTPUT_NAME ntcore-sources) + file( + GLOB NTCORE_SOURCES + src/main/java/edu/wpi/first/networktables/*.java + ${WPILIB_BINARY_DIR}/ntcore/generated/*.java + ) + add_jar( + ntcore_src_jar + RESOURCES + NAMESPACE "edu/wpi/first/networktables" ${NTCORE_SOURCES} + OUTPUT_NAME ntcore-sources + ) get_property(NTCORE_SRC_JAR_FILE TARGET ntcore_src_jar PROPERTY JAR_FILE) install(FILES ${NTCORE_SRC_JAR_FILE} DESTINATION "${java_lib_dest}") @@ -102,7 +132,7 @@ add_executable(ntcoredev src/dev/native/cpp/main.cpp) wpilib_target_warnings(ntcoredev) target_link_libraries(ntcoredev ntcore) -if (WITH_TESTS) +if(WITH_TESTS) wpilib_add_test(ntcore src/test/native/cpp) target_include_directories(ntcore_test PRIVATE src/main/native/cpp) target_link_libraries(ntcore_test ntcore gmock_main wpiutil_testlib) diff --git a/outlineviewer/CMakeLists.txt b/outlineviewer/CMakeLists.txt index a92498e9ef..eb22df8597 100644 --- a/outlineviewer/CMakeLists.txt +++ b/outlineviewer/CMakeLists.txt @@ -9,7 +9,7 @@ generate_resources(src/main/native/resources generated/main/cpp OV ov outlinevie file(GLOB outlineviewer_src src/main/native/cpp/*.cpp ${CMAKE_CURRENT_BINARY_DIR}/WPILibVersion.cpp) -if (WIN32) +if(WIN32) set(outlineviewer_rc src/main/native/win/outlineviewer.rc) elseif(APPLE) set(MACOSX_BUNDLE_ICON_FILE ov.icns) @@ -17,12 +17,18 @@ elseif(APPLE) set_source_files_properties(${APP_ICON_MACOSX} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") endif() -add_executable(outlineviewer ${outlineviewer_src} ${outlineviewer_resources_src} ${outlineviewer_rc} ${APP_ICON_MACOSX}) +add_executable( + outlineviewer + ${outlineviewer_src} + ${outlineviewer_resources_src} + ${outlineviewer_rc} + ${APP_ICON_MACOSX} +) wpilib_link_macos_gui(outlineviewer) wpilib_target_warnings(outlineviewer) target_link_libraries(outlineviewer libglassnt libglass) -if (WIN32) +if(WIN32) set_target_properties(outlineviewer PROPERTIES WIN32_EXECUTABLE YES) elseif(APPLE) set_target_properties(outlineviewer PROPERTIES MACOSX_BUNDLE YES OUTPUT_NAME "OutlineViewer") diff --git a/roborioteamnumbersetter/CMakeLists.txt b/roborioteamnumbersetter/CMakeLists.txt index 4e2c5e0197..7a43baaed9 100644 --- a/roborioteamnumbersetter/CMakeLists.txt +++ b/roborioteamnumbersetter/CMakeLists.txt @@ -9,7 +9,7 @@ generate_resources(src/main/native/resources generated/main/cpp RTNS rtns rtns_r file(GLOB rtns_src src/main/native/cpp/*.cpp ${CMAKE_CURRENT_BINARY_DIR}/WPILibVersion.cpp) -if (WIN32) +if(WIN32) set(rtns_rc src/main/native/win/roborioteamnumbersetter.rc) elseif(APPLE) set(MACOSX_BUNDLE_ICON_FILE rtns.icns) @@ -17,13 +17,22 @@ elseif(APPLE) set_source_files_properties(${APP_ICON_MACOSX} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") endif() -add_executable(roborioteamnumbersetter ${rtns_src} ${rtns_resources_src} ${rtns_rc} ${APP_ICON_MACOSX}) +add_executable( + roborioteamnumbersetter + ${rtns_src} + ${rtns_resources_src} + ${rtns_rc} + ${APP_ICON_MACOSX} +) wpilib_link_macos_gui(roborioteamnumbersetter) target_link_libraries(roborioteamnumbersetter libglass wpinet ${LIBSSH_LIBRARIES}) target_include_directories(roborioteamnumbersetter SYSTEM PRIVATE ${LIBSSH_INCLUDE_DIRS}) -if (WIN32) +if(WIN32) set_target_properties(roborioteamnumbersetter PROPERTIES WIN32_EXECUTABLE YES) elseif(APPLE) - set_target_properties(roborioteamnumbersetter PROPERTIES MACOSX_BUNDLE YES OUTPUT_NAME "roborioTeamNumberSetter") + set_target_properties( + roborioteamnumbersetter + PROPERTIES MACOSX_BUNDLE YES OUTPUT_NAME "roborioTeamNumberSetter" + ) endif() diff --git a/romiVendordep/CMakeLists.txt b/romiVendordep/CMakeLists.txt index 0a5323b843..d7f5703ed4 100644 --- a/romiVendordep/CMakeLists.txt +++ b/romiVendordep/CMakeLists.txt @@ -4,32 +4,48 @@ include(SubDirList) include(CompileWarnings) include(AddTest) -if (WITH_JAVA) - find_package(Java REQUIRED) - include(UseJava) - set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") +if(WITH_JAVA) + find_package(Java REQUIRED) + include(UseJava) + set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") - file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) - add_jar(romiVendordep_jar ${JAVA_SOURCES} INCLUDE_JARS hal_jar ntcore_jar cscore_jar cameraserver_jar wpimath_jar wpiunits_jar wpiutil_jar wpilibj_jar OUTPUT_NAME romiVendordep) + file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) + add_jar( + romiVendordep_jar + ${JAVA_SOURCES} + INCLUDE_JARS + hal_jar + ntcore_jar + cscore_jar + cameraserver_jar + wpimath_jar + wpiunits_jar + wpiutil_jar + wpilibj_jar + OUTPUT_NAME romiVendordep + ) - get_property(ROMIVENDORDEP_JAR_FILE TARGET romiVendordep_jar PROPERTY JAR_FILE) - install(FILES ${ROMIVENDORDEP_JAR_FILE} DESTINATION "${java_lib_dest}") + get_property(ROMIVENDORDEP_JAR_FILE TARGET romiVendordep_jar PROPERTY JAR_FILE) + install(FILES ${ROMIVENDORDEP_JAR_FILE} DESTINATION "${java_lib_dest}") - set_property(TARGET romiVendordep_jar PROPERTY FOLDER "java") + set_property(TARGET romiVendordep_jar PROPERTY FOLDER "java") endif() -if (WITH_JAVA_SOURCE) - find_package(Java REQUIRED) - include(UseJava) - file(GLOB_RECURSE ROMIVENDORDEP_SOURCES src/main/java/*.java) - add_jar(romiVendordep_src_jar - RESOURCES NAMESPACE "edu/wpi/first/wpilibj/romi" ${ROMIVENDORDEP_SOURCES} - OUTPUT_NAME romiVendordep-sources) +if(WITH_JAVA_SOURCE) + find_package(Java REQUIRED) + include(UseJava) + file(GLOB_RECURSE ROMIVENDORDEP_SOURCES src/main/java/*.java) + add_jar( + romiVendordep_src_jar + RESOURCES + NAMESPACE "edu/wpi/first/wpilibj/romi" ${ROMIVENDORDEP_SOURCES} + OUTPUT_NAME romiVendordep-sources + ) - get_property(ROMIVENDORDEP_SRC_JAR_FILE TARGET romiVendordep_src_jar PROPERTY JAR_FILE) - install(FILES ${ROMIVENDORDEP_JAR_FILE} DESTINATION "${java_lib_dest}") + get_property(ROMIVENDORDEP_SRC_JAR_FILE TARGET romiVendordep_src_jar PROPERTY JAR_FILE) + install(FILES ${ROMIVENDORDEP_JAR_FILE} DESTINATION "${java_lib_dest}") - set_property(TARGET romiVendordep_src_jar PROPERTY FOLDER "java") + set_property(TARGET romiVendordep_src_jar PROPERTY FOLDER "java") endif() file(GLOB_RECURSE romiVendordep_native_src src/main/native/cpp/*.cpp) @@ -41,9 +57,12 @@ target_compile_features(romiVendordep PUBLIC cxx_std_20) wpilib_target_warnings(romiVendordep) target_link_libraries(romiVendordep wpilibc) -target_include_directories(romiVendordep PUBLIC - $ - $) +target_include_directories( + romiVendordep + PUBLIC + $ + $ +) install(TARGETS romiVendordep EXPORT romiVendordep DESTINATION "${main_lib_dest}") install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/romiVendordep") @@ -52,8 +71,8 @@ configure_file(romiVendordep-config.cmake.in ${WPILIB_BINARY_DIR}/romiVendordep- install(FILES ${WPILIB_BINARY_DIR}/romiVendordep-config.cmake DESTINATION share/romiVendordep) install(EXPORT romiVendordep DESTINATION share/romiVendordep) - if (WITH_TESTS) - wpilib_add_test(romiVendordep src/test/native/cpp) - target_include_directories(romiVendordep_test PRIVATE src/test/native/include) - target_link_libraries(romiVendordep_test romiVendordep gmock_main) - endif() +if(WITH_TESTS) + wpilib_add_test(romiVendordep src/test/native/cpp) + target_include_directories(romiVendordep_test PRIVATE src/test/native/include) + target_link_libraries(romiVendordep_test romiVendordep gmock_main) +endif() diff --git a/simulation/CMakeLists.txt b/simulation/CMakeLists.txt index 0a1a953543..e6bc35c7d1 100644 --- a/simulation/CMakeLists.txt +++ b/simulation/CMakeLists.txt @@ -1,4 +1,4 @@ -if (WITH_GUI) +if(WITH_GUI) add_subdirectory(halsim_gui) endif() add_subdirectory(halsim_ds_socket) diff --git a/sysid/CMakeLists.txt b/sysid/CMakeLists.txt index 31fbe08d0d..a921402f4c 100644 --- a/sysid/CMakeLists.txt +++ b/sysid/CMakeLists.txt @@ -10,7 +10,7 @@ generate_resources(src/main/native/resources generated/main/cpp SYSID sysid sysi file(GLOB_RECURSE sysid_src src/main/native/cpp/*.cpp ${CMAKE_CURRENT_BINARY_DIR}/WPILibVersion.cpp) -if (WIN32) +if(WIN32) set(sysid_rc src/main/native/win/sysid.rc) elseif(APPLE) set(MACOSX_BUNDLE_ICON_FILE sysid.icns) @@ -24,18 +24,17 @@ wpilib_target_warnings(sysid) target_include_directories(sysid PRIVATE src/main/native/include) target_link_libraries(sysid wpimath libglassnt libglass) -if (WIN32) +if(WIN32) set_target_properties(sysid PROPERTIES WIN32_EXECUTABLE YES) elseif(APPLE) set_target_properties(sysid PROPERTIES MACOSX_BUNDLE YES OUTPUT_NAME "SysId") endif() -if (WITH_TESTS) +if(WITH_TESTS) wpilib_add_test(sysid src/test/native/cpp) wpilib_link_macos_gui(sysid_test) target_sources(sysid_test PRIVATE ${sysid_src}) target_compile_definitions(sysid_test PRIVATE RUNNING_SYSID_TESTS) - target_include_directories(sysid_test PRIVATE src/main/native/cpp - src/main/native/include) + target_include_directories(sysid_test PRIVATE src/main/native/cpp src/main/native/include) target_link_libraries(sysid_test wpimath libglassnt libglass gtest) endif() diff --git a/wpigui/CMakeLists.txt b/wpigui/CMakeLists.txt index 4e8b6c3609..beae7baee5 100644 --- a/wpigui/CMakeLists.txt +++ b/wpigui/CMakeLists.txt @@ -8,10 +8,10 @@ file(GLOB wpigui_windows_src src/main/native/directx11/*.cpp) file(GLOB wpigui_mac_src src/main/native/metal/*.mm) file(GLOB wpigui_unix_src src/main/native/opengl3/*.cpp) -if (MSVC) - add_library(wpigui STATIC ${wpigui_src}) +if(MSVC) + add_library(wpigui STATIC ${wpigui_src}) else() - add_library(wpigui ${wpigui_src}) + add_library(wpigui ${wpigui_src}) endif() set_target_properties(wpigui PROPERTIES DEBUG_POSTFIX "d") set_property(TARGET wpigui PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -21,14 +21,17 @@ set_property(TARGET wpigui PROPERTY FOLDER "libraries") wpilib_target_warnings(wpigui) target_link_libraries(wpigui PUBLIC imgui) -target_include_directories(wpigui PUBLIC - $ - $) +target_include_directories( + wpigui + PUBLIC + $ + $ +) -if (MSVC) +if(MSVC) target_sources(wpigui PRIVATE ${wpigui_windows_src}) else() - if (APPLE) + if(APPLE) target_compile_options(wpigui PRIVATE -fobjc-arc) set_target_properties(wpigui PROPERTIES LINK_FLAGS "-framework Metal -framework QuartzCore") target_sources(wpigui PRIVATE ${wpigui_mac_src}) diff --git a/wpilibNewCommands/CMakeLists.txt b/wpilibNewCommands/CMakeLists.txt index 5f525bb5be..ef3ff496d5 100644 --- a/wpilibNewCommands/CMakeLists.txt +++ b/wpilibNewCommands/CMakeLists.txt @@ -4,34 +4,53 @@ include(SubDirList) include(CompileWarnings) include(AddTest) -if (WITH_JAVA) - find_package(Java REQUIRED) - include(UseJava) - set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") +if(WITH_JAVA) + find_package(Java REQUIRED) + include(UseJava) + set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") - file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) - add_jar(wpilibNewCommands_jar ${JAVA_SOURCES} INCLUDE_JARS hal_jar ntcore_jar cscore_jar cameraserver_jar wpimath_jar wpiunits_jar wpiutil_jar wpilibj_jar OUTPUT_NAME wpilibNewCommands) + file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) + add_jar( + wpilibNewCommands_jar + ${JAVA_SOURCES} + INCLUDE_JARS + hal_jar + ntcore_jar + cscore_jar + cameraserver_jar + wpimath_jar + wpiunits_jar + wpiutil_jar + wpilibj_jar + OUTPUT_NAME wpilibNewCommands + ) - get_property(WPILIBNEWCOMMANDS_JAR_FILE TARGET wpilibNewCommands_jar PROPERTY JAR_FILE) - install(FILES ${WPILIBNEWCOMMANDS_JAR_FILE} DESTINATION "${java_lib_dest}") + get_property(WPILIBNEWCOMMANDS_JAR_FILE TARGET wpilibNewCommands_jar PROPERTY JAR_FILE) + install(FILES ${WPILIBNEWCOMMANDS_JAR_FILE} DESTINATION "${java_lib_dest}") - set_property(TARGET wpilibNewCommands_jar PROPERTY FOLDER "java") + set_property(TARGET wpilibNewCommands_jar PROPERTY FOLDER "java") endif() -if (WITH_JAVA_SOURCE) - find_package(Java REQUIRED) - include(UseJava) - file(GLOB WPILIBNEWCOMMANDS_SOURCES src/main/java/edu/wpi/first/wpilibj2/command/*.java) - file(GLOB WPILIBNEWCOMMANDS_BUTTON_SOURCES src/main/java/edu/wpi/first/wpilibj2/command/button*.java) - add_jar(wpilibNewCommands_src_jar - RESOURCES NAMESPACE "edu/wpi/first/wpilibj2/command" ${WPILIBNEWCOMMANDS_SOURCES} - NAMESPACE "edu/wpi/first/wpilibj2/command/button" ${WPILIBNEWCOMMANDS_BUTTON_SOURCES} - OUTPUT_NAME wpilibNewCommands-sources) +if(WITH_JAVA_SOURCE) + find_package(Java REQUIRED) + include(UseJava) + file(GLOB WPILIBNEWCOMMANDS_SOURCES src/main/java/edu/wpi/first/wpilibj2/command/*.java) + file( + GLOB WPILIBNEWCOMMANDS_BUTTON_SOURCES + src/main/java/edu/wpi/first/wpilibj2/command/button*.java + ) + add_jar( + wpilibNewCommands_src_jar + RESOURCES + NAMESPACE "edu/wpi/first/wpilibj2/command" ${WPILIBNEWCOMMANDS_SOURCES} + NAMESPACE "edu/wpi/first/wpilibj2/command/button" ${WPILIBNEWCOMMANDS_BUTTON_SOURCES} + OUTPUT_NAME wpilibNewCommands-sources + ) - get_property(WPILIBNEWCOMMANDS_SRC_JAR_FILE TARGET wpilibNewCommands_src_jar PROPERTY JAR_FILE) - install(FILES ${WPILIBNEWCOMMANDS_SRC_JAR_FILE} DESTINATION "${java_lib_dest}") + get_property(WPILIBNEWCOMMANDS_SRC_JAR_FILE TARGET wpilibNewCommands_src_jar PROPERTY JAR_FILE) + install(FILES ${WPILIBNEWCOMMANDS_SRC_JAR_FILE} DESTINATION "${java_lib_dest}") - set_property(TARGET wpilibNewCommands_src_jar PROPERTY FOLDER "java") + set_property(TARGET wpilibNewCommands_src_jar PROPERTY FOLDER "java") endif() file(GLOB_RECURSE wpilibNewCommands_native_src src/main/native/cpp/*.cpp) @@ -43,19 +62,28 @@ target_compile_features(wpilibNewCommands PUBLIC cxx_std_20) wpilib_target_warnings(wpilibNewCommands) target_link_libraries(wpilibNewCommands wpilibc) -target_include_directories(wpilibNewCommands PUBLIC - $ - $) +target_include_directories( + wpilibNewCommands + PUBLIC + $ + $ +) install(TARGETS wpilibNewCommands EXPORT wpilibNewCommands) install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpilibNewCommands") -configure_file(wpilibNewCommands-config.cmake.in ${WPILIB_BINARY_DIR}/wpilibNewCommands-config.cmake) -install(FILES ${WPILIB_BINARY_DIR}/wpilibNewCommands-config.cmake DESTINATION share/wpilibNewCommands) +configure_file( + wpilibNewCommands-config.cmake.in + ${WPILIB_BINARY_DIR}/wpilibNewCommands-config.cmake +) +install( + FILES ${WPILIB_BINARY_DIR}/wpilibNewCommands-config.cmake + DESTINATION share/wpilibNewCommands +) install(EXPORT wpilibNewCommands DESTINATION share/wpilibNewCommands) - if (WITH_TESTS) - wpilib_add_test(wpilibNewCommands src/test/native/cpp) - target_include_directories(wpilibNewCommands_test PRIVATE src/test/native/include) - target_link_libraries(wpilibNewCommands_test wpilibNewCommands gmock_main) - endif() +if(WITH_TESTS) + wpilib_add_test(wpilibNewCommands src/test/native/cpp) + target_include_directories(wpilibNewCommands_test PRIVATE src/test/native/include) + target_link_libraries(wpilibNewCommands_test wpilibNewCommands gmock_main) +endif() diff --git a/wpilibc/CMakeLists.txt b/wpilibc/CMakeLists.txt index fc7b54ea3a..3757d5f9b4 100644 --- a/wpilibc/CMakeLists.txt +++ b/wpilibc/CMakeLists.txt @@ -5,45 +5,52 @@ include(AddTest) configure_file(src/generate/WPILibVersion.cpp.in WPILibVersion.cpp) -file(GLOB_RECURSE - wpilibc_native_src src/main/native/cpp/*.cpp src/main/native/cppcs/*.cpp) +file(GLOB_RECURSE wpilibc_native_src src/main/native/cpp/*.cpp src/main/native/cppcs/*.cpp) add_library(wpilibc ${wpilibc_native_src} ${CMAKE_CURRENT_BINARY_DIR}/WPILibVersion.cpp) set_target_properties(wpilibc PROPERTIES DEBUG_POSTFIX "d") -target_include_directories(wpilibc PUBLIC - $ - $) +target_include_directories( + wpilibc + PUBLIC + $ + $ +) wpilib_target_warnings(wpilibc) -if (WITH_CSCORE) - find_package( OpenCV ) +if(WITH_CSCORE) + find_package(OpenCV) target_link_libraries(wpilibc PUBLIC cameraserver cscore ${OpenCV_LIBS}) else() target_compile_definitions(wpilibc PRIVATE DYNAMIC_CAMERA_SERVER) # Add just the camera server include directory - target_include_directories(wpilibc PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../cameraserver/src/main/native/include) + target_include_directories( + wpilibc + PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../cameraserver/src/main/native/include + ) endif() target_link_libraries(wpilibc PUBLIC hal ntcore wpimath wpiutil) - set_property(TARGET wpilibc PROPERTY FOLDER "libraries") install(TARGETS wpilibc EXPORT wpilibc) install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpilibc") -configure_file(wpilibc-config.cmake.in ${WPILIB_BINARY_DIR}/wpilibc-config.cmake ) +configure_file(wpilibc-config.cmake.in ${WPILIB_BINARY_DIR}/wpilibc-config.cmake) install(FILES ${WPILIB_BINARY_DIR}/wpilibc-config.cmake DESTINATION share/wpilibc) install(EXPORT wpilibc DESTINATION share/wpilibc) -if (WITH_TESTS) +if(WITH_TESTS) wpilib_add_test(wpilibc src/test/native/cpp) target_include_directories(wpilibc_test PRIVATE src/test/native/include) target_link_libraries(wpilibc_test wpilibc gmock_main) - if (NOT WITH_CSCORE) + if(NOT WITH_CSCORE) target_compile_definitions(wpilibc_test PRIVATE DYNAMIC_CAMERA_SERVER) # Add just the camera server include directory - target_include_directories(wpilibc_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../cameraserver/src/main/native/include) + target_include_directories( + wpilibc_test + PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../cameraserver/src/main/native/include + ) endif() endif() diff --git a/wpilibcExamples/CMakeLists.txt b/wpilibcExamples/CMakeLists.txt index f46d1c246d..4554b94dcf 100644 --- a/wpilibcExamples/CMakeLists.txt +++ b/wpilibcExamples/CMakeLists.txt @@ -7,29 +7,53 @@ subdir_list(TEMPLATES ${CMAKE_SOURCE_DIR}/wpilibcExamples/src/main/cpp/templates subdir_list(EXAMPLES ${CMAKE_SOURCE_DIR}/wpilibcExamples/src/main/cpp/examples) foreach(example ${EXAMPLES}) - file(GLOB_RECURSE sources src/main/cpp/examples/${example}/cpp/*.cpp - src/main/cpp/examples/${example}/c/*.c) - add_executable(${example} ${sources}) - wpilib_target_warnings(${example}) - target_include_directories(${example} PUBLIC src/main/cpp/examples/${example}/include) - target_link_libraries(${example} apriltag wpilibc wpilibNewCommands romiVendordep xrpVendordep) + file( + GLOB_RECURSE sources + src/main/cpp/examples/${example}/cpp/*.cpp + src/main/cpp/examples/${example}/c/*.c + ) + add_executable(${example} ${sources}) + wpilib_target_warnings(${example}) + target_include_directories(${example} PUBLIC src/main/cpp/examples/${example}/include) + target_link_libraries( + ${example} + apriltag + wpilibc + wpilibNewCommands + romiVendordep + xrpVendordep + ) - if (WITH_TESTS AND EXISTS ${CMAKE_SOURCE_DIR}/wpilibcExamples/src/test/cpp/examples/${example}) - wpilib_add_test(${example} src/test/cpp/examples/${example}/cpp) - target_sources(${example}_test PRIVATE ${sources}) - target_include_directories(${example}_test PRIVATE - src/main/cpp/examples/${example}/include - src/test/cpp/examples/${example}/include) - target_compile_definitions(${example}_test PUBLIC RUNNING_FRC_TESTS) - target_link_libraries(${example}_test apriltag wpilibc wpilibNewCommands romiVendordep xrpVendordep gmock_main) - endif() + if(WITH_TESTS AND EXISTS ${CMAKE_SOURCE_DIR}/wpilibcExamples/src/test/cpp/examples/${example}) + wpilib_add_test(${example} src/test/cpp/examples/${example}/cpp) + target_sources(${example}_test PRIVATE ${sources}) + target_include_directories( + ${example}_test + PRIVATE + src/main/cpp/examples/${example}/include + src/test/cpp/examples/${example}/include + ) + target_compile_definitions(${example}_test PUBLIC RUNNING_FRC_TESTS) + target_link_libraries( + ${example}_test + apriltag + wpilibc + wpilibNewCommands + romiVendordep + xrpVendordep + gmock_main + ) + endif() endforeach() foreach(template ${TEMPLATES}) - file(GLOB_RECURSE sources src/main/cpp/templates/${template}/cpp/*.cpp - src/main/cpp/templates/${template}/c/*.c) - add_executable(${template} ${sources}) - wpilib_target_warnings(${template}) - target_include_directories(${template} PUBLIC src/main/cpp/templates/${template}/include) - target_link_libraries(${template} wpilibc wpilibNewCommands romiVendordep xrpVendordep) + file( + GLOB_RECURSE sources + src/main/cpp/templates/${template}/cpp/*.cpp + src/main/cpp/templates/${template}/c/*.c + ) + add_executable(${template} ${sources}) + wpilib_target_warnings(${template}) + target_include_directories(${template} PUBLIC src/main/cpp/templates/${template}/include) + target_link_libraries(${template} wpilibc wpilibNewCommands romiVendordep xrpVendordep) endforeach() diff --git a/wpilibj/CMakeLists.txt b/wpilibj/CMakeLists.txt index a5cd637473..9c8bd98895 100644 --- a/wpilibj/CMakeLists.txt +++ b/wpilibj/CMakeLists.txt @@ -1,15 +1,20 @@ -project (wpilibj) +project(wpilibj) # Java bindings -if (WITH_JAVA) - find_package( OpenCV REQUIRED ) +if(WITH_JAVA) + find_package(OpenCV REQUIRED) find_package(Java REQUIRED) include(UseJava) set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") set(OPENCV_JAVA_INSTALL_DIR ${OpenCV_INSTALL_PATH}/share/OpenCV/java/) - find_file(OPENCV_JAR_FILE NAMES opencv-${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.jar PATHS ${OPENCV_JAVA_INSTALL_DIR} ${OpenCV_INSTALL_PATH}/bin NO_DEFAULT_PATH) + find_file( + OPENCV_JAR_FILE + NAMES opencv-${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.jar + PATHS ${OPENCV_JAVA_INSTALL_DIR} ${OpenCV_INSTALL_PATH}/bin + NO_DEFAULT_PATH + ) configure_file(src/generate/WPILibVersion.java.in WPILibVersion.java) @@ -17,7 +22,23 @@ if (WITH_JAVA) file(GLOB EJML_JARS "${WPILIB_BINARY_DIR}/wpimath/thirdparty/ejml/*.jar") file(GLOB JACKSON_JARS "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson/*.jar") - add_jar(wpilibj_jar ${JAVA_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/WPILibVersion.java INCLUDE_JARS hal_jar ntcore_jar ${EJML_JARS} ${JACKSON_JARS} ${OPENCV_JAR_FILE} cscore_jar cameraserver_jar wpimath_jar wpiunits_jar wpiutil_jar OUTPUT_NAME wpilibj) + add_jar( + wpilibj_jar + ${JAVA_SOURCES} + ${CMAKE_CURRENT_BINARY_DIR}/WPILibVersion.java + INCLUDE_JARS + hal_jar + ntcore_jar + ${EJML_JARS} + ${JACKSON_JARS} + ${OPENCV_JAR_FILE} + cscore_jar + cameraserver_jar + wpimath_jar + wpiunits_jar + wpiutil_jar + OUTPUT_NAME wpilibj + ) get_property(WPILIBJ_JAR_FILE TARGET wpilibj_jar PROPERTY JAR_FILE) install(FILES ${WPILIBJ_JAR_FILE} DESTINATION "${java_lib_dest}") @@ -27,7 +48,7 @@ if (WITH_JAVA) install(FILES wpilibj-config.cmake DESTINATION share/wpilibj) endif() -if (WITH_JAVA_SOURCE) +if(WITH_JAVA_SOURCE) find_package(Java REQUIRED) include(UseJava) file(GLOB WPILIBJ_SOURCES src/main/java/edu/wpi/first/wpilibj/*.java) @@ -39,21 +60,32 @@ if (WITH_JAVA_SOURCE) file(GLOB WPILIBJ_SHUFFLEBOARD_SOURCES src/main/java/edu/wpi/first/wpilibj/shuffleboard*.java) file(GLOB WPILIBJ_SIMULATION_SOURCES src/main/java/edu/wpi/first/wpilibj/simulation*.java) file(GLOB WPILIBJ_SMARTDASHBOARD_SOURCES src/main/java/edu/wpi/first/wpilibj/*.java) - file(GLOB WPILIBJ_UTIL_SOURCES src/main/java/edu/wpi/first/wpilibj/*.java ${CMAKE_CURRENT_BINARY_DIR}/WPILibVersion.java) - add_jar(wpilibj_src_jar - RESOURCES NAMESPACE "edu/wpi/first/wpilibj" ${WPILIBJ_SOURCES} - NAMESPACE "edu/wpi/first/wpilibj/counter" ${WPILIBJ_COUNTER_SOURCES} - NAMESPACE "edu/wpi/first/wpilibj/drive" ${WPILIBJ_DRIVE_SOURCES} - NAMESPACE "edu/wpi/first/wpilibj/event" ${WPILIBJ_EVENT_SOURCES} - NAMESPACE "edu/wpi/first/wpilibj/interfaces" ${WPILIBJ_INTERFACES_SOURCES} - NAMESPACE "edu/wpi/first/wpilibj/internal" src/main/java/edu/wpi/first/wpilibj/internal/DriverStationModeThread.java - NAMESPACE "edu/wpi/first/wpilibj/livewindow" src/main/java/edu/wpi/first/wpilibj/livewindow/LiveWindow.java - NAMESPACE "edu/wpi/first/wpilibj/motorcontrol" ${WPILIBJ_MOTORCONTROL_SOURCES} - NAMESPACE "edu/wpi/first/wpilibj/shuffleboard" ${WPILIBJ_SHUFFLEBOARD_SOURCES} - NAMESPACE "edu/wpi/first/wpilibj/simulation" ${WPILIBJ_SIMULATION_SOURCES} - NAMESPACE "edu/wpi/first/wpilibj/smartdashboard" ${WPILIBJ_SMARTDASHBOARD_SOURCES} - NAMESPACE "edu/wpi/first/wpilibj/util" ${WPILIBJ_UTIL_SOURCES} - OUTPUT_NAME wpilibj-sources) + file( + GLOB WPILIBJ_UTIL_SOURCES + src/main/java/edu/wpi/first/wpilibj/*.java + ${CMAKE_CURRENT_BINARY_DIR}/WPILibVersion.java + ) + add_jar( + wpilibj_src_jar + RESOURCES + NAMESPACE "edu/wpi/first/wpilibj" ${WPILIBJ_SOURCES} + NAMESPACE "edu/wpi/first/wpilibj/counter" ${WPILIBJ_COUNTER_SOURCES} + NAMESPACE "edu/wpi/first/wpilibj/drive" ${WPILIBJ_DRIVE_SOURCES} + NAMESPACE "edu/wpi/first/wpilibj/event" ${WPILIBJ_EVENT_SOURCES} + NAMESPACE "edu/wpi/first/wpilibj/interfaces" ${WPILIBJ_INTERFACES_SOURCES} + NAMESPACE + "edu/wpi/first/wpilibj/internal" + src/main/java/edu/wpi/first/wpilibj/internal/DriverStationModeThread.java + NAMESPACE + "edu/wpi/first/wpilibj/livewindow" + src/main/java/edu/wpi/first/wpilibj/livewindow/LiveWindow.java + NAMESPACE "edu/wpi/first/wpilibj/motorcontrol" ${WPILIBJ_MOTORCONTROL_SOURCES} + NAMESPACE "edu/wpi/first/wpilibj/shuffleboard" ${WPILIBJ_SHUFFLEBOARD_SOURCES} + NAMESPACE "edu/wpi/first/wpilibj/simulation" ${WPILIBJ_SIMULATION_SOURCES} + NAMESPACE "edu/wpi/first/wpilibj/smartdashboard" ${WPILIBJ_SMARTDASHBOARD_SOURCES} + NAMESPACE "edu/wpi/first/wpilibj/util" ${WPILIBJ_UTIL_SOURCES} + OUTPUT_NAME wpilibj-sources + ) get_property(WPILIBJ_SRC_JAR_FILE TARGET wpilibj_src_jar PROPERTY JAR_FILE) install(FILES ${WPILIBJ_SRC_JAR_FILE} DESTINATION "${java_lib_dest}") diff --git a/wpimath/CMakeLists.txt b/wpimath/CMakeLists.txt index 029a9d6571..afe79befd8 100644 --- a/wpimath/CMakeLists.txt +++ b/wpimath/CMakeLists.txt @@ -8,164 +8,218 @@ include(DownloadAndCheck) # workaround for makefiles - for some reason parent directories aren't created. file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/protobuf") file(GLOB wpimath_proto_src src/main/proto/*.proto) -protobuf_generate_cpp(WPIMATH_PROTO_SRCS WPIMATH_PROTO_HDRS PROTOC_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/protobuf" PROTOS ${wpimath_proto_src}) +protobuf_generate_cpp( + WPIMATH_PROTO_SRCS + WPIMATH_PROTO_HDRS + PROTOC_OUT_DIR + "${CMAKE_CURRENT_BINARY_DIR}/protobuf" + PROTOS + ${wpimath_proto_src} +) function(quickbuf_generate SRCS JAVA_PACKAGE) - if(NOT ARGN) - message(SEND_ERROR "Error: PROTOBUF_GENERATE_QUICKBUF() called without any proto files") - return() - endif() + if(NOT ARGN) + message(SEND_ERROR "Error: PROTOBUF_GENERATE_QUICKBUF() called without any proto files") + return() + endif() - set(_generated_srcs_all) - foreach(_proto ${ARGN}) - get_filename_component(_abs_file ${_proto} ABSOLUTE) - get_filename_component(_abs_dir ${_abs_file} DIRECTORY) - get_filename_component(_basename ${_proto} NAME_WLE) - file(RELATIVE_PATH _rel_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_abs_dir}) + set(_generated_srcs_all) + foreach(_proto ${ARGN}) + get_filename_component(_abs_file ${_proto} ABSOLUTE) + get_filename_component(_abs_dir ${_abs_file} DIRECTORY) + get_filename_component(_basename ${_proto} NAME_WLE) + file(RELATIVE_PATH _rel_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_abs_dir}) - # convert to QuickBuffers Java case (geometry2d -> Geometry2D) - string(REGEX MATCHALL "[A-Za-z_]+|[0-9]+" _name_components ${_basename}) - set(_name_components_out) - foreach(_part ${_name_components}) - string(SUBSTRING ${_part} 0 1 _first_letter) - string(TOUPPER ${_first_letter} _first_letter) - string(REGEX REPLACE "^.(.*)" "${_first_letter}\\1" _part_out "${_part}") - list(APPEND _name_components_out ${_part_out}) + # convert to QuickBuffers Java case (geometry2d -> Geometry2D) + string(REGEX MATCHALL "[A-Za-z_]+|[0-9]+" _name_components ${_basename}) + set(_name_components_out) + foreach(_part ${_name_components}) + string(SUBSTRING ${_part} 0 1 _first_letter) + string(TOUPPER ${_first_letter} _first_letter) + string(REGEX REPLACE "^.(.*)" "${_first_letter}\\1" _part_out "${_part}") + list(APPEND _name_components_out ${_part_out}) + endforeach() + list(JOIN _name_components_out "" _basename_title) + + set(_generated_src + "${CMAKE_CURRENT_BINARY_DIR}/quickbuf/${JAVA_PACKAGE}/${_basename_title}.java" + ) + + list(APPEND _generated_srcs_all ${_generated_src}) + + add_custom_command( + OUTPUT ${_generated_src} + COMMAND protobuf::protoc + ARGS + --plugin=protoc-gen-quickbuf=${Quickbuf_EXECUTABLE} + --quickbuf_out=gen_descriptors=true:${CMAKE_CURRENT_BINARY_DIR}/quickbuf + -I${_abs_dir} ${_abs_file} + DEPENDS ${_abs_file} protobuf::protoc + COMMENT "Running quickbuf protocol buffer compiler on ${_proto}" + VERBATIM + ) endforeach() - list(JOIN _name_components_out "" _basename_title) - set(_generated_src "${CMAKE_CURRENT_BINARY_DIR}/quickbuf/${JAVA_PACKAGE}/${_basename_title}.java") - - list(APPEND _generated_srcs_all ${_generated_src}) - - add_custom_command( - OUTPUT ${_generated_src} - COMMAND protobuf::protoc - ARGS --plugin=protoc-gen-quickbuf=${Quickbuf_EXECUTABLE} --quickbuf_out=gen_descriptors=true:${CMAKE_CURRENT_BINARY_DIR}/quickbuf -I${_abs_dir} ${_abs_file} - DEPENDS ${_abs_file} protobuf::protoc - COMMENT "Running quickbuf protocol buffer compiler on ${_proto}" - VERBATIM ) - endforeach() - - set(${SRCS} ${_generated_srcs_all} PARENT_SCOPE) + set(${SRCS} ${_generated_srcs_all} PARENT_SCOPE) endfunction() -file(GLOB wpimath_jni_src src/main/native/cpp/jni/WPIMathJNI_DARE.cpp - src/main/native/cpp/jni/WPIMathJNI_Eigen.cpp - src/main/native/cpp/jni/WPIMathJNI_Exceptions.cpp - src/main/native/cpp/jni/WPIMathJNI_Pose3d.cpp - src/main/native/cpp/jni/WPIMathJNI_StateSpaceUtil.cpp - src/main/native/cpp/jni/WPIMathJNI_Trajectory.cpp) +file( + GLOB wpimath_jni_src + src/main/native/cpp/jni/WPIMathJNI_DARE.cpp + src/main/native/cpp/jni/WPIMathJNI_Eigen.cpp + src/main/native/cpp/jni/WPIMathJNI_Exceptions.cpp + src/main/native/cpp/jni/WPIMathJNI_Pose3d.cpp + src/main/native/cpp/jni/WPIMathJNI_StateSpaceUtil.cpp + src/main/native/cpp/jni/WPIMathJNI_Trajectory.cpp +) # Java bindings -if (WITH_JAVA) - find_package(Java REQUIRED) - find_package(JNI REQUIRED) - include(UseJava) - set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") +if(WITH_JAVA) + find_package(Java REQUIRED) + find_package(JNI REQUIRED) + include(UseJava) + set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") - quickbuf_generate(WPIMATH_QUICKBUF_SRCS "edu/wpi/first/math/proto" ${wpimath_proto_src}) + quickbuf_generate(WPIMATH_QUICKBUF_SRCS "edu/wpi/first/math/proto" ${wpimath_proto_src}) - if(NOT EXISTS "${WPILIB_BINARY_DIR}/wpimath/thirdparty/ejml/ejml-simple-0.43.1.jar") - set(BASE_URL "https://search.maven.org/remotecontent?filepath=") - set(JAR_ROOT "${WPILIB_BINARY_DIR}/wpimath/thirdparty/ejml") + if(NOT EXISTS "${WPILIB_BINARY_DIR}/wpimath/thirdparty/ejml/ejml-simple-0.43.1.jar") + set(BASE_URL "https://search.maven.org/remotecontent?filepath=") + set(JAR_ROOT "${WPILIB_BINARY_DIR}/wpimath/thirdparty/ejml") - message(STATUS "Downloading EJML jarfiles...") + message(STATUS "Downloading EJML jarfiles...") - download_and_check("${BASE_URL}org/ejml/ejml-cdense/0.43.1/ejml-cdense-0.43.1.jar" - "${JAR_ROOT}/ejml-cdense-0.43.1.jar") - download_and_check("${BASE_URL}org/ejml/ejml-core/0.43.1/ejml-core-0.43.1.jar" - "${JAR_ROOT}/ejml-core-0.43.1.jar") - download_and_check("${BASE_URL}org/ejml/ejml-ddense/0.43.1/ejml-ddense-0.43.1.jar" - "${JAR_ROOT}/ejml-ddense-0.43.1.jar") - download_and_check("${BASE_URL}org/ejml/ejml-dsparse/0.43.1/ejml-dsparse-0.43.1.jar" - "${JAR_ROOT}/ejml-dsparse-0.43.1.jar") - download_and_check("${BASE_URL}org/ejml/ejml-fdense/0.43.1/ejml-fdense-0.43.1.jar" - "${JAR_ROOT}/ejml-fdense-0.43.1.jar") - download_and_check("${BASE_URL}org/ejml/ejml-simple/0.43.1/ejml-simple-0.43.1.jar" - "${JAR_ROOT}/ejml-simple-0.43.1.jar") - download_and_check("${BASE_URL}org/ejml/ejml-zdense/0.43.1/ejml-zdense-0.43.1.jar" - "${JAR_ROOT}/ejml-zdense-0.43.1.jar") + download_and_check("${BASE_URL}org/ejml/ejml-cdense/0.43.1/ejml-cdense-0.43.1.jar" + "${JAR_ROOT}/ejml-cdense-0.43.1.jar" + ) + download_and_check("${BASE_URL}org/ejml/ejml-core/0.43.1/ejml-core-0.43.1.jar" + "${JAR_ROOT}/ejml-core-0.43.1.jar" + ) + download_and_check("${BASE_URL}org/ejml/ejml-ddense/0.43.1/ejml-ddense-0.43.1.jar" + "${JAR_ROOT}/ejml-ddense-0.43.1.jar" + ) + download_and_check("${BASE_URL}org/ejml/ejml-dsparse/0.43.1/ejml-dsparse-0.43.1.jar" + "${JAR_ROOT}/ejml-dsparse-0.43.1.jar" + ) + download_and_check("${BASE_URL}org/ejml/ejml-fdense/0.43.1/ejml-fdense-0.43.1.jar" + "${JAR_ROOT}/ejml-fdense-0.43.1.jar" + ) + download_and_check("${BASE_URL}org/ejml/ejml-simple/0.43.1/ejml-simple-0.43.1.jar" + "${JAR_ROOT}/ejml-simple-0.43.1.jar" + ) + download_and_check("${BASE_URL}org/ejml/ejml-zdense/0.43.1/ejml-zdense-0.43.1.jar" + "${JAR_ROOT}/ejml-zdense-0.43.1.jar" + ) - message(STATUS "All files downloaded.") - endif() - - file(GLOB EJML_JARS "${WPILIB_BINARY_DIR}/wpimath/thirdparty/ejml/*.jar") - file(GLOB JACKSON_JARS "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson/*.jar") - file(GLOB QUICKBUF_JAR - ${WPILIB_BINARY_DIR}/wpiutil/thirdparty/quickbuf/*.jar) - - set(CMAKE_JAVA_INCLUDE_PATH wpimath.jar ${EJML_JARS} ${JACKSON_JARS} ${QUICKBUF_JAR}) - - execute_process(COMMAND python3 ${CMAKE_CURRENT_SOURCE_DIR}/generate_numbers.py ${WPILIB_BINARY_DIR}/wpimath RESULT_VARIABLE generateResult) - if(NOT (generateResult EQUAL "0")) - # Try python - execute_process(COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/generate_numbers.py ${WPILIB_BINARY_DIR}/wpimath RESULT_VARIABLE generateResult) - if(NOT (generateResult EQUAL "0")) - message(FATAL_ERROR "python and python3 generate_numbers.py failed") + message(STATUS "All files downloaded.") endif() - endif() - set(CMAKE_JNI_TARGET true) + file(GLOB EJML_JARS "${WPILIB_BINARY_DIR}/wpimath/thirdparty/ejml/*.jar") + file(GLOB JACKSON_JARS "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson/*.jar") + file(GLOB QUICKBUF_JAR ${WPILIB_BINARY_DIR}/wpiutil/thirdparty/quickbuf/*.jar) - file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java ${WPILIB_BINARY_DIR}/wpimath/generated/*.java) + set(CMAKE_JAVA_INCLUDE_PATH wpimath.jar ${EJML_JARS} ${JACKSON_JARS} ${QUICKBUF_JAR}) - add_jar(wpimath_jar ${JAVA_SOURCES} ${WPIMATH_QUICKBUF_SRCS} INCLUDE_JARS ${EJML_JARS} wpiutil_jar wpiunits_jar OUTPUT_NAME wpimath GENERATE_NATIVE_HEADERS wpimath_jni_headers) + execute_process( + COMMAND python3 ${CMAKE_CURRENT_SOURCE_DIR}/generate_numbers.py ${WPILIB_BINARY_DIR}/wpimath + RESULT_VARIABLE generateResult + ) + if(NOT (generateResult EQUAL "0")) + # Try python + execute_process( + COMMAND + python ${CMAKE_CURRENT_SOURCE_DIR}/generate_numbers.py ${WPILIB_BINARY_DIR}/wpimath + RESULT_VARIABLE generateResult + ) + if(NOT (generateResult EQUAL "0")) + message(FATAL_ERROR "python and python3 generate_numbers.py failed") + endif() + endif() - get_property(WPIMATH_JAR_FILE TARGET wpimath_jar PROPERTY JAR_FILE) - install(FILES ${WPIMATH_JAR_FILE} DESTINATION "${java_lib_dest}") + set(CMAKE_JNI_TARGET true) - set_property(TARGET wpimath_jar PROPERTY FOLDER "java") + file( + GLOB_RECURSE JAVA_SOURCES + src/main/java/*.java + ${WPILIB_BINARY_DIR}/wpimath/generated/*.java + ) - add_library(wpimathjni ${wpimath_jni_src}) - wpilib_target_warnings(wpimathjni) - target_link_libraries(wpimathjni PUBLIC wpimath) + add_jar( + wpimath_jar + ${JAVA_SOURCES} + ${WPIMATH_QUICKBUF_SRCS} + INCLUDE_JARS ${EJML_JARS} wpiutil_jar wpiunits_jar + OUTPUT_NAME wpimath + GENERATE_NATIVE_HEADERS wpimath_jni_headers + ) - set_property(TARGET wpimathjni PROPERTY FOLDER "libraries") + get_property(WPIMATH_JAR_FILE TARGET wpimath_jar PROPERTY JAR_FILE) + install(FILES ${WPIMATH_JAR_FILE} DESTINATION "${java_lib_dest}") - target_link_libraries(wpimathjni PRIVATE wpimath_jni_headers) - add_dependencies(wpimathjni wpimath_jar) + set_property(TARGET wpimath_jar PROPERTY FOLDER "java") - install(TARGETS wpimathjni EXPORT wpimathjni) + add_library(wpimathjni ${wpimath_jni_src}) + wpilib_target_warnings(wpimathjni) + target_link_libraries(wpimathjni PUBLIC wpimath) + set_property(TARGET wpimathjni PROPERTY FOLDER "libraries") + + target_link_libraries(wpimathjni PRIVATE wpimath_jni_headers) + add_dependencies(wpimathjni wpimath_jar) + + install(TARGETS wpimathjni EXPORT wpimathjni) endif() -if (WITH_JAVA_SOURCE) - find_package(Java REQUIRED) - include(UseJava) - file(GLOB WPIMATH_SOURCES src/main/java/edu/wpi/first/math/*.java ${WPILIB_BINARY_DIR}/wpimath/generated/main/java/edu/wpi/first/math/Nat.java) - file(GLOB WPIMATH_CONTROLLER_SOURCES src/main/java/edu/wpi/first/math/controller/*.java) - file(GLOB WPIMATH_ESTIMATOR_SOURCES src/main/java/edu/wpi/first/math/estimator/*.java) - file(GLOB WPIMATH_FILTER_SOURCES src/main/java/edu/wpi/first/math/filter/*.java) - file(GLOB WPIMATH_GEOMETRY_SOURCES src/main/java/edu/wpi/first/math/geometry/*.java) - file(GLOB WPIMATH_INTERPOLATION_SOURCES src/main/java/edu/wpi/first/math/interpolation/*.java) - file(GLOB WPIMATH_KINEMATICS_SOURCES src/main/java/edu/wpi/first/math/kinematics/*.java) - file(GLOB WPIMATH_NUMBERS_SOURCES ${WPILIB_BINARY_DIR}/wpimath/generated/main/java/edu/wpi/first/math/numbers/*.java) - file(GLOB WPIMATH_SPLINE_SOURCES src/main/java/edu/wpi/first/math/spline/*.java) - file(GLOB WPIMATH_SYSTEM_SOURCES src/main/java/edu/wpi/first/math/system/*.java) - file(GLOB WPIMATH_SYSTEM_PLANT_SOURCES src/main/java/edu/wpi/first/math/system/plant/*.java) - file(GLOB WPIMATH_TRAJECTORY_SOURCES src/main/java/edu/wpi/first/math/trajectory/*.java) - file(GLOB WPIMATH_TRAJECTORY_CONSTRAINT_SOURCES src/main/java/edu/wpi/first/math/trajectory/constraint/*.java) - add_jar(wpimath_src_jar - RESOURCES NAMESPACE "edu/wpi/first/math" ${WPIMATH_SOURCES} - NAMESPACE "edu/wpi/first/math/controller" ${WPIMATH_CONTROLLER_SOURCES} - NAMESPACE "edu/wpi/first/math/estimator" ${WPIMATH_ESTIMATOR_SOURCES} - NAMESPACE "edu/wpi/first/math/filter" ${WPIMATH_FILTER_SOURCES} - NAMESPACE "edu/wpi/first/math/geometry" ${WPIMATH_GEOMETRY_SOURCES} - NAMESPACE "edu/wpi/first/math/interpolation" ${WPIMATH_INTERPOLATION_SOURCES} - NAMESPACE "edu/wpi/first/math/kinematics" ${WPIMATH_KINEMATICS_SOURCES} - NAMESPACE "edu/wpi/first/math/spline" ${WPIMATH_SPLINE_SOURCES} - NAMESPACE "edu/wpi/first/math/system" ${WPIMATH_SYSTEM_SOURCES} - NAMESPACE "edu/wpi/first/math/system/plant" ${WPIMATH_SYSTEM_PLANT_SOURCES} - NAMESPACE "edu/wpi/first/math/trajectory" ${WPIMATH_TRAJECTORY_SOURCES} - NAMESPACE "edu/wpi/first/math/trajectory/constraint" ${WPIMATH_TRAJECTORY_CONSTRAINT_SOURCES} - NAMESPACE "edu/wpi/first/math/util" src/main/java/edu/wpi/first/math/util/Units.java - OUTPUT_NAME wpimath-sources) +if(WITH_JAVA_SOURCE) + find_package(Java REQUIRED) + include(UseJava) + file( + GLOB WPIMATH_SOURCES + src/main/java/edu/wpi/first/math/*.java + ${WPILIB_BINARY_DIR}/wpimath/generated/main/java/edu/wpi/first/math/Nat.java + ) + file(GLOB WPIMATH_CONTROLLER_SOURCES src/main/java/edu/wpi/first/math/controller/*.java) + file(GLOB WPIMATH_ESTIMATOR_SOURCES src/main/java/edu/wpi/first/math/estimator/*.java) + file(GLOB WPIMATH_FILTER_SOURCES src/main/java/edu/wpi/first/math/filter/*.java) + file(GLOB WPIMATH_GEOMETRY_SOURCES src/main/java/edu/wpi/first/math/geometry/*.java) + file(GLOB WPIMATH_INTERPOLATION_SOURCES src/main/java/edu/wpi/first/math/interpolation/*.java) + file(GLOB WPIMATH_KINEMATICS_SOURCES src/main/java/edu/wpi/first/math/kinematics/*.java) + file( + GLOB WPIMATH_NUMBERS_SOURCES + ${WPILIB_BINARY_DIR}/wpimath/generated/main/java/edu/wpi/first/math/numbers/*.java + ) + file(GLOB WPIMATH_SPLINE_SOURCES src/main/java/edu/wpi/first/math/spline/*.java) + file(GLOB WPIMATH_SYSTEM_SOURCES src/main/java/edu/wpi/first/math/system/*.java) + file(GLOB WPIMATH_SYSTEM_PLANT_SOURCES src/main/java/edu/wpi/first/math/system/plant/*.java) + file(GLOB WPIMATH_TRAJECTORY_SOURCES src/main/java/edu/wpi/first/math/trajectory/*.java) + file( + GLOB WPIMATH_TRAJECTORY_CONSTRAINT_SOURCES + src/main/java/edu/wpi/first/math/trajectory/constraint/*.java + ) + add_jar( + wpimath_src_jar + RESOURCES + NAMESPACE "edu/wpi/first/math" ${WPIMATH_SOURCES} + NAMESPACE "edu/wpi/first/math/controller" ${WPIMATH_CONTROLLER_SOURCES} + NAMESPACE "edu/wpi/first/math/estimator" ${WPIMATH_ESTIMATOR_SOURCES} + NAMESPACE "edu/wpi/first/math/filter" ${WPIMATH_FILTER_SOURCES} + NAMESPACE "edu/wpi/first/math/geometry" ${WPIMATH_GEOMETRY_SOURCES} + NAMESPACE "edu/wpi/first/math/interpolation" ${WPIMATH_INTERPOLATION_SOURCES} + NAMESPACE "edu/wpi/first/math/kinematics" ${WPIMATH_KINEMATICS_SOURCES} + NAMESPACE "edu/wpi/first/math/spline" ${WPIMATH_SPLINE_SOURCES} + NAMESPACE "edu/wpi/first/math/system" ${WPIMATH_SYSTEM_SOURCES} + NAMESPACE "edu/wpi/first/math/system/plant" ${WPIMATH_SYSTEM_PLANT_SOURCES} + NAMESPACE "edu/wpi/first/math/trajectory" ${WPIMATH_TRAJECTORY_SOURCES} + NAMESPACE + "edu/wpi/first/math/trajectory/constraint" + ${WPIMATH_TRAJECTORY_CONSTRAINT_SOURCES} + NAMESPACE "edu/wpi/first/math/util" src/main/java/edu/wpi/first/math/util/Units.java + OUTPUT_NAME wpimath-sources + ) - get_property(WPIMATH_SRC_JAR_FILE TARGET wpimath_src_jar PROPERTY JAR_FILE) - install(FILES ${WPIMATH_SRC_JAR_FILE} DESTINATION "${java_lib_dest}") + get_property(WPIMATH_SRC_JAR_FILE TARGET wpimath_src_jar PROPERTY JAR_FILE) + install(FILES ${WPIMATH_SRC_JAR_FILE} DESTINATION "${java_lib_dest}") - set_property(TARGET wpimath_src_jar PROPERTY FOLDER "java") + set_property(TARGET wpimath_src_jar PROPERTY FOLDER "java") endif() file(GLOB_RECURSE wpimath_native_src src/main/native/cpp/*.cpp) @@ -180,39 +234,52 @@ set_property(TARGET wpimath PROPERTY FOLDER "libraries") target_compile_definitions(wpimath PRIVATE WPILIB_EXPORTS) target_compile_features(wpimath PUBLIC cxx_std_20) -if (MSVC) +if(MSVC) target_compile_options(wpimath PUBLIC /bigobj) endif() wpilib_target_warnings(wpimath) target_link_libraries(wpimath wpiutil) -if (NOT USE_SYSTEM_EIGEN) - install(DIRECTORY src/main/native/thirdparty/eigen/include/ DESTINATION "${include_dest}/wpimath") - target_include_directories(wpimath SYSTEM PUBLIC - $ - $) +if(NOT USE_SYSTEM_EIGEN) + install( + DIRECTORY src/main/native/thirdparty/eigen/include/ + DESTINATION "${include_dest}/wpimath" + ) + target_include_directories( + wpimath + SYSTEM + PUBLIC + $ + $ + ) else() find_package(Eigen3 CONFIG REQUIRED) - target_link_libraries (wpimath Eigen3::Eigen) + target_link_libraries(wpimath Eigen3::Eigen) endif() install(DIRECTORY src/main/native/thirdparty/gcem/include/ DESTINATION "${include_dest}/wpimath") -target_include_directories(wpimath SYSTEM PUBLIC - $) +target_include_directories( + wpimath + SYSTEM + PUBLIC $ +) install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpimath") -target_include_directories(wpimath PUBLIC - $ - $ - $) +target_include_directories( + wpimath + PUBLIC + $ + $ + $ +) install(TARGETS wpimath EXPORT wpimath) -configure_file(wpimath-config.cmake.in ${WPILIB_BINARY_DIR}/wpimath-config.cmake ) +configure_file(wpimath-config.cmake.in ${WPILIB_BINARY_DIR}/wpimath-config.cmake) install(FILES ${WPILIB_BINARY_DIR}/wpimath-config.cmake DESTINATION share/wpimath) install(EXPORT wpimath DESTINATION share/wpimath) -if (WITH_TESTS) +if(WITH_TESTS) wpilib_add_test(wpimath src/test/native/cpp) target_include_directories(wpimath_test PRIVATE src/test/native/include) target_link_libraries(wpimath_test wpimath gmock_main) diff --git a/wpinet/CMakeLists.txt b/wpinet/CMakeLists.txt index 9729334a26..12763b16e1 100644 --- a/wpinet/CMakeLists.txt +++ b/wpinet/CMakeLists.txt @@ -8,63 +8,75 @@ include(AddTest) file(GLOB wpinet_jni_src src/main/native/cpp/jni/WPINetJNI.cpp) # Java bindings -if (WITH_JAVA) - find_package(Java REQUIRED) - find_package(JNI REQUIRED) - include(UseJava) - set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") +if(WITH_JAVA) + find_package(Java REQUIRED) + find_package(JNI REQUIRED) + include(UseJava) + set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") - set(CMAKE_JNI_TARGET true) + set(CMAKE_JNI_TARGET true) - file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) + file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) - add_jar(wpinet_jar ${JAVA_SOURCES} INCLUDE_JARS wpiutil_jar OUTPUT_NAME wpinet GENERATE_NATIVE_HEADERS wpinet_jni_headers) + add_jar( + wpinet_jar + ${JAVA_SOURCES} + INCLUDE_JARS wpiutil_jar + OUTPUT_NAME wpinet + GENERATE_NATIVE_HEADERS wpinet_jni_headers + ) - get_property(WPINET_JAR_FILE TARGET wpinet_jar PROPERTY JAR_FILE) - install(FILES ${WPINET_JAR_FILE} DESTINATION "${java_lib_dest}") + get_property(WPINET_JAR_FILE TARGET wpinet_jar PROPERTY JAR_FILE) + install(FILES ${WPINET_JAR_FILE} DESTINATION "${java_lib_dest}") - set_property(TARGET wpinet_jar PROPERTY FOLDER "java") + set_property(TARGET wpinet_jar PROPERTY FOLDER "java") - add_library(wpinetjni ${wpinet_jni_src}) - wpilib_target_warnings(wpinetjni) - target_link_libraries(wpinetjni PUBLIC wpinet) + add_library(wpinetjni ${wpinet_jni_src}) + wpilib_target_warnings(wpinetjni) + target_link_libraries(wpinetjni PUBLIC wpinet) - set_property(TARGET wpinetjni PROPERTY FOLDER "libraries") + set_property(TARGET wpinetjni PROPERTY FOLDER "libraries") - target_link_libraries(wpinetjni PRIVATE wpinet_jni_headers) - add_dependencies(wpinetjni wpinet_jar) - - install(TARGETS wpinetjni EXPORT wpinetjni) + target_link_libraries(wpinetjni PRIVATE wpinet_jni_headers) + add_dependencies(wpinetjni wpinet_jar) + install(TARGETS wpinetjni EXPORT wpinetjni) endif() -if (WITH_JAVA_SOURCE) - find_package(Java REQUIRED) - include(UseJava) - file(GLOB WPINET_SOURCES src/main/java/edu/wpi/first/net/*.java) - add_jar(wpinet_src_jar - RESOURCES NAMESPACE "edu/wpi/first/net" ${WPINET_SOURCES} - OUTPUT_NAME wpinet-sources) +if(WITH_JAVA_SOURCE) + find_package(Java REQUIRED) + include(UseJava) + file(GLOB WPINET_SOURCES src/main/java/edu/wpi/first/net/*.java) + add_jar( + wpinet_src_jar + RESOURCES + NAMESPACE "edu/wpi/first/net" ${WPINET_SOURCES} + OUTPUT_NAME wpinet-sources + ) - get_property(WPINET_SRC_JAR_FILE TARGET wpinet_src_jar PROPERTY JAR_FILE) - install(FILES ${WPINET_SRC_JAR_FILE} DESTINATION "${java_lib_dest}") + get_property(WPINET_SRC_JAR_FILE TARGET wpinet_src_jar PROPERTY JAR_FILE) + install(FILES ${WPINET_SRC_JAR_FILE} DESTINATION "${java_lib_dest}") - set_property(TARGET wpinet_src_jar PROPERTY FOLDER "java") + set_property(TARGET wpinet_src_jar PROPERTY FOLDER "java") endif() set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) -if (NOT MSVC AND NOT APPLE) +if(NOT MSVC AND NOT APPLE) find_library(ATOMIC NAMES atomic libatomic.so.1) - if (ATOMIC) + if(ATOMIC) message(STATUS "Found libatomic: ${ATOMIC}") endif() endif() generate_resources(src/main/native/resources generated/main/cpp WPI wpi wpinet_resources_src) -file(GLOB_RECURSE wpinet_native_src src/main/native/cpp/*.cpp src/main/native/thirdparty/tcpsockets/cpp/*.cpp) +file( + GLOB_RECURSE wpinet_native_src + src/main/native/cpp/*.cpp + src/main/native/thirdparty/tcpsockets/cpp/*.cpp +) list(REMOVE_ITEM wpinet_native_src ${wpinet_jni_src}) file(GLOB_RECURSE wpinet_unix_src src/main/native/unix/*.cpp) file(GLOB_RECURSE wpinet_linux_src src/main/native/linux/*.cpp) @@ -123,17 +135,22 @@ target_compile_features(wpinet PUBLIC cxx_std_20) wpilib_target_warnings(wpinet) target_link_libraries(wpinet PUBLIC wpiutil) -if (NOT USE_SYSTEM_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 - src/main/native/thirdparty/libuv/src) - target_include_directories(wpinet PUBLIC - $ - $) + install( + DIRECTORY src/main/native/thirdparty/libuv/include/ + DESTINATION "${include_dest}/wpinet" + ) + target_include_directories(wpinet PRIVATE src/main/native/thirdparty/libuv/src) + target_include_directories( + wpinet + PUBLIC + $ + $ + ) if(NOT MSVC) target_sources(wpinet PRIVATE ${uv_unix_src}) - if (APPLE) + if(APPLE) target_sources(wpinet PRIVATE ${uv_darwin_src}) else() target_sources(wpinet PRIVATE ${uv_linux_src}) @@ -150,30 +167,39 @@ else() target_link_libraries(wpinet PUBLIC $,libuv::uv_a,libuv::uv>) endif() -if (MSVC) +if(MSVC) target_sources(wpinet PRIVATE ${wpinet_windows_src}) -else () +else() target_sources(wpinet PRIVATE ${wpinet_unix_src}) - if (APPLE) + if(APPLE) target_sources(wpinet PRIVATE ${wpinet_macos_src}) else() target_sources(wpinet PRIVATE ${wpinet_linux_src}) endif() endif() -install(DIRECTORY src/main/native/thirdparty/tcpsockets/include/ DESTINATION "${include_dest}/wpinet") -target_include_directories(wpinet PUBLIC - $ - $) +install( + DIRECTORY src/main/native/thirdparty/tcpsockets/include/ + DESTINATION "${include_dest}/wpinet" +) +target_include_directories( + wpinet + PUBLIC + $ + $ +) install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpinet") -target_include_directories(wpinet PUBLIC - $ - $) +target_include_directories( + wpinet + PUBLIC + $ + $ +) install(TARGETS wpinet EXPORT wpinet) -configure_file(wpinet-config.cmake.in ${WPILIB_BINARY_DIR}/wpinet-config.cmake ) +configure_file(wpinet-config.cmake.in ${WPILIB_BINARY_DIR}/wpinet-config.cmake) install(FILES ${WPILIB_BINARY_DIR}/wpinet-config.cmake DESTINATION share/wpinet) install(EXPORT wpinet DESTINATION share/wpinet) @@ -188,10 +214,10 @@ foreach(example ${wpinet_examples}) endif() endforeach() -if (UNIX AND NOT APPLE) - set (LIBUTIL -lutil) +if(UNIX AND NOT APPLE) + set(LIBUTIL -lutil) else() - set (LIBUTIL) + set(LIBUTIL) endif() file(GLOB netconsoleServer_src src/netconsoleServer/native/cpp/*.cpp) @@ -207,7 +233,7 @@ target_link_libraries(netconsoleTee wpinet) set_property(TARGET netconsoleServer PROPERTY FOLDER "examples") set_property(TARGET netconsoleTee PROPERTY FOLDER "examples") -if (WITH_TESTS) +if(WITH_TESTS) wpilib_add_test(wpinet src/test/native/cpp) target_include_directories(wpinet_test PRIVATE src/test/native/include src/main/native/cpp) target_link_libraries(wpinet_test wpinet ${LIBUTIL} gmock_main wpiutil_testlib) diff --git a/wpiunits/CMakeLists.txt b/wpiunits/CMakeLists.txt index bb7cb696a2..40ce217480 100644 --- a/wpiunits/CMakeLists.txt +++ b/wpiunits/CMakeLists.txt @@ -1,7 +1,7 @@ -project (wpiunits) +project(wpiunits) # Java bindings -if (WITH_JAVA) +if(WITH_JAVA) find_package(Java REQUIRED) include(UseJava) set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") diff --git a/wpiutil/CMakeLists.txt b/wpiutil/CMakeLists.txt index 783dffa389..22a93a3102 100644 --- a/wpiutil/CMakeLists.txt +++ b/wpiutil/CMakeLists.txt @@ -6,104 +6,120 @@ include(CompileWarnings) include(AddTest) include(DownloadAndCheck) -file(GLOB wpiutil_jni_src src/main/native/cpp/jni/WPIUtilJNI.cpp src/main/native/cpp/jni/DataLogJNI.cpp) +file( + GLOB wpiutil_jni_src + src/main/native/cpp/jni/WPIUtilJNI.cpp + src/main/native/cpp/jni/DataLogJNI.cpp +) # Java bindings -if (WITH_JAVA) - find_package(Java REQUIRED) - find_package(JNI REQUIRED) - include(UseJava) - set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") +if(WITH_JAVA) + find_package(Java REQUIRED) + find_package(JNI REQUIRED) + include(UseJava) + set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") - if(NOT EXISTS "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson/jackson-core-2.15.2.jar") + if(NOT EXISTS "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson/jackson-core-2.15.2.jar") set(BASE_URL "https://search.maven.org/remotecontent?filepath=") set(JAR_ROOT "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson") message(STATUS "Downloading Jackson jarfiles...") download_and_check("${BASE_URL}com/fasterxml/jackson/core/jackson-core/2.15.2/jackson-core-2.15.2.jar" - "${JAR_ROOT}/jackson-core-2.15.2.jar") + "${JAR_ROOT}/jackson-core-2.15.2.jar" + ) download_and_check("${BASE_URL}com/fasterxml/jackson/core/jackson-databind/2.15.2/jackson-databind-2.15.2.jar" - "${JAR_ROOT}/jackson-databind-2.15.2.jar") + "${JAR_ROOT}/jackson-databind-2.15.2.jar" + ) download_and_check("${BASE_URL}com/fasterxml/jackson/core/jackson-annotations/2.15.2/jackson-annotations-2.15.2.jar" - "${JAR_ROOT}/jackson-annotations-2.15.2.jar") + "${JAR_ROOT}/jackson-annotations-2.15.2.jar" + ) message(STATUS "All files downloaded.") endif() - file(GLOB JACKSON_JARS - ${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson/*.jar) + file(GLOB JACKSON_JARS ${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson/*.jar) - if(NOT EXISTS "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/quickbuf/quickbuf-runtime-1.3.2.jar") + if(NOT EXISTS "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/quickbuf/quickbuf-runtime-1.3.2.jar") set(BASE_URL "https://search.maven.org/remotecontent?filepath=") set(JAR_ROOT "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/quickbuf") message(STATUS "Downloading Quickbuf jarfile...") - file(DOWNLOAD "${BASE_URL}us/hebi/quickbuf/quickbuf-runtime/1.3.2/quickbuf-runtime-1.3.2.jar" - "${JAR_ROOT}/quickbuf-runtime-1.3.2.jar") + file( + DOWNLOAD + "${BASE_URL}us/hebi/quickbuf/quickbuf-runtime/1.3.2/quickbuf-runtime-1.3.2.jar" + "${JAR_ROOT}/quickbuf-runtime-1.3.2.jar" + ) message(STATUS "Downloaded.") - endif() + endif() - file(GLOB QUICKBUF_JAR - ${WPILIB_BINARY_DIR}/wpiutil/thirdparty/quickbuf/*.jar) + file(GLOB QUICKBUF_JAR ${WPILIB_BINARY_DIR}/wpiutil/thirdparty/quickbuf/*.jar) - set(CMAKE_JAVA_INCLUDE_PATH wpiutil.jar ${JACKSON_JARS} ${QUICKBUF_JAR}) + set(CMAKE_JAVA_INCLUDE_PATH wpiutil.jar ${JACKSON_JARS} ${QUICKBUF_JAR}) - set(CMAKE_JNI_TARGET true) + set(CMAKE_JNI_TARGET true) - file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) + file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) - add_jar(wpiutil_jar ${JAVA_SOURCES} INCLUDE_JARS ${JACKSON_JARS} ${QUICKBUF_JAR} OUTPUT_NAME wpiutil GENERATE_NATIVE_HEADERS wpiutil_jni_headers) + add_jar( + wpiutil_jar + ${JAVA_SOURCES} + INCLUDE_JARS ${JACKSON_JARS} ${QUICKBUF_JAR} + OUTPUT_NAME wpiutil + GENERATE_NATIVE_HEADERS wpiutil_jni_headers + ) - get_property(WPIUTIL_JAR_FILE TARGET wpiutil_jar PROPERTY JAR_FILE) - install(FILES ${WPIUTIL_JAR_FILE} DESTINATION "${java_lib_dest}") + get_property(WPIUTIL_JAR_FILE TARGET wpiutil_jar PROPERTY JAR_FILE) + install(FILES ${WPIUTIL_JAR_FILE} DESTINATION "${java_lib_dest}") - set_property(TARGET wpiutil_jar PROPERTY FOLDER "java") + set_property(TARGET wpiutil_jar PROPERTY FOLDER "java") - add_library(wpiutiljni ${wpiutil_jni_src}) - wpilib_target_warnings(wpiutiljni) - target_link_libraries(wpiutiljni PUBLIC wpiutil) + add_library(wpiutiljni ${wpiutil_jni_src}) + wpilib_target_warnings(wpiutiljni) + target_link_libraries(wpiutiljni PUBLIC wpiutil) - set_property(TARGET wpiutiljni PROPERTY FOLDER "libraries") + set_property(TARGET wpiutiljni PROPERTY FOLDER "libraries") - target_link_libraries(wpiutiljni PRIVATE wpiutil_jni_headers) - add_dependencies(wpiutiljni wpiutil_jar) - - install(TARGETS wpiutiljni EXPORT wpiutiljni) + target_link_libraries(wpiutiljni PRIVATE wpiutil_jni_headers) + add_dependencies(wpiutiljni wpiutil_jar) + install(TARGETS wpiutiljni EXPORT wpiutiljni) endif() -if (WITH_JAVA_SOURCE) - find_package(Java REQUIRED) - include(UseJava) - file(GLOB WPIUTIL_SOURCES src/main/java/edu/wpi/first/util/*.java) - file(GLOB WPIUTIL_CLEANUP_SOURCES src/main/java/edu/wpi/first/util/cleanup/*.java) - file(GLOB WPIUTIL_CONCURRENT_SOURCES src/main/java/edu/wpi/first/util/concurrent/*.java) - file(GLOB WPIUTIL_DATALOG_SOURCES src/main/java/edu/wpi/first/util/datalog/*.java) - file(GLOB WPIUTIL_FUNCTION_SOURCES src/main/java/edu/wpi/first/util/function/*.java) - file(GLOB WPIUTIL_SENDABLE_SOURCES src/main/java/edu/wpi/first/util/sendable/*.java) - add_jar(wpiutil_src_jar - RESOURCES NAMESPACE "edu/wpi/first/util" ${WPIUTIL_SOURCES} - NAMESPACE "edu/wpi/first/util/cleanup" ${WPIUTIL_CLEANUP_SOURCES} - NAMESPACE "edu/wpi/first/util/concurrent" ${WPIUTIL_CONCURRENT_SOURCES} - NAMESPACE "edu/wpi/first/util/datalog" ${WPIUTIL_DATALOG_SOURCES} - NAMESPACE "edu/wpi/first/util/function" ${WPIUTIL_FUNCTION_SOURCES} - NAMESPACE "edu/wpi/first/util/sendable" ${WPIUTIL_SENDABLE_SOURCES} - OUTPUT_NAME wpiutil-sources) +if(WITH_JAVA_SOURCE) + find_package(Java REQUIRED) + include(UseJava) + file(GLOB WPIUTIL_SOURCES src/main/java/edu/wpi/first/util/*.java) + file(GLOB WPIUTIL_CLEANUP_SOURCES src/main/java/edu/wpi/first/util/cleanup/*.java) + file(GLOB WPIUTIL_CONCURRENT_SOURCES src/main/java/edu/wpi/first/util/concurrent/*.java) + file(GLOB WPIUTIL_DATALOG_SOURCES src/main/java/edu/wpi/first/util/datalog/*.java) + file(GLOB WPIUTIL_FUNCTION_SOURCES src/main/java/edu/wpi/first/util/function/*.java) + file(GLOB WPIUTIL_SENDABLE_SOURCES src/main/java/edu/wpi/first/util/sendable/*.java) + add_jar( + wpiutil_src_jar + RESOURCES + NAMESPACE "edu/wpi/first/util" ${WPIUTIL_SOURCES} + NAMESPACE "edu/wpi/first/util/cleanup" ${WPIUTIL_CLEANUP_SOURCES} + NAMESPACE "edu/wpi/first/util/concurrent" ${WPIUTIL_CONCURRENT_SOURCES} + NAMESPACE "edu/wpi/first/util/datalog" ${WPIUTIL_DATALOG_SOURCES} + NAMESPACE "edu/wpi/first/util/function" ${WPIUTIL_FUNCTION_SOURCES} + NAMESPACE "edu/wpi/first/util/sendable" ${WPIUTIL_SENDABLE_SOURCES} + OUTPUT_NAME wpiutil-sources + ) - get_property(WPIUTIL_SRC_JAR_FILE TARGET wpiutil_src_jar PROPERTY JAR_FILE) - install(FILES ${WPIUTIL_SRC_JAR_FILE} DESTINATION "${java_lib_dest}") + get_property(WPIUTIL_SRC_JAR_FILE TARGET wpiutil_src_jar PROPERTY JAR_FILE) + install(FILES ${WPIUTIL_SRC_JAR_FILE} DESTINATION "${java_lib_dest}") - set_property(TARGET wpiutil_src_jar PROPERTY FOLDER "java") + set_property(TARGET wpiutil_src_jar PROPERTY FOLDER "java") endif() set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) -if (NOT MSVC AND NOT APPLE AND NOT ANDROID) +if(NOT MSVC AND NOT APPLE AND NOT ANDROID) find_library(ATOMIC NAMES atomic libatomic.so.1) - if (ATOMIC) + if(ATOMIC) message(STATUS "Found libatomic: ${ATOMIC}") else() message(STATUS "libatomic not found. If build fails, install libatomic") @@ -112,10 +128,13 @@ endif() generate_resources(src/main/native/resources generated/main/cpp WPI wpi wpiutil_resources_src) -file(GLOB_RECURSE wpiutil_native_src src/main/native/cpp/*.cpp - src/main/native/thirdparty/json/cpp/*.cpp - src/main/native/thirdparty/llvm/cpp/*.cpp - src/main/native/thirdparty/mpack/src/*.cpp) +file( + GLOB_RECURSE wpiutil_native_src + src/main/native/cpp/*.cpp + src/main/native/thirdparty/json/cpp/*.cpp + src/main/native/thirdparty/llvm/cpp/*.cpp + src/main/native/thirdparty/mpack/src/*.cpp +) list(REMOVE_ITEM wpiutil_native_src ${wpiutil_jni_src}) file(GLOB_RECURSE wpiutil_unix_src src/main/native/unix/*.cpp) file(GLOB_RECURSE wpiutil_linux_src src/main/native/linux/*.cpp) @@ -131,24 +150,32 @@ set_target_properties(wpiutil PROPERTIES DEBUG_POSTFIX "d") set_property(TARGET wpiutil PROPERTY FOLDER "libraries") target_compile_features(wpiutil PUBLIC cxx_std_20) -if (MSVC) - target_compile_options(wpiutil PUBLIC /permissive- /Zc:preprocessor /Zc:throwingNew /MP /bigobj) +if(MSVC) + target_compile_options( + wpiutil + PUBLIC /permissive- /Zc:preprocessor /Zc:throwingNew /MP /bigobj + ) target_compile_definitions(wpiutil PRIVATE -D_CRT_SECURE_NO_WARNINGS) endif() wpilib_target_warnings(wpiutil) target_link_libraries(wpiutil protobuf::libprotobuf Threads::Threads ${CMAKE_DL_LIBS}) -if (ATOMIC) +if(ATOMIC) target_link_libraries(wpiutil ${ATOMIC}) endif() - -if (NOT USE_SYSTEM_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 - $ - $) + install( + DIRECTORY src/main/native/thirdparty/fmtlib/include/ + DESTINATION "${include_dest}/wpiutil" + ) + target_include_directories( + wpiutil + PUBLIC + $ + $ + ) else() find_package(fmt CONFIG REQUIRED) target_link_libraries(wpiutil fmt::fmt) @@ -161,11 +188,11 @@ else() endif() endif() -if (MSVC) +if(MSVC) target_sources(wpiutil PRIVATE ${wpiutil_windows_src}) -else () +else() target_sources(wpiutil PRIVATE ${wpiutil_unix_src}) - if (APPLE) + if(APPLE) target_sources(wpiutil PRIVATE ${wpiutil_macos_src}) else() target_sources(wpiutil PRIVATE ${wpiutil_linux_src}) @@ -173,39 +200,57 @@ else () endif() install(DIRECTORY src/main/native/thirdparty/memory/include/ DESTINATION "${include_dest}/wpiutil") -target_include_directories(wpiutil PUBLIC - $ - $ - $) +target_include_directories( + wpiutil + PUBLIC + $ + $ + $ +) install(DIRECTORY src/main/native/thirdparty/json/include/ DESTINATION "${include_dest}/wpiutil") -target_include_directories(wpiutil PUBLIC - $ - $) +target_include_directories( + wpiutil + PUBLIC + $ + $ +) install(DIRECTORY src/main/native/thirdparty/llvm/include/ DESTINATION "${include_dest}/wpiutil") -target_include_directories(wpiutil PUBLIC - $ - $) +target_include_directories( + wpiutil + PUBLIC + $ + $ +) install(DIRECTORY src/main/native/thirdparty/mpack/include/ DESTINATION "${include_dest}/wpiutil") -target_include_directories(wpiutil PUBLIC - $ - $) +target_include_directories( + wpiutil + PUBLIC + $ + $ +) install(DIRECTORY src/main/native/thirdparty/sigslot/include/ DESTINATION "${include_dest}/wpiutil") -target_include_directories(wpiutil PUBLIC - $ - $) +target_include_directories( + wpiutil + PUBLIC + $ + $ +) install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpiutil") -target_include_directories(wpiutil PUBLIC - $ - $) +target_include_directories( + wpiutil + PUBLIC + $ + $ +) install(TARGETS wpiutil EXPORT wpiutil) -configure_file(wpiutil-config.cmake.in ${WPILIB_BINARY_DIR}/wpiutil-config.cmake ) +configure_file(wpiutil-config.cmake.in ${WPILIB_BINARY_DIR}/wpiutil-config.cmake) install(FILES ${WPILIB_BINARY_DIR}/wpiutil-config.cmake DESTINATION share/wpiutil) install(EXPORT wpiutil DESTINATION share/wpiutil) @@ -220,7 +265,7 @@ foreach(example ${wpiutil_examples}) endif() endforeach() -if (WITH_TESTS) +if(WITH_TESTS) file(GLOB_RECURSE wpiutil_testlib_src src/test/native/include/*.h) add_library(wpiutil_testlib INTERFACE ${wpiutil_test_src}) target_include_directories(wpiutil_testlib INTERFACE src/test/native/include) diff --git a/xrpVendordep/CMakeLists.txt b/xrpVendordep/CMakeLists.txt index 039d90718c..291926039f 100644 --- a/xrpVendordep/CMakeLists.txt +++ b/xrpVendordep/CMakeLists.txt @@ -4,32 +4,48 @@ include(SubDirList) include(CompileWarnings) include(AddTest) -if (WITH_JAVA) - find_package(Java REQUIRED) - include(UseJava) - set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") +if(WITH_JAVA) + find_package(Java REQUIRED) + include(UseJava) + set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") - file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) - add_jar(xrpVendordep_jar ${JAVA_SOURCES} INCLUDE_JARS hal_jar ntcore_jar cscore_jar cameraserver_jar wpimath_jar wpiunits_jar wpiutil_jar wpilibj_jar OUTPUT_NAME xrpVendordep) + file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) + add_jar( + xrpVendordep_jar + ${JAVA_SOURCES} + INCLUDE_JARS + hal_jar + ntcore_jar + cscore_jar + cameraserver_jar + wpimath_jar + wpiunits_jar + wpiutil_jar + wpilibj_jar + OUTPUT_NAME xrpVendordep + ) - get_property(xrpVendordep_JAR_FILE TARGET xrpVendordep_jar PROPERTY JAR_FILE) - install(FILES ${xrpVendordep_JAR_FILE} DESTINATION "${java_lib_dest}") + get_property(xrpVendordep_JAR_FILE TARGET xrpVendordep_jar PROPERTY JAR_FILE) + install(FILES ${xrpVendordep_JAR_FILE} DESTINATION "${java_lib_dest}") - set_property(TARGET xrpVendordep_jar PROPERTY FOLDER "java") + set_property(TARGET xrpVendordep_jar PROPERTY FOLDER "java") endif() -if (WITH_JAVA_SOURCE) - find_package(Java REQUIRED) - include(UseJava) - file(GLOB XRPVENDORDEP_SOURCES src/main/java/edu/wpi/first/wpilibj/xrp/*.java) - add_jar(xrpVendordep_src_jar - RESOURCES NAMESPACE "edu/wpi/first/wpilibj/xrp" ${XRPVENDORDEP_SOURCES} - OUTPUT_NAME xrpVendordep-sources) +if(WITH_JAVA_SOURCE) + find_package(Java REQUIRED) + include(UseJava) + file(GLOB XRPVENDORDEP_SOURCES src/main/java/edu/wpi/first/wpilibj/xrp/*.java) + add_jar( + xrpVendordep_src_jar + RESOURCES + NAMESPACE "edu/wpi/first/wpilibj/xrp" ${XRPVENDORDEP_SOURCES} + OUTPUT_NAME xrpVendordep-sources + ) - get_property(xrpVendordep_src_JAR_FILE TARGET xrpVendordep_src_jar PROPERTY JAR_FILE) - install(FILES ${xrpVendordep_src_JAR_FILE} DESTINATION "${java_lib_dest}") + get_property(xrpVendordep_src_JAR_FILE TARGET xrpVendordep_src_jar PROPERTY JAR_FILE) + install(FILES ${xrpVendordep_src_JAR_FILE} DESTINATION "${java_lib_dest}") - set_property(TARGET xrpVendordep_src_jar PROPERTY FOLDER "java") + set_property(TARGET xrpVendordep_src_jar PROPERTY FOLDER "java") endif() file(GLOB_RECURSE xrpVendordep_native_src src/main/native/cpp/*.cpp) @@ -41,9 +57,12 @@ target_compile_features(xrpVendordep PUBLIC cxx_std_20) wpilib_target_warnings(xrpVendordep) target_link_libraries(xrpVendordep wpilibc) -target_include_directories(xrpVendordep PUBLIC - $ - $) +target_include_directories( + xrpVendordep + PUBLIC + $ + $ +) install(TARGETS xrpVendordep EXPORT xrpVendordep DESTINATION "${main_lib_dest}") install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/xrpVendordep") @@ -52,8 +71,8 @@ configure_file(xrpVendordep-config.cmake.in ${WPILIB_BINARY_DIR}/xrpVendordep-co install(FILES ${WPILIB_BINARY_DIR}/xrpVendordep-config.cmake DESTINATION share/xrpVendordep) install(EXPORT xrpVendordep DESTINATION share/xrpVendordep) - if (WITH_TESTS) - wpilib_add_test(xrpVendordep src/test/native/cpp) - target_include_directories(xrpVendordep_test PRIVATE src/test/native/include) - target_link_libraries(xrpVendordep_test xrpVendordep gmock_main) - endif() +if(WITH_TESTS) + wpilib_add_test(xrpVendordep src/test/native/cpp) + target_include_directories(xrpVendordep_test PRIVATE src/test/native/include) + target_link_libraries(xrpVendordep_test xrpVendordep gmock_main) +endif()