This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: cygwin -mno-cygwin AC_CHECK_SIZEOF


-----BEGIN PGP SIGNED MESSAGE-----
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 configure.in 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             ebb9@byu.net
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFb6jc84KuGfSFAYARAsm8AKDHGKnsrS9YCeo0Ae+7gBFpMwNcgACgjufm
sZldUr3kV4auZC/oe9KdtpM=
=6KKf
-----END PGP SIGNATURE-----

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]