[PATCH] OpenBSD portability patch (when cross-compiling)
Waldemar Brodkorb
wbx at openadk.org
Wed Aug 4 09:24:03 UTC 2010
When cross-compiling busybox for Linux from OpenBSD, I get following errors:
$ CROSS_COMPILE=i586-openadk-linux- HOSTCC=gcc gmake V=1
rm -f .kernelrelease
echo 1.18.0.git > .kernelrelease
/home/wbx/busybox/scripts/gen_build_files.sh /home/wbx/busybox /home/wbx/busybox
GEN include/usage.h
gmake -f scripts/Makefile.build obj=scripts/basic
mkdir -p .tmp_versions
rm -f .tmp_versions/*
gmake -f scripts/Makefile.build obj=applets
gcc -Wp,-MD,applets/.usage.d -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -Iinclude -Iinclude -o applets/usage applets/usage.c
applets/usage_compressed include/usage_compressed.h applets
gcc -Wp,-MD,applets/.applet_tables.d -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -o applets/applet_tables applets/applet_tables.c
In file included from include/libbb.h:13,
from include/busybox.h:10,
from applets/applet_tables.c:16:
include/platform.h:165:23: byteswap.h: No such file or directory
include/platform.h:166:21: endian.h: No such file or directory
include/platform.h:179:3: #error "Can't determine endianness"
In file included from include/busybox.h:10,
from applets/applet_tables.c:16:
include/libbb.h:44:20: mntent.h: No such file or directory
include/libbb.h:47:24: sys/statfs.h: No such file or directory
In file included from include/busybox.h:10,
from applets/applet_tables.c:16:
include/libbb.h:489: error: field `sin' has incomplete type
include/libbb.h:491: error: field `sin6' has incomplete type
include/libbb.h:500: error: field `sin' has incomplete type
include/libbb.h:502: error: field `sin6' has incomplete type
In file included from include/busybox.h:10,
from applets/applet_tables.c:16:
include/libbb.h:1087: warning: `struct mntent' declared inside parameter list
gmake[1]: *** [applets/applet_tables] Error 1
gmake: *** [applets_dir] Error 2
$
The following patch solves these compile problems on the host.
Signed-off-by: Waldemar Brodkorb <wbx at openadk.org>
---
Hi Denys,
thanks for your feedback. Here is a resubmission with only fixes
cross-compilation on OpenBSD. Above is the error message I got
without this patch. Some BSD specific stuff could be combined
when including <sys/param.h> and by using BSD as symbol to check.
thanks in advance for any comments
Waldemar
---
include/platform.h | 18 ++++++++++++++++--
scripts/gen_build_files.sh | 2 +-
2 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/include/platform.h b/include/platform.h
index 0dadf42..a55b984 100644
--- a/include/platform.h
+++ b/include/platform.h
@@ -161,7 +161,7 @@
# define bswap_32 __bswap32
# define bswap_16 __bswap16
# define __BIG_ENDIAN__ (_BYTE_ORDER == _BIG_ENDIAN)
-#elif !defined __APPLE__
+#elif !defined __APPLE__ && !defined __OpenBSD__
# include <byteswap.h>
# include <endian.h>
#endif
@@ -172,9 +172,15 @@
#elif defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN
# define BB_BIG_ENDIAN 1
# define BB_LITTLE_ENDIAN 0
+#elif defined(_BYTE_ORDER) && _BYTE_ORDER == _BIG_ENDIAN
+# define BB_BIG_ENDIAN 1
+# define BB_LITTLE_ENDIAN 0
#elif (defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN) || defined(__386__)
# define BB_BIG_ENDIAN 0
# define BB_LITTLE_ENDIAN 1
+#elif defined(_BYTE_ORDER) && _BYTE_ORDER == _LITTLE_ENDIAN
+# define BB_BIG_ENDIAN 0
+# define BB_LITTLE_ENDIAN 1
#else
# error "Can't determine endianness"
#endif
@@ -230,7 +236,7 @@ typedef uint32_t bb__aliased_uint32_t FIX_ALIASING;
/* ---- Compiler dependent settings ------------------------- */
#if (defined __digital__ && defined __unix__) \
- || defined __APPLE__ || defined __FreeBSD__
+ || defined __APPLE__ || defined __FreeBSD__ || defined __OpenBSD__
# undef HAVE_MNTENT_H
# undef HAVE_SYS_STATFS_H
#else
@@ -238,6 +244,14 @@ typedef uint32_t bb__aliased_uint32_t FIX_ALIASING;
# define HAVE_SYS_STATFS_H 1
#endif
+/* ---- Networking ------------------------------------------ */
+
+#if defined __OpenBSD__
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#endif
+
+
/*----- Kernel versioning ------------------------------------*/
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/scripts/gen_build_files.sh b/scripts/gen_build_files.sh
index 18c172d..09a95b5 100755
--- a/scripts/gen_build_files.sh
+++ b/scripts/gen_build_files.sh
@@ -48,7 +48,7 @@ if test x"$new" != x"$old"; then
fi
# (Re)generate */Kbuild and */Config.in
-{ cd -- "$srctree" && find -type d; } | while read -r d; do
+{ cd -- "$srctree" && find . -type d; } | while read -r d; do
d="${d#./}"
src="$srctree/$d/Kbuild.src"
--
1.6.5.7
More information about the busybox
mailing list