Add parser macro for the parsed code
This allows detection of the cppast "compiler" from the code that is being compiled.
This commit is contained in:
commit
6d261cef16
3 changed files with 14 additions and 0 deletions
|
|
@ -29,6 +29,11 @@ namespace cppast
|
|||
class libclang_compile_config final : public compile_config
|
||||
{
|
||||
public:
|
||||
/// Creates the default configuration.
|
||||
///
|
||||
/// \effects It will set the clang binary determined by the build system,
|
||||
/// as well as the libclang system include directory determined by the build system.
|
||||
/// It will also define `__cppast__` with the value `"libclang"` as well as `__cppast_major__` and `__cppast_minor__`.
|
||||
libclang_compile_config();
|
||||
|
||||
/// \effects Sets the path to the location of the `clang++` binary and the version of that binary.
|
||||
|
|
|
|||
|
|
@ -101,6 +101,8 @@ add_library(cppast ${detail_header} ${header} ${source} ${libclang_source})
|
|||
target_include_directories(cppast PUBLIC ../include)
|
||||
target_link_libraries(cppast PUBLIC type_safe _cppast_tiny_process _cppast_libclang)
|
||||
target_compile_definitions(cppast PUBLIC
|
||||
CPPAST_VERSION_MINOR="${cppast_VERSION_MINOR}"
|
||||
CPPAST_VERSION_MAJOR="${cppast_VERSION_MAJOR}"
|
||||
CPPAST_VERSION_STRING="${cppast_VERSION}")
|
||||
if(CPPAST_ENABLE_ASSERTIONS)
|
||||
target_compile_definitions(cppast PUBLIC CPPAST_ENABLE_ASSERTIONS)
|
||||
|
|
|
|||
|
|
@ -49,13 +49,20 @@ namespace
|
|||
|
||||
libclang_compile_config::libclang_compile_config() : compile_config({})
|
||||
{
|
||||
// set given clang binary
|
||||
auto ptr = CPPAST_CLANG_VERSION_STRING;
|
||||
auto major = parse_number(ptr);
|
||||
auto minor = parse_number(ptr);
|
||||
auto patch = parse_number(ptr);
|
||||
set_clang_binary(CPPAST_CLANG_BINARY, major, minor, patch);
|
||||
|
||||
// set system include dir
|
||||
add_include_dir(CPPAST_LIBCLANG_SYSTEM_INCLUDE_DIR);
|
||||
|
||||
// set macros to detect cppast
|
||||
define_macro("__cppast__", "libclang");
|
||||
define_macro("__cppast_version_major__", CPPAST_VERSION_MAJOR);
|
||||
define_macro("__cppast_version_minor__", CPPAST_VERSION_MINOR);
|
||||
}
|
||||
|
||||
void libclang_compile_config::do_set_flags(cpp_standard standard, compile_flags flags)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue