X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=cmake%2Fconfig-ix.cmake;h=358a32cd10736b71ee88d3060a106a586a582048;hb=015776f38c9a3f24ce3fdcda3b296bbaa823dcec;hp=0567820b3319057e3c53066d2a9cb64edc6b1e8f;hpb=f7364d5833f700eefd7919326bfa5724da1461c3;p=oota-llvm.git diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake index 0567820b331..358a32cd107 100755 --- a/cmake/config-ix.cmake +++ b/cmake/config-ix.cmake @@ -11,10 +11,17 @@ include(CheckFunctionExists) include(CheckCXXSourceCompiles) include(TestBigEndian) +include(HandleLLVMStdlib) + if( UNIX AND NOT BEOS ) # Used by check_symbol_exists: set(CMAKE_REQUIRED_LIBRARIES m) endif() +# x86_64 FreeBSD 9.2 requires libcxxrt to be specified explicitly. +if( CMAKE_SYSTEM MATCHES "FreeBSD-9.2-RELEASE" AND + CMAKE_SIZEOF_VOID_P EQUAL 8 ) + list(APPEND CMAKE_REQUIRED_LIBRARIES "cxxrt") +endif() # Helper macros and functions macro(add_cxx_include result files) @@ -43,13 +50,13 @@ check_include_file(execinfo.h HAVE_EXECINFO_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(link.h HAVE_LINK_H) check_include_file(malloc.h HAVE_MALLOC_H) check_include_file(malloc/malloc.h HAVE_MALLOC_MALLOC_H) check_include_file(ndir.h HAVE_NDIR_H) if( NOT PURE_WINDOWS ) check_include_file(pthread.h HAVE_PTHREAD_H) endif() -check_include_file(sanitizer/msan_interface.h HAVE_SANITIZER_MSAN_INTERFACE_H) check_include_file(signal.h HAVE_SIGNAL_H) check_include_file(stdint.h HAVE_STDINT_H) check_include_file(sys/dir.h HAVE_SYS_DIR_H) @@ -74,12 +81,6 @@ check_symbol_exists(FE_INEXACT "fenv.h" HAVE_DECL_FE_INEXACT) check_include_file(mach/mach.h HAVE_MACH_MACH_H) check_include_file(mach-o/dyld.h HAVE_MACH_O_DYLD_H) -check_include_file(curses.h HAVE_CURSES_H) -check_include_file(ncurses.h HAVE_NCURSES_H) -check_include_file(ncursesw.h HAVE_NCURSESW_H) -check_include_file(ncurses/curses.h HAVE_NCURSES_CURSES_H) -check_include_file(ncursesw/curses.h HAVE_NCURSESW_CURSES_H) - # library checks if( NOT PURE_WINDOWS ) check_library_exists(pthread pthread_create "" HAVE_LIBPTHREAD) @@ -103,23 +104,25 @@ if( NOT PURE_WINDOWS ) else() set(HAVE_LIBZ 0) endif() - if(LLVM_ENABLE_CURSES) - check_library_exists(curses has_colors "" HAVE_CURSES) - if(NOT HAVE_CURSES) - check_library_exists(ncurses has_colors "" HAVE_NCURSES) - set(HAVE_CURSES ${HAVE_NCURSES}) - if(NOT HAVE_CURSES) - check_library_exists(ncursesw has_colors "" HAVE_NCURSESW) - set(HAVE_CURSES ${HAVE_NCURSESW}) + check_library_exists(edit el_init "" HAVE_LIBEDIT) + if(LLVM_ENABLE_TERMINFO) + set(HAVE_TERMINFO 0) + foreach(library tinfo terminfo curses ncurses ncursesw) + string(TOUPPER ${library} library_suffix) + check_library_exists(${library} setupterm "" HAVE_TERMINFO_${library_suffix}) + if(HAVE_TERMINFO_${library_suffix}) + set(HAVE_TERMINFO 1) + set(TERMINFO_LIBS "${library}") + break() endif() - endif() + endforeach() else() - set(HAVE_CURSES 0) + set(HAVE_TERMINFO 0) endif() endif() # function checks -check_symbol_exists(arc4random "stdlib.h" HAVE_ARC4RANDOM) +check_symbol_exists(arc4random "stdlib.h" HAVE_DECL_ARC4RANDOM) check_symbol_exists(backtrace "execinfo.h" HAVE_BACKTRACE) check_symbol_exists(getpagesize unistd.h HAVE_GETPAGESIZE) check_symbol_exists(getrusage sys/resource.h HAVE_GETRUSAGE) @@ -165,6 +168,7 @@ check_symbol_exists(gettimeofday sys/time.h HAVE_GETTIMEOFDAY) check_symbol_exists(getrlimit "sys/types.h;sys/time.h;sys/resource.h" HAVE_GETRLIMIT) check_symbol_exists(posix_spawn spawn.h HAVE_POSIX_SPAWN) check_symbol_exists(pread unistd.h HAVE_PREAD) +check_symbol_exists(realpath stdlib.h HAVE_REALPATH) check_symbol_exists(sbrk unistd.h HAVE_SBRK) check_symbol_exists(srand48 stdlib.h HAVE_RAND48_SRAND48) if( HAVE_RAND48_SRAND48 ) @@ -249,24 +253,18 @@ function(llvm_find_program name) endif(LLVM_PATH_${NAME}) endfunction() -llvm_find_program(gv) -llvm_find_program(circo) -llvm_find_program(twopi) -llvm_find_program(neato) -llvm_find_program(fdp) -llvm_find_program(dot) -llvm_find_program(dotty) -llvm_find_program(xdot xdot.py) -llvm_find_program(Graphviz) +if (LLVM_ENABLE_DOXYGEN) + llvm_find_program(dot) +endif () if( LLVM_ENABLE_FFI ) find_path(FFI_INCLUDE_PATH ffi.h PATHS ${FFI_INCLUDE_DIR}) - if( FFI_INCLUDE_PATH ) + if( EXISTS "${FFI_INCLUDE_PATH}/ffi.h" ) set(FFI_HEADER ffi.h CACHE INTERNAL "") set(HAVE_FFI_H 1 CACHE INTERNAL "") else() find_path(FFI_INCLUDE_PATH ffi/ffi.h PATHS ${FFI_INCLUDE_DIR}) - if( FFI_INCLUDE_PATH ) + if( EXISTS "${FFI_INCLUDE_PATH}/ffi/ffi.h" ) set(FFI_HEADER ffi/ffi.h CACHE INTERNAL "") set(HAVE_FFI_FFI_H 1 CACHE INTERNAL "") endif() @@ -301,13 +299,6 @@ else() set(ENABLE_PIC 0) endif() -find_package(LibXml2) -if (LIBXML2_FOUND) - set(CLANG_HAVE_LIBXML 1) -endif () - -include(CheckCXXCompilerFlag) - check_cxx_compiler_flag("-Wno-variadic-macros" SUPPORTS_NO_VARIADIC_MACROS_FLAG) set(USE_NO_MAYBE_UNINITIALIZED 0) @@ -356,6 +347,8 @@ elseif (LLVM_NATIVE_ARCH MATCHES "powerpc") set(LLVM_NATIVE_ARCH PowerPC) elseif (LLVM_NATIVE_ARCH MATCHES "aarch64") set(LLVM_NATIVE_ARCH AArch64) +elseif (LLVM_NATIVE_ARCH MATCHES "arm64") + set(LLVM_NATIVE_ARCH AArch64) elseif (LLVM_NATIVE_ARCH MATCHES "arm") set(LLVM_NATIVE_ARCH ARM) elseif (LLVM_NATIVE_ARCH MATCHES "mips") @@ -405,6 +398,7 @@ endif () if( MINGW ) set(HAVE_LIBIMAGEHLP 1) set(HAVE_LIBPSAPI 1) + set(HAVE_LIBSHELL32 1) # TODO: Check existence of libraries. # include(CheckLibraryExists) # CHECK_LIBRARY_EXISTS(imagehlp ??? . HAVE_LIBIMAGEHLP) @@ -465,3 +459,50 @@ if (LLVM_ENABLE_ZLIB ) endif() set(LLVM_PREFIX ${CMAKE_INSTALL_PREFIX}) + +if (LLVM_ENABLE_DOXYGEN) + message(STATUS "Doxygen enabled.") + find_package(Doxygen REQUIRED) + + if (DOXYGEN_FOUND) + # If we find doxygen and we want to enable doxygen by default create a + # global aggregate doxygen target for generating llvm and any/all + # subprojects doxygen documentation. + if (LLVM_BUILD_DOCS) + add_custom_target(doxygen ALL) + endif() + + option(LLVM_DOXYGEN_EXTERNAL_SEARCH "Enable doxygen external search." OFF) + if (LLVM_DOXYGEN_EXTERNAL_SEARCH) + set(LLVM_DOXYGEN_SEARCHENGINE_URL "" CACHE STRING "URL to use for external searhc.") + set(LLVM_DOXYGEN_SEARCH_MAPPINGS "" CACHE STRING "Doxygen Search Mappings") + endif() + endif() +else() + message(STATUS "Doxygen disabled.") +endif() + +if (LLVM_ENABLE_SPHINX) + message(STATUS "Sphinx enabled.") + find_package(Sphinx REQUIRED) + if (LLVM_BUILD_DOCS) + add_custom_target(sphinx ALL) + endif() +else() + message(STATUS "Sphinx disabled.") +endif() + +set(LLVM_BINDINGS "") +find_program(GO_EXECUTABLE NAMES go DOC "go executable") +if(GO_EXECUTABLE STREQUAL "GO_EXECUTABLE-NOTFOUND") + message(STATUS "Go bindings disabled.") +else() + execute_process(COMMAND ${GO_EXECUTABLE} run ${CMAKE_SOURCE_DIR}/bindings/go/conftest.go + RESULT_VARIABLE GO_CONFTEST) + if(GO_CONFTEST STREQUAL "0") + set(LLVM_BINDINGS "${LLVM_BINDINGS} go") + message(STATUS "Go bindings enabled.") + else() + message(STATUS "Go bindings disabled, need at least Go 1.2.") + endif() +endif()