From b65442a67afd70860e17a9eaf5e3bb89b0b4ad75 Mon Sep 17 00:00:00 2001 From: Pablo Garrido Date: Tue, 10 Mar 2020 12:14:14 +0100 Subject: [PATCH 1/2] Update approach --- CMakeLists.txt | 5 +++++ include/rcutils/configuration_flags.h | 17 +++++++++++++++++ include/rcutils/configuration_flags.h.in | 17 +++++++++++++++++ include/rcutils/error_handling.h | 1 + 4 files changed, 40 insertions(+) create mode 100644 include/rcutils/configuration_flags.h create mode 100644 include/rcutils/configuration_flags.h.in diff --git a/CMakeLists.txt b/CMakeLists.txt index ebcf9dc8..354557de 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -112,6 +112,11 @@ target_compile_definitions(${PROJECT_NAME} $<$:RCUTILS_AVOID_DYNAMIC_ALLOCATION> ) +configure_file( + "${PROJECT_SOURCE_DIR}/include/rcutils/configuration_flags.h.in" + "${PROJECT_SOURCE_DIR}/include/rcutils/configuration_flags.h" +) + # Needed if pthread is used for thread local storage. if(IOS AND IOS_SDK_VERSION LESS 10.0) ament_export_libraries(pthread) diff --git a/include/rcutils/configuration_flags.h b/include/rcutils/configuration_flags.h new file mode 100644 index 00000000..62f2c05b --- /dev/null +++ b/include/rcutils/configuration_flags.h @@ -0,0 +1,17 @@ + +#ifndef RCUTILS__CONFIGURATION_FLAGS_H_ +#define RCUTILS__CONFIGURATION_FLAGS_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif + +#define RCUTILS_NO_FILESYSTEM +#define RCUTILS_AVOID_DYNAMIC_ALLOCATION + +#ifdef __cplusplus +} +#endif + +#endif // RCUTILS__CONFIGURATION_FLAGS_H_ diff --git a/include/rcutils/configuration_flags.h.in b/include/rcutils/configuration_flags.h.in new file mode 100644 index 00000000..274d0a23 --- /dev/null +++ b/include/rcutils/configuration_flags.h.in @@ -0,0 +1,17 @@ + +#ifndef RCUTILS__CONFIGURATION_FLAGS_H_ +#define RCUTILS__CONFIGURATION_FLAGS_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif + +#cmakedefine RCUTILS_NO_FILESYSTEM +#cmakedefine RCUTILS_AVOID_DYNAMIC_ALLOCATION + +#ifdef __cplusplus +} +#endif + +#endif // RCUTILS__CONFIGURATION_FLAGS_H_ \ No newline at end of file diff --git a/include/rcutils/error_handling.h b/include/rcutils/error_handling.h index 36376e97..71b21086 100644 --- a/include/rcutils/error_handling.h +++ b/include/rcutils/error_handling.h @@ -38,6 +38,7 @@ extern "C" #include "rcutils/snprintf.h" #include "rcutils/types/rcutils_ret.h" #include "rcutils/visibility_control.h" +#include "rcutils/configuration_flags.h" #if defined(__STDC_LIB_EXT1__) && !defined(RCUTILS_NO_FILESYSTEM) // Limit the buffer size in the `fwrite` call to give an upper bound to buffer overrun in the case From 9dc5653dcb5d4ecf6b8366651625af64305f092a Mon Sep 17 00:00:00 2001 From: Pablo Garrido Date: Wed, 11 Mar 2020 10:32:58 +0100 Subject: [PATCH 2/2] Remove target_compile_definitions and refactor flags install --- CMakeLists.txt | 11 ++--------- include/rcutils/configuration_flags.h | 17 ----------------- include/rcutils/configuration_flags.h.in | 1 + include/rcutils/macros.h | 4 +++- 4 files changed, 6 insertions(+), 27 deletions(-) delete mode 100644 include/rcutils/configuration_flags.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 354557de..9ca414a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -103,18 +103,11 @@ add_library( # Causes the visibility macros to use dllexport rather than dllimport, # which is appropriate when building the dll but not consuming it. -target_compile_definitions(${PROJECT_NAME} - PRIVATE - RCUTILS_BUILDING_DLL - PUBLIC - $<$:RCUTILS_NO_THREAD_SUPPORT> - $<$:RCUTILS_NO_FILESYSTEM> - $<$:RCUTILS_AVOID_DYNAMIC_ALLOCATION> - ) +target_compile_definitions(${PROJECT_NAME} PRIVATE "RCUTILS_BUILDING_DLL") configure_file( "${PROJECT_SOURCE_DIR}/include/rcutils/configuration_flags.h.in" - "${PROJECT_SOURCE_DIR}/include/rcutils/configuration_flags.h" + "${PROJECT_BINARY_DIR}/include/rcutils/configuration_flags.h" ) # Needed if pthread is used for thread local storage. diff --git a/include/rcutils/configuration_flags.h b/include/rcutils/configuration_flags.h deleted file mode 100644 index 62f2c05b..00000000 --- a/include/rcutils/configuration_flags.h +++ /dev/null @@ -1,17 +0,0 @@ - -#ifndef RCUTILS__CONFIGURATION_FLAGS_H_ -#define RCUTILS__CONFIGURATION_FLAGS_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#define RCUTILS_NO_FILESYSTEM -#define RCUTILS_AVOID_DYNAMIC_ALLOCATION - -#ifdef __cplusplus -} -#endif - -#endif // RCUTILS__CONFIGURATION_FLAGS_H_ diff --git a/include/rcutils/configuration_flags.h.in b/include/rcutils/configuration_flags.h.in index 274d0a23..346c6a33 100644 --- a/include/rcutils/configuration_flags.h.in +++ b/include/rcutils/configuration_flags.h.in @@ -9,6 +9,7 @@ extern "C" #cmakedefine RCUTILS_NO_FILESYSTEM #cmakedefine RCUTILS_AVOID_DYNAMIC_ALLOCATION +#cmakedefine RCUTILS_NO_THREAD_SUPPORT #ifdef __cplusplus } diff --git a/include/rcutils/macros.h b/include/rcutils/macros.h index 11981683..2661a315 100644 --- a/include/rcutils/macros.h +++ b/include/rcutils/macros.h @@ -20,6 +20,8 @@ extern "C" { #endif +#include "rcutils/configuration_flags.h" + #ifndef _WIN32 #define RCUTILS_WARN_UNUSED __attribute__((warn_unused_result)) #else @@ -28,7 +30,7 @@ extern "C" // Note: this block was migrated from rmw/macros.h // This block either sets RCUTILS_THREAD_LOCAL or RCUTILS_THREAD_LOCAL_PTHREAD. -#if RCUTILS_NO_THREAD_SUPPORT +#if defined(RCUTILS_NO_THREAD_SUPPORT) #define RCUTILS_THREAD_LOCAL #elif defined _WIN32 || defined __CYGWIN__ // Windows or Cygwin