diff options
author | Denis Vlasenko | 2008-02-13 07:47:37 +0000 |
---|---|---|
committer | Denis Vlasenko | 2008-02-13 07:47:37 +0000 |
commit | 0a4624aece9e46b0580dd2d5867b41f6d06ef160 (patch) | |
tree | bd7dc1273e5a21ae01d1fe0c570395299a0701a7 | |
parent | 59bb4a4f50c6f0cd1d9d65f60715f35f99076e9b (diff) | |
download | busybox-0a4624aece9e46b0580dd2d5867b41f6d06ef160.zip busybox-0a4624aece9e46b0580dd2d5867b41f6d06ef160.tar.gz |
build system: don't use -o /dev/null, old gcc can delete /dev/null!
-rwxr-xr-x | scripts/trylink | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/scripts/trylink b/scripts/trylink index 283edfd..5ef0132 100755 --- a/scripts/trylink +++ b/scripts/trylink @@ -47,15 +47,19 @@ try() { } check_cc() { - if $CC $1 -shared -o /dev/null -xc /dev/null >/dev/null 2>&1; then + local tempname="/tmp/temp.$$.$RANDOM" + # Can use "-o /dev/null", but older gcc tend to *unlink it* on failure! :( + # "-xc": C language. "/dev/null" is an empty source file. + if $CC $1 -shared -xc /dev/null -o "$tempname".o >/dev/null 2>&1; then echo "$1"; else echo "$2"; fi + rm "$tempname".o 2>/dev/null } check_libc_is_glibc() { - local tempname="/tmp/temp.$$.$RANDOM.c" + local tempname="/tmp/temp.$$.$RANDOM" echo "\ #include <stdlib.h> /* Apparently uclibc defines __GLIBC__ (compat trick?). Oh well. */ @@ -63,12 +67,12 @@ check_libc_is_glibc() { syntax error here #endif " >"$tempname" - if $CC "$tempname" -c -o /dev/null >/dev/null 2>&1; then + if $CC "$tempname".c -c -o "$tempname".o >/dev/null 2>&1; then echo "$2"; else echo "$1"; fi - rm "$tempname" + rm "$tempname".c "$tempname".o 2>/dev/null } EXE="$1" |