PROJECT(GCCCONFIG C) INCLUDE(${CMAKE_ROOT}/Modules/TestBigEndian.cmake) INCLUDE(${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake) INCLUDE(${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake) INCLUDE(${CMAKE_ROOT}/Modules/CheckVariableExists.cmake) INCLUDE(${CMAKE_ROOT}/Modules/CheckTypeSize.cmake) MACRO(PERFORM_C_TEST var description invert) IF(${var}_COMPILED MATCHES "^${var}_COMPILED$") MESSAGE(STATUS "${description}") TRY_COMPILE(${var}_COMPILED ${GCCCONFIG_BINARY_DIR} ${GCCCONFIG_SOURCE_DIR}/gcc_c_tests.c OUTPUT_VARIABLE OUTPUT COMPILE_DEFINITIONS -DTEST_${var} -DHAVE_GETPAGESIZE=${HAVE_GETPAGESIZE} -DHAVE_INTTYPES_H=${HAVE_INTTYPES_H} -DHAVE_MEMORY_H=${HAVE_MEMORY_H} -DHAVE_STDINT_H=${HAVE_STDINT_H} -DHAVE_STDLIB_H=${HAVE_STDLIB_H} -DHAVE_STRINGS_H=${HAVE_STRINGS_H} -DHAVE_STRING_H=${HAVE_STRING_H} -DHAVE_SYS_STAT_H=${HAVE_SYS_STAT_H} -DHAVE_SYS_TYPES_H=${HAVE_SYS_TYPES_H} -DHAVE_SYS_PARAM_H=${HAVE_SYS_PARAM_H} -DHAVE_UNISTD_H=${HAVE_UNISTD_H} -DSTDC_HEADERS=${STDC_HEADERS} ) IF(${var}_COMPILED) FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeOutput.log "${description} compiled with the following output:\n${OUTPUT}\n\n") ELSE(${var}_COMPILED) FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeError.log "${description} failed to compile with the following output:\n${OUTPUT}\n\n") ENDIF(${var}_COMPILED) IF(${invert} MATCHES INVERT) IF(${var}_COMPILED) MESSAGE(STATUS "${description} - no") ELSE(${var}_COMPILED) MESSAGE(STATUS "${description} - yes") ENDIF(${var}_COMPILED) ELSE(${invert} MATCHES INVERT) IF(${var}_COMPILED) MESSAGE(STATUS "${description} - yes") ELSE(${var}_COMPILED) MESSAGE(STATUS "${description} - no") ENDIF(${var}_COMPILED) ENDIF(${invert} MATCHES INVERT) ENDIF(${var}_COMPILED MATCHES "^${var}_COMPILED$") IF(${invert} MATCHES INVERT) IF(${var}_COMPILED) SET(${var} 0) ELSE(${var}_COMPILED) SET(${var} 1) ENDIF(${var}_COMPILED) ELSE(${invert} MATCHES INVERT) IF(${var}_COMPILED) SET(${var} 1) ELSE(${var}_COMPILED) SET(${var} 0) ENDIF(${var}_COMPILED) ENDIF(${invert} MATCHES INVERT) ENDMACRO(PERFORM_C_TEST) MACRO(PERFORM_C_TEST_RUN var description zero nonzero invert) IF(${var}_RESULT MATCHES "^${var}_RESULT$") MESSAGE(STATUS "${description}") TRY_RUN(${var}_RESULT ${var}_COMPILED ${GCCCONFIG_BINARY_DIR} ${GCCCONFIG_SOURCE_DIR}/gcc_c_tests.c OUTPUT_VARIABLE OUTPUT COMPILE_DEFINITIONS -DTEST_${var} -DHAVE_GETPAGESIZE=${HAVE_GETPAGESIZE} -DHAVE_INTTYPES_H=${HAVE_INTTYPES_H} -DHAVE_MEMORY_H=${HAVE_MEMORY_H} -DHAVE_STDINT_H=${HAVE_STDINT_H} -DHAVE_STDLIB_H=${HAVE_STDLIB_H} -DHAVE_STRINGS_H=${HAVE_STRINGS_H} -DHAVE_STRING_H=${HAVE_STRING_H} -DHAVE_SYS_STAT_H=${HAVE_SYS_STAT_H} -DHAVE_SYS_TYPES_H=${HAVE_SYS_TYPES_H} -DHAVE_SYS_PARAM_H=${HAVE_SYS_PARAM_H} -DHAVE_UNISTD_H=${HAVE_UNISTD_H} -DSTDC_HEADERS=${STDC_HEADERS} ) IF(${var}_COMPILED) FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeOutput.log "${description} compiled with the following output:\n${OUTPUT}\n\n") IF(${invert} MATCHES INVERT) IF(${var}_RESULT) MESSAGE(STATUS "${description} - ${zero}") ELSE(${var}_RESULT) MESSAGE(STATUS "${description} - ${nonzero}") ENDIF(${var}_RESULT) ELSE(${invert} MATCHES INVERT) IF(${var}_RESULT) MESSAGE(STATUS "${description} - ${nonzero}") ELSE(${var}_RESULT) MESSAGE(STATUS "${description} - ${zero}") ENDIF(${var}_RESULT) ENDIF(${invert} MATCHES INVERT) ELSE(${var}_COMPILED) FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeError.log "${description} failed to compile with the following output:\n${OUTPUT}\n\n") MESSAGE(STATUS "${description} - test compilation failed") ENDIF(${var}_COMPILED) ENDIF(${var}_RESULT MATCHES "^${var}_RESULT$") IF(${var}_COMPILED) IF(${invert} MATCHES INVERT) IF(${var}_RESULT) SET(${var} 1) ELSE(${var}_RESULT) SET(${var} 0) ENDIF(${var}_RESULT) ELSE(${invert} MATCHES INVERT) IF(${var}_RESULT) SET(${var} 0) ELSE(${var}_RESULT) SET(${var} 1) ENDIF(${var}_RESULT) ENDIF(${invert} MATCHES INVERT) ENDIF(${var}_COMPILED) ENDMACRO(PERFORM_C_TEST_RUN) TEST_BIG_ENDIAN(HOST_WORDS_BIG_ENDIAN) IF(HOST_WORDS_BIG_ENDIAN) SET(WORDS_BIGENDIAN 1) ENDIF(HOST_WORDS_BIG_ENDIAN) IF(NOT WORDS_BIGENDIAN) SET(HOST_WORDS_BIG_ENDIAN "") ENDIF(NOT WORDS_BIGENDIAN) PERFORM_C_TEST(gcc_ac_cv_c_const "checking for an ANSI C-conforming const" DIRECT) PERFORM_C_TEST(HAVE_SYS_WAIT_H "checking for sys/wait.h that is POSIX.1 compatible" DIRECT) PERFORM_C_TEST(TIME_WITH_SYS_TIME "checking whether time.h and sys/time.h may both be included" DIRECT) PERFORM_C_TEST(NEED_DECLARATION_ERRNO "checking whether errno must be declared" INVERT) PERFORM_C_TEST(STDC_HEADERS "checking for ANSI C header files" DIRECT) PERFORM_C_TEST(HAVE_SYS_RESOURCE_H_WITH_SYS_TIME_H "checking for sys/resource.h with sys/time.h" DIRECT) PERFORM_C_TEST(HAVE_DIRENT_H "checking for dirent.h with sys/types.h" DIRECT) CHECK_INCLUDE_FILE(alloca.h HAVE_ALLOCA_H) CHECK_INCLUDE_FILE(fcntl.h HAVE_FCNTL_H) CHECK_INCLUDE_FILE(inttypes.h HAVE_INTTYPES_H) CHECK_INCLUDE_FILE(limits.h HAVE_LIMITS_H) CHECK_INCLUDE_FILE(machine/hal_sysinfo.h HAVE_MACHINE/HAL_SYSINFO_H) CHECK_INCLUDE_FILE(malloc.h HAVE_MALLOC_H) CHECK_INCLUDE_FILE(memory.h HAVE_MEMORY_H) CHECK_INCLUDE_FILE(stdint.h HAVE_STDINT_H) CHECK_INCLUDE_FILE(stdlib.h HAVE_STDLIB_H) CHECK_INCLUDE_FILE(string.h HAVE_STRING_H) CHECK_INCLUDE_FILE(strings.h HAVE_STRINGS_H) CHECK_INCLUDE_FILE(sys/file.h HAVE_SYS_FILE_H) CHECK_INCLUDE_FILE(sys/mman.h HAVE_SYS_MMAN_H) CHECK_INCLUDE_FILE(sys/param.h HAVE_SYS_PARAM_H) CHECK_INCLUDE_FILE(sys/pstat.h HAVE_SYS_PSTAT_H) CHECK_INCLUDE_FILE(sys/resource.h HAVE_SYS_RESOURCE_H) CHECK_INCLUDE_FILE(sys/stat.h HAVE_SYS_STAT_H) CHECK_INCLUDE_FILE(sys/sysctl.h HAVE_SYS_SYSCTL_H) CHECK_INCLUDE_FILE(sys/sysinfo.h HAVE_SYS_SYSINFO_H) CHECK_INCLUDE_FILE(sys/sysmp.h HAVE_SYS_SYSMP_H) CHECK_INCLUDE_FILE(sys/systemcfg.h HAVE_SYS_SYSTEMCFG_H) CHECK_INCLUDE_FILE(sys/table.h HAVE_SYS_TABLE_H) CHECK_INCLUDE_FILE(sys/time.h HAVE_SYS_TIME_H) CHECK_INCLUDE_FILE(sys/types.h HAVE_SYS_TYPES_H) CHECK_INCLUDE_FILE(time.h HAVE_TIME_H) CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H) CHECK_INCLUDE_FILE(vfork.h HAVE_VFORK_H) CHECK_FUNCTION_EXISTS(_doprnt HAVE__DOPRNT) CHECK_FUNCTION_EXISTS(asprintf HAVE_ASPRINTF) CHECK_FUNCTION_EXISTS(atexit HAVE_ATEXIT) CHECK_FUNCTION_EXISTS(basename HAVE_BASENAME) CHECK_FUNCTION_EXISTS(bcmp HAVE_BCMP) CHECK_FUNCTION_EXISTS(bcopy HAVE_BCOPY) CHECK_FUNCTION_EXISTS(bsearch HAVE_BSEARCH) CHECK_FUNCTION_EXISTS(bzero HAVE_BZERO) CHECK_FUNCTION_EXISTS(calloc HAVE_CALLOC) CHECK_FUNCTION_EXISTS(clock HAVE_CLOCK) CHECK_FUNCTION_EXISTS(ffs HAVE_FFS) CHECK_FUNCTION_EXISTS(getcwd HAVE_GETCWD) CHECK_FUNCTION_EXISTS(getpagesize HAVE_GETPAGESIZE) CHECK_FUNCTION_EXISTS(index HAVE_INDEX) CHECK_FUNCTION_EXISTS(insque HAVE_INSQUE) CHECK_FUNCTION_EXISTS(memchr HAVE_MEMCHR) CHECK_FUNCTION_EXISTS(memcmp HAVE_MEMCMP) CHECK_FUNCTION_EXISTS(memcpy HAVE_MEMCPY) CHECK_FUNCTION_EXISTS(memmove HAVE_MEMMOVE) CHECK_FUNCTION_EXISTS(mempcpy HAVE_MEMPCPY) CHECK_FUNCTION_EXISTS(memset HAVE_MEMSET) CHECK_FUNCTION_EXISTS(mkstemps HAVE_MKSTEMPS) CHECK_FUNCTION_EXISTS(putenv HAVE_PUTENV) CHECK_FUNCTION_EXISTS(random HAVE_RANDOM) CHECK_FUNCTION_EXISTS(rename HAVE_RENAME) CHECK_FUNCTION_EXISTS(rindex HAVE_RINDEX) CHECK_FUNCTION_EXISTS(setenv HAVE_SETENV) CHECK_FUNCTION_EXISTS(sigsetmask HAVE_SIGSETMASK) CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF) CHECK_FUNCTION_EXISTS(stpcpy HAVE_STPCPY) CHECK_FUNCTION_EXISTS(stpncpy HAVE_STPNCPY) CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP) CHECK_FUNCTION_EXISTS(strchr HAVE_STRCHR) CHECK_FUNCTION_EXISTS(strdup HAVE_STRDUP) CHECK_FUNCTION_EXISTS(strncmp HAVE_STRNCMP) CHECK_FUNCTION_EXISTS(strncasecmp HAVE_STRNCASECMP) CHECK_FUNCTION_EXISTS(strrchr HAVE_STRRCHR) CHECK_FUNCTION_EXISTS(strstr HAVE_STRSTR) CHECK_FUNCTION_EXISTS(strtod HAVE_STRTOD) CHECK_FUNCTION_EXISTS(strtol HAVE_STRTOL) CHECK_FUNCTION_EXISTS(strtoul HAVE_STRTOUL) CHECK_FUNCTION_EXISTS(tmpnam HAVE_TMPNAM) CHECK_FUNCTION_EXISTS(vasprintf HAVE_VASPRINTF) CHECK_FUNCTION_EXISTS(vfprintf HAVE_VFPRINTF) CHECK_FUNCTION_EXISTS(vprintf HAVE_VPRINTF) CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF) CHECK_FUNCTION_EXISTS(vsprintf HAVE_VSPRINTF) CHECK_FUNCTION_EXISTS(waitpid HAVE_WAITPID) CHECK_FUNCTION_EXISTS(canonicalize_file_name HAVE_CANONICALIZE_FILE_NAME) CHECK_FUNCTION_EXISTS(getrusage HAVE_GETRUSAGE) CHECK_FUNCTION_EXISTS(getsysinfo HAVE_GETSYSINFO) CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) CHECK_FUNCTION_EXISTS(on_exit HAVE_ON_EXIT) CHECK_FUNCTION_EXISTS(psignal HAVE_PSIGNAL) CHECK_FUNCTION_EXISTS(pstat_getdynamic HAVE_PSTAT_GETDYNAMIC) CHECK_FUNCTION_EXISTS(pstat_getstatic HAVE_PSTAT_GETSTATIC) CHECK_FUNCTION_EXISTS(realpath HAVE_REALPATH) CHECK_FUNCTION_EXISTS(sbrk HAVE_SBRK) CHECK_FUNCTION_EXISTS(strerror HAVE_STRERROR) CHECK_FUNCTION_EXISTS(strsignal HAVE_STRSIGNAL) CHECK_FUNCTION_EXISTS(sysconf HAVE_SYSCONF) CHECK_FUNCTION_EXISTS(sysctl HAVE_SYSCTL) CHECK_FUNCTION_EXISTS(sysmp HAVE_SYSMP) CHECK_FUNCTION_EXISTS(table HAVE_TABLE) CHECK_FUNCTION_EXISTS(times HAVE_TIMES) PERFORM_C_TEST(HAVE_SYS_ERRLIST "checking for variable sys_errlist" DIRECT) PERFORM_C_TEST(HAVE_SYS_ERRLIST_IN_STDLIB_H "checking for sys_errlist in stdlib.h" DIRECT) IF(NOT HAVE_SYS_ERRLIST) IF(HAVE_SYS_ERRLIST_IN_STDLIB_H) SET(HAVE_SYS_ERRLIST 1 CACHE INTERNAL "Have sys_errlist in stdlib.h.") ENDIF(HAVE_SYS_ERRLIST_IN_STDLIB_H) ENDIF(NOT HAVE_SYS_ERRLIST) PERFORM_C_TEST(HAVE_SYS_NERR "checking for variable sys_nerr" DIRECT) PERFORM_C_TEST(HAVE_SYS_SIGLIST "checking for variable sys_siglist" DIRECT) PERFORM_C_TEST(HAVE__DOPRNT "checking for variable _doprnt" DIRECT) PERFORM_C_TEST(HAVE__SYSTEM_CONFIGURATION "checking for variable _system_configuration" DIRECT) PERFORM_C_TEST(NEED_DECLARATION_CANONICALIZE_FILE_NAME "checking whether canonicalize_file_name must be declared" INVERT) PERFORM_C_TEST(HAVE_UINTPTR_T "checking for uintptr_t" DIRECT) PERFORM_C_TEST(HAVE_PID_T "checking for pid_t" DIRECT) SET(GCC_UNIX_TESTS 1) IF(WIN32) IF(NOT CYGWIN) SET(GCC_UNIX_TESTS 0) ENDIF(NOT CYGWIN) ENDIF(WIN32) IF(GCC_UNIX_TESTS) PERFORM_C_TEST_RUN(gcc_ac_cv_func_fork "checking for fork" yes no DIRECT) PERFORM_C_TEST_RUN(gcc_ac_cv_func_vfork "checking for vfork" yes no DIRECT) PERFORM_C_TEST_RUN(HAVE_MMAP "checking for working mmap" yes no DIRECT) ELSE(GCC_UNIX_TESTS) SET(gcc_ac_cv_func_fork 0) SET(gcc_ac_cv_func_vfork 0) SET(HAVE_MMAP 0) ENDIF(GCC_UNIX_TESTS) PERFORM_C_TEST(CRAY_STACKSEG_END "checking whether alloca needs Cray hooks" DIRECT) PERFORM_C_TEST_RUN(STACK_DIRECTION "checking stack direction for C alloca" -1 +1 DIRECT) IF(STACK_DIRECTION_RESULT) SET(STACK_DIRECTION -1) ELSE(STACK_DIRECTION_RESULT) SET(STACK_DIRECTION 1) ENDIF(STACK_DIRECTION_RESULT) # Some platforms (at least Mac) require sys/time.h to be included # before sys/resource.h. If including these together works, but # sys/resource.h fails on its own, pretend we have it. IF(NOT HAVE_SYS_RESOURCE_H) IF(HAVE_SYS_RESOURCE_H_WITH_SYS_TIME_H) SET(HAVE_SYS_RESOURCE_H 1) ENDIF(HAVE_SYS_RESOURCE_H_WITH_SYS_TIME_H) ENDIF(NOT HAVE_SYS_RESOURCE_H) IF(HAVE_GAS_WEAK MATCHES "^HAVE_GAS_WEAK$") MESSAGE(STATUS "checking assembler for .weak") TRY_COMPILE(HAVE_GAS_WEAK ${GCCCONFIG_BINARY_DIR}/gcc_asm_tests ${GCCCONFIG_SOURCE_DIR}/gcc_asm_tests GAT test_weak) IF(HAVE_GAS_WEAK) MESSAGE(STATUS "checking assembler for .weak - yes") ELSE(HAVE_GAS_WEAK) MESSAGE(STATUS "checking assembler for .weak - no") ENDIF(HAVE_GAS_WEAK) ENDIF(HAVE_GAS_WEAK MATCHES "^HAVE_GAS_WEAK$") IF(NOT gcc_ac_cv_func_vfork) SET(vfork fork) ENDIF(NOT gcc_ac_cv_func_vfork) SET(inline) IF(gcc_ac_cv_c_const) SET(const) ELSE(gcc_ac_cv_c_const) SET(const 1) ENDIF(gcc_ac_cv_c_const) IF(WORDS_BIGENDIAN) SET(BYTEORDER 4321) ELSE(WORDS_BIGENDIAN) SET(BYTEORDER 1234) ENDIF(WORDS_BIGENDIAN) # Tests not done: # checking for inline... (cached) inline # checking for working fork... yes # checking for working vfork... (cached) yes # checking for working strncmp... yes # checking for library containing strerror... none required # gcc tests IF(GCC_UNIX_TESTS) PERFORM_C_TEST_RUN(GETGROUPS_T "checking type of array argument to getgroups" "gid_t" "int" DIRECT) ELSE(GCC_UNIX_TESTS) SET(GETGROUPS_T 0) ENDIF(GCC_UNIX_TESTS) PERFORM_C_TEST(STRING_WITH_STRINGS "checking whether string.h and strings.h may both be included" DIRECT) PERFORM_C_TEST(_GNU_SOURCE "checking whether C library is GNU" DIRECT) PERFORM_C_TEST(HAVE_LC_MESSAGES "checking for LC_MESSAGES" DIRECT) PERFORM_C_TEST(HAVE_INITFINI_ARRAY "checking for .preinit_array/.init_array/.fini_array support" DIRECT) PERFORM_C_TEST_RUN(HAVE_WORKING_MBSTOWCS "checking whether mbstowcs works" "yes" "no" DIRECT) PERFORM_C_TEST_RUN(HAVE_PRINTF_PTR "checking whether the printf functions support %p" "yes" "no" DIRECT) PERFORM_C_TEST(SYS_TYPES_HAS_SSIZE_T "checking whether sys/types.h has ssize_t" DIRECT) IF(GETGROUPS_T) SET(GETGROUPS_T gid_t) ENDIF(GETGROUPS_T) CHECK_INCLUDE_FILE(direct.h HAVE_DIRECT_H) CHECK_INCLUDE_FILE(fcntl.h HAVE_FCNTL_H) CHECK_INCLUDE_FILE(langinfo.h HAVE_LANGINFO_H) CHECK_INCLUDE_FILE(ldfcn.h HAVE_LDFCN_H) CHECK_INCLUDE_FILE(limits.h HAVE_LIMITS_H) CHECK_INCLUDE_FILE(locale.h HAVE_LOCALE_H) CHECK_INCLUDE_FILE(malloc.h HAVE_MALLOC_H) CHECK_INCLUDE_FILE(stdbool.h HAVE_STDBOOL_H) CHECK_INCLUDE_FILE(stddef.h HAVE_STDDEF_H) CHECK_INCLUDE_FILE(stdlib.h HAVE_STDLIB_H) CHECK_INCLUDE_FILE(string.h HAVE_STRING_H) CHECK_INCLUDE_FILE(strings.h HAVE_STRINGS_H) CHECK_INCLUDE_FILE(sys/file.h HAVE_SYS_FILE_H) CHECK_INCLUDE_FILE(sys/mman.h HAVE_SYS_MMAN_H) CHECK_INCLUDE_FILE(sys/param.h HAVE_SYS_PARAM_H) CHECK_INCLUDE_FILE(sys/resource.h HAVE_SYS_RESOURCE_H) CHECK_INCLUDE_FILE(sys/stat.h HAVE_SYS_STAT_H) CHECK_INCLUDE_FILE(sys/time.h HAVE_SYS_TIME_H) CHECK_INCLUDE_FILE(sys/times.h HAVE_SYS_TIMES_H) CHECK_INCLUDE_FILE(time.h HAVE_TIME_H) CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H) CHECK_INCLUDE_FILE(wchar.h HAVE_WCHAR_H) CHECK_FUNCTION_EXISTS(times HAVE_TIMES) CHECK_FUNCTION_EXISTS(clock HAVE_CLOCK) CHECK_FUNCTION_EXISTS(dup2 HAVE_DUP2) CHECK_FUNCTION_EXISTS(kill HAVE_KILL) CHECK_FUNCTION_EXISTS(getrlimit HAVE_GETRLIMIT) CHECK_FUNCTION_EXISTS(setrlimit HAVE_SETRLIMIT) CHECK_FUNCTION_EXISTS(atoll HAVE_ATOLL) CHECK_FUNCTION_EXISTS(atoq HAVE_ATOQ) CHECK_FUNCTION_EXISTS(sysconf HAVE_SYSCONF) CHECK_FUNCTION_EXISTS(strsignal HAVE_STRSIGNAL) CHECK_FUNCTION_EXISTS(putc_unlocked HAVE_PUTC_UNLOCKED) CHECK_FUNCTION_EXISTS(fputc_unlocked HAVE_FPUTC_UNLOCKED) CHECK_FUNCTION_EXISTS(fputs_unlocked HAVE_FPUTS_UNLOCKED) CHECK_FUNCTION_EXISTS(fwrite_unlocked HAVE_FWRITE_UNLOCKED) CHECK_FUNCTION_EXISTS(fprintf_unlocked HAVE_FPRINTF_UNLOCKED) CHECK_FUNCTION_EXISTS(getrusage HAVE_GETRUSAGE) CHECK_FUNCTION_EXISTS(nl_langinfo HAVE_NL_LANGINFO) CHECK_FUNCTION_EXISTS(scandir HAVE_SCANDIR) CHECK_FUNCTION_EXISTS(alphasort HAVE_ALPHASORT) CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) CHECK_FUNCTION_EXISTS(mbstowcs HAVE_MBSTOWCS) CHECK_FUNCTION_EXISTS(wcswidth HAVE_WCSWIDTH) CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP) CHECK_FUNCTION_EXISTS(mincore HAVE_MINCORE) CHECK_FUNCTION_EXISTS(setlocale HAVE_SETLOCALE) CHECK_TYPE_SIZE("void*" SIZEOF_VOID_P) CHECK_TYPE_SIZE("short" SIZEOF_SHORT) CHECK_TYPE_SIZE("int" SIZEOF_INT) CHECK_TYPE_SIZE("long" SIZEOF_LONG) CHECK_TYPE_SIZE("long long" SIZEOF_LONG_LONG) IF(SIZEOF_LONG_LONG) SET(HAVE_LONG_LONG 1) ENDIF(SIZEOF_LONG_LONG) SET(ENABLE_CHECKING 1) SET(ENABLE_TREE_CHECKING 1) SET(ENABLE_GC_CHECKING 1) SET(ENABLE_RTL_FLAG_CHECKING 1) MACRO(CHECK_DECL_EXISTS symbol var) IF("${var}_COMPILED" MATCHES "^${var}_COMPILED$") MESSAGE(STATUS "Looking for declaration of ${symbol}") CONFIGURE_FILE( ${GCCCONFIG_SOURCE_DIR}/auto-host.h.in ${GCCCONFIG_BINARY_DIR}/gcc_check_decl.h @ONLY IMMEDIATE) FILE(WRITE ${GCCCONFIG_BINARY_DIR}/gcc_check_decl.c "#include \"gcc_check_decl.h\"\n" "#undef ${var}\n" "#define ${var} 1\n" "#include \"ansidecl.h\"\n" "#include \"system.h\"\n" "void cmakeRequireSymbol(int dummy,...){(void)dummy;}\n" "int main()\n" "{\n" "#ifndef ${symbol}\n" " cmakeRequireSymbol(0,&${symbol});\n" "#endif\n" " return 0;\n" "}\n" ) TRY_COMPILE(${var}_COMPILED ${GCCCONFIG_BINARY_DIR} ${GCCCONFIG_BINARY_DIR}/gcc_check_decl.c OUTPUT_VARIABLE OUTPUT COMPILE_DEFINITIONS -I\"${GCC_SOURCE_DIR}/gcc\" -I\"${GCC_SOURCE_DIR}/include\" ) IF(${var}_COMPILED) FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeOutput.log "Check for ${symbol} compiled with the following output:\n${OUTPUT}\n\n") MESSAGE(STATUS "Looking for declaration of ${symbol} - found") ELSE(${var}_COMPILED) FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeError.log "Check for ${symbol} failed to compile with the following output:\n${OUTPUT}\n\n") MESSAGE(STATUS "Looking for declaration of ${symbol} - not found") ENDIF(${var}_COMPILED) ENDIF("${var}_COMPILED" MATCHES "^${var}_COMPILED$") IF(${var}_COMPILED) SET(${var} 1) ELSE(${var}_COMPILED) SET(${var} 0) ENDIF(${var}_COMPILED) ENDMACRO(CHECK_DECL_EXISTS) CHECK_DECL_EXISTS(getenv HAVE_DECL_GETENV) CHECK_DECL_EXISTS(atol HAVE_DECL_ATOL) CHECK_DECL_EXISTS(sbrk HAVE_DECL_SBRK) CHECK_DECL_EXISTS(abort HAVE_DECL_ABORT) CHECK_DECL_EXISTS(atof HAVE_DECL_ATOF) CHECK_DECL_EXISTS(getcwd HAVE_DECL_GETCWD) CHECK_DECL_EXISTS(getwd HAVE_DECL_GETWD) CHECK_DECL_EXISTS(strsignal HAVE_DECL_STRSIGNAL) CHECK_DECL_EXISTS(putc_unlocked HAVE_DECL_PUTC_UNLOCKED) CHECK_DECL_EXISTS(fputs_unlocked HAVE_DECL_FPUTS_UNLOCKED) CHECK_DECL_EXISTS(fwrite_unlocked HAVE_DECL_FWRITE_UNLOCKED) CHECK_DECL_EXISTS(fprintf_unlocked HAVE_DECL_FPRINTF_UNLOCKED) CHECK_DECL_EXISTS(strstr HAVE_DECL_STRSTR) CHECK_DECL_EXISTS(errno HAVE_DECL_ERRNO) CHECK_DECL_EXISTS(asprintf HAVE_DECL_ASPRINTF) CHECK_DECL_EXISTS(vasprintf HAVE_DECL_VASPRINTF) CHECK_DECL_EXISTS(malloc HAVE_DECL_MALLOC) CHECK_DECL_EXISTS(realloc HAVE_DECL_REALLOC) CHECK_DECL_EXISTS(calloc HAVE_DECL_CALLOC) CHECK_DECL_EXISTS(free HAVE_DECL_FREE) CHECK_DECL_EXISTS(basename HAVE_DECL_BASENAME) CHECK_DECL_EXISTS(getopt HAVE_DECL_GETOPT) CHECK_DECL_EXISTS(clock HAVE_DECL_CLOCK) CHECK_DECL_EXISTS(getrlimit HAVE_DECL_GETRLIMIT) CHECK_DECL_EXISTS(setrlimit HAVE_DECL_SETRLIMIT) CHECK_DECL_EXISTS(getrusage HAVE_DECL_GETRUSAGE) CHECK_DECL_EXISTS(ldgetname HAVE_DECL_LDGETNAME) CHECK_DECL_EXISTS(times HAVE_DECL_TIMES) #----------------------------------------------------------------------------- # We fake the following settings because we don't care about the backend. SET(HAVE_MMAP_FILE 0) SET(HAVE_MMAP_DEV_ZERO 0) SET(HAVE_MMAP_ANON 0) SET(HAVE_ICONV 0) SET(ICONV_CONST 0) SET(HAVE_GAS_BALIGN_AND_P2ALIGN 1) SET(HAVE_GAS_MAX_SKIP_P2ALIGN 1) SET(HAVE_GAS_SUBSECTION_ORDERING 1) SET(HAVE_GAS_HIDDEN 1) SET(HAVE_AS_LEB128 1) SET(HAVE_GAS_SHF_MERGE 1) SET(HAVE_AS_TLS 1) SET(HAVE_GAS_FILDS_FISTS 1) SET(HAVE_AS_GOTOFF_IN_DATA 1) SET(HAVE_AS_GSTABS_DEBUG_FLAG 1) SET(HAVE_AS_DWARF2_DEBUG_LINE 1) SET(HAVE_AS_GDWARF2_DEBUG_FLAG 1) SET(HAVE_LD_RO_RW_SECTION_MIXING 1) SET(HAVE_LD_EH_FRAME_HDR 1) #----------------------------------------------------------------------------- SET(PREFIX_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/include") MACRO(CHECK_TYPE_EXISTS symbol var) IF("${var}_COMPILED" MATCHES "^${var}_COMPILED$") MESSAGE(STATUS "Checking for ${symbol}") CONFIGURE_FILE( ${GCCCONFIG_SOURCE_DIR}/auto-host.h.in ${GCCCONFIG_BINARY_DIR}/gcc_test_auto_host.h @ONLY IMMEDIATE) TRY_COMPILE(${var}_COMPILED ${GCCCONFIG_BINARY_DIR} ${GCCCONFIG_SOURCE_DIR}/gcc_c_tests.c OUTPUT_VARIABLE OUTPUT COMPILE_DEFINITIONS -DTEST_${var} -I\"${GCC_SOURCE_DIR}/gcc\" -I\"${GCC_SOURCE_DIR}/include\" -I\"${GCCCONFIG_BINARY_DIR}\" ) IF(${var}_COMPILED) FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeOutput.log "Check for ${symbol} compiled with the following output:\n${OUTPUT}\n\n") MESSAGE(STATUS "Checking for ${symbol} - found") ELSE(${var}_COMPILED) FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeError.log "Check for ${symbol} failed to compile with the following output:\n${OUTPUT}\n\n") MESSAGE(STATUS "Checking for ${symbol} - not found") ENDIF(${var}_COMPILED) ENDIF("${var}_COMPILED" MATCHES "^${var}_COMPILED$") IF(${var}_COMPILED) SET(${var} 1) ELSE(${var}_COMPILED) SET(${var} 0) ENDIF(${var}_COMPILED) ENDMACRO(CHECK_TYPE_EXISTS) CHECK_TYPE_EXISTS("struct tms" HAVE_STRUCT_TMS) CHECK_TYPE_EXISTS(clock_t HAVE_CLOCK_T) #CHECK_TYPE_EXISTS(ino_t HAVE_INO_T) #CHECK_TYPE_EXISTS(dev_t HAVE_DEV_T) # Find the platform configuration. IF(UNIX) SET(GCC_USE_PLATFORM_SCRIPT 1) ENDIF(UNIX) IF(MINGW) SET(GCC_USE_PLATFORM_SCRIPT 1) ENDIF(MINGW) IF(GCC_USE_PLATFORM_SCRIPT) FIND_PROGRAM(GCC_SH sh /bin/sh c:/msys/1.0/bin/sh.exe) MARK_AS_ADVANCED(GCC_SH) EXEC_PROGRAM(${GCC_SH} ARGS "\"${GCCCONFIG_SOURCE_DIR}/gcc_platform.sh\"" "\"${GCCCONFIG_BINARY_DIR}/gcc_platform.cmake\"" "\"${CMAKE_COMMAND}\"") ELSE(GCC_USE_PLATFORM_SCRIPT) CONFIGURE_FILE(${GCCCONFIG_SOURCE_DIR}/gcc_platform_win32.cmake ${GCCCONFIG_BINARY_DIR}/gcc_platform.cmake @ONLY IMMEDIATE) ENDIF(GCC_USE_PLATFORM_SCRIPT) # Load the platform configuration. IF(EXISTS "${GCCCONFIG_BINARY_DIR}/gcc_platform.cmake") INCLUDE("${GCCCONFIG_BINARY_DIR}/gcc_platform.cmake") ELSE(EXISTS "${GCCCONFIG_BINARY_DIR}/gcc_platform.cmake") MESSAGE(FATAL_ERROR "Cannot find gcc_platform.cmake.") ENDIF(EXISTS "${GCCCONFIG_BINARY_DIR}/gcc_platform.cmake") IF(extra_modes) SET(EXTRA_MODES_FILE ${GCC_SOURCE_DIR}/gcc/config/${extra_modes}) SET(EXTRA_CC_MODES 1) ENDIF(extra_modes) IF(NOT HAVE_DIRENT_H) CONFIGURE_FILE(${GCCCONFIG_SOURCE_DIR}/dirent.h ${GCC_BINARY_DIR}/gcc/dirent.h @ONLY IMMEDIATE) ENDIF(NOT HAVE_DIRENT_H) CONFIGURE_FILE(${GCCCONFIG_SOURCE_DIR}/libiberty_config.h.in ${GCC_BINARY_DIR}/libiberty/config.h @ONLY IMMEDIATE) CONFIGURE_FILE(${GCCCONFIG_SOURCE_DIR}/auto-host.h.in ${GCC_BINARY_DIR}/gcc/auto-host.h @ONLY IMMEDIATE)