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: basename conflicting definitions


On Apr 21 10:44, Marco Atzeri wrote:
> 
> 
> On 4/21/2015 9:38 AM, Corinna Vinschen wrote:
> >Hi Marco,
> >
> >On Apr 21 07:31, Marco Atzeri wrote:
> >>Hi Corinna,
> >>building open-mpi on
> >>
> >>  $ uname -svrm
> >>CYGWIN_NT-6.1 2.0.0(0.287/5/3) 2015-04-17 12:08 x86_64
> >>
> >>I see a conflict from 2 header of
> >>
> >>$ cygcheck -f /usr/include/libgen.h /usr/include/string.h
> >>cygwin-devel-2.0.0-0.7
> >>cygwin-devel-2.0.0-0.7
> >>
> >>
> >>configure:59845: gcc -std=gnu99 -c -DNDEBUG -ggdb -O2 -pipe
> >>-Wimplicit-function-declaration -fdebug-prefix-map=/pub/devel/openmpi/openmpi-1.8.5pre2-1.x86_64/build=/usr/src/debug/openmpi-1.8.5pre2-1 -fdebug-prefix-map=/pub/devel/openmpi/openmpi-1.8.5pre2-1.x86_64/src/openmpi-1.8.5pre2=/usr/src/debug/openmpi-1.8.5pre2-1
> >>-finline-functions -fno-strict-aliasing -fexceptions  conftest.c >&5
> >>In file included from conftest.c:429:0:
> >>/usr/include/libgen.h:18:14: error: conflicting types for 'basename'
> >>  extern char *basename (char *path);
> >>               ^
> >>In file included from /usr/include/stdio.h:29:0,
> >>                  from conftest.c:396:
> >>/usr/include/string.h:172:7: note: previous declaration of 'basename' was
> >>here
> >>  char *_EXFUN(basename,(const char *))
> >>        ^
> >
> >That's Yaakov's patch to introduce GNU basename with the different
> >behaviour depending whether you include via libgen.h or via #define
> >_GNU_SOURCE, string,h.
> >
> >Which one is it here?  The conflict shouldn't occur, one of them should
> >have been filtered out based on the order.
> >
> >
> >Corinna
> >
> 
> 
> libgen.h check
> 
> AC_CHECK_HEADERS([alloca.h aio.h arpa/inet.h dirent.h \
>     dlfcn.h execinfo.h err.h fcntl.h grp.h inttypes.h libgen.h
>    ....
> 
> attached extract from the config.log

Yep, easily reproducible.  This doesn't occur on Linux because the
preprocessor guarding always prefers the POSIX version from libgen.h
over the GNU version in string.h  This needs a change, but it's a
bit tricky, given that our functions are defined upside down from
the glibc versions:

          GNU              POSIX

GLIBC:    basename         __xpg_basename
Newlib:   __gnu_basename   basename

This complicates getting the same result independent of the inclusion
order a bit...


Thanks,
Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

Attachment: pgpdq0n9av39f.pgp
Description: PGP signature


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