Commit 5adc829e authored by Mans Rullgard's avatar Mans Rullgard Committed by Luca Barbato
Browse files

configure: add functions for testing code fragments



This simplifies testing arbitrary code fragments within a function
body.
Signed-off-by: default avatarMans Rullgard <mans@mansr.com>
Signed-off-by: default avatarLuca Barbato <lu_zero@gentoo.org>
parent b7558ac2
......@@ -660,6 +660,20 @@ check_ld(){
check_cmd $ld $LDFLAGS $flags -o $TMPE $TMPO $libs $extralibs
}
check_code(){
log check_code "$@"
check=$1
headers=$2
code=$3
shift 3
{
for hdr in $headers; do
echo "#include <$hdr>"
done
echo "int main(void) { $code; return 0; }"
} | check_$check "$@"
}
check_cppflags(){
log check_cppflags "$@"
set -- $($filter_cppflags "$@")
......@@ -817,15 +831,7 @@ check_type(){
type=$2
shift 2
disable_safe "$type"
incs=""
for hdr in $headers; do
incs="$incs
#include <$hdr>"
done
check_cc "$@" <<EOF && enable_safe "$type"
$incs
$type v;
EOF
check_code cc "$headers" "$type v" "$@" && enable_safe "$type"
}
check_struct(){
......@@ -835,15 +841,8 @@ check_struct(){
member=$3
shift 3
disable_safe "${struct}_${member}"
incs=""
for hdr in $headers; do
incs="$incs
#include <$hdr>"
done
check_cc "$@" <<EOF && enable_safe "${struct}_${member}"
$incs
const void *p = &(($struct *)0)->$member;
EOF
check_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" &&
enable_safe "${struct}_${member}"
}
require(){
......@@ -2399,9 +2398,7 @@ case "$arch" in
;;
x86)
subarch="x86_32"
check_cc <<EOF && subarch="x86_64"
int test[(int)sizeof(char*) - 7];
EOF
check_code cc "" "int test[(int)sizeof(char*) - 7]" && subarch="x86_64"
if test "$subarch" = "x86_64"; then
spic=$shared
fi
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment