From 9d77e5ba47ce5d4e23370e48ff1783b5df478735 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 9 Apr 2010 20:45:04 +0000 Subject: [PATCH] add minix support, patch by Kees van Reeuwijk! PR6797 llvm-svn: 100895 --- autoconf/configure.ac | 7 +++++++ lib/Support/raw_ostream.cpp | 3 ++- lib/System/DynamicLibrary.cpp | 14 ++++++++++++++ lib/Transforms/Makefile | 2 +- runtime/Makefile | 2 +- .../googletest/include/gtest/internal/gtest-port.h | 3 ++- 6 files changed, 27 insertions(+), 4 deletions(-) diff --git a/autoconf/configure.ac b/autoconf/configure.ac index 04c0886ab78..bd85577bcbd 100644 --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -159,6 +159,11 @@ AC_CACHE_CHECK([type of operating system we're going to host on], llvm_cv_no_link_all_option="-Wl,-noall_load" llvm_cv_os_type="Darwin" llvm_cv_platform_type="Unix" ;; + *-*-minix*) + llvm_cv_link_all_option="-Wl,-all_load" + llvm_cv_no_link_all_option="-Wl,-noall_load" + llvm_cv_os_type="Minix" + llvm_cv_platform_type="Unix" ;; *-*-freebsd*) llvm_cv_link_all_option="-Wl,--whole-archive" llvm_cv_no_link_all_option="-Wl,--no-whole-archive" @@ -247,6 +252,8 @@ AC_CACHE_CHECK([type of operating system we're going to target], llvm_cv_target_os_type="Cygwin" ;; *-*-darwin*) llvm_cv_target_os_type="Darwin" ;; + *-*-minix*) + llvm_cv_target_os_type="Minix" ;; *-*-freebsd*) llvm_cv_target_os_type="FreeBSD" ;; *-*-openbsd*) diff --git a/lib/Support/raw_ostream.cpp b/lib/Support/raw_ostream.cpp index 7a02db1aeb3..0b05c5449ae 100644 --- a/lib/Support/raw_ostream.cpp +++ b/lib/Support/raw_ostream.cpp @@ -442,7 +442,8 @@ uint64_t raw_fd_ostream::seek(uint64_t off) { } size_t raw_fd_ostream::preferred_buffer_size() const { -#if !defined(_MSC_VER) && !defined(__MINGW32__) // Windows has no st_blksize. +#if !defined(_MSC_VER) && !defined(__MINGW32__) && !defined(_MINIX) + // Windows and Minix have no st_blksize. assert(FD >= 0 && "File not yet open!"); struct stat statbuf; if (fstat(FD, &statbuf) != 0) diff --git a/lib/System/DynamicLibrary.cpp b/lib/System/DynamicLibrary.cpp index d6f3140a88e..ebc8acf3061 100644 --- a/lib/System/DynamicLibrary.cpp +++ b/lib/System/DynamicLibrary.cpp @@ -44,6 +44,7 @@ void llvm::sys::DynamicLibrary::AddSymbol(const char* symbolName, #else +#if HAVE_DLFCN_H #include using namespace llvm; using namespace llvm::sys; @@ -68,6 +69,17 @@ bool DynamicLibrary::LoadLibraryPermanently(const char *Filename, OpenedHandles->push_back(H); return false; } +#else + +using namespace llvm; +using namespace llvm::sys; + +bool DynamicLibrary::LoadLibraryPermanently(const char *Filename, + std::string *ErrMsg) { + if (ErrMsg) *ErrMsg = "dlopen() not supported on this platform"; + return true; +} +#endif namespace llvm { void *SearchForAddressOfSpecialSymbol(const char* symbolName); @@ -84,6 +96,7 @@ void* DynamicLibrary::SearchForAddressOfSymbol(const char* symbolName) { return I->second; } +#if HAVE_DLFCN_H // Now search the libraries. if (OpenedHandles) { for (std::vector::iterator I = OpenedHandles->begin(), @@ -95,6 +108,7 @@ void* DynamicLibrary::SearchForAddressOfSymbol(const char* symbolName) { } } } +#endif if (void *Result = llvm::SearchForAddressOfSpecialSymbol(symbolName)) return Result; diff --git a/lib/Transforms/Makefile b/lib/Transforms/Makefile index ea4a1158acc..e527be25dec 100644 --- a/lib/Transforms/Makefile +++ b/lib/Transforms/Makefile @@ -13,7 +13,7 @@ PARALLEL_DIRS = Utils Instrumentation Scalar InstCombine IPO Hello include $(LEVEL)/Makefile.config # No support for plugins on windows targets -ifeq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW)) +ifeq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW Minix)) PARALLEL_DIRS := $(filter-out Hello, $(PARALLEL_DIRS)) endif diff --git a/runtime/Makefile b/runtime/Makefile index 7209867c2f6..d0e85d58264 100644 --- a/runtime/Makefile +++ b/runtime/Makefile @@ -20,7 +20,7 @@ ifeq ($(ARCH), Sparc) PARALLEL_DIRS := $(filter-out libprofile, $(PARALLEL_DIRS)) endif -ifeq ($(TARGET_OS), $(filter $(TARGET_OS), Cygwin MingW)) +ifeq ($(TARGET_OS), $(filter $(TARGET_OS), Cygwin MingW Minix)) PARALLEL_DIRS := $(filter-out libprofile, $(PARALLEL_DIRS)) endif diff --git a/utils/unittest/googletest/include/gtest/internal/gtest-port.h b/utils/unittest/googletest/include/gtest/internal/gtest-port.h index 3e49993bff4..20a95c9b2ec 100644 --- a/utils/unittest/googletest/include/gtest/internal/gtest-port.h +++ b/utils/unittest/googletest/include/gtest/internal/gtest-port.h @@ -227,9 +227,10 @@ // TODO(wan@google.com): uses autoconf to detect whether ::std::wstring // is available. -#if defined(GTEST_OS_CYGWIN) || defined(GTEST_OS_SOLARIS) || defined(GTEST_OS_HAIKU) +#if defined(GTEST_OS_CYGWIN) || defined(GTEST_OS_SOLARIS) || defined(GTEST_OS_HAIKU) || defined(_MINIX) // At least some versions of cygwin don't support ::std::wstring. // Solaris' libc++ doesn't support it either. +// Minix currently doesn't support it either. #define GTEST_HAS_STD_WSTRING 0 #else #define GTEST_HAS_STD_WSTRING GTEST_HAS_STD_STRING