diff --git a/CMakeLists.txt b/CMakeLists.txt index ae75bd21..4cdcb802 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,15 +2,6 @@ cmake_minimum_required(VERSION 3.20) project(rcutils) -# Default to C11 -if(NOT CMAKE_C_STANDARD) - set(CMAKE_C_STANDARD 11) -endif() -# Default to C++17 -if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 17) -endif() - include(CheckLibraryExists) find_package(ament_cmake REQUIRED) @@ -95,14 +86,20 @@ if(BUILD_TESTING AND NOT RCUTILS_DISABLE_FAULT_INJECTION) target_compile_definitions(${PROJECT_NAME} PUBLIC RCUTILS_ENABLE_FAULT_INJECTION) endif() -target_link_libraries(${PROJECT_NAME} ${CMAKE_DL_LIBS}) +target_link_libraries(${PROJECT_NAME} + ${CMAKE_DL_LIBS} + ament_cmake_ros_core::ament_ros_defaults +) check_library_exists(atomic __atomic_load_8 "" HAVE_LIBATOMICS) if(HAVE_LIBATOMICS AND NOT WIN32) # Exporting link flag since it won't pass ament_export_libraries() existence check ament_export_link_flags("-latomic") - target_link_libraries(${PROJECT_NAME} atomic) + target_link_libraries(${PROJECT_NAME} + atomic + ament_cmake_ros_core::ament_ros_defaults + ) endif() # Needed if pthread is used for thread local storage. @@ -117,7 +114,6 @@ install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME} if(BUILD_TESTING) find_package(performance_test_fixture REQUIRED) - find_package(ament_cmake_gmock REQUIRED) find_package(ament_cmake_gtest REQUIRED) find_package(ament_lint_auto REQUIRED) @@ -140,10 +136,17 @@ if(BUILD_TESTING) osrf_testing_tools_cpp::memory_tools LIBRARY_PRELOAD_ENVIRONMENT_IS_AVAILABLE) ament_add_gtest(test_logging test/test_logging.cpp) - target_link_libraries(test_logging ${PROJECT_NAME} osrf_testing_tools_cpp::memory_tools) + target_link_libraries(test_logging + ${PROJECT_NAME} + osrf_testing_tools_cpp::memory_tools + ament_cmake_ros_core::ament_ros_defaults + ) add_executable(test_logging_long_messages test/test_logging_long_messages.cpp) - target_link_libraries(test_logging_long_messages ${PROJECT_NAME}) + target_link_libraries(test_logging_long_messages + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) add_launch_test( "test/test_logging_long_messages.py" TARGET test_logging_long_messages @@ -159,10 +162,16 @@ if(BUILD_TESTING) ) ament_add_gmock(test_logging_macros test/test_logging_macros.cpp) - target_link_libraries(test_logging_macros ${PROJECT_NAME}) + target_link_libraries(test_logging_macros + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) add_executable(test_logging_macros_c test/test_logging_macros.c) - target_link_libraries(test_logging_macros_c ${PROJECT_NAME}) + target_link_libraries(test_logging_macros_c + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) ament_add_test(test_logging_macros_c COMMAND "$" GENERATE_RESULT_FOR_RETURN_CODE_ZERO) @@ -178,14 +187,21 @@ if(BUILD_TESTING) ${SKIP_MEMORY_TOOLS_TEST} ) if(TARGET test_allocator) - target_link_libraries(test_allocator ${PROJECT_NAME} osrf_testing_tools_cpp::memory_tools) + target_link_libraries(test_allocator + ${PROJECT_NAME} + osrf_testing_tools_cpp::memory_tools + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_char_array test/test_char_array.cpp ) if(TARGET test_char_array) - target_link_libraries(test_char_array ${PROJECT_NAME}) + target_link_libraries(test_char_array + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() # Can't use C++ with stdatomic_helper.h @@ -196,9 +212,15 @@ if(BUILD_TESTING) PROPERTIES LANGUAGE C ) - target_link_libraries(test_atomics_executable ${PROJECT_NAME}) + target_link_libraries(test_atomics_executable + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) if(HAVE_LIBATOMICS) - target_link_libraries(test_atomics_executable atomic) + target_link_libraries(test_atomics_executable + atomic + ament_cmake_ros_core::ament_ros_defaults + ) endif() add_test(NAME test_atomics COMMAND test_atomics_executable) @@ -209,7 +231,11 @@ if(BUILD_TESTING) ENV ${memory_tools_test_env_vars} ) if(TARGET test_error_handling) - target_link_libraries(test_error_handling ${PROJECT_NAME} osrf_testing_tools_cpp::memory_tools) + target_link_libraries(test_error_handling + ${PROJECT_NAME} + osrf_testing_tools_cpp::memory_tools + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gmock(test_error_handling_helpers test/test_error_handling_helpers.cpp @@ -219,28 +245,41 @@ if(BUILD_TESTING) ) if(TARGET test_error_handling_helpers) target_include_directories(test_error_handling_helpers PUBLIC include) - target_link_libraries(test_error_handling_helpers ${PROJECT_NAME} osrf_testing_tools_cpp::memory_tools) + target_link_libraries(test_error_handling_helpers + ${PROJECT_NAME} + osrf_testing_tools_cpp::memory_tools + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_split test/test_split.cpp ) if(TARGET test_split) - target_link_libraries(test_split ${PROJECT_NAME}) + target_link_libraries(test_split + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_join test/test_join.cpp ) if(TARGET test_join) - target_link_libraries(test_join ${PROJECT_NAME}) + target_link_libraries(test_join + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_find test/test_find.cpp ) if(TARGET test_find) - target_link_libraries(test_find ${PROJECT_NAME}) + target_link_libraries(test_find + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_strerror @@ -248,14 +287,21 @@ if(BUILD_TESTING) ) ament_add_test_label(test_strerror mimick) if(TARGET test_strerror) - target_link_libraries(test_strerror ${PROJECT_NAME} mimick) + target_link_libraries(test_strerror + ${PROJECT_NAME} + mimick + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_string_array test/test_string_array.cpp ) if(TARGET test_string_array) - target_link_libraries(test_string_array ${PROJECT_NAME}) + target_link_libraries(test_string_array + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_env test/test_env.cpp @@ -265,7 +311,10 @@ if(BUILD_TESTING) APPEND_LIBRARY_DIRS "$" ) if(TARGET test_env) - target_link_libraries(test_env ${PROJECT_NAME}) + target_link_libraries(test_env + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_filesystem @@ -274,7 +323,12 @@ if(BUILD_TESTING) ) ament_add_test_label(test_filesystem mimick) if(TARGET test_filesystem) - target_link_libraries(test_filesystem ${PROJECT_NAME} mimick osrf_testing_tools_cpp::memory_tools) + target_link_libraries(test_filesystem + ${PROJECT_NAME} + mimick + osrf_testing_tools_cpp::memory_tools + ament_cmake_ros_core::ament_ros_defaults + ) target_compile_definitions(test_filesystem PRIVATE BUILD_DIR="${CMAKE_CURRENT_BINARY_DIR}") endif() @@ -282,28 +336,41 @@ if(BUILD_TESTING) test/test_strdup.cpp ) if(TARGET test_strdup) - target_link_libraries(test_strdup ${PROJECT_NAME}) + target_link_libraries(test_strdup + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_format_string test/test_format_string.cpp ) if(TARGET test_format_string) - target_link_libraries(test_format_string ${PROJECT_NAME}) + target_link_libraries(test_format_string + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_string_map test/test_string_map.cpp ) if(TARGET test_string_map) - target_link_libraries(test_string_map ${PROJECT_NAME} osrf_testing_tools_cpp::memory_tools) + target_link_libraries(test_string_map + ${PROJECT_NAME} + osrf_testing_tools_cpp::memory_tools + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_isalnum_no_locale test/test_isalnum_no_locale.cpp ) if(TARGET test_isalnum_no_locale) - target_link_libraries(test_isalnum_no_locale ${PROJECT_NAME}) + target_link_libraries(test_isalnum_no_locale + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_repl_str @@ -311,14 +378,20 @@ if(BUILD_TESTING) TIMEOUT 300 ) if(TARGET test_repl_str) - target_link_libraries(test_repl_str ${PROJECT_NAME}) + target_link_libraries(test_repl_str + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_sha256 test/test_sha256.cpp ) if(TARGET test_sha256) - target_link_libraries(test_sha256 ${PROJECT_NAME}) + target_link_libraries(test_sha256 + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() macro(add_dummy_shared_library target) @@ -341,7 +414,10 @@ if(BUILD_TESTING) # documentation says otherwise, so here we fallback to DT_RPATH entries. target_link_libraries(test_shared_library_in_run_paths "-Wl,--disable-new-dtags") endif() - target_link_libraries(test_shared_library_in_run_paths ${PROJECT_NAME}) + target_link_libraries(test_shared_library_in_run_paths + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() set(project_binary_dir "$") @@ -358,7 +434,10 @@ if(BUILD_TESTING) LIBRARY_OUTPUT_DIRECTORY ${test_libraries_dir}) target_compile_definitions(test_shared_library_in_load_paths PRIVATE "SHARED_LIBRARY_UNDER_TEST=dummy_shared_library_in_load_paths") - target_link_libraries(test_shared_library_in_load_paths ${PROJECT_NAME}) + target_link_libraries(test_shared_library_in_load_paths + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() include(CheckCXXCompilerFlag) @@ -391,7 +470,9 @@ if(BUILD_TESTING) endif() endif() target_link_libraries(test_shared_library_preloaded dummy_shared_library_preloaded) - target_link_libraries(test_shared_library_preloaded ${PROJECT_NAME}) + target_link_libraries(test_shared_library_preloaded + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults) endif() ament_add_gtest(test_time @@ -399,56 +480,82 @@ if(BUILD_TESTING) ENV ${memory_tools_test_env_vars}) ament_add_test_label(test_time mimick) if(TARGET test_time) - target_link_libraries(test_time ${PROJECT_NAME} mimick osrf_testing_tools_cpp::memory_tools) + target_link_libraries(test_time + ${PROJECT_NAME} + mimick + osrf_testing_tools_cpp::memory_tools + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_snprintf test/test_snprintf.cpp ) if(TARGET test_snprintf) - target_link_libraries(test_snprintf ${PROJECT_NAME}) + target_link_libraries(test_snprintf + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_strcasecmp test/test_strcasecmp.cpp ) if(TARGET test_strcasecmp) - target_link_libraries(test_strcasecmp ${PROJECT_NAME}) + target_link_libraries(test_strcasecmp + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_uint8_array test/test_uint8_array.cpp ) if(TARGET test_uint8_array) - target_link_libraries(test_uint8_array ${PROJECT_NAME}) + target_link_libraries(test_uint8_array + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_array_list test/test_array_list.cpp ) if(TARGET test_array_list) - target_link_libraries(test_array_list ${PROJECT_NAME}) + target_link_libraries(test_array_list + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_hash_map test/test_hash_map.cpp ) if(TARGET test_hash_map) - target_link_libraries(test_hash_map ${PROJECT_NAME}) + target_link_libraries(test_hash_map + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_cmdline_parser test/test_cmdline_parser.cpp ) if(TARGET test_cmdline_parser) - target_link_libraries(test_cmdline_parser ${PROJECT_NAME}) + target_link_libraries(test_cmdline_parser + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_process test/test_process.cpp ) if(TARGET test_process) - target_link_libraries(test_process ${PROJECT_NAME}) + target_link_libraries(test_process + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) target_compile_definitions(test_process PRIVATE "CMAKE_COMMAND=${CMAKE_COMMAND}") file(TOUCH "${CMAKE_CURRENT_BINARY_DIR}/file with space.txt") @@ -465,7 +572,12 @@ if(BUILD_TESTING) ) ament_add_test_label(test_logging_custom_env mimick) if(TARGET test_logging_custom_env) - target_link_libraries(test_logging_custom_env ${PROJECT_NAME} osrf_testing_tools_cpp::memory_tools mimick) + target_link_libraries(test_logging_custom_env + ${PROJECT_NAME} + osrf_testing_tools_cpp::memory_tools + mimick + ament_cmake_ros_core::ament_ros_defaults + ) endif() # RCUTILS_LOGGING_MAX_OUTPUT_FORMAT_LEN is defined as 2048, truncation should occur @@ -483,7 +595,12 @@ if(BUILD_TESTING) ) ament_add_test_label(test_logging_custom_env2 mimick) if(TARGET test_logging_custom_env2) - target_link_libraries(test_logging_custom_env2 ${PROJECT_NAME} osrf_testing_tools_cpp::memory_tools mimick) + target_link_libraries(test_logging_custom_env2 + ${PROJECT_NAME} + osrf_testing_tools_cpp::memory_tools + mimick + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_logging_bad_env test/test_logging_bad_env.cpp @@ -491,7 +608,10 @@ if(BUILD_TESTING) RCUTILS_LOGGING_USE_STDOUT=42 ) if(TARGET test_logging_bad_env) - target_link_libraries(test_logging_bad_env ${PROJECT_NAME}) + target_link_libraries(test_logging_bad_env + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_logging_bad_env2 test/test_logging_bad_env.cpp @@ -499,7 +619,10 @@ if(BUILD_TESTING) RCUTILS_COLORIZED_OUTPUT=42 ) if(TARGET test_logging_bad_env2) - target_link_libraries(test_logging_bad_env2 ${PROJECT_NAME}) + target_link_libraries(test_logging_bad_env2 + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_logging_bad_env3 test/test_logging_bad_env.cpp @@ -507,45 +630,56 @@ if(BUILD_TESTING) RCUTILS_LOGGING_BUFFERED_STREAM=42 ) if(TARGET test_logging_bad_env3) - target_link_libraries(test_logging_bad_env3 ${PROJECT_NAME}) + target_link_libraries(test_logging_bad_env3 + ${PROJECT_NAME} + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_logging_enable_for test/test_logging_enable_for.cpp ) if(TARGET test_logging_enable_for) - target_link_libraries(test_logging_enable_for ${PROJECT_NAME} osrf_testing_tools_cpp::memory_tools) + target_link_libraries(test_logging_enable_for + ${PROJECT_NAME} + osrf_testing_tools_cpp::memory_tools + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_logging_console_output_handler test/test_logging_console_output_handler.cpp ) if(TARGET test_logging_console_output_handler) - target_link_libraries(test_logging_console_output_handler ${PROJECT_NAME} osrf_testing_tools_cpp::memory_tools) + target_link_libraries(test_logging_console_output_handler + ${PROJECT_NAME} + osrf_testing_tools_cpp::memory_tools + ament_cmake_ros_core::ament_ros_defaults + ) endif() ament_add_gtest(test_macros test/test_macros.cpp ) if(TARGET test_macros) - target_link_libraries(test_macros ${PROJECT_NAME}) + target_link_libraries(test_macros ${PROJECT_NAME} ament_cmake_ros_core::ament_ros_defaults) endif() add_performance_test(benchmark_logging test/benchmark/benchmark_logging.cpp) if(TARGET benchmark_logging) - target_link_libraries(benchmark_logging ${PROJECT_NAME}) + target_link_libraries(benchmark_logging ${PROJECT_NAME} ament_cmake_ros_core::ament_ros_defaults) endif() add_performance_test(benchmark_err_handle test/benchmark/benchmark_error_handling.cpp) if(TARGET benchmark_err_handle) - target_link_libraries(benchmark_err_handle ${PROJECT_NAME}) + target_link_libraries(benchmark_err_handle ${PROJECT_NAME} ament_cmake_ros_core::ament_ros_defaults) endif() ament_add_gtest(test_base64 test/test_base64.cpp ) if(TARGET test_base64) - target_link_libraries(test_base64 ${PROJECT_NAME}) + target_link_libraries(test_base64 ${PROJECT_NAME} ament_cmake_ros_core::ament_ros_defaults) endif() endif() @@ -556,7 +690,7 @@ ament_export_libraries(${PROJECT_NAME}) # Export modern CMake targets ament_export_targets(${PROJECT_NAME}) -ament_export_dependencies(ament_cmake) +ament_export_dependencies(ament_cmake ament_cmake_ros_core) ament_package()