From da93df22f50fbbc5635c70411bd26ca554f3eef7 Mon Sep 17 00:00:00 2001 From: Johan Danielsson Date: Mon, 5 Apr 1999 14:13:06 +0000 Subject: [PATCH] compile and link, rather than looking for files; also export more information, so it's possible to add rpath information git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@5851 ec53bebd-3082-4978-b11e-865c3cabbd6b --- cf/test-package.m4 | 172 +++++++++++++++++++-------------------------- 1 file changed, 71 insertions(+), 101 deletions(-) diff --git a/cf/test-package.m4 b/cf/test-package.m4 index 7060b3c40..ba44a9653 100644 --- a/cf/test-package.m4 +++ b/cf/test-package.m4 @@ -1,118 +1,88 @@ dnl $Id$ dnl -dnl AC_TEST_PACKAGE(package,header,lib,linkline,default location) -AC_DEFUN(AC_TEST_PACKAGE, -[ -AC_MSG_CHECKING(for $1) +dnl AC_TEST_PACKAGE_NEW(package,headers,libraries,extra libs,default locations) + +AC_DEFUN(AC_TEST_PACKAGE,[AC_TEST_PACKAGE_NEW($1,[#include <$2>],$4,,$5)]) + +AC_DEFUN(AC_TEST_PACKAGE_NEW,[ AC_ARG_WITH($1, -[ --with-$1=dir use $1 in dir], -[if test "$with_$1" = "no"; then - with_$1= -fi] -) +[ --with-$1=dir use $1 in dir]) AC_ARG_WITH($1-lib, -[ --with-$1-lib=dir use $1-lib in dir], +[ --with-$1-lib=dir use $1 libraries in dir], [if test "$withval" = "yes" -o "$withval" = "no"; then AC_MSG_ERROR([No argument for --with-$1-lib]) elif test "X$with_$1" = "X"; then with_$1=yes -fi] -) +fi]) AC_ARG_WITH($1-include, -[ --with-$1-include=dir use $1-include in dir], +[ --with-$1-include=dir use $1 headers in dir], [if test "$withval" = "yes" -o "$withval" = "no"; then AC_MSG_ERROR([No argument for --with-$1-include]) elif test "X$with_$1" = "X"; then with_$1=yes -fi] -) +fi]) -define([foo], translit($1, [a-z], [A-Z])) -if test -n "$with_$1" -o -n "$5"; then -dnl AC_DEFINE([foo]) - if test -n "$with_$1" -a "$with_$1" != "yes"; then - $1_dir="$with_$1" - elif test -n "$5"; then - $1_dir="$5" - fi -dnl Try to find include - if test -n "$with_$1_include"; then - trydir=$with_$1_include - elif test -n "$with_$1" -a "$with_$1" != "yes"; then - trydir="$with_$1 $with_$1/include" - elif test -n "$5"; then - trydir="$5/include" - else - trydir= - fi - found= - for i in $trydir ""; do - if test -n "$i"; then - if test -f $i/$2; then - found=yes; res=$i; break - fi - else - AC_TRY_CPP([#include <$2>], [found=yes; res=$i; break]) - fi - done - if test -n "$found"; then - $1_include=$res - elif test -n "$with_$1"; then - AC_MSG_ERROR(Cannot find $2) - fi -dnl Try to find lib - if test -n "$with_$1_lib"; then - trydir=$with_$1_lib - elif test -n "$with_$1" -a "$with_$1" != "yes"; then - trydir="$with_$1 $with_$1/lib" - elif test -n "$5"; then - trydir="$5/lib" - else - trydir= - fi - found= - for i in $trydir ""; do - if test -n "$i"; then - if test -f $i/$3; then - found=yes; res=$i; break - fi - else - old_LIBS=$LIBS - LIBS="$4 $LIBS" - AC_TRY_LINK([], [], [found=yes; res=$i; LIBS=$old_LIBS; break]) - LIBS=$old_LIBS - fi - done - if test -n "$found"; then - $1_lib=$res - elif test -n "$with_$1"; then - AC_MSG_ERROR(Cannot find $3) - fi - if test -n "$$1_include" -o -n "$$1_lib"; then - AC_MSG_RESULT([headers $$1_include, libraries $$1_lib]) - AC_DEFINE_UNQUOTED(foo, 1, [Define if you have the $1 package]) - if test "$with_$1" = "" -a "$5"; then - with_$1="$5" - fi - else - AC_MSG_RESULT(no) - fi - if test -n "$$1_include"; then - INCLUDE_$1="-I$$1_include" - fi - AC_SUBST(INCLUDE_$1) - foo[INCLUDE]="$INCLUDE_$1" - AC_SUBST(foo[INCLUDE]) - if test -n "$$1_lib"; then - LIB_$1="-L$$1_lib" - fi - LIB_$1="$LIB_$1 $4" - AC_SUBST(LIB_$1) - foo[LIB]="$LIB_$1" - AC_SUBST(foo[LIB]) +AC_MSG_CHECKING(for $1) + +case "$with_$1" in +yes) ;; +no) ;; +"") ;; +*) if test "$with_$1_include" = ""; then + with_$1_include="$with_$1/include" + fi + if test "$with_$1_lib" = ""; then + with_$1_lib="$with_$1/lib$abilibdirext" + fi + ;; +esac +header_dirs= +lib_dirs= +d='$5' +for i in $d; do + header_dirs="$header_dirs $i/include" + lib_dirs="$lib_dirs $i/lib$abilibdirext" +done + +case "$with_$1_include" in +yes) ;; +no) ;; +*) header_dirs="$with_$1_include $header_dirs";; +esac +case "$with_$1_lib" in +yes) ;; +no) ;; +*) lib_dirs="$with_$1_lib $lib_dirs";; +esac + +save_CFLAGS="$CFLAGS" +save_LIBS="$LIBS" +ires= lres= +for i in $header_dirs; do + CFLAGS="-I$i $save_CFLAGS" + AC_TRY_COMPILE([$2],,ires=$i;break) +done +for i in $lib_dirs; do + LIBS="-L$i $3 $4 $save_LIBS" + AC_TRY_LINK([$2],,lres=$i;break) +done +CFLAGS="$save_CFLAGS" +LIBS="$save_LIBS" + +if test "$ires" -a "$lres"; then + $1_includedir="$ires" + $1_libdir="$lres" + INCLUDE_$1="-I$$1_includedir" + LIB_$1="-L$$1_libdir $3" + AC_DEFINE_UNQUOTED(upcase($1),1,[Define if you have the $1 package.]) + with_$1=yes + AC_MSG_RESULT([headers $ires, libraries $lres]) else - AC_MSG_RESULT(no) + INCLUDE_$1= + LIB_$1= + with_$1=no + AC_MSG_RESULT($with_$1) fi -undefine([foo]) +AC_SUBST(INCLUDE_$1) +AC_SUBST(LIB_$1) ]) -