This is the mail archive of the cygwin-patches 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: Try #3 for changes to Cygwin configure


On Wed, Nov 14, 2012 at 12:57:07PM +0100, Corinna Vinschen wrote:
>On Nov 13 22:39, Christopher Faylor wrote:
>> Try #3.  This is a smaller patch with some bug fixes found after
>> building from-scratch, cleanly on a Fedora system with Yaakov's cross
>> tools (ok, so I lied and did end up setting up a Fedora system to test
>> this).
>
>Is that the point where I have to say "na na na na naaa na"?  Just kidding.
>
>> Also fixed some long-standing Makefile bugs and misconceptions in
>> cygwin and utils.
>> 
>> I'm not entirely thrilled with the fact that configuring and building
>> this from the level above winsup results in lots of compiler command
>> line parameters passed in which are also discerned by macros in
>> acinclude.m4.  If we do end up staying in the src CVS repository I'll
>> have to fix that.
>
>For a start I applied the patch to CVS HEAD and ran a stock `configure;
>make' from toplevel on Fedora 17 with Yaakov's Cygwin packages.
>
>I can't link the Cygwin DLL:
>
>/usr/lib64/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: cannot find -luser32
>/usr/lib64/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: cannot find -lkernel32
>/usr/lib64/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: cannot find -ladvapi32
>/usr/lib64/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: cannot find -lshell32
>collect2: ld returned 1 exit status
>
>I didn't look why it doesn't find these libs.  But this means the
>-nostdlib flag is missing.

AFAIK, it means that the -nostdlib is used and the path to the libraries
isn't right.  It is when you specify the windows library path
explicitly.  This should be fixed now.  Finding the path to where the
linker locates libraries turned out to be harder than it first appeared.

>If I add it I get a lot of messages pointing out missing symbols,
>though:
>
>.../cygtls.h:301: undefined reference to `__Unwind_Resume'
>.../bsdlib.o:bsdlib.cc:(.eh_frame+0x12): undefined reference to
>`___gxx_personality_v0' [...]
>
>After a bit of digging I found that the -fno-rtti -fno-exceptions flags
>are missing when building the C++ source files.

Thanks for tracking this down.  That was part of an overaggressive
purging of Makefile.common.  I don't know why I wouldn't be seeing this
when building with nonstandard library locations though.

>When building cygserver stuff, the flags -mno-use-libstdc-wrappers
>-fno-rtti -fno-exceptions are missing, too.

-fno-rtti and -fno-exceptions are expected given the above.  AFAICT,
cygserver hasn't ever set -mno-use-libstdc-wrappers.

>In utils, I get an interesting error when building cygcheck:
>
>  In file included from .../cygcheck.cc:13:0:
>  .../newlib/libc/include/stdio.h:35:20: fatal error: stddef.h: No such file or directory
>
>Newlib?  For a Mingw application?  The compiler instruction actually
>contains the following paths:
>
>  -I${srcdir}/winsup/cygwin \
>  -isystem /usr/i686-pc-cygwin/sys-root/usr/include/w32api \
>  -isystem ${srcdir}/winsup/cygwin/include \
>  -isystem ${srcdir}-pc-cygwin/newlib/targ-include \
>  -isystem ${srcdir}/newlib/libc/include
>
>None of them should be used when building with the Mingw compiler.

Actually, cygcheck.o and path.o need newlib since cygcheck includes
mntent.h and mntent.h uses paths.h which comes from newlib.  It
shouldn't be trying to get stdio.h from newlib though.  That's fixed.

>Btw., why did you remove $(CFLAGS) from the definition of MINGW_CXX?
>I added it just a couple of days ago explicitely to be able to build
>the utils manually with different optimizing settings:

I didn't know it was a recent change but, as I mentioned in my initial
notes, I decoupled CFLAGS and CXXFLAGS when I got rid of our nonstandard
checks for the C compiler.  The change was inadvertent at first but then
I realized that everywhere else in the world those two flags mean two
different things and are meant to control c/c++ compilation.  The fact
that they don't in Cygwin is just because I was either too lazy or too
ignorant when I first set that up.

However, I did add code to Makefile.common so that if you say:

"make CFLAGS=-g" it will remove any optimization from CXXFLAGS as
well.

I have nearly everything working again but I'm surprised to find out
that I can't build dump_setup.o with FC16 installed mingw compilers due
to complaints about missing definitions for:

NT_SUCCESS
OBJ_CASE_INSENSITIVE
InitializeObjectAttributes

I can't build strace.o because of missing definitions for:
ProcessDebugFlags
NtSetInformationProcess

These are not pulled in by winternl.h in the
mingw32-headers-2.0.999-0.5.trunk.20120224.fc17.noarch package but
they do seem to be handled correctly in the versions I downloaded from
the Cygwin repo.

What version of mingw headers are you running that enables you to
compile these packages?  I can't get them to build even in an unpatched
sandbox.

Btw, I believe that these will probably compile correctly if I use the
w32api headers from Yaakov's cygwin cross gcc packages (which was why
things seemed to work for me before) but that's clearly not the right
way to deal with this issue.

cgf


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