[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#474049: Please support MIPS triarch.



Package: libffi
Version: 3.0.4-2
Severity: wishlist
Tags: patch


This patch adds biarchn32 support, and adds mips/mipsel to biarch64 and
biarchn32 archs. Also Updates gcc-multilib Build-Depends for mips/mipsel.

Thanks,

Arthur.
From acbaf5d46eebb9cf5c172294e783660301a4fc2b Mon Sep 17 00:00:00 2001
From: Arthur Loiret <arthur.loiret@u-psud.fr>
Date: Thu, 3 Apr 2008 01:19:13 +0200
Subject: [PATCH] Support MIPS triarch.

---
 debian/control |   27 +++++++++++++++++++++--
 debian/rules   |   62 ++++++++++++++++++++++++++++++++++++++++++++++++-------
 2 files changed, 78 insertions(+), 11 deletions(-)

diff --git a/debian/control b/debian/control
index 39ea093..2b49cb0 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@ Source: libffi
 Priority: extra
 Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
 Uploaders: Matthias Klose <doko@debian.org>
-Build-Depends: debhelper (>= 5), gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc kfreebsd-amd64], dejagnu, lsb-release, texinfo
+Build-Depends: debhelper (>= 5), gcc-multilib [amd64 i386 mips mipsel powerpc ppc64 s390 sparc kfreebsd-amd64], dejagnu, lsb-release, texinfo
 Standards-Version: 3.7.3
 Section: libs
 
@@ -32,7 +32,7 @@ Description: Foreign Function Interface library (development files, 32bit)
 
 Package: lib64ffi-dev
 Section: libdevel
-Architecture: i386 powerpc sparc s390
+Architecture: i386 mips mipsel powerpc sparc s390
 Depends: libffi-dev (= ${binary:Version}), lib64ffi5 (= ${binary:Version})
 Description: Foreign Function Interface library (development files, 64bit)
  This package contains the headers and static library files necessary for
@@ -42,6 +42,18 @@ Description: Foreign Function Interface library (development files, 64bit)
  allows code written in one language to call code written in another
  language.
 
+Package: libn32ffi-dev
+Section: libdevel
+Architecture: mips mipsel
+Depends: libffi-dev (= ${binary:Version}), libn32ffi5 (= ${binary:Version})
+Description: Foreign Function Interface library (development files, n32)
+ This package contains the headers and static library files necessary for
+ building programs which use libffi.
+ .
+ A foreign function interface is the popular name for the interface that
+ allows code written in one language to call code written in another
+ language.
+
 Package: libffi5
 Section: libs
 Architecture: any
@@ -62,13 +74,22 @@ Description: Foreign Function Interface library runtime (32bit)
 
 Package: lib64ffi5
 Section: libs
-Architecture: i386 powerpc sparc s390
+Architecture: i386 mips mipsel powerpc sparc s390
 Depends: ${shlibs:Depends}, ${misc:Depends}
 Description: Foreign Function Interface library runtime (64bit)
  A foreign function interface is the popular name for the interface that
  allows code written in one language to call code written in another
  language.
 
+Package: libn32ffi5
+Section: libs
+Architecture: mips mipsel
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Foreign Function Interface library runtime (n32)
+ A foreign function interface is the popular name for the interface that
+ allows code written in one language to call code written in another
+ language.
+
 Package: libffi5-dbg
 Section: libdevel
 Architecture: any
diff --git a/debian/rules b/debian/rules
index 0aa443e..a60abe6 100755
--- a/debian/rules
+++ b/debian/rules
@@ -15,16 +15,24 @@ ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
   with_check = yes
 endif
 
-ifneq (,$(filter $(DEB_HOST_ARCH), i386 powerpc s390 sparc))
+ifneq (,$(filter $(DEB_HOST_ARCH), i386 mips mipsel powerpc s390 sparc))
   multiarch += biarch64
+  m64 = -m64
 endif
 
 ifneq (,$(filter $(DEB_HOST_ARCH), amd64 kfreebsd-amd64 ppc64))
   multiarch += biarch32
+  m32 = -m32
+endif
+
+ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel))
+  multiarch += biarchn32
+  m64  = -mabi=64
+  mn32 = -mabi=n32
 endif
 
 biarch_map := i486=x86_64 powerpc=powerpc64 sparc=sparc64 s390=s390x \
-                x86_64=i486 powerpc64=powerpc
+                x86_64=i486 powerpc64=powerpc mips=mips64 mipsel=mips64el
 biarch_cpu := $(patsubst $(DEB_HOST_GNU_CPU)=%,%, \
                          $(filter $(DEB_HOST_GNU_CPU)=%,$(biarch_map)))
 biarch_gnu_type := $(subst $(DEB_HOST_GNU_CPU),$(biarch_cpu),$(DEB_HOST_GNU_TYPE))
@@ -57,7 +65,7 @@ stamp-configure-biarch32:
 		--prefix=/usr \
 		--mandir=\$${prefix}/share/man \
 		--infodir=\$${prefix}/share/info \
-		CC="gcc -m32" CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs $(LDFLAGS)"
+		CC="gcc $(m32)" CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs $(LDFLAGS)"
 	touch $@
 
 stamp-configure-biarch64:
@@ -70,7 +78,20 @@ stamp-configure-biarch64:
 		--prefix=/usr \
 		--mandir=\$${prefix}/share/man \
 		--infodir=\$${prefix}/share/info \
-		CC="gcc -m64" CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs $(LDFLAGS)"
+		CC="gcc $(m64)" CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs $(LDFLAGS)"
+	touch $@
+
+stamp-configure-biarchn32:
+	dh_testdir
+	rm -rf buildn32
+	mkdir -p buildn32
+	cd buildn32 && ../configure \
+		--host=$(biarch_gnu_type) \
+		--build=$(DEB_BUILD_GNU_TYPE) \
+		--prefix=/usr \
+		--mandir=\$${prefix}/share/man \
+		--infodir=\$${prefix}/share/info \
+		CC="gcc $(mn32)" CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs $(LDFLAGS)"
 	touch $@
 
 build: stamp-build \
@@ -92,6 +113,11 @@ stamp-build-biarch64: stamp-configure-biarch64
 	$(MAKE) -C build64
 	touch $@
 
+stamp-build-biarchn32: stamp-configure-biarchn32
+	dh_testdir
+	$(MAKE) -C buildn32
+	touch $@
+
 check: stamp-check $(foreach a, $(multiarch), stamp-check-$(a))
 stamp-check: stamp-build
 	dh_testdir
@@ -101,17 +127,25 @@ stamp-check: stamp-build
 stamp-check-biarch32: stamp-build-biarch32
 	dh_testdir
 	mkdir -p build32/bin
-	echo '/usr/bin/gcc -m32 "$$@"' > build32/bin/gcc
+	echo '/usr/bin/gcc $(m32) "$$@"' > build32/bin/gcc
 	chmod 755 build32/bin/gcc
-	-PATH=$(CURDIR)/build32/bin:$$PATH $(MAKE) -C build32 check CC="gcc -m32" 2>&1 | tee build32/check.log
+	-PATH=$(CURDIR)/build32/bin:$$PATH $(MAKE) -C build32 check CC="gcc $(m32)" 2>&1 | tee build32/check.log
 	touch $@
 
 stamp-check-biarch64: stamp-build-biarch64
 	dh_testdir
 	mkdir -p build64/bin
-	echo '/usr/bin/gcc -m64 "$$@"' > build64/bin/gcc
+	echo '/usr/bin/gcc $(m64) "$$@"' > build64/bin/gcc
 	chmod 755 build64/bin/gcc
-	-PATH=$(CURDIR)/build64/bin:$$PATH $(MAKE) -C build64 check 2>&1 | tee build64/check.log
+	-PATH=$(CURDIR)/build64/bin:$$PATH $(MAKE) -C build64 check CC="gcc $(m64)" 2>&1 | tee build64/check.log
+	touch $@
+
+stamp-check-biarchn32: stamp-build-biarchn32
+	dh_testdir
+	mkdir -p buildn32/bin
+	echo '/usr/bin/gcc $(mn32) "$$@"' > buildn32/bin/gcc
+	chmod 755 buildn32/bin/gcc
+	-PATH=$(CURDIR)/buildn32/bin:$$PATH $(MAKE) -C buildn32 check CC="gcc $(mn32)" 2>&1 | tee buildn32/check.log
 	touch $@
 
 clean:
@@ -141,6 +175,11 @@ ifneq (,$(filter biarch64, $(multiarch)))
 	cp -p build64/.libs/libffi_convenience.a \
 		debian/tmp/usr/lib64/libffi_pic.a
 endif
+ifneq (,$(filter biarchn32, $(multiarch)))
+	$(MAKE) -C buildn32 DESTDIR=$(CURDIR)/debian/tmp libdir=/usr/lib32 install
+	cp -p buildn32/.libs/libffi_convenience.a \
+		debian/tmp/usr/lib32/libffi_pic.a
+endif
 	dh_install -s --sourcedir=debian/tmp
 
 ifneq (,$(filter biarch32, $(multiarch)))
@@ -190,6 +229,13 @@ ifneq (,$(filter biarch64, $(multiarch)))
 	cat build64/check.log >> debian/libffi-dev/usr/share/doc/libffi$(major)/test_results.txt
   endif
 endif
+ifneq (,$(filter biarchn32, $(multiarch)))
+	rm -rf debian/libn32ffi-dev/usr/share/doc/libn32ffi-dev
+	ln -s libffi-dev debian/libn32ffi-dev/usr/share/doc/libn32ffi-dev
+  ifeq ($(with_check),yes)
+	cat buildn32/check.log >> debian/libffi-dev/usr/share/doc/libffi$(major)/test_results.txt
+  endif
+endif
 	dh_strip -s --dbg-package=libffi$(major)-dbg
 	dh_compress -s
 	dh_fixperms -s
-- 
1.5.4.2

Attachment: signature.asc
Description: Digital signature


Reply to: