automake
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: conditionally linking to mingw32 library


From: Stepan Kasal
Subject: Re: conditionally linking to mingw32 library
Date: Wed, 1 Jun 2005 16:48:29 +0200
User-agent: Mutt/1.4.1i

Hello,

On Wed, Jun 01, 2005 at 02:41:58PM +0200, Mark Brand wrote:
>     touch stamp-h

why do you need this?  It looks wrong.

>     ./configure --with-msw --target=i586-mingw32msvc
> --host=i586-mingw32msvc --build=i386-linux

Are you cross compiling?
--build=i386-linux says you are building on GNU/Linux, and the resulting
executable files will be copied to --host=i586-mingw32msvc .

Is that really what you intend?  Why you cannot build the package on
the OS where it will run?  If you built the package on your mingw32msvc
system, then the following should be enough:
        ./configure --with-msw

(Only in case the system cannot be autodetected, use:
        ./configure --with-msw --build=i586-mingw32msvc
and report the problem to address@hidden)

--target is only used for tools which generated machine code, eg. compilers
or linkers.  If your program is not a compiler, you don't need --target.
Please don't use it.

>  if test x$target_os == xmingw32; then

But then, of course, you have to use $host_os here.

>     myprogram_LDADD = -lws2_32

The best solution is to use
        AM_CONDITIONAL([MINGW32], [test "x$host_os" = xmingw32])
in configure.ac

See http://sourceware.org/automake/automake.html#Conditionals

and in Makefile.am:
        if MINGW32
                myprogram_LDADD = -lws2_32
        endif

>  myprogram_LDADD := @LTLIBINTL@ @WINSOCK@

You should use $(LTLIBINTL) $(WINSOCK) here.  You can use this syntax,
because the make variable WINSOCK is defined in the Makefile.in:

>     WINSOCK = @WINSOCK@

> My generated Makefile contains:
>     WINSOCK = @WINSOCK@

It's wrong.  This line is in Makefile.in, but when you run ./configure
then it replaces @WINSOCK@ with a value.
AC_SUBST([WINSOCK]) required this.

Have you regenerated ./configure by autoconf?
Have you re-run ./configure?

Then you shouldn't see any @WINSOCK@ in the generated Makefiles.

Normally, make does all the necessary refresh.  Perhaps you used ``touch''
again.  Beware, ``touch'' is a very dangerous program.  ;-)

HTH,
        Stepan




reply via email to

[Prev in Thread] Current Thread [Next in Thread]