BUG: now the toolchain file is configured into the buildtree, otherwise e.g.

CMAKE_SOURCE_DIR can't be used there
ENH: modify CMakeCCompilerId.c and .h so that sdcc can compile them. As they
were the preprocessor produced:

 9 "test.c"
static char const info_compiler[] = "INFO:compiler["
# 40 "test.c"
""

"]";

and the mixing of the preprocessing directives and the string constants
didn't work.

Alex
This commit is contained in:
Alexander Neundorf 2007-05-22 12:48:16 -04:00
parent bef8d3580b
commit 6e2fd2c2ca
4 changed files with 95 additions and 52 deletions

View File

@ -6,40 +6,50 @@
# define const # define const
#endif #endif
static char const info_compiler[] = "INFO:compiler["
#if defined(__INTEL_COMPILER) || defined(__ICC) #if defined(__INTEL_COMPILER) || defined(__ICC)
"Intel" #define _COMPILER_ID "Intel"
#elif defined(__BORLANDC__) #elif defined(__BORLANDC__)
"Borland" #define _COMPILER_ID "Borland"
#elif defined(__WATCOMC__) #elif defined(__WATCOMC__)
"Watcom" #define _COMPILER_ID "Watcom"
#elif defined(__SUNPRO_C) #elif defined(__SUNPRO_C)
"SunPro" #define _COMPILER_ID "SunPro"
#elif defined(__HP_cc) #elif defined(__HP_cc)
"HP" #define _COMPILER_ID "HP"
#elif defined(__DECC) #elif defined(__DECC)
"Compaq" #define _COMPILER_ID "Compaq"
#elif defined(__IBMC__) #elif defined(__IBMC__)
"VisualAge" #define _COMPILER_ID "VisualAge"
#elif defined(__GNUC__) #elif defined(__GNUC__)
"GNU" #define _COMPILER_ID "GNU"
#elif defined(_MSC_VER) #elif defined(_MSC_VER)
"MSVC" #define _COMPILER_ID "MSVC"
#elif defined(_COMPILER_VERSION) #elif defined(_COMPILER_VERSION)
"MIPSpro" #define _COMPILER_ID "MIPSpro"
/* This compiler is either not known or is too old to define an /* This compiler is either not known or is too old to define an
identification macro. Try to identify the platform and guess that identification macro. Try to identify the platform and guess that
it is the native compiler. */ it is the native compiler. */
#elif defined(__sgi) #elif defined(__sgi)
"MIPSpro" #define _COMPILER_ID "MIPSpro"
#elif defined(__hpux) || defined(__hpua) #elif defined(__hpux) || defined(__hpua)
"HP" #define _COMPILER_ID "HP"
#else /* unknown compiler */ #else /* unknown compiler */
"" #define _COMPILER_ID ""
#endif #endif
"]";
static char const info_compiler[] = "INFO:compiler[" _COMPILER_ID "]";
/* Include the platform identification source. */ /* Include the platform identification source. */
#include "CMakePlatformId.h" #include "CMakePlatformId.h"

View File

@ -27,9 +27,6 @@
# MacOSX Darwin # MacOSX Darwin
#set the source file which will be configured to become CMakeSystem.cmake
SET(_CMAKE_SYSTEM_TEMPLATE_FILE ${CMAKE_ROOT}/Modules/CMakeSystem.cmake.in )
IF(CMAKE_TOOLCHAIN_FILE) IF(CMAKE_TOOLCHAIN_FILE)
# at first try to load it as path relative to the directory from which cmake has been run # at first try to load it as path relative to the directory from which cmake has been run
INCLUDE("${CMAKE_BINARY_DIR}/${CMAKE_TOOLCHAIN_FILE}" OPTIONAL RESULT_VARIABLE _INCLUDED_TOOLCHAIN_FILE) INCLUDE("${CMAKE_BINARY_DIR}/${CMAKE_TOOLCHAIN_FILE}" OPTIONAL RESULT_VARIABLE _INCLUDED_TOOLCHAIN_FILE)
@ -44,9 +41,6 @@ IF(CMAKE_TOOLCHAIN_FILE)
MESSAGE(FATAL_ERROR "Could not find toolchain file: ${CMAKE_TOOLCHAIN_FILE}") MESSAGE(FATAL_ERROR "Could not find toolchain file: ${CMAKE_TOOLCHAIN_FILE}")
ENDIF(_INCLUDED_TOOLCHAIN_FILE) ENDIF(_INCLUDED_TOOLCHAIN_FILE)
# use a different source file for CMakeSystem.cmake, since it has to hold a bit more information
SET(_CMAKE_SYSTEM_TEMPLATE_FILE ${CMAKE_ROOT}/Modules/CMakeSystemWithToolchainFile.cmake.in )
IF(NOT DEFINED CMAKE_CROSSCOMPILING) IF(NOT DEFINED CMAKE_CROSSCOMPILING)
SET(CMAKE_CROSSCOMPILING TRUE) SET(CMAKE_CROSSCOMPILING TRUE)
ENDIF(NOT DEFINED CMAKE_CROSSCOMPILING) ENDIF(NOT DEFINED CMAKE_CROSSCOMPILING)
@ -112,8 +106,23 @@ ENDIF(CMAKE_SYSTEM_VERSION)
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
"The system is: ${CMAKE_SYSTEM_NAME} - ${CMAKE_SYSTEM_VERSION} - ${CMAKE_SYSTEM_PROCESSOR}\n") "The system is: ${CMAKE_SYSTEM_NAME} - ${CMAKE_SYSTEM_VERSION} - ${CMAKE_SYSTEM_PROCESSOR}\n")
# configure variables set in this file for fast reload, the template file is defined at the top of this file # if a toolchain file is used use configure_file() to copy it into the
CONFIGURE_FILE(${_CMAKE_SYSTEM_TEMPLATE_FILE} # build tree, because this way e.g. ${CMAKE_SOURCE_DIR} will be replaced
# with its full path, and so it will also work when used in try_compile()
IF (CMAKE_TOOLCHAIN_FILE)
SET(_OWN_DIR ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY})
CONFIGURE_FILE(${CMAKE_TOOLCHAIN_FILE}
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeToolchainFile.cmake)
CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakeSystemWithToolchainFile.cmake.in
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeSystem.cmake ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeSystem.cmake
IMMEDIATE @ONLY) IMMEDIATE @ONLY)
ELSE (CMAKE_TOOLCHAIN_FILE)
# configure variables set in this file for fast reload, the template file is defined at the top of this file
CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakeSystem.cmake.in
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeSystem.cmake
IMMEDIATE @ONLY)
ENDIF (CMAKE_TOOLCHAIN_FILE)

View File

@ -1,54 +1,78 @@
/* Identify known platforms by name. */ /* Identify known platforms by name. */
static char const info_platform[] = "INFO:platform["
#if defined(__linux) || defined(__linux__) || defined(linux) #if defined(__linux) || defined(__linux__) || defined(linux)
"Linux" #define _PLATFORM_ID "Linux"
#elif defined(__CYGWIN__) #elif defined(__CYGWIN__)
"Cygwin" #define _PLATFORM_ID "Cygwin"
#elif defined(__MINGW32__) #elif defined(__MINGW32__)
"MinGW" #define _PLATFORM_ID "MinGW"
#elif defined(__APPLE__) #elif defined(__APPLE__)
"Darwin" #define _PLATFORM_ID "Darwin"
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) #elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
"Windows" #define _PLATFORM_ID "Windows"
#elif defined(__FreeBSD__) || defined(__FreeBSD) #elif defined(__FreeBSD__) || defined(__FreeBSD)
"FreeBSD" #define _PLATFORM_ID "FreeBSD"
#elif defined(__NetBSD__) || defined(__NetBSD) #elif defined(__NetBSD__) || defined(__NetBSD)
"NetBSD" #define _PLATFORM_ID "NetBSD"
#elif defined(__OpenBSD__) || defined(__OPENBSD) #elif defined(__OpenBSD__) || defined(__OPENBSD)
"OpenBSD" #define _PLATFORM_ID "OpenBSD"
#elif defined(__sun) || defined(sun) #elif defined(__sun) || defined(sun)
"SunOS" #define _PLATFORM_ID "SunOS"
#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) #elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
"AIX" #define _PLATFORM_ID "AIX"
#elif defined(__sgi) || defined(__sgi__) || defined(_SGI) #elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
"IRIX" #define _PLATFORM_ID "IRIX"
#elif defined(__hpux) || defined(__hpux__) #elif defined(__hpux) || defined(__hpux__)
"HP-UX" #define _PLATFORM_ID "HP-UX"
#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) #elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
"BeOS" #define _PLATFORM_ID "BeOS"
#elif defined(__QNX__) || defined(__QNXNTO__) #elif defined(__QNX__) || defined(__QNXNTO__)
"QNX" #define _PLATFORM_ID "QNX"
#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) #elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
"Tru64" #define _PLATFORM_ID "Tru64"
#elif defined(__riscos) || defined(__riscos__) #elif defined(__riscos) || defined(__riscos__)
"RISCos" #define _PLATFORM_ID "RISCos"
#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) #elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
"SINIX" #define _PLATFORM_ID "SINIX"
#elif defined(__UNIX_SV__) #elif defined(__UNIX_SV__)
"UNIX_SV" #define _PLATFORM_ID "UNIX_SV"
#elif defined(__bsdos__) #elif defined(__bsdos__)
"BSDOS" #define _PLATFORM_ID "BSDOS"
#elif defined(_MPRAS) || defined(MPRAS) #elif defined(_MPRAS) || defined(MPRAS)
"MP-RAS" #define _PLATFORM_ID "MP-RAS"
#elif defined(__osf) || defined(__osf__) #elif defined(__osf) || defined(__osf__)
"OSF1" #define _PLATFORM_ID "OSF1"
#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) #elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
"SCO_SV" #define _PLATFORM_ID "SCO_SV"
#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) #elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
"ULTRIX" #define _PLATFORM_ID "ULTRIX"
#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) #elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
"Xenix" #define _PLATFORM_ID "Xenix"
#else /* unknown platform */ #else /* unknown platform */
"" #define _PLATFORM_ID ""
#endif #endif
"]"; static char const info_platform[] = "INFO:platform[" _PLATFORM_ID "]";

View File

@ -1,5 +1,5 @@
# the following file has been configured from @CMAKE_TOOLCHAIN_FILE@
INCLUDE("@CMAKE_TOOLCHAIN_FILE@") INCLUDE(@_OWN_DIR@/CMakeToolchainFile.cmake)
# set CMAKE_SYSTEM to the CMAKE_SYSTEM_NAME # set CMAKE_SYSTEM to the CMAKE_SYSTEM_NAME
SET(CMAKE_SYSTEM ${CMAKE_SYSTEM_NAME}) SET(CMAKE_SYSTEM ${CMAKE_SYSTEM_NAME})