mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
[build] Apply a formatter for CMake files (#5973)
This commit is contained in:
6
.gersemirc
Normal file
6
.gersemirc
Normal file
@@ -0,0 +1,6 @@
|
||||
color: false
|
||||
definitions: []
|
||||
line_length: 100
|
||||
list_expansion: favour-inlining
|
||||
quiet: false
|
||||
unsafe: false
|
||||
2
.github/workflows/lint-format.yml
vendored
2
.github/workflows/lint-format.yml
vendored
@@ -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
|
||||
|
||||
@@ -10,6 +10,7 @@ cppSrcFileInclude {
|
||||
}
|
||||
|
||||
modifiableFileExclude {
|
||||
cmake/toolchains/
|
||||
\.patch$
|
||||
gradlew
|
||||
}
|
||||
|
||||
266
CMakeLists.txt
266
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)
|
||||
|
||||
@@ -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
|
||||
$<BUILD_INTERFACE:${apriltaglib_SOURCE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/apriltag>)
|
||||
target_include_directories(
|
||||
apriltag
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${apriltaglib_SOURCE_DIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/apriltag>
|
||||
)
|
||||
|
||||
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)
|
||||
|
||||
@@ -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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/cameraserver>)
|
||||
target_include_directories(
|
||||
cameraserver
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/cameraserver>
|
||||
)
|
||||
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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 $<$<COMPILE_LANGUAGE:CXX>:-Wno-deprecated-enum-enum-conversion>)
|
||||
target_compile_options(
|
||||
${target}
|
||||
PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-Wno-deprecated-enum-enum-conversion>
|
||||
)
|
||||
elseif(UNIX AND APPLE)
|
||||
target_compile_options(${target} PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-Wno-deprecated-anon-enum-enum-conversion>)
|
||||
target_compile_options(
|
||||
${target}
|
||||
PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-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 $<$<COMPILE_LANGUAGE:C>:-Wno-fixed-enum-extension>)
|
||||
target_compile_options(${target} PRIVATE $<$<COMPILE_LANGUAGE:C>:-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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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 <stddef.h>\n#include <string_view>\nextern \"C\" {\nstatic const unsigned char contents[] = {")
|
||||
file(
|
||||
WRITE
|
||||
"${output}"
|
||||
"#include <stddef.h>\n#include <string_view>\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<const char*>(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<const char*>(contents), ${fileSize});\n}\n"
|
||||
)
|
||||
if(NOT namespace STREQUAL "")
|
||||
file(APPEND "${output}" "}\n")
|
||||
endif()
|
||||
|
||||
@@ -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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/cscore>)
|
||||
target_include_directories(
|
||||
cscore
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/cscore>
|
||||
)
|
||||
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()
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/fields>)
|
||||
target_include_directories(
|
||||
fieldImages
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/fields>
|
||||
)
|
||||
|
||||
@@ -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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/lib/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/glass>)
|
||||
target_include_directories(
|
||||
libglass
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/lib/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/glass>
|
||||
)
|
||||
|
||||
install(TARGETS libglass EXPORT libglass)
|
||||
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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/libnt/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/glass>)
|
||||
target_include_directories(
|
||||
libglassnt
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/libnt/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/glass>
|
||||
)
|
||||
|
||||
install(TARGETS libglassnt EXPORT libglassnt)
|
||||
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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/hal>)
|
||||
target_include_directories(
|
||||
hal
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/hal>
|
||||
)
|
||||
|
||||
target_include_directories(hal PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/gen>
|
||||
$<INSTALL_INTERFACE:${include_dest}/hal>)
|
||||
target_include_directories(
|
||||
hal
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/gen>
|
||||
$<INSTALL_INTERFACE:${include_dest}/hal>
|
||||
)
|
||||
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()
|
||||
|
||||
@@ -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
|
||||
"$<BUILD_INTERFACE:${imgui_SOURCE_DIR}>"
|
||||
"$<BUILD_INTERFACE:${imgui_SOURCE_DIR}/misc/cpp>"
|
||||
"$<BUILD_INTERFACE:${implot_SOURCE_DIR}>"
|
||||
"$<BUILD_INTERFACE:${imgui_SOURCE_DIR}/backends>"
|
||||
"$<BUILD_INTERFACE:${gl3w_BINARY_DIR}/include>"
|
||||
"$<BUILD_INTERFACE:${fonts_SOURCE_DIR}/include>"
|
||||
"$<BUILD_INTERFACE:${stb_SOURCE_DIR}>"
|
||||
PRIVATE
|
||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>"
|
||||
"$<BUILD_INTERFACE:${imgui_SOURCE_DIR}>"
|
||||
"$<BUILD_INTERFACE:${imgui_SOURCE_DIR}/misc/cpp>"
|
||||
"$<BUILD_INTERFACE:${implot_SOURCE_DIR}>"
|
||||
"$<BUILD_INTERFACE:${imgui_SOURCE_DIR}/backends>"
|
||||
"$<BUILD_INTERFACE:${gl3w_BINARY_DIR}/include>"
|
||||
"$<BUILD_INTERFACE:${fonts_SOURCE_DIR}/include>"
|
||||
"$<BUILD_INTERFACE:${stb_SOURCE_DIR}>"
|
||||
PRIVATE "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>"
|
||||
)
|
||||
|
||||
set_property(TARGET imgui PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
@@ -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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<BUILD_INTERFACE:${WPILIB_BINARY_DIR}/ntcore/generated/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/ntcore>)
|
||||
target_include_directories(
|
||||
ntcore
|
||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/cpp
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<BUILD_INTERFACE:${WPILIB_BINARY_DIR}/ntcore/generated/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/ntcore>
|
||||
)
|
||||
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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/romiVendordep>)
|
||||
target_include_directories(
|
||||
romiVendordep
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/romiVendordep>
|
||||
)
|
||||
|
||||
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()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
if (WITH_GUI)
|
||||
if(WITH_GUI)
|
||||
add_subdirectory(halsim_gui)
|
||||
endif()
|
||||
add_subdirectory(halsim_ds_socket)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpigui>)
|
||||
target_include_directories(
|
||||
wpigui
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpigui>
|
||||
)
|
||||
|
||||
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})
|
||||
|
||||
@@ -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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpilibNewCommands>)
|
||||
target_include_directories(
|
||||
wpilibNewCommands
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpilibNewCommands>
|
||||
)
|
||||
|
||||
install(TARGETS wpilibNewCommands EXPORT wpilibNewCommands)
|
||||
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()
|
||||
|
||||
@@ -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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpilibc>)
|
||||
target_include_directories(
|
||||
wpilibc
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpilibc>
|
||||
)
|
||||
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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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}")
|
||||
|
||||
@@ -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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/eigen/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpimath>)
|
||||
if(NOT USE_SYSTEM_EIGEN)
|
||||
install(
|
||||
DIRECTORY src/main/native/thirdparty/eigen/include/
|
||||
DESTINATION "${include_dest}/wpimath"
|
||||
)
|
||||
target_include_directories(
|
||||
wpimath
|
||||
SYSTEM
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/eigen/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpimath>
|
||||
)
|
||||
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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/gcem/include>)
|
||||
target_include_directories(
|
||||
wpimath
|
||||
SYSTEM
|
||||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/gcem/include>
|
||||
)
|
||||
|
||||
install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpimath")
|
||||
target_include_directories(wpimath PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/protobuf>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpimath>)
|
||||
target_include_directories(
|
||||
wpimath
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/protobuf>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpimath>
|
||||
)
|
||||
|
||||
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)
|
||||
|
||||
@@ -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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/libuv/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpinet>)
|
||||
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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/libuv/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpinet>
|
||||
)
|
||||
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 $<IF:$<TARGET_EXISTS:libuv::uv_a>,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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/tcpsockets/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpinet>)
|
||||
install(
|
||||
DIRECTORY src/main/native/thirdparty/tcpsockets/include/
|
||||
DESTINATION "${include_dest}/wpinet"
|
||||
)
|
||||
target_include_directories(
|
||||
wpinet
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/tcpsockets/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpinet>
|
||||
)
|
||||
|
||||
install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpinet")
|
||||
target_include_directories(wpinet PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpinet>)
|
||||
target_include_directories(
|
||||
wpinet
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpinet>
|
||||
)
|
||||
|
||||
install(TARGETS wpinet EXPORT wpinet)
|
||||
|
||||
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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/fmtlib/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpiutil>)
|
||||
install(
|
||||
DIRECTORY src/main/native/thirdparty/fmtlib/include/
|
||||
DESTINATION "${include_dest}/wpiutil"
|
||||
)
|
||||
target_include_directories(
|
||||
wpiutil
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/fmtlib/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpiutil>
|
||||
)
|
||||
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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/memory/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpiutil>)
|
||||
target_include_directories(
|
||||
wpiutil
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/memory/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpiutil>
|
||||
)
|
||||
|
||||
install(DIRECTORY src/main/native/thirdparty/json/include/ DESTINATION "${include_dest}/wpiutil")
|
||||
target_include_directories(wpiutil PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/json/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpiutil>)
|
||||
target_include_directories(
|
||||
wpiutil
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/json/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpiutil>
|
||||
)
|
||||
|
||||
install(DIRECTORY src/main/native/thirdparty/llvm/include/ DESTINATION "${include_dest}/wpiutil")
|
||||
target_include_directories(wpiutil PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/llvm/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpiutil>)
|
||||
target_include_directories(
|
||||
wpiutil
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/llvm/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpiutil>
|
||||
)
|
||||
|
||||
install(DIRECTORY src/main/native/thirdparty/mpack/include/ DESTINATION "${include_dest}/wpiutil")
|
||||
target_include_directories(wpiutil PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/mpack/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpiutil>)
|
||||
target_include_directories(
|
||||
wpiutil
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/mpack/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpiutil>
|
||||
)
|
||||
|
||||
install(DIRECTORY src/main/native/thirdparty/sigslot/include/ DESTINATION "${include_dest}/wpiutil")
|
||||
target_include_directories(wpiutil PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/sigslot/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpiutil>)
|
||||
target_include_directories(
|
||||
wpiutil
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/thirdparty/sigslot/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpiutil>
|
||||
)
|
||||
|
||||
install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpiutil")
|
||||
target_include_directories(wpiutil PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpiutil>)
|
||||
target_include_directories(
|
||||
wpiutil
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/wpiutil>
|
||||
)
|
||||
|
||||
install(TARGETS wpiutil EXPORT wpiutil)
|
||||
|
||||
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)
|
||||
|
||||
@@ -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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/xrpVendordep>)
|
||||
target_include_directories(
|
||||
xrpVendordep
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/xrpVendordep>
|
||||
)
|
||||
|
||||
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()
|
||||
|
||||
Reference in New Issue
Block a user