Download M4 Source | Macro Index Page |
PATCH_LIBTOOL_SYS_LIB_SEARCH_PATH_SPEC
Cross-compiling to win32 from a unix system reveals a bug - the path-separator has been set to ";" depending on the target system. However, the crossgcc search_path_spec works in a unix-environment with unix-style directories and unix-stylish path_separator. The result: the search_path_spec is a single word still containing the ":" separators.
This macro fixes the situation: when we see the libtool PATH_SEP to be ":" and search_path_spec to contain ":" characters, then these are replaced with spaces to let the resulting string work as a for-loop argument in libtool scripts that resolve -no-undefined libraries.
Later libtool generations have fixed the situation with using $PATH_SEPARATOR in the first place as the original path delimiter that will be scanned for and replaced into spaces.
Guido Draheim <guidod@gmx.de>
2005-01-21
AC_DEFUN([PATCH_LIBTOOL_SYS_LIB_SEARCH_PATH_SPEC], [# patch libtool to fix sys_lib_search_path (e.g. crosscompiling a win32 dll) if test "_$PATH_SEPARATOR" = "_:" ; then if grep "^sys_lib_search_path_spec.*:" libtool >/dev/null ; then AC_MSG_RESULT(patching libtool to fix sys_lib_search_path_spec) test -f libtool.old || (mv libtool libtool.old && cp libtool.old libtool) sed -e "/^sys_lib_search_path_spec/s/:/ /g" libtool >libtool.new (test -s libtool.new || rm libtool.new) 2>/dev/null test -f libtool.new && mv libtool.new libtool # not 2>/dev/null !! test -f libtool || mv libtool.old libtool fi fi ])