Back to the Main Page. Download the M4 Source.

patch_libtool_sys_lib_search_path_spec

Synopsis

PATCH_LIBTOOL_SYS_LIB_SEARCH_PATH_SPEC

Version

    0.5.65   :   guidod

Author

Description

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.

@= guidod@gmx.de @$Id: patch_libtool_sys_lib_search_path_spec.m4,v 1.3 2003/03/23 13:20:27 guidod Exp $

M4 Source Code

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
])