summaryrefslogtreecommitdiff
path: root/json4cpp/cmake/detect_libcpp_version.cpp
blob: a39322fcd2c950e977e9b580d503787761dbf2dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*
 * Detect used C++ Standard Library
 *
 * This file is compiled and run via try_run in download_test_data.cmake.
 */

#include <cstdio>

// see https://en.cppreference.com/w/cpp/header/ciso646
#if __cplusplus >= 202002L
    #include <version>
#else
    #include <ciso646>
#endif

int main()
{
#if defined(_LIBCPP_VERSION)
    std::printf("LLVM C++ Standard Library (libc++), _LIBCPP_VERSION=%d", _LIBCPP_VERSION);
#elif defined(__GLIBCXX__)
    std::printf("GNU C++ Standard Library (libstdc++), __GLIBCXX__=%d", __GLIBCXX__);
#elif defined(_MSVC_STL_VERSION)
    std::printf("Microsoft C++ Standard Library (MSVC STL), _MSVC_STL_VERSION=%d", _MSVC_STL_VERSION);
#elif defined(_LIBCUDACXX_VERSION)
    std::printf("NVIDIA C++ Standard Library (libcudacxx), _LIBCUDACXX_VERSION=%d", _LIBCUDACXX_VERSION);
#elif defined(EASTL_VERSION)
    std::printf("Electronic Arts Standard Template Library (EASTL), EASTL_VERSION=%d", EASTL_VERSION);
#else
    std::printf("unknown");
#endif
}