diff --git a/tl_expected/CMakeLists.txt b/tl_expected/CMakeLists.txt index 3039e6c..df93f6a 100644 --- a/tl_expected/CMakeLists.txt +++ b/tl_expected/CMakeLists.txt @@ -7,7 +7,13 @@ project(tl_expected find_package(ament_cmake REQUIRED) +option(USE_VENDORED_TL_EXPECTED "Use vendored tl_expected instead of system libexpected-dev" OFF) + add_library(tl_expected INTERFACE) + +if(USE_VENDORED_TL_EXPECTED) + target_compile_definitions(tl_expected INTERFACE USE_VENDORED_TL_EXPECTED) +endif() target_include_directories(tl_expected INTERFACE $ $) diff --git a/tl_expected/include/tl_expected/expected.hpp b/tl_expected/include/tl_expected/expected.hpp index ae90975..b2dea5a 100644 --- a/tl_expected/include/tl_expected/expected.hpp +++ b/tl_expected/include/tl_expected/expected.hpp @@ -13,6 +13,13 @@ // . /// +// If the system header is available and vendored version is not explicitly +// requested, redirect to the system header with a deprecation warning. +#if !defined(USE_VENDORED_TL_EXPECTED) && __has_include() +#warning("tl_expected/expected.hpp is deprecated, use tl/expected.hpp instead") +#include +#else + #ifndef TL_EXPECTED_HPP #define TL_EXPECTED_HPP @@ -2480,4 +2487,6 @@ void swap(expected &lhs, } } // namespace tl -#endif +#endif // TL_EXPECTED_HPP + +#endif // !defined(USE_VENDORED_TL_EXPECTED) && __has_include() diff --git a/tl_expected/package.xml b/tl_expected/package.xml index 07dac78..ef78d93 100644 --- a/tl_expected/package.xml +++ b/tl_expected/package.xml @@ -14,6 +14,8 @@ ament_cmake + libexpected-dev + ament_cmake