Correctly handle the libfloat case: download, extract and patch sub-actions.
author"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat May 19 13:10:11 2007 +0000 (2007-05-19)
changeset 10706d3636f6611
parent 106 fd36793107dc
child 108 69407950a2a2
Correctly handle the libfloat case: download, extract and patch sub-actions.
Small improvement in messages in scipts/functions when retrieving a file.
patches/libfloat/990616.orig/100-libfloat_990616-3-lib-versioning.patch
patches/libfloat/990616.orig/200-cross_compile.patch
patches/libfloat/990616/100-libfloat_990616-3-lib-versioning.patch
patches/libfloat/990616/200-cross_compile.patch
scripts/build/libfloat.sh
scripts/crosstool.sh
scripts/functions
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/patches/libfloat/990616.orig/100-libfloat_990616-3-lib-versioning.patch	Sat May 19 13:10:11 2007 +0000
     1.3 @@ -0,0 +1,48 @@
     1.4 +This patch comes from the Debian archive:
     1.5 +  ftp://ftp.de.debian.org/debian/pool/main/libf/libfloat/libfloat_990616-3.diff.gz
     1.6 +
     1.7 +It was stripped of all Debian-related hunks.
     1.8 +Kept is the library versioning.
     1.9 +
    1.10 +--- libfloat-990616.orig/Makefile
    1.11 ++++ libfloat-990616/Makefile
    1.12 +@@ -4,15 +4,15 @@
    1.13 + #CC=gcc -g -O2 -freg-struct-return -D__LIBFLOAT__
    1.14 + AR=ar
    1.15 + 
    1.16 +-all: libfloat.a libfloat.so
    1.17 ++all: libfloat.a libfloat.so.1
    1.18 + 
    1.19 + libfloat.a: softfloat.o fplib_glue.o
    1.20 + 	rm -f libfloat.a
    1.21 + 	$(AR) cq libfloat.a softfloat.o fplib_glue.o
    1.22 + 
    1.23 +-libfloat.so: softfloat.os fplib_glue.os
    1.24 +-	rm -f libfloat.so
    1.25 +-	gcc -shared softfloat.os fplib_glue.os -o libfloat.so
    1.26 ++libfloat.so.1: softfloat.os fplib_glue.os
    1.27 ++	rm -f libfloat.so.1
    1.28 ++	gcc -shared -Wl,-soname,libfloat.so.1 softfloat.os fplib_glue.os -o libfloat.so.1
    1.29 + 
    1.30 + softfloat.o: softfloat/bits64/softfloat.c
    1.31 + 	$(CC) -c -o softfloat.o -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
    1.32 +@@ -26,14 +26,14 @@
    1.33 + fplib_glue.os: fplib_glue.S
    1.34 + 	$(CC) -fpic -c -o fplib_glue.os fplib_glue.S
    1.35 + 
    1.36 +-install: libfloat.a libfloat.so
    1.37 +-	cp -a libfloat.a /usr/lib
    1.38 +-	cp -a libfloat.so /usr/lib
    1.39 +-	ldconfig
    1.40 ++install: libfloat.a libfloat.so.1
    1.41 ++	cp -a libfloat.a $(DESTDIR)/usr/lib
    1.42 ++	cp -a libfloat.so.1 $(DESTDIR)/usr/lib
    1.43 ++	cd $(DESTDIR)/usr/lib; ln -s libfloat.so.1 libfloat.so
    1.44 + 
    1.45 + clean: 
    1.46 + 	rm -f *.o
    1.47 + 	rm -f *.os
    1.48 + 	rm -f libfloat.a
    1.49 +-	rm -f libfloat.so
    1.50 ++	rm -f libfloat.so.1
    1.51 + 	rm -f *~
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/patches/libfloat/990616.orig/200-cross_compile.patch	Sat May 19 13:10:11 2007 +0000
     2.3 @@ -0,0 +1,63 @@
     2.4 +When linking, call directly ld in place of the gcc wrapper, because the wrapper
     2.5 +will try to link with -lfloat, which we don't have right now...
     2.6 +
     2.7 +Simplify CFLAGS to stay ABI compliant (ot so I guess)...
     2.8 +
     2.9 +diff -dur libfloat.orig/Makefile libfloat/Makefile
    2.10 +--- libfloat.orig/Makefile	2007-02-16 19:38:55.000000000 +0100
    2.11 ++++ libfloat/Makefile	2007-02-16 19:46:23.000000000 +0100
    2.12 +@@ -1,8 +1,11 @@
    2.13 + # Makefile for the Linux soft-float library
    2.14 + 
    2.15 +-CC=gcc -O2 -freg-struct-return -fomit-frame-pointer -D__LIBFLOAT__
    2.16 +-#CC=gcc -g -O2 -freg-struct-return -D__LIBFLOAT__
    2.17 +-AR=ar
    2.18 ++AR=$(CROSS_COMPILE)ar
    2.19 ++#CFLAGS=-O2 -freg-struct-return -fomit-frame-pointer -D__LIBFLOAT__
    2.20 ++CFLAGS=-O2 -D__LIBFLOAT__
    2.21 ++CC=$(CROSS_COMPILE)gcc 
    2.22 ++LDFLAGS=-shared -nostdlib
    2.23 ++LD=$(CROSS_COMPILE)ld
    2.24 + 
    2.25 + all: libfloat.a libfloat.so.1
    2.26 + 
    2.27 +@@ -12,28 +13,31 @@
    2.28 + 
    2.29 + libfloat.so.1: softfloat.os fplib_glue.os
    2.30 + 	rm -f libfloat.so.1
    2.31 +-	gcc -shared -Wl,-soname,libfloat.so.1 softfloat.os fplib_glue.os -o libfloat.so.1
    2.32 ++	$(LD) $(LDFLAGS) -soname=libfloat.so.1 softfloat.os fplib_glue.os -o libfloat.so.1
    2.33 + 
    2.34 + softfloat.o: softfloat/bits64/softfloat.c
    2.35 +-	$(CC) -c -o softfloat.o -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
    2.36 ++	$(CC) $(CFLAGS) -c -o softfloat.o -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
    2.37 + 
    2.38 + fplib_glue.o: fplib_glue.S
    2.39 +-	$(CC) -c -o fplib_glue.o fplib_glue.S
    2.40 ++	$(CC) $(CFLAGS) -c -o fplib_glue.o fplib_glue.S
    2.41 + 
    2.42 + softfloat.os: softfloat/bits64/softfloat.c
    2.43 +-	$(CC) -fpic -c -o softfloat.os -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
    2.44 ++	$(CC) $(CFLAGS) -fpic -c -o softfloat.os -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
    2.45 + 
    2.46 + fplib_glue.os: fplib_glue.S
    2.47 +-	$(CC) -fpic -c -o fplib_glue.os fplib_glue.S
    2.48 ++	$(CC) $(CFLAGS) -fpic -c -o fplib_glue.os fplib_glue.S
    2.49 + 
    2.50 + install: libfloat.a libfloat.so.1
    2.51 +-	cp -a libfloat.a $(DESTDIR)/usr/lib
    2.52 +-	cp -a libfloat.so.1 $(DESTDIR)/usr/lib
    2.53 +-	cd $(DESTDIR)/usr/lib; ln -s libfloat.so.1 libfloat.so
    2.54 ++	install -d -m 755 "$(DESTDIR)/usr/lib"
    2.55 ++	install -m 755 libfloat.a "$(DESTDIR)/usr/lib"
    2.56 ++	install -m 755 libfloat.so.1 "$(DESTDIR)/usr/lib"
    2.57 ++	cd $(DESTDIR)/usr/lib
    2.58 ++	ln -s libfloat.so.1 libfloat.so
    2.59 + 
    2.60 + clean: 
    2.61 + 	rm -f *.o
    2.62 + 	rm -f *.os
    2.63 + 	rm -f libfloat.a
    2.64 + 	rm -f libfloat.so.1
    2.65 ++	rm -f libfloat.so
    2.66 + 	rm -f *~
     3.1 --- a/patches/libfloat/990616/100-libfloat_990616-3-lib-versioning.patch	Sat May 19 11:01:47 2007 +0000
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,48 +0,0 @@
     3.4 -This patch comes from the Debian archive:
     3.5 -  ftp://ftp.de.debian.org/debian/pool/main/libf/libfloat/libfloat_990616-3.diff.gz
     3.6 -
     3.7 -It was stripped of all Debian-related hunks.
     3.8 -Kept is the library versioning.
     3.9 -
    3.10 ---- libfloat-990616.orig/Makefile
    3.11 -+++ libfloat-990616/Makefile
    3.12 -@@ -4,15 +4,15 @@
    3.13 - #CC=gcc -g -O2 -freg-struct-return -D__LIBFLOAT__
    3.14 - AR=ar
    3.15 - 
    3.16 --all: libfloat.a libfloat.so
    3.17 -+all: libfloat.a libfloat.so.1
    3.18 - 
    3.19 - libfloat.a: softfloat.o fplib_glue.o
    3.20 - 	rm -f libfloat.a
    3.21 - 	$(AR) cq libfloat.a softfloat.o fplib_glue.o
    3.22 - 
    3.23 --libfloat.so: softfloat.os fplib_glue.os
    3.24 --	rm -f libfloat.so
    3.25 --	gcc -shared softfloat.os fplib_glue.os -o libfloat.so
    3.26 -+libfloat.so.1: softfloat.os fplib_glue.os
    3.27 -+	rm -f libfloat.so.1
    3.28 -+	gcc -shared -Wl,-soname,libfloat.so.1 softfloat.os fplib_glue.os -o libfloat.so.1
    3.29 - 
    3.30 - softfloat.o: softfloat/bits64/softfloat.c
    3.31 - 	$(CC) -c -o softfloat.o -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
    3.32 -@@ -26,14 +26,14 @@
    3.33 - fplib_glue.os: fplib_glue.S
    3.34 - 	$(CC) -fpic -c -o fplib_glue.os fplib_glue.S
    3.35 - 
    3.36 --install: libfloat.a libfloat.so
    3.37 --	cp -a libfloat.a /usr/lib
    3.38 --	cp -a libfloat.so /usr/lib
    3.39 --	ldconfig
    3.40 -+install: libfloat.a libfloat.so.1
    3.41 -+	cp -a libfloat.a $(DESTDIR)/usr/lib
    3.42 -+	cp -a libfloat.so.1 $(DESTDIR)/usr/lib
    3.43 -+	cd $(DESTDIR)/usr/lib; ln -s libfloat.so.1 libfloat.so
    3.44 - 
    3.45 - clean: 
    3.46 - 	rm -f *.o
    3.47 - 	rm -f *.os
    3.48 - 	rm -f libfloat.a
    3.49 --	rm -f libfloat.so
    3.50 -+	rm -f libfloat.so.1
    3.51 - 	rm -f *~
     4.1 --- a/patches/libfloat/990616/200-cross_compile.patch	Sat May 19 11:01:47 2007 +0000
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,63 +0,0 @@
     4.4 -When linking, call directly ld in place of the gcc wrapper, because the wrapper
     4.5 -will try to link with -lfloat, which we don't have right now...
     4.6 -
     4.7 -Simplify CFLAGS to stay ABI compliant (ot so I guess)...
     4.8 -
     4.9 -diff -dur libfloat.orig/Makefile libfloat/Makefile
    4.10 ---- libfloat.orig/Makefile	2007-02-16 19:38:55.000000000 +0100
    4.11 -+++ libfloat/Makefile	2007-02-16 19:46:23.000000000 +0100
    4.12 -@@ -1,8 +1,11 @@
    4.13 - # Makefile for the Linux soft-float library
    4.14 - 
    4.15 --CC=gcc -O2 -freg-struct-return -fomit-frame-pointer -D__LIBFLOAT__
    4.16 --#CC=gcc -g -O2 -freg-struct-return -D__LIBFLOAT__
    4.17 --AR=ar
    4.18 -+AR=$(CROSS_COMPILE)ar
    4.19 -+#CFLAGS=-O2 -freg-struct-return -fomit-frame-pointer -D__LIBFLOAT__
    4.20 -+CFLAGS=-O2 -D__LIBFLOAT__
    4.21 -+CC=$(CROSS_COMPILE)gcc 
    4.22 -+LDFLAGS=-shared -nostdlib
    4.23 -+LD=$(CROSS_COMPILE)ld
    4.24 - 
    4.25 - all: libfloat.a libfloat.so.1
    4.26 - 
    4.27 -@@ -12,28 +13,31 @@
    4.28 - 
    4.29 - libfloat.so.1: softfloat.os fplib_glue.os
    4.30 - 	rm -f libfloat.so.1
    4.31 --	gcc -shared -Wl,-soname,libfloat.so.1 softfloat.os fplib_glue.os -o libfloat.so.1
    4.32 -+	$(LD) $(LDFLAGS) -soname=libfloat.so.1 softfloat.os fplib_glue.os -o libfloat.so.1
    4.33 - 
    4.34 - softfloat.o: softfloat/bits64/softfloat.c
    4.35 --	$(CC) -c -o softfloat.o -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
    4.36 -+	$(CC) $(CFLAGS) -c -o softfloat.o -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
    4.37 - 
    4.38 - fplib_glue.o: fplib_glue.S
    4.39 --	$(CC) -c -o fplib_glue.o fplib_glue.S
    4.40 -+	$(CC) $(CFLAGS) -c -o fplib_glue.o fplib_glue.S
    4.41 - 
    4.42 - softfloat.os: softfloat/bits64/softfloat.c
    4.43 --	$(CC) -fpic -c -o softfloat.os -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
    4.44 -+	$(CC) $(CFLAGS) -fpic -c -o softfloat.os -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
    4.45 - 
    4.46 - fplib_glue.os: fplib_glue.S
    4.47 --	$(CC) -fpic -c -o fplib_glue.os fplib_glue.S
    4.48 -+	$(CC) $(CFLAGS) -fpic -c -o fplib_glue.os fplib_glue.S
    4.49 - 
    4.50 - install: libfloat.a libfloat.so.1
    4.51 --	cp -a libfloat.a $(DESTDIR)/usr/lib
    4.52 --	cp -a libfloat.so.1 $(DESTDIR)/usr/lib
    4.53 --	cd $(DESTDIR)/usr/lib; ln -s libfloat.so.1 libfloat.so
    4.54 -+	install -d -m 755 "$(DESTDIR)/usr/lib"
    4.55 -+	install -m 755 libfloat.a "$(DESTDIR)/usr/lib"
    4.56 -+	install -m 755 libfloat.so.1 "$(DESTDIR)/usr/lib"
    4.57 -+	cd $(DESTDIR)/usr/lib
    4.58 -+	ln -s libfloat.so.1 libfloat.so
    4.59 - 
    4.60 - clean: 
    4.61 - 	rm -f *.o
    4.62 - 	rm -f *.os
    4.63 - 	rm -f libfloat.a
    4.64 - 	rm -f libfloat.so.1
    4.65 -+	rm -f libfloat.so
    4.66 - 	rm -f *~
     5.1 --- a/scripts/build/libfloat.sh	Sat May 19 11:01:47 2007 +0000
     5.2 +++ b/scripts/build/libfloat.sh	Sat May 19 13:10:11 2007 +0000
     5.3 @@ -7,26 +7,20 @@
     5.4  
     5.5  # Download libfloat
     5.6  do_libfloat_get() {
     5.7 -    # Please note: because the file we download, and the file we store on the
     5.8 -    # file system don't have the same name, CT_GetFile will always try to
     5.9 -    # download the file over and over.
    5.10 -    # To avoid this, we check that the file we want already exists in the
    5.11 -    # tarball directory first. This is an ugly hack that overrides the standard
    5.12 -    # CT_GetFile behavior... Sight...
    5.13 -    lib_float_url="ftp://ftp.de.debian.org/debian/pool/main/libf/libfloat/"
    5.14 -    ext=`CT_GetFileExtension "${CT_LIBFLOAT_FILE}"`
    5.15 -    if [ -z "${ext}" ]; then
    5.16 -        CT_GetFile libfloat_990616.orig "${lib_float_url}"
    5.17 -        ext=`CT_GetFileExtension "libfloat_990616.orig"`
    5.18 -        # Hack: remove the .orig extension, and change _ to -
    5.19 -        mv -v "${CT_TARBALLS_DIR}/libfloat_990616.orig${ext}" \
    5.20 -              "${CT_TARBALLS_DIR}/libfloat-990616${ext}"      2>&1 |CT_DoLog DEBUG
    5.21 -    fi
    5.22 +    # Ah! libfloat separates the version string from the base name with
    5.23 +    # an underscore. We need to workaround this in a sane manner: soft link.
    5.24 +    local libfloat_file=`echo "${CT_LIBFLOAT_FILE}" |sed -r -e 's/^libfloat-/libfloat_/;'`
    5.25 +    CT_GetFile "${libfloat_file}"                                    \
    5.26 +               ftp://ftp.de.debian.org/debian/pool/main/libf/libfloat
    5.27 +    CT_Pushd "${CT_TARBALLS_DIR}"
    5.28 +    ext=`CT_GetFileExtension "${libfloat_file}"`
    5.29 +    ln -s "${libfloat_file}${ext}" "${CT_LIBFLOAT_FILE}${ext}"
    5.30 +    CT_Popd
    5.31  }
    5.32  
    5.33  # Extract libfloat
    5.34  do_libfloat_extract() {
    5.35 -    [ "${CT_ARCH_FLOAT_SW_LIBFLOAT}" = "y" ] && CT_ExtractAndPatch "${CT_LIBFLOAT_FILE}"
    5.36 +    CT_ExtractAndPatch "${CT_LIBFLOAT_FILE}"
    5.37  }
    5.38  
    5.39  # Build libfloat
    5.40 @@ -34,13 +28,12 @@
    5.41      # Here we build and install libfloat for the target, so that the C library
    5.42      # builds OK with those versions of gcc that have severed softfloat support
    5.43      # code
    5.44 -    [ "${CT_ARCH_FLOAT_SW_LIBFLOAT}" = "y" ] || return 0
    5.45 -	CT_DoStep INFO "Installing software floating point emulation library libfloat"
    5.46 +    CT_DoStep INFO "Installing software floating point emulation library libfloat"
    5.47 +    mkdir build-libfloat
    5.48 +    cd build-libfloat
    5.49  
    5.50      CT_Pushd "${CT_BUILD_DIR}"
    5.51      CT_DoLog EXTRA "Copying sources to build dir"
    5.52 -    mkdir build-libfloat
    5.53 -    cd build-libfloat
    5.54      ( cd "${CT_SRC_DIR}/${CT_LIBFLOAT_FILE}"; tar cf - . ) |tar xvf - |CT_DoLog ALL
    5.55  
    5.56      CT_DoLog EXTRA "Cleaning library"
     6.1 --- a/scripts/crosstool.sh	Sat May 19 11:01:47 2007 +0000
     6.2 +++ b/scripts/crosstool.sh	Sat May 19 13:10:11 2007 +0000
     6.3 @@ -97,7 +97,7 @@
     6.4  CT_CC_CORE_FILE="${CT_CC_CORE}-${CT_CC_CORE_VERSION}"
     6.5  CT_CC_FILE="${CT_CC}-${CT_CC_VERSION}"
     6.6  CT_LIBC_FILE="${CT_LIBC}-${CT_LIBC_VERSION}"
     6.7 -[ "${CT_ARCH_FLOAT_SW_LIBFLOAT}" = "y" ] && CT_LIBFLOAT_FILE="libfloat-990616"
     6.8 +CT_LIBFLOAT_FILE="libfloat-${CT_LIBFLOAT_VERSION}"
     6.9  
    6.10  # Where will we work?
    6.11  CT_TARBALLS_DIR="${CT_TOP_DIR}/targets/tarballs"
     7.1 --- a/scripts/functions	Sat May 19 11:01:47 2007 +0000
     7.2 +++ b/scripts/functions	Sat May 19 13:10:11 2007 +0000
     7.3 @@ -294,7 +294,6 @@
     7.4          return 0
     7.5      fi
     7.6  
     7.7 -    CT_DoLog EXTRA "Retrieving \"${file}\""
     7.8      CT_Pushd "${CT_TARBALLS_DIR}"
     7.9      # File not yet downloaded, try to get it
    7.10      got_it=0
    7.11 @@ -303,11 +302,13 @@
    7.12      for ext in .tar.bz2 .tar.gz .tgz .tar; do
    7.13          if [ -r "${CT_LOCAL_TARBALLS_DIR}/${file}${ext}" -a \
    7.14               "${CT_FORCE_DOWNLOAD}" != "y" ]; then
    7.15 +            CT_DoLog EXTRA "Copying \"${file}\" from local copy"
    7.16              cp -v "${CT_LOCAL_TARBALLS_DIR}/${file}${ext}" "${file}${ext}" |CT_DoLog DEBUG
    7.17              return 0
    7.18          fi
    7.19      done
    7.20      # Try to download it
    7.21 +    CT_DoLog EXTRA "Retrieving \"${file}\""
    7.22      for ext in .tar.bz2 .tar.gz .tgz .tar; do
    7.23          # Try all urls in turn
    7.24          for url in "$@"; do