aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey Yasskin <jyasskin@google.com>2009-09-25 21:07:20 +0000
committerJeffrey Yasskin <jyasskin@google.com>2009-09-25 21:07:20 +0000
commitb7a8d400be7ce9e275c6e09a2a90fbacd0566476 (patch)
treee6672c6bfcfbd36acec8558a0dd83d5378e22474
parent9d06175a15a61b977ebbabd0d9cc738ebfa7870c (diff)
downloadexternal_llvm-b7a8d400be7ce9e275c6e09a2a90fbacd0566476.zip
external_llvm-b7a8d400be7ce9e275c6e09a2a90fbacd0566476.tar.gz
external_llvm-b7a8d400be7ce9e275c6e09a2a90fbacd0566476.tar.bz2
Fix a compile failure introduced by r82675 on MinGW which doesn't have
setenv(). This patch just disables the test rather than getting putenv() to work. Thanks to Sandeep Patel for reporting the problem. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82797 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--autoconf/configure.ac2
-rwxr-xr-xcmake/config-ix.cmake1
-rwxr-xr-xconfigure3
-rw-r--r--include/llvm/Config/config.h.cmake3
-rw-r--r--include/llvm/Config/config.h.in3
-rw-r--r--unittests/Support/CommandLineTest.cpp12
6 files changed, 22 insertions, 2 deletions
diff --git a/autoconf/configure.ac b/autoconf/configure.ac
index ff18d69..7d75eb2 100644
--- a/autoconf/configure.ac
+++ b/autoconf/configure.ac
@@ -1080,7 +1080,7 @@ AC_CHECK_FUNCS([powf fmodf strtof round ])
AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ])
AC_CHECK_FUNCS([isatty mkdtemp mkstemp ])
AC_CHECK_FUNCS([mktemp realpath sbrk setrlimit strdup ])
-AC_CHECK_FUNCS([strerror strerror_r strerror_s ])
+AC_CHECK_FUNCS([strerror strerror_r strerror_s setenv ])
AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ])
AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp])
AC_C_PRINTF_A
diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake
index 5b63778..a33e5d9 100755
--- a/cmake/config-ix.cmake
+++ b/cmake/config-ix.cmake
@@ -71,6 +71,7 @@ check_symbol_exists(strtoll stdlib.h HAVE_STRTOLL)
check_symbol_exists(strerror string.h HAVE_STRERROR)
check_symbol_exists(strerror_r string.h HAVE_STRERROR_R)
check_symbol_exists(strerror_s string.h HAVE_STRERROR_S)
+check_symbol_exists(setenv stdlib.h HAVE_SETENV)
check_symbol_exists(__GLIBC__ stdio.h LLVM_USING_GLIBC)
if( LLVM_USING_GLIBC )
diff --git a/configure b/configure
index 28a3cfe..9954f94 100755
--- a/configure
+++ b/configure
@@ -32291,7 +32291,8 @@ done
-for ac_func in strerror strerror_r strerror_s
+
+for ac_func in strerror strerror_r strerror_s setenv
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
{ echo "$as_me:$LINENO: checking for $ac_func" >&5
diff --git a/include/llvm/Config/config.h.cmake b/include/llvm/Config/config.h.cmake
index 360ca5d..d8de146 100644
--- a/include/llvm/Config/config.h.cmake
+++ b/include/llvm/Config/config.h.cmake
@@ -291,6 +291,9 @@
/* Define to 1 if you have the `sbrk' function. */
#undef HAVE_SBRK
+/* Define to 1 if you have the `setenv' function. */
+#cmakedefine HAVE_SETENV ${HAVE_SETENV}
+
/* Define to 1 if you have the `setjmp' function. */
#undef HAVE_SETJMP
diff --git a/include/llvm/Config/config.h.in b/include/llvm/Config/config.h.in
index f32f403..5257df9 100644
--- a/include/llvm/Config/config.h.in
+++ b/include/llvm/Config/config.h.in
@@ -321,6 +321,9 @@
/* Define to 1 if you have the `sbrk' function. */
#undef HAVE_SBRK
+/* Define to 1 if you have the `setenv' function. */
+#undef HAVE_SETENV
+
/* Define to 1 if you have the `setjmp' function. */
#undef HAVE_SETJMP
diff --git a/unittests/Support/CommandLineTest.cpp b/unittests/Support/CommandLineTest.cpp
index 70d6950..72fa24a 100644
--- a/unittests/Support/CommandLineTest.cpp
+++ b/unittests/Support/CommandLineTest.cpp
@@ -8,6 +8,7 @@
//===----------------------------------------------------------------------===//
#include "llvm/Support/CommandLine.h"
+#include "llvm/Config/config.h"
#include "gtest/gtest.h"
@@ -24,17 +25,26 @@ class TempEnvVar {
: name(name) {
const char *old_value = getenv(name);
EXPECT_EQ(NULL, old_value) << old_value;
+#if HAVE_SETENV
setenv(name, value, true);
+#else
+# define SKIP_ENVIRONMENT_TESTS
+#endif
}
~TempEnvVar() {
+#if HAVE_SETENV
+ // Assume setenv and unsetenv come together.
unsetenv(name);
+#endif
}
private:
const char *const name;
};
+#ifndef SKIP_ENVIRONMENT_TESTS
+
const char test_env_var[] = "LLVM_TEST_COMMAND_LINE_FLAGS";
cl::opt<std::string> EnvironmentTestOption("env-test-opt");
@@ -45,4 +55,6 @@ TEST(CommandLineTest, ParseEnvironment) {
EXPECT_EQ("hello", EnvironmentTestOption);
}
+#endif // SKIP_ENVIRONMENT_TESTS
+
} // anonymous namespace