1dnl -*- Autoconf -*- 2dnl Copyright (C) 2007-2010, 2017 Sam Steingold 3dnl Copyright (C) 2017-2018 Bruno Haible 4dnl This is free software, distributed under the GNU GPL v2+ 5 6AC_PREREQ([2.61]) 7 8dnl Download location of the newest libffcall release. 9AC_DEFUN([CL_LIBFFCALL_DOWNLOAD_URL], 10 [https://ftp.gnu.org/gnu/libffcall/libffcall-2.1.tar.gz]) 11 12AC_DEFUN([CL_FFCALL],[ 13 AC_ARG_WITH([ffcall], 14 [AS_HELP_STRING([[--with-ffcall]],[use GNU libffcall (default is YES, if present)])], 15 [cl_use_ffcall=$withval], 16 [cl_use_ffcall=default]) 17 if test $cl_use_ffcall != no; then 18 cl_save_CPPFLAGS="$CPPFLAGS" 19 cl_save_LIBS="$LIBS" 20 found_libffcall= 21 dnl First, search for libffcall (installed by libffcall >= 2.0). 22 AC_LIB_LINKFLAGS([ffcall]) 23 AC_LIB_APPENDTOVAR([LIBS], [$LIBFFCALL]) 24 unset ac_cv_header_avcall_h 25 unset ac_cv_header_callback_h 26 AC_CHECK_HEADERS([avcall.h callback.h]) 27 if test "$ac_cv_header_avcall_h" = yes -a "$ac_cv_header_callback_h" = yes; then 28 AC_SEARCH_LIBS([ffcall_get_version]) 29 if test "$ac_cv_search_ffcall_get_version" != no; then 30 found_libffcall=yes 31 fi 32 fi 33 if test -z "$found_libffcall"; then 34 CPPFLAGS="$cl_save_CPPFLAGS" 35 LIBS="$cl_save_LIBS" 36 dnl Second, search for libavcall and libcallback (installed by libffcall < 2.0). 37 AC_LIB_FROMPACKAGE([avcall], [libffcall]) 38 AC_LIB_FROMPACKAGE([callback], [libffcall]) 39 AC_LIB_LINKFLAGS([avcall]) 40 AC_LIB_LINKFLAGS([callback]) 41 AC_LIB_APPENDTOVAR([LIBS], [$LIBAVCALL]) 42 AC_LIB_APPENDTOVAR([LIBS], [$LIBCALLBACK]) 43 unset ac_cv_header_avcall_h 44 unset ac_cv_header_callback_h 45 AC_CHECK_HEADERS([avcall.h callback.h]) 46 if test "$ac_cv_header_avcall_h" = yes -a "$ac_cv_header_callback_h" = yes; then 47 AC_SEARCH_LIBS([__builtin_avcall]) 48 AC_SEARCH_LIBS([trampoline_r_data0]) 49 if test "$ac_cv_search___builtin_avcall" != no -a "$ac_cv_search_trampoline_r_data0" != no; then 50 found_libffcall=yes 51 fi 52 fi 53 if test -z "$found_libffcall"; then 54 CPPFLAGS="$cl_save_CPPFLAGS" 55 LIBS="$cl_save_LIBS" 56 fi 57 fi 58 AC_CACHE_CHECK([whether libffcall is installed], [cl_cv_have_ffcall], 59 [if test -n "$found_libffcall"; then 60 cl_cv_have_ffcall=yes 61 else 62 cl_cv_have_ffcall='no, consider installing GNU libffcall' 63 fi 64 ]) 65 if test $cl_use_ffcall = yes -a "$cl_cv_have_ffcall" != yes; then 66 if test "$ac_cv_build" = "$ac_cv_host"; then 67 host_arg="" 68 else 69 host_arg=" --host=$ac_cv_host" 70 fi 71 libffcall_url='CL_LIBFFCALL_DOWNLOAD_URL' 72 libffcall_targz=`echo "$libffcall_url" | sed -e 's|^.*/||'` 73 libffcall_dirname=`echo "$libffcall_targz" | sed -e 's|\.tar\.gz$||'` 74 AC_MSG_ERROR([Despite --with-ffcall, LIBFFCALL was not found 75 Either call configure without --with-ffcall or do 76 mkdir prerequisites; cd prerequisites; prefix=\$(pwd)/${ac_cv_host} 77 wget ${libffcall_url} 78 tar xfz ${libffcall_targz} 79 cd ${libffcall_dirname} 80 ./configure$host_arg --prefix=\${prefix} && make && make check && make install 81 cd ../.. 82 ./configure --with-libffcall-prefix=\${prefix} ${ac_configure_args}]) 83 fi 84 fi 85]) 86