[Top][All Lists]

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

Re: cygwin -mno-cygwin AC_CHECK_SIZEOF

From: Eric Blake
Subject: Re: cygwin -mno-cygwin AC_CHECK_SIZEOF
Date: Thu, 30 Nov 2006 21:00:29 -0700
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: Gecko/20061025 Thunderbird/ Mnenhy/

Hash: SHA1

According to Bob Rossi on 11/30/2006 7:32 PM:
> Hi,
> If I'm using cygwin, with the -mno-cygwin gcc/g++ compiler option, then
> mingw is used.

Or more precisely, the -mno-cygwin switch in cygwin's gcc is a shorthand
for invoking a cross-compiler that produces mingw executables.

> It seems that mingw uses a \r\n for a newline.

Yes, mingw is a native Windows target, which means a mingw executable
produces DOS line endings unless you open a file in binary mode; autoconf
currently does not produce test executables that do this, on the grounds
that requesting binary mode is not portable to other platforms.

> AC_CHECK_SIZEOF does these two things on cygwin with autoconf 2.60.
>   fprintf(f, "%d\n", sizeof($1));
> which prints "4\r\n" if the size is 4 and then
>   AC_CV_NAME=`cat conftestval`, ...
> now cygwin's cat doesn't understand \r\n, so

Or better worded, on a binary mount, cygwin's cat treats \r literally,
like any other unix implementation of cat would do.

>   ac_cv_sizeof_int=`cat conftestval`
> results in "4\r", which breaks the scripts that check with
> if statements for "$ac_cv_sizeof_int" = "4".
> What is the best way to resolve something like this?

Perhaps experiment with a cygwin text mount, so that cygwin cat will
ignore the \r.  Or experiment with the recent add-on to cygwin's bash,
where exporting SHELLOPTS with the cygwin-specific shell option igncr set
will tell subsequent /bin/sh invocations to strip \r from command
substitution.  Or rather than trying to cross-compile, with mixed results
between mingw test binaries but cygwin build framework; just use the MSYS
environment so that your entire build process is native.

Actually, maybe it would work if you invoked configure properly - since
- -mno-cygwin is requesting a cross-compiler, you REALLY should be invoking
it like this:
./configure --host=i686-pc-mingw32 --build=i686-pc-cygwin \
  CC='gcc -mno-cygwin'
And the fact that you are now telling configure the truth that you are
cross-compiling, even though the cross binaries are executable, may be
enough for autoconf to try harder for discovering how AC_CHECK_SIZEOF
should behave without tripping up on line endings (and if that is not the
case, maybe we should consider patching autoconf to make it happen that way).

- --
Life is short - so eat dessert first!

Eric Blake             address@hidden
Version: GnuPG v1.4.5 (Cygwin)
Comment: Public key at
Comment: Using GnuPG with Mozilla -


reply via email to

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