From 465180dbea4dd589d0ed24aa5d8b3f3da2b2ca75 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Fri, 5 May 2023 01:48:29 +0200 Subject: Fix cross-build * debian/patches/linux: Fix build on Linux. * debian/patches/crossbuild: Fix cross-builds. * debian/rules: Fix cross-build. --- debian/changelog | 3 +++ debian/patches/crossbuild | 44 ++++++++++++++++++++++++++++++++++++++++++++ debian/patches/linux | 38 ++++++++++++++++++++++++++++++++++++++ debian/patches/series | 2 ++ debian/rules | 22 +++++++++++++++------- 5 files changed, 102 insertions(+), 7 deletions(-) create mode 100644 debian/patches/crossbuild create mode 100644 debian/patches/linux 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 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 + +-#ifdef __linux ++#if 0 //def __linux + #include + #else + #include +--- 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 + #else + #include + #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 -- cgit v1.2.3