|
Embedded Artistry Framework
Embedded Systems C++ Framework
|
Need to convert to Meson
http://mesonbuild.com/Build-system-converters.html
https://libcxx.llvm.org/docs/BuildingLibcxx.html#build-instructions
Using libc++experimental and <experimental/...>
Libc++ provides implementations of experimental technical specifications in a separate library, libc++experimental.a. Users of <experimental/...> headers may be required to link -lc++experimental. $ clang++ -std=c++14 -stdlib=libc++ test.cpp -lc++experimental
Libc++ Configuration Macros¶
Libc++ provides a number of configuration macros which can be used to enable or disable extended libc++ behavior, including enabling “debug mode” or thread safety annotations. _LIBCPP_DEBUG: See Using Debug Mode for more information. _LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS: This macro is used to enable -Wthread-safety annotations on libc++’s std::mutex and std::lock_guard. By default these annotations are disabled and must be manually enabled by the user. _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS: This macro is used to disable all visibility annotations inside libc++. Defining this macro and then building libc++ with hidden visibility gives a build of libc++ which does not export any symbols, which can be useful when building statically for inclusion into another library. _LIBCPP_DISABLE_EXTERN_TEMPLATE: This macro is used to disable extern template declarations in the libc++ headers. The intended use case is for clients who wish to use the libc++ headers without taking a dependency on the libc++ library itself. _LIBCPP_ENABLE_TUPLE_IMPLICIT_REDUCED_ARITY_EXTENSION: This macro is used to re-enable an extension in std::tuple which allowed it to be implicitly constructed from fewer initializers than contained elements. Elements without an initializer are default constructed. For example: std::tuple<std::string, int, std::error_code> foo() { return {"hello world", 42}; // default constructs error_code }
Since libc++ 4.0 this extension has been disabled by default. This macro may be defined to re-enable it in order to support existing code that depends on the extension. New use of this extension should be discouraged. See PR 27374 for more information. Note: The “reduced-arity-initialization” extension is still offered but only for explicit conversions. Example: auto foo() { using Tup = std::tuple<std::string, int, std::error_code>; return Tup{"hello world", 42}; // explicit constructor called. OK. }
_LIBCPP_DISABLE_ADDITIONAL_DIAGNOSTICS: This macro disables the additional diagnostics generated by libc++ using the diagnose_if attribute. These additional diagnostics include checks for:
C++17 Specific Configuration Macros
_LIBCPP_ENABLE_CXX17_REMOVED_FEATURES: This macro is used to re-enable all the features removed in C++17. The effect is equivalent to manually defining each macro listed below. _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS: This macro is used to re-enable the set_unexpected, get_unexpected, and unexpected functions, which were removed in C++17. _LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR: This macro is used to re-enable std::auto_ptr in C++17.
1.8.15