From 9d86624c00ede639c3fe3b69c7c49f52d6ef0e6a Mon Sep 17 00:00:00 2001 From: Tyler Veness Date: Mon, 28 Aug 2023 15:06:51 -0700 Subject: [PATCH] [build] Fix CMake configure warnings (#5577) FetchContent requires CMake 3.11 (released Mar 28, 2018). Fixed this warning: ``` CMake Warning (dev) at /usr/share/cmake/Modules/FetchContent.cmake:1316 (message): The DOWNLOAD_EXTRACT_TIMESTAMP option was not given and policy CMP0135 is not set. The policy's OLD behavior will be used. When using a URL download, the timestamps of extracted files should preferably be that of the time of extraction, otherwise code that depends on the extracted contents might not be rebuilt if the URL changes. The OLD behavior preserves the timestamps from the archive instead, but this is usually not what you want. Update your project to the NEW behavior or specify the DOWNLOAD_EXTRACT_TIMESTAMP option with a value of true to avoid this robustness issue. Call Stack (most recent call first): imgui/CMakeLists.txt:23 (FetchContent_Declare) ``` --- CMakeLists.txt | 5 ++++- README-CMAKE.md | 2 +- cmake/toolchains/gnu.toolchain.cmake | 2 +- cscore/CMakeLists.txt | 14 ++------------ hal/CMakeLists.txt | 14 ++------------ ntcore/CMakeLists.txt | 14 ++------------ wpimath/CMakeLists.txt | 14 ++------------ wpinet/CMakeLists.txt | 14 ++------------ wpiutil/CMakeLists.txt | 14 ++------------ 9 files changed, 18 insertions(+), 75 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e676d47fa..012bcb7ccd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,10 +11,13 @@ if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") set(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION 10.0.18362.0 CACHE STRING INTERNAL FORCE) endif() -cmake_minimum_required(VERSION 3.3.0) +cmake_minimum_required(VERSION 3.11) 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 +cmake_policy(SET CMP0135 NEW) + message(STATUS "Platform version: ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}") set(WPILIB_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) diff --git a/README-CMAKE.md b/README-CMAKE.md index 6a10d5b96c..9d92a8a127 100644 --- a/README-CMAKE.md +++ b/README-CMAKE.md @@ -93,7 +93,7 @@ Using the libraries from C++ is the easiest way to use the built libraries. To do so, create a new folder to contain your project. Add the following code below to a `CMakeLists.txt` file in that directory. ``` -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.11) project(vision_app) # Project Name Here find_package(wpilib REQUIRED) diff --git a/cmake/toolchains/gnu.toolchain.cmake b/cmake/toolchains/gnu.toolchain.cmake index b21dad213d..dbddbd0dc4 100644 --- a/cmake/toolchains/gnu.toolchain.cmake +++ b/cmake/toolchains/gnu.toolchain.cmake @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.3.0) +cmake_minimum_required(VERSION 3.11) # load settings in case of "try compile" set(TOOLCHAIN_CONFIG_FILE "${WPILIB_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/toolchain.config.cmake") diff --git a/cscore/CMakeLists.txt b/cscore/CMakeLists.txt index af0d803429..81cdd4ec50 100644 --- a/cscore/CMakeLists.txt +++ b/cscore/CMakeLists.txt @@ -102,12 +102,7 @@ if (WITH_JAVA) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) set(CMAKE_JNI_TARGET true) - if(${CMAKE_VERSION} VERSION_LESS "3.11.0") - set(CMAKE_JAVA_COMPILE_FLAGS "-h" "${CMAKE_CURRENT_BINARY_DIR}/jniheaders") - add_jar(cscore_jar ${JAVA_SOURCES} INCLUDE_JARS wpiutil_jar ${OPENCV_JAR_FILE} OUTPUT_NAME cscore) - else() - add_jar(cscore_jar ${JAVA_SOURCES} INCLUDE_JARS wpiutil_jar ${OPENCV_JAR_FILE} OUTPUT_NAME cscore GENERATE_NATIVE_HEADERS cscore_jni_headers) - endif() + 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}") @@ -131,12 +126,7 @@ if (WITH_JAVA) set_property(TARGET cscorejni PROPERTY FOLDER "libraries") - if(${CMAKE_VERSION} VERSION_LESS "3.11.0") - target_include_directories(cscorejni PRIVATE ${JNI_INCLUDE_DIRS}) - target_include_directories(cscorejni PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/jniheaders") - else() - target_link_libraries(cscorejni PRIVATE cscore_jni_headers) - endif() + target_link_libraries(cscorejni PRIVATE cscore_jni_headers) add_dependencies(cscorejni cscore_jar) if (MSVC) diff --git a/hal/CMakeLists.txt b/hal/CMakeLists.txt index fae74aa5f2..45c55675bf 100644 --- a/hal/CMakeLists.txt +++ b/hal/CMakeLists.txt @@ -85,12 +85,7 @@ if (WITH_JAVA) src/main/java/*.java) set(CMAKE_JNI_TARGET true) - if(${CMAKE_VERSION} VERSION_LESS "3.11.0") - set(CMAKE_JAVA_COMPILE_FLAGS "-h" "${CMAKE_CURRENT_BINARY_DIR}/jniheaders") - add_jar(hal_jar ${JAVA_SOURCES} INCLUDE_JARS wpiutil_jar OUTPUT_NAME wpiHal) - else() - add_jar(hal_jar ${JAVA_SOURCES} INCLUDE_JARS wpiutil_jar OUTPUT_NAME wpiHal GENERATE_NATIVE_HEADERS hal_jni_headers) - endif() + add_jar(hal_jar ${JAVA_SOURCES} 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}") @@ -110,12 +105,7 @@ if (WITH_JAVA) set_property(TARGET haljni PROPERTY FOLDER "libraries") - if(${CMAKE_VERSION} VERSION_LESS "3.11.0") - target_include_directories(haljni PRIVATE ${JNI_INCLUDE_DIRS}) - target_include_directories(haljni PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/jniheaders") - else() - target_link_libraries(haljni PRIVATE hal_jni_headers) - endif() + target_link_libraries(haljni PRIVATE hal_jni_headers) add_dependencies(haljni hal_jar) if (MSVC) diff --git a/ntcore/CMakeLists.txt b/ntcore/CMakeLists.txt index cd4df28c61..cd5b3fb7d5 100644 --- a/ntcore/CMakeLists.txt +++ b/ntcore/CMakeLists.txt @@ -61,12 +61,7 @@ if (WITH_JAVA) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java ${WPILIB_BINARY_DIR}/ntcore/generated/*.java) set(CMAKE_JNI_TARGET true) - if(${CMAKE_VERSION} VERSION_LESS "3.11.0") - set(CMAKE_JAVA_COMPILE_FLAGS "-h" "${CMAKE_CURRENT_BINARY_DIR}/jniheaders") - add_jar(ntcore_jar ${JAVA_SOURCES} INCLUDE_JARS wpiutil_jar OUTPUT_NAME ntcore) - else() - add_jar(ntcore_jar ${JAVA_SOURCES} INCLUDE_JARS wpiutil_jar OUTPUT_NAME ntcore GENERATE_NATIVE_HEADERS ntcore_jni_headers) - endif() + 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}") @@ -83,12 +78,7 @@ if (WITH_JAVA) install(TARGETS ntcorejni RUNTIME DESTINATION "${jni_lib_dest}" COMPONENT Runtime) endif() - if(${CMAKE_VERSION} VERSION_LESS "3.11.0") - target_include_directories(ntcorejni PRIVATE ${JNI_INCLUDE_DIRS}) - target_include_directories(ntcorejni PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/jniheaders") - else() - target_link_libraries(ntcorejni PRIVATE ntcore_jni_headers) - endif() + target_link_libraries(ntcorejni PRIVATE ntcore_jni_headers) add_dependencies(ntcorejni ntcore_jar) install(TARGETS ntcorejni EXPORT ntcorejni DESTINATION "${main_lib_dest}") diff --git a/wpimath/CMakeLists.txt b/wpimath/CMakeLists.txt index 9648af2b9f..01fd5d0f8e 100644 --- a/wpimath/CMakeLists.txt +++ b/wpimath/CMakeLists.txt @@ -55,12 +55,7 @@ if (WITH_JAVA) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java ${WPILIB_BINARY_DIR}/wpimath/generated/*.java) - if(${CMAKE_VERSION} VERSION_LESS "3.11.0") - set(CMAKE_JAVA_COMPILE_FLAGS "-h" "${CMAKE_CURRENT_BINARY_DIR}/jniheaders") - add_jar(wpimath_jar ${JAVA_SOURCES} INCLUDE_JARS ${EJML_JARS} wpiutil_jar OUTPUT_NAME wpimath) - else() - add_jar(wpimath_jar ${JAVA_SOURCES} INCLUDE_JARS ${EJML_JARS} wpiutil_jar OUTPUT_NAME wpimath GENERATE_NATIVE_HEADERS wpimath_jni_headers) - endif() + add_jar(wpimath_jar ${JAVA_SOURCES} INCLUDE_JARS ${EJML_JARS} wpiutil_jar OUTPUT_NAME wpimath GENERATE_NATIVE_HEADERS wpimath_jni_headers) get_property(WPIMATH_JAR_FILE TARGET wpimath_jar PROPERTY JAR_FILE) install(FILES ${WPIMATH_JAR_FILE} DESTINATION "${java_lib_dest}") @@ -73,12 +68,7 @@ if (WITH_JAVA) set_property(TARGET wpimathjni PROPERTY FOLDER "libraries") - if(${CMAKE_VERSION} VERSION_LESS "3.11.0") - target_include_directories(wpimathjni PRIVATE ${JNI_INCLUDE_DIRS}) - target_include_directories(wpimathjni PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/jniheaders") - else() - target_link_libraries(wpimathjni PRIVATE wpimath_jni_headers) - endif() + target_link_libraries(wpimathjni PRIVATE wpimath_jni_headers) add_dependencies(wpimathjni wpimath_jar) if (MSVC) diff --git a/wpinet/CMakeLists.txt b/wpinet/CMakeLists.txt index a11ca98481..6d92a56402 100644 --- a/wpinet/CMakeLists.txt +++ b/wpinet/CMakeLists.txt @@ -18,12 +18,7 @@ if (WITH_JAVA) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) - if(${CMAKE_VERSION} VERSION_LESS "3.11.0") - set(CMAKE_JAVA_COMPILE_FLAGS "-h" "${CMAKE_CURRENT_BINARY_DIR}/jniheaders") - add_jar(wpinet_jar ${JAVA_SOURCES} INCLUDE_JARS wpiutil_jar OUTPUT_NAME wpinet) - else() - add_jar(wpinet_jar ${JAVA_SOURCES} INCLUDE_JARS wpiutil_jar OUTPUT_NAME wpinet GENERATE_NATIVE_HEADERS wpinet_jni_headers) - endif() + 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}") @@ -36,12 +31,7 @@ if (WITH_JAVA) set_property(TARGET wpinetjni PROPERTY FOLDER "libraries") - if(${CMAKE_VERSION} VERSION_LESS "3.11.0") - target_include_directories(wpinetjni PRIVATE ${JNI_INCLUDE_DIRS}) - target_include_directories(wpinetjni PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/jniheaders") - else() - target_link_libraries(wpinetjni PRIVATE wpinet_jni_headers) - endif() + target_link_libraries(wpinetjni PRIVATE wpinet_jni_headers) add_dependencies(wpinetjni wpinet_jar) if (MSVC) diff --git a/wpiutil/CMakeLists.txt b/wpiutil/CMakeLists.txt index 8deec27abc..5db2b4c658 100644 --- a/wpiutil/CMakeLists.txt +++ b/wpiutil/CMakeLists.txt @@ -39,12 +39,7 @@ if (WITH_JAVA) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) - if(${CMAKE_VERSION} VERSION_LESS "3.11.0") - set(CMAKE_JAVA_COMPILE_FLAGS "-h" "${CMAKE_CURRENT_BINARY_DIR}/jniheaders") - add_jar(wpiutil_jar ${JAVA_SOURCES} INCLUDE_JARS ${JACKSON_JARS} OUTPUT_NAME wpiutil) - else() - add_jar(wpiutil_jar ${JAVA_SOURCES} INCLUDE_JARS ${JACKSON_JARS} OUTPUT_NAME wpiutil GENERATE_NATIVE_HEADERS wpiutil_jni_headers) - endif() + add_jar(wpiutil_jar ${JAVA_SOURCES} INCLUDE_JARS ${JACKSON_JARS} 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}") @@ -57,12 +52,7 @@ if (WITH_JAVA) set_property(TARGET wpiutiljni PROPERTY FOLDER "libraries") - if(${CMAKE_VERSION} VERSION_LESS "3.11.0") - target_include_directories(wpiutiljni PRIVATE ${JNI_INCLUDE_DIRS}) - target_include_directories(wpiutiljni PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/jniheaders") - else() - target_link_libraries(wpiutiljni PRIVATE wpiutil_jni_headers) - endif() + target_link_libraries(wpiutiljni PRIVATE wpiutil_jni_headers) add_dependencies(wpiutiljni wpiutil_jar) if (MSVC)