Wesley Morgan <[EMAIL PROTECTED]> writes:
> I've been playing around with lang/icc a bit, and find it quite vexing
> that machine/endian.h has macros that are ifdef'd around __GNUC__. The
> intel compiler does not like the macros, partly because they are split
> across multiple lines and possibly for other reasons.
>
> It seems to me that making a header actually _require_ gcc-isms is
> something that the FreeBSD team should be working away from... Would it
> not be possible to put make some more generic macros available as well?
> I'm sure it's not the only instance of similar issues, but making one
> header less gcc-dependent is a step in the right direction is it not?
This was my fault. I wasn't paying attention closely to issues with
other compilers. I've had the attached patch in my local tree for
some time, but haven't had a chance to test it with ICC. Can you
confirm it fixes the issues you're seeing?
Best regards,
Mike Barcroft
Be careful not to define GCC-specific optimizations in the non-GCC
case.
Index: endian.h
===================================================================
RCS file: /work/repo/src/sys/i386/include/endian.h,v
retrieving revision 1.34
diff -u -r1.34 endian.h
--- endian.h 21 Aug 2002 16:19:58 -0000 1.34
+++ endian.h 22 Aug 2002 00:29:19 -0000
@@ -117,11 +117,18 @@
return (__byte_swap_word(_x));
}
-#endif /* __GNUC__ */
-
#define __htonl(x) __bswap32(x)
#define __htons(x) __bswap16(x)
#define __ntohl(x) __bswap32(x)
#define __ntohs(x) __bswap16(x)
+
+#else /* !__GNUC__ */
+
+#undef htonl
+#undef htons
+#undef ntohl
+#undef ntohl
+
+#endif /* __GNUC__ */
#endif /* !_MACHINE_ENDIAN_H_ */