From ccfc6ba7feec68490505dc9e89fa3a1fdaa19566 Mon Sep 17 00:00:00 2001 From: trabus322 Date: Tue, 9 Apr 2024 20:27:30 +0200 Subject: [PATCH] feafea --- build/CMakeCache.txt | 12 +- .../3.29.1/CompilerIdC/CMakeCCompilerId.c | 895 ++++++++++++++++++ .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 878 +++++++++++++++++ build/src/hoymilesSunspecInterface_exec | Bin 1159272 -> 1159648 bytes src/hoymiles/src/dtu.cpp | 4 +- src/hoymiles/src/microinverter.cpp | 2 +- src/hoymiles/src/sunspec.cpp | 2 +- src/libmodbus/inc/modbus.h | 2 +- src/libmodbus/src/modbus.c | 26 +- 9 files changed, 1805 insertions(+), 16 deletions(-) create mode 100644 build/CMakeFiles/3.29.1/CompilerIdC/CMakeCCompilerId.c create mode 100644 build/CMakeFiles/3.29.1/CompilerIdCXX/CMakeCXXCompilerId.cpp diff --git a/build/CMakeCache.txt b/build/CMakeCache.txt index 0c31c25..57cca0a 100644 --- a/build/CMakeCache.txt +++ b/build/CMakeCache.txt @@ -23,8 +23,8 @@ CMAKE_AR:FILEPATH=/usr/bin/llvm-ar //No help, variable specified on the command line. CMAKE_BUILD_TYPE:STRING=Debug -//No help, variable specified on the command line. -CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/clang++ +//CXX compiler +CMAKE_CXX_COMPILER:STRING=/usr/bin/clang++ //LLVM archiver CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/llvm-ar @@ -50,8 +50,8 @@ CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG //Flags used by the CXX compiler during RELWITHDEBINFO builds. CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG -//No help, variable specified on the command line. -CMAKE_C_COMPILER:FILEPATH=/usr/bin/clang +//C compiler +CMAKE_C_COMPILER:STRING=/usr/bin/clang //LLVM archiver CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/llvm-ar @@ -254,9 +254,9 @@ CMAKE_CACHEFILE_DIR:INTERNAL=/home/trabus322/workspace/code/hoymilesSunspecInter //Major version of cmake used to create the current loaded cache CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 //Minor version of cmake used to create the current loaded cache -CMAKE_CACHE_MINOR_VERSION:INTERNAL=28 +CMAKE_CACHE_MINOR_VERSION:INTERNAL=29 //Patch version of cmake used to create the current loaded cache -CMAKE_CACHE_PATCH_VERSION:INTERNAL=3 +CMAKE_CACHE_PATCH_VERSION:INTERNAL=1 //Path to CMake executable. CMAKE_COMMAND:INTERNAL=/usr/bin/cmake //Path to cpack program executable. diff --git a/build/CMakeFiles/3.29.1/CompilerIdC/CMakeCCompilerId.c b/build/CMakeFiles/3.29.1/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..508c4cd --- /dev/null +++ b/build/CMakeFiles/3.29.1/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,895 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "Arm" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif __STDC_VERSION__ > 201710L +# define C_VERSION "23" +#elif __STDC_VERSION__ >= 201710L +# define C_VERSION "17" +#elif __STDC_VERSION__ >= 201000L +# define C_VERSION "11" +#elif __STDC_VERSION__ >= 199901L +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/build/CMakeFiles/3.29.1/CompilerIdCXX/CMakeCXXCompilerId.cpp b/build/CMakeFiles/3.29.1/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000..9a5e8f8 --- /dev/null +++ b/build/CMakeFiles/3.29.1/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,878 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "Arm" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_standard_default = "INFO" ":" "standard_default[" +#if CXX_STD > 202002L + "23" +#elif CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/build/src/hoymilesSunspecInterface_exec b/build/src/hoymilesSunspecInterface_exec index 9c003c636b42c47292cb6aeeedcbceba19d9da28..b560cfc9fae9e120f732d060b885e345f9ef0357 100755 GIT binary patch delta 96828 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

n$s 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 Df=xeU delta 95804 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 WS}RX1JG9$fFF5%j_jGIJ!T%4BH-t$5 diff --git a/src/hoymiles/src/dtu.cpp b/src/hoymiles/src/dtu.cpp index 1c4a889..a0d2dc8 100644 --- a/src/hoymiles/src/dtu.cpp +++ b/src/hoymiles/src/dtu.cpp @@ -41,7 +41,7 @@ void Dtu::populateMicroinverters() { uint16_t registers[19]; int registerCount; - registerCount = modbus_read_registers(this->modbus, portStartAddress, 19, registers); + registerCount = modbus_read_registers(this->modbus, portStartAddress, 19, registers, 0); if (registerCount == -1) { return; @@ -64,7 +64,7 @@ void Dtu::populateMicroinverters() { portStartAddress += 0x0019; - registerCount = modbus_read_registers(this->modbus, portStartAddress, 19, registers); + registerCount = modbus_read_registers(this->modbus, portStartAddress, 19, registers, 0); } } diff --git a/src/hoymiles/src/microinverter.cpp b/src/hoymiles/src/microinverter.cpp index c7c39c8..3bcd4e6 100644 --- a/src/hoymiles/src/microinverter.cpp +++ b/src/hoymiles/src/microinverter.cpp @@ -8,7 +8,7 @@ #include "port.h" #include "sunspec.h" -Microinverter::Microinverter(modbus_t *modbus, int startAddress, long long serialNumber) : sunspec(40000, modbus) { +Microinverter::Microinverter(modbus_t *modbus, int startAddress, long long serialNumber) : sunspec(0, modbus) { this->modbus = modbus; this->startAddress = startAddress; this->serialNumber = serialNumber; diff --git a/src/hoymiles/src/sunspec.cpp b/src/hoymiles/src/sunspec.cpp index d589477..52de5d6 100644 --- a/src/hoymiles/src/sunspec.cpp +++ b/src/hoymiles/src/sunspec.cpp @@ -19,7 +19,7 @@ void Sunspec::setValues() { uint16_t registers[2]; int registerCount; - registerCount = modbus_read_registers( this->modbus, this->sunspecAddress, 2, registers); + registerCount = modbus_read_registers( this->modbus, this->sunspecAddress, 1, registers, 0); std::vector>::iterator parametersIterator = this->parameters.begin(); while(parametersIterator != this->parameters.end()) { diff --git a/src/libmodbus/inc/modbus.h b/src/libmodbus/inc/modbus.h index 55ef08a..1de78fc 100644 --- a/src/libmodbus/inc/modbus.h +++ b/src/libmodbus/inc/modbus.h @@ -219,7 +219,7 @@ MODBUS_API const char *modbus_strerror(int errnum); MODBUS_API int modbus_read_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest); MODBUS_API int modbus_read_input_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest); -MODBUS_API int modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest); +MODBUS_API int modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest, int hoymilessunspec); MODBUS_API int modbus_read_input_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest); MODBUS_API int modbus_write_bit(modbus_t *ctx, int coil_addr, int status); diff --git a/src/libmodbus/src/modbus.c b/src/libmodbus/src/modbus.c index 7494a48..76777a1 100644 --- a/src/libmodbus/src/modbus.c +++ b/src/libmodbus/src/modbus.c @@ -1273,11 +1273,17 @@ int modbus_read_input_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest) } /* Reads the data from a remote device and put that data into an array */ -static int read_registers(modbus_t *ctx, int function, int addr, int nb, uint16_t *dest) +static int read_registers(modbus_t *ctx, int function, int addr, int nb, uint16_t *dest, int hoymilesSunspec) { int rc; int req_length; - uint8_t req[_MIN_REQ_LENGTH]; + + int minReqLength = _MIN_REQ_LENGTH; + if(hoymilesSunspec != 0) { + minReqLength++; + } + + uint8_t req[minReqLength]; uint8_t rsp[MAX_MESSAGE_LENGTH]; if (nb > MODBUS_MAX_READ_REGISTERS) { @@ -1293,6 +1299,15 @@ static int read_registers(modbus_t *ctx, int function, int addr, int nb, uint16_ req_length = ctx->backend->build_request_basis(ctx, function, addr, nb, req); + if(hoymilesSunspec != 0) { + req_length++; + for(int i = req_length - 1; i>1; i--) { + req[i] = req[i-1]; + } + // req[0] = 0; + req[1] = 7; + } + rc = send_msg(ctx, req, req_length); if (rc > 0) { @@ -1300,6 +1315,7 @@ static int read_registers(modbus_t *ctx, int function, int addr, int nb, uint16_ int i; rc = _modbus_receive_msg(ctx, rsp, MSG_CONFIRMATION); + if (rc == -1) return -1; @@ -1320,7 +1336,7 @@ static int read_registers(modbus_t *ctx, int function, int addr, int nb, uint16_ /* Reads the holding registers of remote device and put the data into an array */ -int modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest) +int modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest, int hoymilesSunspec) { int status; @@ -1340,7 +1356,7 @@ int modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest) return -1; } - status = read_registers(ctx, MODBUS_FC_READ_HOLDING_REGISTERS, addr, nb, dest); + status = read_registers(ctx, MODBUS_FC_READ_HOLDING_REGISTERS, addr, nb, dest, hoymilesSunspec); return status; } @@ -1363,7 +1379,7 @@ int modbus_read_input_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest) return -1; } - status = read_registers(ctx, MODBUS_FC_READ_INPUT_REGISTERS, addr, nb, dest); + status = read_registers(ctx, MODBUS_FC_READ_INPUT_REGISTERS, addr, nb, dest, 0); return status; }