diff options
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/CMakeCCompilerId.c.in | 22 | ||||
-rw-r--r-- | Modules/CMakeCompilerIdDetection.cmake | 1 | ||||
-rw-r--r-- | Modules/CMakeDetermineCCompiler.cmake | 3 | ||||
-rw-r--r-- | Modules/CMakePlatformId.h.in | 6 | ||||
-rw-r--r-- | Modules/Compiler/Bruce-C-DetermineCompiler.cmake | 1 | ||||
-rw-r--r-- | Modules/Compiler/Bruce-C.cmake | 7 |
6 files changed, 31 insertions, 9 deletions
diff --git a/Modules/CMakeCCompilerId.c.in b/Modules/CMakeCCompilerId.c.in index 5bfe0fd..c107dfd 100644 --- a/Modules/CMakeCCompilerId.c.in +++ b/Modules/CMakeCCompilerId.c.in @@ -5,6 +5,11 @@ #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 @CMAKE_C_COMPILER_ID_CONTENT@ @@ -28,23 +33,28 @@ char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; @CMAKE_C_COMPILER_ID_PLATFORM_CONTENT@ @CMAKE_C_COMPILER_ID_ERROR_FOR_TEST@ -const char* info_language_dialect_default = "INFO" ":" "dialect_default[" -#if !defined(__STDC_VERSION__) - "90" +#if !defined(__STDC__) +# define C_DIALECT #elif __STDC_VERSION__ >= 201000L - "11" +# define C_DIALECT "11" #elif __STDC_VERSION__ >= 199901L - "99" +# define C_DIALECT "99" #else +# define C_DIALECT "90" #endif -"]"; +const char* info_language_dialect_default = + "INFO" ":" "dialect_default[" C_DIALECT "]"; /*--------------------------------------------------------------------------*/ #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]; diff --git a/Modules/CMakeCompilerIdDetection.cmake b/Modules/CMakeCompilerIdDetection.cmake index cbc0055..1d341e5 100644 --- a/Modules/CMakeCompilerIdDetection.cmake +++ b/Modules/CMakeCompilerIdDetection.cmake @@ -79,6 +79,7 @@ function(compiler_id_detection outvar lang) if (lang STREQUAL C) list(APPEND ordered_compilers TinyCC + Bruce ) endif() list(APPEND ordered_compilers diff --git a/Modules/CMakeDetermineCCompiler.cmake b/Modules/CMakeDetermineCCompiler.cmake index e0b5468..f8c6303 100644 --- a/Modules/CMakeDetermineCCompiler.cmake +++ b/Modules/CMakeDetermineCCompiler.cmake @@ -87,6 +87,9 @@ else() # Try enabling ANSI mode on HP. "-Aa" + + # Try compiling K&R-compatible code (needed by Bruce C Compiler). + "-D__CLASSIC_C__" ) endif() diff --git a/Modules/CMakePlatformId.h.in b/Modules/CMakePlatformId.h.in index da99b9e..47eb00a 100644 --- a/Modules/CMakePlatformId.h.in +++ b/Modules/CMakePlatformId.h.in @@ -91,11 +91,11 @@ # define PLATFORM_ID "Windows3x" # else /* unknown platform */ -# define PLATFORM_ID "" +# define PLATFORM_ID # endif #else /* unknown platform */ -# define PLATFORM_ID "" +# define PLATFORM_ID #endif @@ -145,7 +145,7 @@ # endif #else -# define ARCHITECTURE_ID "" +# define ARCHITECTURE_ID #endif /* Convert integer to decimal digit literals. */ diff --git a/Modules/Compiler/Bruce-C-DetermineCompiler.cmake b/Modules/Compiler/Bruce-C-DetermineCompiler.cmake new file mode 100644 index 0000000..bb9f4b9 --- /dev/null +++ b/Modules/Compiler/Bruce-C-DetermineCompiler.cmake @@ -0,0 +1 @@ +set(_compiler_id_pp_test "defined(__BCC__)") diff --git a/Modules/Compiler/Bruce-C.cmake b/Modules/Compiler/Bruce-C.cmake new file mode 100644 index 0000000..23676ec --- /dev/null +++ b/Modules/Compiler/Bruce-C.cmake @@ -0,0 +1,7 @@ +# Bruce C Compiler ignores "-g" flag and optimization cannot be +# enabled here (it is implemented only for 8086 target). +set (CMAKE_C_FLAGS_INIT "-D__CLASSIC_C__") +set (CMAKE_C_FLAGS_DEBUG_INIT "-g") +set (CMAKE_C_FLAGS_MINSIZEREL_INIT "-DNDEBUG") +set (CMAKE_C_FLAGS_RELEASE_INIT "-DNDEBUG") +set (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-g -DNDEBUG") |