diff --git a/CMake/Errors.cmake b/CMake/Errors.cmake new file mode 100644 index 000000000..2b81cec62 --- /dev/null +++ b/CMake/Errors.cmake @@ -0,0 +1,20 @@ +if (ENABLE_WARNINGS_TO_ERRORS) + if (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + check_cxx_compiler_flag(-Werror HAS_WALL) + if (HAS_WALL) + add_compile_options (-Werror) + endif () + else () + check_cxx_compiler_flag(/WX HAS_WALL) + if (HAS_WALL) + add_compile_options (/WX) + endif () + endif () + else () + check_cxx_compiler_flag(-Werror HAS_WALL) + if (HAS_WALL) + add_compile_options (-Werror) + endif () + endif () +endif () \ No newline at end of file diff --git a/CMake/Options/Common.cmake b/CMake/Options/Common.cmake index 612f796df..2969b4873 100644 --- a/CMake/Options/Common.cmake +++ b/CMake/Options/Common.cmake @@ -78,4 +78,16 @@ option ( PREFER_CLONE "Whether to clone dependencies instead of directly downloading a compressed archive." OFF +) + +option ( + ENABLE_ALL_WARNINGS + "Whether to emit extra build warnings." + ON +) + +option ( + ENABLE_WARNINGS_TO_ERRORS + "Whether to convert build warnings to errors." + OFF ) \ No newline at end of file diff --git a/CMake/Warnings.cmake b/CMake/Warnings.cmake new file mode 100644 index 000000000..05d312b77 --- /dev/null +++ b/CMake/Warnings.cmake @@ -0,0 +1,20 @@ +if (ENABLE_ALL_WARNINGS) + if (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + check_cxx_compiler_flag(-Wall HAS_WALL) + if (HAS_WALL) + add_compile_options (-Wall) + endif () + else () + check_cxx_compiler_flag(/Wall HAS_WALL) + if (HAS_WALL) + add_compile_options (/Wall) + endif () + endif () + else () + check_cxx_compiler_flag(-Wall HAS_WALL) + if (HAS_WALL) + add_compile_options (-Wall) + endif () + endif () +endif () \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 6cc00cf2c..e8a91a4b9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,13 +28,16 @@ set ( project ( CARLA - VERSION ${CARLA_VERSION} + VERSION + ${CARLA_VERSION} LANGUAGES C CXX ASM # This is required by some dependencies, such as LibPNG. - DESCRIPTION "Open-source simulator for autonomous driving research." - HOMEPAGE_URL https://carla.org + DESCRIPTION + "Open-source simulator for autonomous driving research." + HOMEPAGE_URL + https://carla.org ) set (CMAKE_CXX_STANDARD 20) @@ -56,8 +59,9 @@ set ( include (CheckCCompilerFlag) include (CheckCXXCompilerFlag) include (CheckLinkerFlag) - include (${CARLA_WORKSPACE_PATH}/CMake/CarlaOptions.cmake) +include (${CARLA_WORKSPACE_PATH}/CMake/Warnings.cmake) +include (${CARLA_WORKSPACE_PATH}/CMake/Errors.cmake) if (LINUX) check_linker_flag ( @@ -120,12 +124,8 @@ else () list (APPEND CARLA_EXCEPTION_DEFINITIONS PUGIXML_NO_EXCEPTIONS) endif () - - include (${CARLA_WORKSPACE_PATH}/CMake/CarlaDependencies.cmake) - - if (BUILD_CARLA_CLIENT OR BUILD_CARLA_SERVER) add_subdirectory (LibCarla) endif () diff --git a/PythonAPI/CMakeLists.txt b/PythonAPI/CMakeLists.txt index cbffc9232..428477043 100644 --- a/PythonAPI/CMakeLists.txt +++ b/PythonAPI/CMakeLists.txt @@ -1,7 +1,11 @@ project ( carla-python-api - LANGUAGES CXX - VERSION ${CARLA_VERSION} + VERSION + ${CARLA_VERSION} + LANGUAGES + CXX + DESCRIPTION + "Python API for communicating with the CARLA server." ) set (PYTHON_API_PATH ${CARLA_WORKSPACE_PATH}/PythonAPI) diff --git a/Unreal/CMakeLists.txt b/Unreal/CMakeLists.txt index 1ca964839..e7ee5b470 100644 --- a/Unreal/CMakeLists.txt +++ b/Unreal/CMakeLists.txt @@ -1,5 +1,11 @@ project ( - carla-ue + carla-unreal + VERSION + ${CARLA_VERSION} + LANGUAGES + CXX + DESCRIPTION + "Open-source simulator for autonomous driving research." ) set ( @@ -39,8 +45,6 @@ else () ) endif () -set (CMAKE_NINJA_FORCE_RESPONSE_FILE ON) - add_custom_command ( @@ -57,13 +61,13 @@ add_custom_command ( ) add_custom_target ( - carla-ue-generate-project-files + carla-unreal-generate-project-files DEPENDS ${CARLA_UE_PATH}/CMakeLists.txt ) add_dependencies ( - carla-ue-generate-project-files + carla-unreal-generate-project-files carla-server libsqlite3 Boost::asio @@ -85,7 +89,10 @@ if (CMAKE_TOOLCHAIN_FILE) NORMALIZE OUTPUT_VARIABLE TOOLCHAIN_FILE ) - set (TOOLCHAIN_FILE_OPTION --toolchain=${TOOLCHAIN_FILE}) + set ( + TOOLCHAIN_FILE_OPTION + --toolchain=${TOOLCHAIN_FILE} + ) else () set (TOOLCHAIN_FILE_OPTION) endif () @@ -94,7 +101,7 @@ endif () add_custom_command ( OUTPUT - ${CMAKE_CURRENT_BINARY_DIR}/carla-ue-configure.stamp + ${CMAKE_CURRENT_BINARY_DIR}/carla-unreal-configure.stamp COMMENT "Configuring Carla Unreal..." COMMAND @@ -104,27 +111,27 @@ add_custom_command ( ${TOOLCHAIN_FILE_OPTION} COMMAND ${CMAKE_COMMAND} - -E touch carla-ue-configure.stamp + -E touch carla-unreal-configure.stamp USES_TERMINAL VERBATIM ) add_custom_target ( - carla-ue-configure + carla-unreal-configure DEPENDS - carla-ue-configure.stamp + carla-unreal-configure.stamp ) add_dependencies ( - carla-ue-configure - carla-ue-generate-project-files + carla-unreal-configure + carla-unreal-generate-project-files ) add_custom_command ( OUTPUT - ${CMAKE_CURRENT_BINARY_DIR}/carla-ue.stamp + ${CMAKE_CURRENT_BINARY_DIR}/carla-unreal.stamp COMMENT "Building Carla Unreal..." COMMAND @@ -133,58 +140,48 @@ add_custom_command ( --target CarlaUnrealEditor COMMAND ${CMAKE_COMMAND} - -E touch carla-ue.stamp + -E touch carla-unreal.stamp USES_TERMINAL VERBATIM ) add_custom_target ( - carla-ue + carla-unreal DEPENDS - carla-ue.stamp + carla-unreal.stamp ) add_dependencies ( - carla-ue - carla-ue-configure + carla-unreal + carla-unreal-configure ) if (WIN32) set (EXE_EXT .exe) -else () - set (EXE_EXT) -endif () - -if (WIN32) set (UE_SYSTEM_NAME Win64) elseif (LINUX) + set (EXE_EXT) set (UE_SYSTEM_NAME Linux) +elseif (APPLE) + set (EXE_EXT) + set (UE_SYSTEM_NAME Mac) else () + message (FATAL_ERROR "Unknown target system.") endif () -add_custom_target ( - launch-only - COMMENT - "Launching Carla Unreal..." - COMMAND - ${CARLA_UNREAL_ENGINE_PATH}/Engine/Binaries/${UE_SYSTEM_NAME}/UnrealEditor${EXE_EXT} - ${CARLA_UE_PROJECT_PATH} - -${CARLA_UNREAL_RHI} - ${LAUNCH_ARGS} - USES_TERMINAL - VERBATIM +set ( + UNREAL_EDITOR_PATH + ${CARLA_UNREAL_ENGINE_PATH}/Engine/Binaries/${UE_SYSTEM_NAME}/UnrealEditor${EXE_EXT} ) - - add_custom_target ( launch COMMENT "Launching Carla Unreal..." COMMAND - ${CARLA_UNREAL_ENGINE_PATH}/Engine/Binaries/${UE_SYSTEM_NAME}/UnrealEditor${EXE_EXT} + ${UNREAL_EDITOR_PATH} ${CARLA_UE_PROJECT_PATH} -${CARLA_UNREAL_RHI} ${LAUNCH_ARGS} @@ -194,7 +191,7 @@ add_custom_target ( add_dependencies ( launch - carla-ue + carla-unreal )