[parisc-linux] Bug#225892: [patch] on hppa build binutils targeted for hppa64

Matthias Klose doko at cs.tu-berlin.de
Fri Jan 2 06:41:34 MST 2004


Package: binutils
Version: 2.14.90.0.7
Tags: patch

Please apply the following patch to build an binutils-hppa64 package,
which is needed together with gcc-3.3-hppa64 to build the 64bit
kernels for hppa-linux. The tools currently used to build the 64bit
aren't packaged at all, so this is a first step ...

Binary packages currently can be found at
http://cs.tu-berlin.de/~doko/tmp/hppa/



diff -ur binutils-2.14.90.0.7.old/debian/control binutils-2.14.90.0.7/debian/control
--- binutils-2.14.90.0.7.old/debian/control	2003-12-15 08:25:17.000000000 +0100
+++ binutils-2.14.90.0.7/debian/control	2003-12-17 22:39:10.000000000 +0100
@@ -43,6 +43,19 @@
  NORMAL USERS SHOULD NOT INSTALL THIS PACKAGE.  It's meant only for those
  requiring support for reading info from binaries from other architectures.
 
+Package: binutils-hppa64
+Architecture: hppa
+Depends: ${shlibs:Depends}, binutils (>= ${Source-Version})
+Conflicts: binutils-multiarch
+Recommends: libc6-dev
+Suggests: binutils-doc (>= ${Source-Version})
+Description: The GNU assembler, linker and binary utilities targeted for hppa64-linux
+ The programs in this package are used to assemble, link and manipulate
+ binary and object files.  They may be used in conjunction with a compiler
+ and various libraries to build programs.
+ .
+ This package is needed to build an 64bit kernel for the 64bit hppa machines.
+
 Package: binutils-doc
 Section: doc
 Architecture: all
diff -ur binutils-2.14.90.0.7.old/debian/rules binutils-2.14.90.0.7/debian/rules
--- binutils-2.14.90.0.7.old/debian/rules	2003-12-15 08:25:17.000000000 +0100
+++ binutils-2.14.90.0.7/debian/rules	2003-12-17 22:37:07.000000000 +0100
@@ -19,6 +19,7 @@
 p_dev = $(p_bin)-dev
 p_mul = $(p_bin)-multiarch
 p_doc = $(p_bin)-doc
+p_hppa64 = $(p_bin)-hppa64
 
 pwd   := $(shell pwd)
 d     = debian/tmp
@@ -26,6 +27,7 @@
 d_dev = debian/$(p_dev)
 d_mul = debian/$(p_mul)
 d_doc = debian/$(p_doc)
+d_hppa64 = debian/$(p_hppa64)
 
 install_dir    = install -d -m 755
 install_file   = install -m 644
@@ -44,6 +46,12 @@
 MULTI_VERSION = $(VERSION)-multiarch
 MULTI_ARGS    = MAKEOVERRIDES="VERSION=$(MULTI_VERSION)"
 
+HPPA64_VERSION= $(VERSION)-hppa64
+HPPA64_ARGS   = MAKEOVERRIDES="VERSION=$(HPPA64_VERSION)"
+hppa64_prefix = usr
+#hppa64_prefix = usr/hppa64-linux
+#hppa64_prefix = usr/lib/hppa64-linux
+
 ########################################
 
 # Use older gcc on m68k until test suite regressions are resolved
@@ -92,10 +100,10 @@
 
 clean: unpatch
 	$(checkdir)
-	-rm -fr builddir-multi builddir-single
+	-rm -fr builddir-multi builddir-single builddir-hppa64
 	-find . -name \*.gmo -o -name \*~ | xargs rm -f
 	-rm -f $(pwd)/test-summary
-	-rm -fr $(d_bin) $(d_dev) $(d_mul) $(d_doc)
+	-rm -fr $(d_bin) $(d_dev) $(d_mul) $(d_doc) $(d_hppa64)
 	-rm -rf debian/patched debian/tmp debian/files debian/substvars
 
 ################################################################################
@@ -150,8 +158,40 @@
 		CFLAGS="$(CFLAGS)" $(MULTI_ARGS)
 	touch build-multi-stamp
 
+################################################################################
+
+#################
+# hppa64 target #
+#################
+
+configure-hppa64-stamp: patch-stamp
+	$(checkdir)
+	rm -rf configure-hppa64-stamp \
+		builddir-hppa64
+	mkdir builddir-hppa64
+	cd builddir-hppa64 \
+	    && env CC="$(CC)" ../configure \
+		--enable-shared \
+		--prefix=/$(hppa64_prefix) \
+		--build=$(DEB_BUILD_GNU_TYPE) \
+		--host=$(DEB_BUILD_GNU_TYPE) \
+		--target=hppa64-linux
+	$(MAKE) -C builddir-hppa64 configure-host
+	touch configure-hppa64-stamp
+
+build-hppa64-stamp: configure-hppa64-stamp
+	$(checkdir)
+	$(MAKE) -C builddir-hppa64/bfd headers
+	$(MAKE) -C builddir-hppa64 \
+		CFLAGS="$(CFLAGS)" $(HPPA64_ARGS)
+	touch build-hppa64-stamp
+
+build_stamps = build-single-stamp build-multi-stamp
+ifeq ($(DEB_HOST_ARCH),hppa)
+       build_stamps += build-hppa64-stamp
+endif
 build: build-stamp
-build-stamp: build-single-stamp build-multi-stamp
+build-stamp: $(build_stamps)
 	touch build-stamp
 
 ################################################################################
@@ -160,7 +200,11 @@
 # install target #
 ##################
 
-install: install-stamp
+install_stamps = install-stamp
+ifeq ($(DEB_HOST_ARCH),hppa)
+       install_stamps += install-hppa64-stamp
+endif
+install: $(install_stamps)
 install-stamp: checkroot build-stamp
 	$(checkdir)
 
@@ -183,7 +227,7 @@
 	: # Work around bug in 2.14.90.0.7 which caused as info and
 	: # manpages to not be installed.
 	make -C builddir-single/gas/doc \
-      		mandir=$(pwd)/$(d_bin)/usr/share/man \
+		mandir=$(pwd)/$(d_bin)/usr/share/man \
 	        infodir=$(pwd)/$(d_doc)/usr/share/info install-info-am install-am
 
 	: # copy libiberty.h ... not too keen on this, but it was requested
@@ -235,6 +279,48 @@
 
 	touch install-stamp
 
+install-hppa64-stamp: checkroot build-hppa64-stamp
+	$(checkdir)
+
+	rm -fr $(d_hppa64)
+	$(install_dir) $(d_hppa64)
+	$(install_dir) $(d_hppa64)/usr/lib
+
+	: # install binutils-hppa64 stuff
+	$(MAKE) -C builddir-hppa64 \
+		CFLAGS="$(CFLAGS)" $(HPPA64_ARGS) \
+		prefix=$(pwd)/$(d_hppa64)/$(hppa64_prefix) \
+		mandir=$(pwd)/$(d_hppa64)/$(hppa64_prefix)/share/man \
+		infodir=$(pwd)/$(d_hppa64)/$(hppa64_prefix)/share/info install
+
+	: # move shared libs to the stndard path
+	mv $(d_hppa64)/$(hppa64_prefix)/hppa-linux/hppa64-linux/lib/lib*-*.so \
+		$(d_hppa64)/usr/lib/.
+
+	: # Now get rid of just about everything in binutils-hppa64
+	rm -rf $(d_hppa64)/$(hppa64_prefix)/man
+	rm -rf $(d_hppa64)/$(hppa64_prefix)/info
+	rm -rf $(d_hppa64)/$(hppa64_prefix)/include
+	rm -rf $(d_hppa64)/$(hppa64_prefix)/share
+	rm -rf $(d_hppa64)/$(hppa64_prefix)/hppa-linux
+	rm -rf $(d_hppa64)/$(hppa64_prefix)/lib/libiberty.a
+	rm -rf $(d_hppa64)/$(hppa64_prefix)/lib/ldscripts
+
+	: # Strip shared libraries
+	$(STRIP) --strip-unneeded $(d_hppa64)/$(hppa64_prefix)/lib/libbfd-*so
+	$(STRIP) --strip-unneeded $(d_hppa64)/$(hppa64_prefix)/lib/libopcodes-*so
+
+	chmod ugo-x $(d_hppa64)/$(hppa64_prefix)/lib/*.so
+	$(STRIP) $(d_hppa64)/$(hppa64_prefix)/bin/*
+
+	: # Don't want /usr/<arch>-linux to exist in any package
+	rm -rf $(d_hppa64)/$(hppa64_prefix)/$(DEB_HOST_GNU_TYPE)
+
+	: # symlink include dir (this seems to be sufficient for now ...)
+	ln -sf ../include $(d_hppa64)/$(hppa64_prefix)/include
+
+	touch install-hppa64-stamp
+
 ################################################################################
 
 #######################
@@ -287,14 +373,22 @@
 	$(install_script) debian/binutils-multiarch.preinst $(d_mul)/DEBIAN/preinst
 	$(install_file) debian/binutils-multiarch.shlibs $(d_mul)/DEBIAN/shlibs
 
+ifeq ($(DEB_HOST_ARCH),hppa)
+	$(install_dir) $(d_hppa64)/DEBIAN
+endif
+
 	: # install docs
 	$(install_dir) $(d_bin)/usr/share/doc/$(p_bin)/
 	$(install_file)	debian/changelog $(d_bin)/usr/share/doc/$(p_bin)/changelog.Debian
 	$(install_file)	debian/copyright $(d_bin)/usr/share/doc/$(p_bin)/
 
 	$(install_dir) $(d_dev)/usr/share/doc/ $(d_mul)/usr/share/doc/
-	ln -s $(p_bin) $(d_dev)/usr/share/doc/$(p_dev)
-	ln -s $(p_bin) $(d_mul)/usr/share/doc/$(p_mul)
+	ln -sf $(p_bin) $(d_dev)/usr/share/doc/$(p_dev)
+	ln -sf $(p_bin) $(d_mul)/usr/share/doc/$(p_mul)
+ifeq ($(DEB_HOST_ARCH),hppa)
+	$(install_dir) $(d_hppa64)/usr/share/doc/
+	ln -sf $(p_bin) $(d_hppa64)/usr/share/doc/$(p_hppa64)
+endif
 
 	$(install_file) $(pwd)/test-summary binutils/NEWS binutils/ChangeLog.linux \
 	                debian/README.Debian $(d_bin)/usr/share/doc/$(p_bin)/
@@ -330,11 +424,22 @@
 	find $(d_mul) -type f | xargs file | grep ELF | cut -d: -f 1 | xargs dpkg-shlibdeps
 	dpkg-gencontrol -isp -P$(d_mul) -p$(p_mul)
 
+ifeq ($(DEB_HOST_ARCH),hppa)
+	rm -f debian/substvars
+	find $(d_hppa64) -type f | xargs file | grep ELF | cut -d: -f 1 | xargs dpkg-shlibdeps
+	dpkg-gencontrol -isp -P$(d_hppa64) -p$(p_hppa64)
+endif
+
 	chown -R root:root $(d_bin) $(d_dev) $(d_mul)
 	chmod -R go=rX  $(d_bin) $(d_dev) $(d_mul)
 	dpkg --build $(d_bin) ..
 	dpkg --build $(d_dev) ..
 	dpkg --build $(d_mul) ..
+ifeq ($(DEB_HOST_ARCH),hppa)
+	chown -R root:root $(d_hppa64)
+	chmod -R go=rX  $(d_hppa64)
+	dpkg --build $(d_hppa64) ..
+endif
 
 ################################################################################
 



More information about the parisc-linux mailing list