diff --git a/CMakeLists.txt b/CMakeLists.txt index 98bb9a3903..a58fb46b0e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ # Disable in-source builds to prevent source tree corruption. -if(" ${CMAKE_SOURCE_DIR}" STREQUAL " ${CMAKE_BINARY_DIR}") +if(" ${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL " ${CMAKE_CURRENT_BINARY_DIR}") message(FATAL_ERROR " FATAL: In-source builds are not allowed. You should create a separate directory for build files. @@ -9,17 +9,19 @@ endif() project(allwpilib) cmake_minimum_required(VERSION 3.3.0) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") + +set(WPILIB_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) INCLUDE(CPack) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) set_property(GLOBAL PROPERTY USE_FOLDERS ON) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) -set(CMAKE_JAVA_TARGET_OUTPUT_DIR ${CMAKE_BINARY_DIR}/jar) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${WPILIB_BINARY_DIR}/lib) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${WPILIB_BINARY_DIR}/lib) +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) @@ -192,5 +194,5 @@ if (WITH_SIMULATION_MODULES AND NOT WITH_EXTERNAL_HAL) add_subdirectory(simulation) endif() -configure_file(wpilib-config.cmake.in ${CMAKE_BINARY_DIR}/wpilib-config.cmake ) -install(FILES ${CMAKE_BINARY_DIR}/wpilib-config.cmake DESTINATION ${wpilib_config_dir}) +configure_file(wpilib-config.cmake.in ${WPILIB_BINARY_DIR}/wpilib-config.cmake ) +install(FILES ${WPILIB_BINARY_DIR}/wpilib-config.cmake DESTINATION ${wpilib_config_dir}) diff --git a/cameraserver/CMakeLists.txt b/cameraserver/CMakeLists.txt index 33e19d0dd8..aa8e65513a 100644 --- a/cameraserver/CMakeLists.txt +++ b/cameraserver/CMakeLists.txt @@ -53,8 +53,8 @@ else() set (cameraserver_config_dir share/cameraserver) endif() -configure_file(cameraserver-config.cmake.in ${CMAKE_BINARY_DIR}/cameraserver-config.cmake ) -install(FILES ${CMAKE_BINARY_DIR}/cameraserver-config.cmake DESTINATION ${cameraserver_config_dir}) +configure_file(cameraserver-config.cmake.in ${WPILIB_BINARY_DIR}/cameraserver-config.cmake ) +install(FILES ${WPILIB_BINARY_DIR}/cameraserver-config.cmake DESTINATION ${cameraserver_config_dir}) install(EXPORT cameraserver DESTINATION ${cameraserver_config_dir}) file(GLOB multiCameraServer_src multiCameraServer/src/main/native/cpp/*.cpp) diff --git a/cmake/toolchains/gnu.toolchain.cmake b/cmake/toolchains/gnu.toolchain.cmake index cba08e7fbb..95156a5ad5 100644 --- a/cmake/toolchains/gnu.toolchain.cmake +++ b/cmake/toolchains/gnu.toolchain.cmake @@ -1,10 +1,10 @@ cmake_minimum_required(VERSION 2.8) # load settings in case of "try compile" -set(TOOLCHAIN_CONFIG_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/toolchain.config.cmake") +set(TOOLCHAIN_CONFIG_FILE "${WPILIB_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/toolchain.config.cmake") get_property(__IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE) if(__IN_TRY_COMPILE) - include("${CMAKE_CURRENT_SOURCE_DIR}/../toolchain.config.cmake" OPTIONAL) # CMAKE_BINARY_DIR is different + include("${CMAKE_CURRENT_SOURCE_DIR}/../toolchain.config.cmake" OPTIONAL) # WPILIB_BINARY_DIR is different macro(toolchain_save_config) # nothing endmacro() diff --git a/cscore/CMakeLists.txt b/cscore/CMakeLists.txt index 98f6d7e2a1..cc24add830 100644 --- a/cscore/CMakeLists.txt +++ b/cscore/CMakeLists.txt @@ -46,8 +46,8 @@ else() set (cscore_config_dir share/cscore) endif() -configure_file(cscore-config.cmake.in ${CMAKE_BINARY_DIR}/cscore-config.cmake ) -install(FILES ${CMAKE_BINARY_DIR}/cscore-config.cmake DESTINATION ${cscore_config_dir}) +configure_file(cscore-config.cmake.in ${WPILIB_BINARY_DIR}/cscore-config.cmake ) +install(FILES ${WPILIB_BINARY_DIR}/cscore-config.cmake DESTINATION ${cscore_config_dir}) install(EXPORT cscore DESTINATION ${cscore_config_dir}) SUBDIR_LIST(cscore_examples "${CMAKE_CURRENT_SOURCE_DIR}/examples") diff --git a/hal/CMakeLists.txt b/hal/CMakeLists.txt index 2e99064189..8bd764ffa2 100644 --- a/hal/CMakeLists.txt +++ b/hal/CMakeLists.txt @@ -65,8 +65,8 @@ else() set (hal_config_dir share/hal) endif() -configure_file(hal-config.cmake.in ${CMAKE_BINARY_DIR}/hal-config.cmake ) -install(FILES ${CMAKE_BINARY_DIR}/hal-config.cmake DESTINATION ${hal_config_dir}) +configure_file(hal-config.cmake.in ${WPILIB_BINARY_DIR}/hal-config.cmake ) +install(FILES ${WPILIB_BINARY_DIR}/hal-config.cmake DESTINATION ${hal_config_dir}) install(EXPORT hal DESTINATION ${hal_config_dir}) # Java bindings diff --git a/ntcore/CMakeLists.txt b/ntcore/CMakeLists.txt index e095fa9901..160e09af75 100644 --- a/ntcore/CMakeLists.txt +++ b/ntcore/CMakeLists.txt @@ -26,8 +26,8 @@ else() set (ntcore_config_dir share/ntcore) endif() -configure_file(ntcore-config.cmake.in ${CMAKE_BINARY_DIR}/ntcore-config.cmake ) -install(FILES ${CMAKE_BINARY_DIR}/ntcore-config.cmake DESTINATION ${ntcore_config_dir}) +configure_file(ntcore-config.cmake.in ${WPILIB_BINARY_DIR}/ntcore-config.cmake ) +install(FILES ${WPILIB_BINARY_DIR}/ntcore-config.cmake DESTINATION ${ntcore_config_dir}) install(EXPORT ntcore DESTINATION ${ntcore_config_dir}) # Java bindings diff --git a/wpigui/CMakeLists.txt b/wpigui/CMakeLists.txt index b0dbf43f72..59c4d6fafb 100644 --- a/wpigui/CMakeLists.txt +++ b/wpigui/CMakeLists.txt @@ -46,6 +46,6 @@ install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpigui") # set (wpigui_config_dir share/wpigui) #endif() -#configure_file(wpigui-config.cmake.in ${CMAKE_BINARY_DIR}/wpigui-config.cmake ) -#install(FILES ${CMAKE_BINARY_DIR}/wpigui-config.cmake DESTINATION ${wpigui_config_dir}) +#configure_file(wpigui-config.cmake.in ${WPILIB_BINARY_DIR}/wpigui-config.cmake ) +#install(FILES ${WPILIB_BINARY_DIR}/wpigui-config.cmake DESTINATION ${wpigui_config_dir}) #install(EXPORT wpigui DESTINATION ${wpigui_config_dir}) diff --git a/wpilibc/CMakeLists.txt b/wpilibc/CMakeLists.txt index 64350405cd..d5a0102117 100644 --- a/wpilibc/CMakeLists.txt +++ b/wpilibc/CMakeLists.txt @@ -30,8 +30,8 @@ else() set (wpilibc_config_dir share/wpilibc) endif() -configure_file(wpilibc-config.cmake.in ${CMAKE_BINARY_DIR}/wpilibc-config.cmake ) -install(FILES ${CMAKE_BINARY_DIR}/wpilibc-config.cmake DESTINATION ${wpilibc_config_dir}) +configure_file(wpilibc-config.cmake.in ${WPILIB_BINARY_DIR}/wpilibc-config.cmake ) +install(FILES ${WPILIB_BINARY_DIR}/wpilibc-config.cmake DESTINATION ${wpilibc_config_dir}) install(EXPORT wpilibc DESTINATION ${wpilibc_config_dir}) if (WITH_TESTS) diff --git a/wpilibj/CMakeLists.txt b/wpilibj/CMakeLists.txt index a07a563548..9a91fbe2d2 100644 --- a/wpilibj/CMakeLists.txt +++ b/wpilibj/CMakeLists.txt @@ -15,8 +15,8 @@ if (WITH_JAVA) configure_file(src/generate/WPILibVersion.java.in WPILibVersion.java) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) - file(GLOB EJML_JARS "${CMAKE_BINARY_DIR}/wpimath/thirdparty/ejml/*.jar") - file(GLOB JACKSON_JARS "${CMAKE_BINARY_DIR}/wpiutil/thirdparty/jackson/*.jar") + 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 wpiutil_jar OUTPUT_NAME wpilibj) diff --git a/wpimath/CMakeLists.txt b/wpimath/CMakeLists.txt index a129376259..2e373486cc 100644 --- a/wpimath/CMakeLists.txt +++ b/wpimath/CMakeLists.txt @@ -13,9 +13,9 @@ if (WITH_JAVA) include(UseJava) set(CMAKE_JAVA_COMPILE_FLAGS "-Xlint:unchecked") - if(NOT EXISTS "${CMAKE_BINARY_DIR}/wpimath/thirdparty/ejml/ejml-simple-0.38.jar") + if(NOT EXISTS "${WPILIB_BINARY_DIR}/wpimath/thirdparty/ejml/ejml-simple-0.38.jar") set(BASE_URL "https://search.maven.org/remotecontent?filepath=") - set(JAR_ROOT "${CMAKE_BINARY_DIR}/wpimath/thirdparty/ejml") + set(JAR_ROOT "${WPILIB_BINARY_DIR}/wpimath/thirdparty/ejml") message(STATUS "Downloading EJML jarfiles...") @@ -37,15 +37,15 @@ if (WITH_JAVA) message(STATUS "All files downloaded.") endif() - file(GLOB EJML_JARS "${CMAKE_BINARY_DIR}/wpimath/thirdparty/ejml/*.jar") - file(GLOB JACKSON_JARS "${CMAKE_BINARY_DIR}/wpiutil/thirdparty/jackson/*.jar") + file(GLOB EJML_JARS "${WPILIB_BINARY_DIR}/wpimath/thirdparty/ejml/*.jar") + file(GLOB JACKSON_JARS "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson/*.jar") set(CMAKE_JAVA_INCLUDE_PATH wpimath.jar ${EJML_JARS} ${JACKSON_JARS}) - execute_process(COMMAND python3 ${CMAKE_SOURCE_DIR}/wpimath/generate_numbers.py ${CMAKE_BINARY_DIR}/wpimath RESULT_VARIABLE generateResult) + 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_SOURCE_DIR}/wpimath/generate_numbers.py ${CMAKE_BINARY_DIR}/wpimath RESULT_VARIABLE generateResult) + 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() @@ -53,7 +53,7 @@ if (WITH_JAVA) set(CMAKE_JNI_TARGET true) - file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java ${CMAKE_BINARY_DIR}/wpimath/generated/*.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") @@ -131,8 +131,8 @@ else() set (wpimath_config_dir share/wpimath) endif() -configure_file(wpimath-config.cmake.in ${CMAKE_BINARY_DIR}/wpimath-config.cmake ) -install(FILES ${CMAKE_BINARY_DIR}/wpimath-config.cmake DESTINATION ${wpimath_config_dir}) +configure_file(wpimath-config.cmake.in ${WPILIB_BINARY_DIR}/wpimath-config.cmake ) +install(FILES ${WPILIB_BINARY_DIR}/wpimath-config.cmake DESTINATION ${wpimath_config_dir}) install(EXPORT wpimath DESTINATION ${wpimath_config_dir}) if (WITH_TESTS) diff --git a/wpiutil/CMakeLists.txt b/wpiutil/CMakeLists.txt index f500c89997..7fe901e605 100644 --- a/wpiutil/CMakeLists.txt +++ b/wpiutil/CMakeLists.txt @@ -14,9 +14,9 @@ if (WITH_JAVA) include(UseJava) set(CMAKE_JAVA_COMPILE_FLAGS "-Xlint:unchecked") - if(NOT EXISTS "${CMAKE_BINARY_DIR}/wpiutil/thirdparty/jackson/jackson-core-2.10.0.jar") + if(NOT EXISTS "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson/jackson-core-2.10.0.jar") set(BASE_URL "https://search.maven.org/remotecontent?filepath=") - set(JAR_ROOT "${CMAKE_BINARY_DIR}/wpiutil/thirdparty/jackson") + set(JAR_ROOT "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson") message(STATUS "Downloading Jackson jarfiles...") @@ -31,7 +31,7 @@ if (WITH_JAVA) endif() file(GLOB JACKSON_JARS - ${CMAKE_BINARY_DIR}/wpiutil/thirdparty/jackson/*.jar) + ${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson/*.jar) set(CMAKE_JAVA_INCLUDE_PATH wpiutil.jar ${JACKSON_JARS}) @@ -195,8 +195,8 @@ else() set (wpiutil_config_dir share/wpiutil) endif() -configure_file(wpiutil-config.cmake.in ${CMAKE_BINARY_DIR}/wpiutil-config.cmake ) -install(FILES ${CMAKE_BINARY_DIR}/wpiutil-config.cmake DESTINATION ${wpiutil_config_dir}) +configure_file(wpiutil-config.cmake.in ${WPILIB_BINARY_DIR}/wpiutil-config.cmake ) +install(FILES ${WPILIB_BINARY_DIR}/wpiutil-config.cmake DESTINATION ${wpiutil_config_dir}) install(EXPORT wpiutil DESTINATION ${wpiutil_config_dir}) SUBDIR_LIST(wpiutil_examples "${CMAKE_CURRENT_SOURCE_DIR}/examples")