summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2023-05-05 01:48:29 +0200
committerDamien Zammit <damien@zamaudio.com>2023-06-24 00:00:13 +1000
commit465180dbea4dd589d0ed24aa5d8b3f3da2b2ca75 (patch)
tree310720b5eac4d4a661acb493bfedb9183447338a
parentea7cb944b438bff08607d11a2bbfa7d0e3aff350 (diff)
Fix cross-build
* debian/patches/linux: Fix build on Linux. * debian/patches/crossbuild: Fix cross-builds. * debian/rules: Fix cross-build.
-rw-r--r--debian/changelog3
-rw-r--r--debian/patches/crossbuild44
-rw-r--r--debian/patches/linux38
-rw-r--r--debian/patches/series2
-rwxr-xr-xdebian/rules22
5 files changed, 102 insertions, 7 deletions
diff --git a/debian/changelog b/debian/changelog
index d158eaea..b2202a0b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,9 @@ rumpkernel (0~20211031-3) UNRELEASED; urgency=medium
[ Damien Zammit ]
* debian/patches/acpi.diff: pci-userspace: Add acpi lookup of irqs with
fallback.
+ * debian/patches/linux: Fix build on Linux.
+ * debian/patches/crossbuild: Fix cross-builds.
+ * debian/rules: Fix cross-build.
-- Samuel Thibault <sthibault@debian.org> Thu, 19 Jan 2023 00:53:29 +0100
diff --git a/debian/patches/crossbuild b/debian/patches/crossbuild
new file mode 100644
index 00000000..77936030
--- /dev/null
+++ b/debian/patches/crossbuild
@@ -0,0 +1,44 @@
+TODO: "TARGET" is a terrible name since that's confusing compared to the
+build/host/target convention of the GNU toolchain.
+
+---
+ buildrump.sh/src/build.sh | 8 +++++---
+ buildrump.sh/src/share/mk/bsd.lib.mk | 2 +-
+ 2 files changed, 6 insertions(+), 4 deletions(-)
+
+--- a/buildrump.sh/src/build.sh
++++ b/buildrump.sh/src/build.sh
+@@ -1693,7 +1693,7 @@ rebuildmake()
+
+ statusmsg "Bootstrapping ${toolprefix}make"
+ ${runcmd} cd "${tmpdir}"
+- ${runcmd} env CC="${HOST_CC-cc}" CPPFLAGS="${HOST_CPPFLAGS}" \
++ ${runcmd} env CC="${BUILD_CC-${HOST_CC-cc}}" CPPFLAGS="${HOST_CPPFLAGS}" \
+ CFLAGS="${HOST_CFLAGS--O}" LDFLAGS="${HOST_LDFLAGS}" \
+ ${HOST_SH} "${TOP}/tools/make/configure" ${configure_args} ||
+ ( cp ${tmpdir}/config.log ${tmpdir}-config.log
+@@ -2231,9 +2231,11 @@ maketoolwrapper ()
+ tool=$2
+
+ if [ "${tool}" = "CC" ]; then
+- lctool=gcc
++ lctool=${TARGET_CC-gcc}
+ elif [ "${tool}" = "CXX" ]; then
+- lctool=g++
++ lctool=${TARGET_CXX-g++}
++ elif [ "${tool}" = "LD" ]; then
++ lctool=${TARGET_LD-ld}
+ else
+ lctool=$(echo ${tool} | tr '[A-Z]' '[a-z]')
+ fi
+--- a/buildrump.sh/src/share/mk/bsd.lib.mk
++++ b/buildrump.sh/src/share/mk/bsd.lib.mk
+@@ -622,7 +622,7 @@ LIBDPLIBS+= stdc++ ${.CURDIR}/../../
+ LIBCC:= ${CC}
+ .endif
+
+-_LDADD.${_LIB}= ${LDADD} ${LDADD.${_LIB}}
++_LDADD.${_LIB}= ${LDADD} ${TARGET_LDADD} ${LDADD.${_LIB}}
+ _LDFLAGS.${_LIB}= ${LDFLAGS} ${LDFLAGS.${_LIB}}
+
+ _MAINLIBDEPS= ${SOLIB} ${DPADD} ${DPLIBC} \
diff --git a/debian/patches/linux b/debian/patches/linux
new file mode 100644
index 00000000..fdeca9d4
--- /dev/null
+++ b/debian/patches/linux
@@ -0,0 +1,38 @@
+Since we use nostdinc we don't rely on Linux definitions.
+
+---
+ buildrump.sh/src/sys/external/bsd/libnv/dist/nv_compat.h | 4
+ buildrump.sh/src/sys/net/bpfjit.h | 2
+ obj/hurd-debian/rumpkernel/buildrump.sh/src/tooldir/bin/nbhost-mkdep | 267 ----------
+ obj/hurd-debian/rumpkernel/buildrump.sh/src/tools/host-mkdep/host-mkdep | 267 ----------
+ 4 files changed, 3 insertions(+), 537 deletions(-)
+
+--- a/buildrump.sh/src/sys/net/bpfjit.h
++++ b/buildrump.sh/src/sys/net/bpfjit.h
+@@ -39,7 +39,7 @@
+
+ #include <sys/types.h>
+
+-#ifdef __linux
++#if 0 //def __linux
+ #include <pcap-bpf.h>
+ #else
+ #include <net/bpf.h>
+--- a/buildrump.sh/src/sys/external/bsd/libnv/dist/nv_compat.h
++++ b/buildrump.sh/src/sys/external/bsd/libnv/dist/nv_compat.h
+@@ -57,13 +57,13 @@
+ __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
+ #endif
+
+-#ifdef __linux__
++#if 0 //def __linux__
+ #include <endian.h>
+ #else
+ #include <sys/endian.h>
+ #endif
+
+-#ifdef __linux__
++#if 0 //def __linux__
+ static inline uint32_t
+ be32dec(const void *buf)
+ {
diff --git a/debian/patches/series b/debian/patches/series
index adbc5acb..27547579 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -15,3 +15,5 @@ rumpuser-evcnt.diff
ps-comm.diff
idtype_t.diff
acpi.diff
+linux
+crossbuild
diff --git a/debian/rules b/debian/rules
index 2c8fc064..b4fef8ac 100755
--- a/debian/rules
+++ b/debian/rules
@@ -10,13 +10,16 @@ HOST_CFLAGS = -fcommon
LDFLAGS ?= $(shell dpkg-buildflags --get LDFLAGS)
CFLAGS ?= $(shell dpkg-buildflags --get CFLAGS) $(HOST_CFLAGS)
+# Some files use -Wno-format, which then conflicts
+CFLAGS := $(filter-out -Werror=format-security,$(CFLAGS))
+
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
else
NUMJOBS = 1
endif
-RUMPMAKE := $(CURDIR)/buildrump.sh/src/obj/tooldir/bin/nbmake-i386
+RUMPMAKE := $(CURDIR)/buildrump.sh/src/obj/tooldir/bin/nbmake-$(DEB_HOST_ARCH_CPU)
%:
rm -f debian/*.debhelper.log
@@ -25,29 +28,34 @@ RUMPMAKE := $(CURDIR)/buildrump.sh/src/obj/tooldir/bin/nbmake-i386
override_dh_auto_clean:
-cd pci-userspace/src-linux-uio && $(RUMPMAKE) clean
-cd pci-userspace/src-gnu && $(RUMPMAKE) clean
+ -cd buildrump.sh/src/lib/librumpuser && RUMPRUN=true $(RUMPMAKE) clean
rm -rf buildrump.sh/src/{obj,rump} obj
-find buildrump.sh/src -type f -name .depend -or -name \*.d | xargs -L512 rm -f
+override_dh_auto_configure-arch:
+ dh_testdir -a
+ mkdir -p obj
+ dh_auto_configure -D buildrump.sh/src/lib/librumpuser
+
override_dh_auto_build-arch:
dh_testdir -a
mkdir -p obj
- cd buildrump.sh/src/lib/librumpuser && ./configure
- cd buildrump.sh/src && HOST_CC=gcc \
- LDADD="-L/usr/lib/i386-gnu -L/lib/i386-gnu" \
+ cd buildrump.sh/src && HOST_CC=gcc TARGET_CC=$(DEB_HOST_GNU_TYPE)-gcc TARGET_CXX=$(DEB_HOST_GNU_TYPE)-gcc TARGET_LD=$(DEB_HOST_GNU_TYPE)-ld \
+ TARGET_LDADD="-B/usr/lib/$(DEB_HOST_MULTIARCH) -L/usr/lib/$(DEB_HOST_MULTIARCH) -L/lib/$(DEB_HOST_MULTIARCH)" \
_GCC_CRTENDS= _GCC_CRTEND= _GCC_CRTBEGINS= _GCC_CRTBEGIN= _GCC_CRTI= _GCC_CRTN= \
BSDOBJDIR=$(CURDIR)/obj \
./build.sh \
-V TOOLS_BUILDRUMP=yes -V MKGROFF=no -V TOPRUMP="$(CURDIR)/buildrump.sh/src/sys/rump" \
-V BUILDRUMP_CPPFLAGS="-Wno-error=stringop-overread" \
-V RUMPUSER_EXTERNAL_DPLIBS=pthread \
- -V CPPFLAGS="-I../../obj/destdir.i386/usr/include -D_FILE_OFFSET_BITS=64 -DRUMP_REGISTER_T=int -DRUMPUSER_CONFIG=yes -DNO_PCI_MSI_MSIX=yes -DNUSB_DMA=1" \
+ -V CPPFLAGS="-I../../obj/destdir.$(DEB_HOST_ARCH_CPU)/usr/include -D_FILE_OFFSET_BITS=64 -DRUMP_REGISTER_T=int -DRUMPUSER_CONFIG=yes -DNO_PCI_MSI_MSIX=yes -DNUSB_DMA=1" \
-V CWARNFLAGS="-Wno-error=maybe-uninitialized -Wno-error=address-of-packed-member -Wno-error=unused-variable -Wno-error=stack-protector -Wno-error=array-parameter -Wno-error=array-bounds -Wno-error=stringop-overflow" \
-V LIBCRTBEGIN=" " -V LIBCRTEND=" " -V LIBCRT0=" " -V LIBCRTI=" " \
-V _GCC_CRTENDS=" " -V _GCC_CRTEND=" " \
-V _GCC_CRTBEGINS=" " -V _GCC_CRTBEGIN=" " \
-V _GCC_CRTI=" " -V _GCC_CRTN=" " \
- -V LDADD="-L/usr/lib/i386-gnu -L/lib/i386-gnu" \
- -U -u -T ./obj/tooldir -m i386 -j $(NUMJOBS) tools rump
+ -V TARGET_LDADD="-B/usr/lib/$(DEB_HOST_MULTIARCH) -L/usr/lib/$(DEB_HOST_MULTIARCH) -L/lib/$(DEB_HOST_MULTIARCH)" \
+ -U -u -T ./obj/tooldir -m $(DEB_HOST_ARCH_CPU) -j $(NUMJOBS) tools rump
cd buildrump.sh/src/lib/librumpuser && RUMPRUN=true $(RUMPMAKE) dependall
ifeq ($(DEB_HOST_ARCH_OS), linux)
# cd pci-userspace/src-linux-uio && $(RUMPMAKE) dependall