From 12c35f511e7d2ff74113f307212b6b422898b0f2 Mon Sep 17 00:00:00 2001 From: David Tardon Date: Fri, 17 Feb 2012 13:10:14 +0100 Subject: add macro for extracting mingw dll names from libtool files Hardcoding dll names from SuSE Linux in configure.in is not good, because they might be slightly different on other systems (notably Fedora :-), or the libraries might be compiled with different dependencies. --- m4/mingw.m4 | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 m4/mingw.m4 (limited to 'm4') diff --git a/m4/mingw.m4 b/m4/mingw.m4 new file mode 100644 index 000000000000..cd0f38fc62b1 --- /dev/null +++ b/m4/mingw.m4 @@ -0,0 +1,61 @@ +# libo_FIND_MINGW_EXTERNAL_DLLS([library-names],[variable],[?exclude]) +# uses: CC, WITH_MINGW +# -------------------------------------------------------------------- +AC_DEFUN([libo_FIND_MINGW_EXTERNAL_DLLS], +[AC_REQUIRE([AC_PROG_SED])dnl +if test "$WITH_MINGW" = yes -a -n "$CC"; then + _libo_mingw_libdir=`$CC -print-sysroot`/mingw/lib + for _libo_mingw_lib in $1; do + _libo_mingw_lib="$_libo_mingw_libdir/$_libo_mingw_lib.la" + _libo_mingw_find_dll([$_libo_mingw_lib],[$3],[_libo_mingw_new_dll]) + if test -n "$_libo_mingw_new_dll"; then + _libo_mingw_new_dlls="$_libo_mingw_new_dll" + fi + + _libo_mingw_get_libtool_var([dependency_libs],[$_libo_mingw_lib],[_libo_mingw_dep_libs]) + for _libo_mingw_dep_lib in $_libo_mingw_dep_libs; do + if test "${_libo_mingw_dep_lib%.la}" != "$_libo_mingw_dep_lib"; then + _libo_mingw_new_dll='' + _libo_mingw_find_dll([$_libo_mingw_dep_lib],[$3],[_libo_mingw_new_dll]) + if test -n "$_libo_mingw_new_dll"; then + _libo_mingw_new_dlls="$_libo_mingw_new_dlls $_libo_mingw_new_dll" + fi + fi + done + $2="$_libo_mingw_new_dlls" + done +fi[]dnl +]) # libo_FIND_MINGW_EXTERNAL_DLLS + +# libo_ADD_MINGW_EXTERNAL_DLLS([library-names],[variable]) +# uses: CC, WITH_MINGW +# -------------------------------------------------------- +AC_DEFUN([libo_ADD_MINGW_EXTERNAL_DLLS], +[libo_FIND_MINGW_EXTERNAL_DLLS([$1],[_libo_mingw_found_dlls],[$$2]) +if test -n "$_libo_mingw_found_dlls"; then + $2="$$2 $_libo_mingw_found_dlls" +fi[]dnl +]) # libo_ADD_MINGW_EXTERNAL_DLLS + +# _libo_mingw_get_libtool_var([key],[lib],[out-var]) +m4_define([_libo_mingw_get_libtool_var], +[$3=`$SED -n -e '/^$1=/{' -e "s/.*='//" -e "s/'//" -e p -e '}' $2`[]dnl +]) # _libo_mingw_get_libtool_var + +# _libo_mingw_find_dll([library],[dlls],[out-var]) +m4_define([_libo_mingw_find_dll], +[if test -f "$1"; then + _libo_mingw_get_libtool_var([dlname],[$1],[_libo_mingw_dlname]) + _libo_mingw_dlname=`basename $_libo_mingw_dlname` + _libo_mingw_dll_present= + for _libo_mingw_dll in $2; do + if test "$_libo_mingw_dlname" = "$_libo_mingw_dll"; then + _libo_mingw_dll_present=yes + break + fi + done + if test -z "$_libo_mingw_dll_present"; then + $3="$_libo_mingw_dlname" + fi +fi[]dnl +]) # _libo_mingw_find_dll -- cgit