On Tue, May 09, 2006 at 01:34:36PM +0200, Abdelrazak Younes wrote:
> Enrico Forestieri a écrit :
> >On Mon, May 08, 2006 at 12:10:41PM -0500, Bo Peng wrote:
> >
> >>>I am letting the current build to be completed before doing anything
> >>>else. I notice that the moc'ed files are being compiled but they are
> >>>called moc_ModuleName.cc instead of ModuleName_moc.C as I was used
> >>>with the auto tools. I hope this is accounted for.
> >>>Then I also see that it is also trying to compile uic_ModuleName.cc
> >>>and this is completely new to me...
> >>They are generated and handled by scons automatically so you should
> >>not have to worry about them.
> >
> >I don't think so. Everything goes smooth until the final link step
> >which miserably fails with tons of undefined references.
> >
> >These are partly due to the ordering of libraries in the link command
> >(-lz should go after -lboost_*), partly due to some missing
> >libraries (-lstdc++ -lcygwin -laspell), but the vast majority is
> >a problem with that "undefined reference to `vtable for ...'" thing.
> 
> I managed to achieve the final linking by hand so I think it's only 
> that, nothing major.

Are you saying that .C files are recognized as C++ sources for you?

Then, I am sorry, but SCons has wrong support for cygwin. For example,
I see the following in site-packages/SCons/Util.py:

if sys.platform == 'cygwin':
    # On Cygwin, os.path.normcase() lies, so just report back the
    # fact that the underlying Windows OS is case-insensitive.
    def case_sensitive_suffixes(s1, s2):
        return 0
else:
    def case_sensitive_suffixes(s1, s2):
        return (os.path.normcase(s1) != os.path.normcase(s2))


and also this one in site-packages/SCons/FS.py:

# Cygwin's os.path.normcase pretends it's on a case-sensitive filesystem.
_is_cygwin = sys.platform == "cygwin"
if os.path.normcase("TeSt") == os.path.normpath("TeSt") and not _is_cygwin:
    def _my_normcase(x):
        return x
else:
    def _my_normcase(x):
        return string.upper(x)


It is utterly ridiculous that they are not able to spot the difference
between .c and .C on Cygwin and they are able to on native Windows.

-- 
Enrico

Reply via email to