summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>2010-03-23 13:24:37 +0000
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>2010-03-23 13:24:37 +0000
commit36361c1a58cdd7237f8b7a00ff4422ce6b7734fb (patch)
treeb2d717bef449c98c9cad7f0fd90fca37354d3ab2
parentc82cccdaff312f700bb0c7fd3490daafd8edc9a2 (diff)
downloadgcc-36361c1a58cdd7237f8b7a00ff4422ce6b7734fb.tar.gz
Fix stdlib.h for mingw.
2010-03-23 H.J. Lu <hongjiu.lu@intel.com> PR target/40722 * mkfixinc.sh: Fix stdlib.h for mingw. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157665 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--fixincludes/ChangeLog5
-rwxr-xr-xfixincludes/mkfixinc.sh47
2 files changed, 50 insertions, 2 deletions
diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog
index fc917b0c6fa..513cfdd1ae4 100644
--- a/fixincludes/ChangeLog
+++ b/fixincludes/ChangeLog
@@ -1,3 +1,8 @@
+2010-03-23 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/40722
+ * mkfixinc.sh: Fix stdlib.h for mingw.
+
2010-02-19 Bruce Korb <bkorb@gnu.org>
* inclhack.def: remove vestiges of inadvertently committed changes
diff --git a/fixincludes/mkfixinc.sh b/fixincludes/mkfixinc.sh
index b45f1795dcc..c353d89be50 100755
--- a/fixincludes/mkfixinc.sh
+++ b/fixincludes/mkfixinc.sh
@@ -15,8 +15,6 @@ case $machine in
i?86-moss-msdos* | \
i?86-*-pe | \
i?86-*-cygwin* | \
- i?86-*-mingw32* | \
- x86_64-*-mingw32* | \
i?86-*-interix* | \
*-*-vxworks* | \
powerpc-*-eabisim* | \
@@ -29,6 +27,51 @@ case $machine in
(echo "#! /bin/sh" ; echo "exit 0" ) > ${target}
;;
+ i?86-*-mingw32* | \
+ x86_64-*-mingw32*)
+ # We only want to fix stdlib.h in mingw.
+ # FIXME: Is SED available on mingw?
+ (cat > ${target} << EOF
+#! /bin/sh
+
+OUTPUT_DIR=\$1
+if [ "x\$OUTPUT_DIR" = "x" ]; then
+ echo fixincludes: no output directory specified
+ exit 1
+fi
+
+if [ ! -d \$OUTPUT_DIR ]; then
+ echo fixincludes: output dir \"\$OUTPUT_DIR\" is an invalid directory
+ exit 1
+fi
+
+INPUT_DIR=\$2
+if [ "x\$INPUT_DIR" = "x" ]; then
+ echo fixincludes: no input directory specified
+ exit 1
+fi
+
+if [ ! -d \$INPUT_DIR ]; then
+ echo fixincludes: input dir \"\$INPUT_DIR\" is an invalid directory
+ exit 1
+fi
+
+INPUT_STDLIB_H=\$INPUT_DIR/stdlib.h
+if [ ! -f \$INPUT_STDLIB_H ]; then
+ echo fixincludes: \"stdlib.h\" is an invalid file
+ exit 1
+fi
+
+OUTPUT_STDLIB_H=\$OUTPUT_DIR/stdlib.h
+sed -e "s/\(.*_rotl.*\)/#if __GNUC__ < 4 || (__GNUC__ == 4 \&\& __GNUC_MINOR__ < 5)\n\1/" \
+ -e "s/\(.*_lrotr.*\)/\1\n#else\n\#include <x86intrin.h>\n#endif/" \
+ \$INPUT_STDLIB_H > \$OUTPUT_STDLIB_H
+
+exit 0
+EOF
+)
+ ;;
+
*)
cat < ${srcdir}/fixinc.in > ${target} || exit 1
;;