# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
# define ATTRIBUTE_PACKED __attribute__ ((__packed__))
# define ATTRIBUTE_ALIGNED(m) __attribute__ ((__aligned__(m)))
-# if __GNUC_PREREQ (3,0)
+/* __NO_INLINE__: some gcc's do not honor inlining! :( */
+# if __GNUC_PREREQ (3,0) && !defined(__NO_INLINE__)
# define ALWAYS_INLINE __attribute__ ((always_inline)) inline
/* I've seen a toolchain where I needed __noinline__ instead of noinline */
# define NOINLINE __attribute__((__noinline__))
/* ---- Networking ------------------------------------------ */
#ifndef __APPLE__
# include <arpa/inet.h>
+# ifndef __socklen_t_defined
+typedef int socklen_t;
+# endif
#else
# include <netinet/in.h>
#endif
-#ifndef __socklen_t_defined
-typedef int socklen_t;
-#endif
-
/* ---- Compiler dependent settings ------------------------- */
-#if (defined __digital__ && defined __unix__)
+#if (defined __digital__ && defined __unix__) || defined __APPLE__
# undef HAVE_MNTENT_H
+# undef HAVE_SYS_STATFS_H
#else
# define HAVE_MNTENT_H 1
+# define HAVE_SYS_STATFS_H 1
#endif /* ___digital__ && __unix__ */
/* linux/loop.h relies on __u64. Make sure we have that as a proper type
* until userspace is widely fixed. */
-#ifndef __GNUC__
-#if defined __INTEL_COMPILER
+#if (defined __INTEL_COMPILER && !defined __GNUC__) || \
+ (defined __GNUC__ && defined __STRICT_ANSI__)
__extension__ typedef __signed__ long long __s64;
__extension__ typedef unsigned long long __u64;
-#endif /* __INTEL_COMPILER */
-#endif /* ifndef __GNUC__ */
+#endif
/*----- Kernel versioning ------------------------------------*/
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
#define HAVE_FEATURES_H
#include <stdint.h>
#define HAVE_STDINT_H
-#else
+#elif !defined __APPLE__
/* Largest integral types. */
#if __BIG_ENDIAN__
typedef long intmax_t;
/* uclibc does not implement daemon() for no-mmu systems.
* For 0.9.29 and svn, __ARCH_USE_MMU__ indicates no-mmu reliably.
* For earlier versions there is no reliable way to check if we are building
- * for a mmu-less system; the user should pass EXTRA_CFLAGS="-DBB_NOMMU"
- * on his own.
+ * for a mmu-less system.
*/
-#if defined __UCLIBC__ && __UCLIBC_MAJOR__ >= 0 && __UCLIBC_MINOR__ >= 9 && \
- __UCLIBC_SUBLEVEL__ > 28 && !defined __ARCH_USE_MMU__
+#if ENABLE_NOMMU || \
+ (defined __UCLIBC__ && __UCLIBC_MAJOR__ >= 0 && __UCLIBC_MINOR__ >= 9 && \
+ __UCLIBC_SUBLEVEL__ > 28 && !defined __ARCH_USE_MMU__)
#define BB_MMU 0
#define BB_NOMMU 1
#define USE_FOR_NOMMU(...) __VA_ARGS__
# define lchown chown
#endif
-/* THIS SHOULD BE CLEANED OUT OF THE TREE ENTIRELY */
-/* FIXME: fix tar.c! */
-#ifndef FNM_LEADING_DIR
-#define FNM_LEADING_DIR 0
-#endif
-
#if (defined __digital__ && defined __unix__)
#include <standards.h>
#define HAVE_STANDARDS_H