c3dc8935ee
In commit v3.4.0-rc1~71^2 (Project: Determine default language dialect for the compiler, 2015-09-15) we added an "INFO:..." string to the compiler id detection binary. The value can be optimized out of the compiler id binary unless we force it to be included by making the program behavior depend on it at runtime. Add references to the value as we do for the other info strings already. Gentoo-Issue: https://bugs.gentoo.org/show_bug.cgi?id=565744
56 lines
1.5 KiB
C++
56 lines
1.5 KiB
C++
/* 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
|
|
|
|
@CMAKE_CXX_COMPILER_ID_CONTENT@
|
|
|
|
/* 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
|
|
|
|
@CMAKE_CXX_COMPILER_ID_PLATFORM_CONTENT@
|
|
@CMAKE_CXX_COMPILER_ID_ERROR_FOR_TEST@
|
|
|
|
const char* info_language_dialect_default = "INFO" ":" "dialect_default["
|
|
#if __cplusplus >= 201402L
|
|
"14"
|
|
#elif __cplusplus >= 201103L
|
|
"11"
|
|
#else
|
|
"98"
|
|
#endif
|
|
"]";
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
int main(int argc, char* argv[])
|
|
{
|
|
int require = 0;
|
|
require += info_compiler[argc];
|
|
require += info_platform[argc];
|
|
#ifdef COMPILER_VERSION_MAJOR
|
|
require += info_version[argc];
|
|
#endif
|
|
#ifdef SIMULATE_ID
|
|
require += info_simulate[argc];
|
|
#endif
|
|
#ifdef SIMULATE_VERSION_MAJOR
|
|
require += info_simulate_version[argc];
|
|
#endif
|
|
require += info_language_dialect_default[argc];
|
|
(void)argv;
|
|
return require;
|
|
}
|