diff --git a/CMakeLists.txt b/CMakeLists.txt index ebcf9dc8..9ca414a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -103,14 +103,12 @@ 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_BINARY_DIR}/include/rcutils/configuration_flags.h" +) # Needed if pthread is used for thread local storage. if(IOS AND IOS_SDK_VERSION LESS 10.0) diff --git a/include/rcutils/configuration_flags.h.in b/include/rcutils/configuration_flags.h.in new file mode 100644 index 00000000..346c6a33 --- /dev/null +++ b/include/rcutils/configuration_flags.h.in @@ -0,0 +1,18 @@ + +#ifndef RCUTILS__CONFIGURATION_FLAGS_H_ +#define RCUTILS__CONFIGURATION_FLAGS_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif + +#cmakedefine RCUTILS_NO_FILESYSTEM +#cmakedefine RCUTILS_AVOID_DYNAMIC_ALLOCATION +#cmakedefine RCUTILS_NO_THREAD_SUPPORT + +#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 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