From: Martin C. <cos...@wa...> - 2008-05-17 10:49:46
|
Jean-François Mertens wrote: [] > First, why it did work on 10.4 : recompiling maccoreaudio.cxx with '-H' > added to the flags yields the following extract > (showing which header included which one): > > .. /sw/.bld/pwlib1-1.10.10-1/pwlib-1.10.10/include/ptlib.h > ... /sw/.bld/pwlib1-1.10.10-1/pwlib-1.10.10/include/ptlib/contain.h > .... /sw/.bld/pwlib1-1.10.10-1/pwlib-1.10.10/include/ptlib/object.h > ..... /sw/.bld/pwlib1-1.10.10-1/pwlib-1.10.10/include/ptlib/unix/ > ptlib/contain.h > ...... /sw/.bld/pwlib1-1.10.10-1/pwlib-1.10.10/include/ptlib/unix/ > ptlib/pmachdep.h > ....... /usr/include/arpa/inet.h > ........ /usr/include/sys/param.h > > and the last one has (on line 212) : > #define MIN(a,b) (((a)<(b))?(a):(b)) > (I don't know exactly what breaks down in this chain on 10.5, but > never mind) This one is easy to explain: The command grep #include /usr/include/arpa/inet.h gives on 10.4: #include <stdint.h> /* uint32_t uint16_t */ #include <machine/endian.h> /* htonl() and family if !_POSIX_C_SOURCE */ #include <sys/_endian.h> /* htonl() and family if _POSIX_C_SOURCE */ #include <netinet/in.h> /* in_addr */ #include <sys/param.h> #include <sys/cdefs.h> and on 10.5: #include <_types.h> #include <stdint.h> /* uint32_t uint16_t */ #include <machine/endian.h> /* htonl() and family if (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ #include <sys/_endian.h> /* htonl() and family if (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */ #include <netinet/in.h> /* in_addr */ This kind of incompatibility between 10.4 and 10.5 is unfortunately rather widespread, and packages depending on indirectly included header files often fail. -- Martin |