List Info

Thread: MinGW linux to win32 cross compiler and the test suite




MinGW linux to win32 cross compiler and the test suite
user name
2008-03-20 18:04:00
Hi all,

I have a project that uses autoconf/automake/libtool and
I'm
currently experimenting with the i586-mingw32msvc linux
hosted,
win32 target cross compiler tool chain. I'm also using Wine
to do two things; allow configure tests that need to run an
executable to work correctly, execute the test suite.

The problem I'm having is that the wrapper scripts
generated
by ltmain.sh in the tests/ directory cannot find the
generated
DLL in the src/.lib/ directory. Is this a bug or am I doing

something wrong?

I'm using libtool version 1.5.26.

Cheers,
Erik
-- 
------------------------------------------------------------
-----
Erik de Castro Lopo
------------------------------------------------------------
-----
"Yeah, all that emacs is missing to be counted as a
full-featured
operating system is an easy-to-use text editor."
--  Arnold Krille on the Linux Audio Developer mailing list


_______________________________________________
http://
lists.gnu.org/mailman/listinfo/libtool

Re: MinGW linux to win32 cross compiler and the test suite
user name
2008-03-20 18:30:03
Hello Erik,

* Erik de Castro Lopo wrote on Fri, Mar 21, 2008 at
12:04:00AM CET:
> 
> I have a project that uses autoconf/automake/libtool
and I'm
> currently experimenting with the i586-mingw32msvc linux
hosted,
> win32 target cross compiler tool chain. I'm also using
Wine
> to do two things; allow configure tests that need to
run an
> executable to work correctly, execute the test suite.
> 
> The problem I'm having is that the wrapper scripts
generated
> by ltmain.sh in the tests/ directory cannot find the
generated
> DLL in the src/.lib/ directory. Is this a bug or am I
doing 
> something wrong?

Not sure.  Do the scripts set PATH to contain the
directory?
Can you post the link command and its output, and the
wrapper
script?

> I'm using libtool version 1.5.26.

FWIW, 2.2 is the current stable but it has a bug regarding
cross-compile to w32 which has only been fixed in the CVS
version.  It works differently wrt. the wrappers, though.

Cheers,
Ralf


_______________________________________________
http://
lists.gnu.org/mailman/listinfo/libtool

Re: MinGW linux to win32 cross compiler and the test suite
user name
2008-03-21 12:29:33
Ralf Wildenhues wrote:

> Not sure.  Do the scripts set PATH to contain the
directory?

Yes :

   
PATH="/home/erikd/Bzr/libsndfile-mingw/src/.libs:$PATH&
quot;

which looks correct.

> Can you post the link command and its output,


if i586-mingw32msvc-gcc -DHAVE_CONFIG_H -I. -I. -I../src
-I./../src    -g -O2 -std=gnu99 -fgnu89-inline -W -Wall
-Wdeclaration-after-statement -Wpointer-arith
-Wstrict-prototypes -Wmissing-prototypes -Waggregate-return
-Wcast-align -Wcast-qual -Wnested-externs -Wshadow
-Wbad-function-cast -Wwrite-strings  -pipe  -MT error_test.o
-MD -MP -MF ".deps/error_test.Tpo" -c -o
error_test.o error_test.c; 
        then mv -f ".deps/error_test.Tpo"
".deps/error_test.Po"; else rm -f
".deps/error_test.Tpo"; exit 1; fi
/bin/bash ../libtool --tag=CC --mode=link
i586-mingw32msvc-gcc  -g -O2 -std=gnu99 -fgnu89-inline -W
-Wall -Wdeclaration-after-statement -Wpointer-arith
-Wstrict-prototypes -Wmissing-prototypes -Waggregate-return
-Wcast-align -Wcast-qual -Wnested-externs -Wshadow
-Wbad-function-cast -Wwrite-strings  -pipe    -o
error_test.exe  error_test.o utils.o ../src/libsndfile.la
-lm 
i586-mingw32msvc-gcc -g -O2 -std=gnu99 -fgnu89-inline -W
-Wall -Wdeclaration-after-statement -Wpointer-arith
-Wstrict-prototypes -Wmissing-prototypes -Waggregate-return
-Wcast-align -Wcast-qual -Wnested-externs -Wshadow
-Wbad-function-cast -Wwrite-strings -pipe -o
.libs/error_test.exe error_test.o utils.o 
../src/.libs/libsndfile.dll.a  -L/usr/local/lib
creating error_test.exe

> and the wrapper script?

Follows below.

Cheers,
Erik

#! /bin/bash

# error_test - temporary wrapper script for
.libs/error_test.exe
# Generated by ltmain.sh - GNU libtool 1.5.26 Debian
1.5.26-1ubuntu1 (1.1220.2.493 2008/02/01 16:58:18)
#
# The error_test program cannot be directly executed until
all the libtool
# libraries that it depends on are installed.
#
# This wrapper script should never be moved out of the build
directory.
# If it is, it will not operate correctly.

# Sed substitution that helps us do robust quoting.  It
backslashifies
# metacharacters that are still active within double-quoted
strings.
Xsed='/bin/sed -e 1s/^X//'
sed_quote_subst='s/([\`\"$\\])/\1/g'

# Be Bourne compatible (taken from
Autoconf:_AS_BOURNE_COMPATIBLE).
if test -n "${ZSH_VERSION+set}" &&
(emulate sh) >/dev/null 2>&1; then
  emulate sh
  NULLCMD=:
  # Zsh 3.x and 4.x performs word splitting on
${1+"$"}, which
  # is contrary to our usage.  Disable this feature.
  alias -g '${1+"$"}'='"$"'
  setopt NO_GLOB_SUBST
else
  case `(set -o) 2>/dev/null` in *posix*) set -o posix;;
esac
fi
BIN_SH=xpg4; export BIN_SH # for Tru64
DUALCASE=1; export DUALCASE # for MKS sh

# The HP-UX ksh and POSIX shell print the target directory
to stdout
# if CDPATH is set.
(unset CDPATH) >/dev/null 2>&1 && unset
CDPATH

relink_command=""

# This environment variable determines our operation mode.
if test "$libtool_install_magic" = "%%%MAGIC
variable%%%"; then
  # install mode needs the following variable:
  notinst_deplibs=' ../src/libsndfile.la'
else
  # When we are sourced in execute mode, $file and $echo are
already set.
  if test "$libtool_execute_magic" !=
"%%%MAGIC variable%%%"; then
    echo="echo"
    file="$0"
    # Make sure echo works.
    if test "X$1" = X--no-reexec; then
      # Discard the --no-reexec flag, and continue.
      shift
    elif test "X`($echo 't') 2>/dev/null`" =
'Xt'; then
      # Yippee, $echo works!
      :
    else
      # Restart under the correct shell, and then maybe
$echo will work.
      exec /bin/bash "$0" --no-reexec
${1+"$"}
    fi
  fi

  # Find the directory that this script lives in.
  thisdir=`$echo "X$file" | $Xsed -e
's%/[^/]*$%%'`
  test "x$thisdir" = "x$file" &&
thisdir=.

  # Follow symbolic links until we get to the real thisdir.
  file=`ls -ld "$file" | /bin/sed -n 's/.*->
//p'`
  while test -n "$file"; do
    destdir=`$echo "X$file" | $Xsed -e
's%/[^/]*$%%'`

    # If there was a directory component, then change
thisdir.
    if test "x$destdir" != "x$file";
then
      case "$destdir" in
      [\/]* | [A-Za-z]:[\/]*) thisdir="$destdir"
;;
      *) thisdir="$thisdir/$destdir" ;;
      esac
    fi

    file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
    file=`ls -ld "$thisdir/$file" | /bin/sed -n
's/.*-> //p'`
  done

  # Try to get the absolute directory name.
  absdir=`cd "$thisdir" && pwd`
  test -n "$absdir" &&
thisdir="$absdir"

  program='error_test.exe'
  progdir="$thisdir/.libs"


  if test -f "$progdir/$program"; then
    # Add our own library path to PATH
   
PATH="/home/erikd/Bzr/libsndfile-mingw/src/.libs:$PATH&
quot;

    # Some systems cannot cope with colon-terminated PATH
    # The second colon is a workaround for a bug in BeOS R4
sed
    PATH=`$echo "X$PATH" | $Xsed -e 's/:$//'`

    export PATH

    # Add the dll search path components to the executable
PATH
   
PATH=:/home/erikd/Bzr/libsndfile-mingw/src/.libs:/usr/local/
lib:/usr/local/bin:$PATH

    if test "$libtool_execute_magic" !=
"%%%MAGIC variable%%%"; then
      # Run the actual program with our arguments.

      exec "$progdir/$program" ${1+"$"}

      $echo "$0: cannot exec $program $*"
      exit 1
    fi
  else
    # The program doesn't exist.
    $echo "$0: error: `$progdir/$program' does not
exist" 1>&2
    $echo "This script is just a wrapper for
$program." 1>&2
    echo "See the libtool documentation for more
information." 1>&2
    exit 1
  fi
fi


-- 
------------------------------------------------------------
-----
Erik de Castro Lopo
------------------------------------------------------------
-----
Open Source and Free Software means that you never sacrifice
quality
of the code for meeting deadlines set up by people not
participating
directly in the software development process.


_______________________________________________
http://
lists.gnu.org/mailman/listinfo/libtool

Re: MinGW linux to win32 cross compiler and the test suite
user name
2008-03-26 23:23:01
Hi all,

I have the beginnings of a solution to this issue.

If I hack the libtool generated wrapper script and replace
this:

      exec "$progdir/$program" ${1+"$"}

with 

      WINEDLLPATH="$PATH;$WINEDLLPATH"
      exec wine "$progdir/$program"
${1+"$"}

My test suite works. Ie, I cross compile from Linux to win32
and
the test suite gets run under wine. Personally, I find this
an
huge improvement over developing on windows.

I now have a follow up question. Would it be
possible/desirable to
have autoconf/automake/libtool do the following:

  1) Detect if cross-compiling from x86 linux to win32.
  2) If 1) is true, detect precence of wine.
  3) If 2) is true and wine is present, write a wine
specific
     version of the output wrapper scripts.

Cheers,
Erik
-- 
------------------------------------------------------------
-----
Erik de Castro Lopo
------------------------------------------------------------
-----
Good advice for everyone : stay away from churches, mosques
and
synagogues.


_______________________________________________
http://
lists.gnu.org/mailman/listinfo/libtool

[1-4]

about | contact  Other archives ( Real Estate discussion Medical topics )