The adastrap depends on several libraries (libc, libm, libz, libgmp,
libmpfr, libmpc), but currently only libc and libm ship with it.
If one of the other libs changes, boom, the build breaks.  Also,
having to manually specify the library versions in the Makefile is
cumbersome.

I have revised the adastrap build such that it extract the list of
required shared libraries directly from the cc1 binary and includes
all of them in the new bootstrap.  I successfully built a new
adastrap with this and used it to re-build gcc.

OK?

Once this is in, new adastraps should be built for all architectures.
(I can do aarch64, amd64, and maybe i386.)

The trigger for all of this is that I would like to update libmpfr
and libmpc...


Index: Makefile
===================================================================
RCS file: /cvs/ports/lang/gcc/8/Makefile,v
retrieving revision 1.23
diff -u -p -r1.23 Makefile
--- Makefile    7 Sep 2019 23:32:43 -0000       1.23
+++ Makefile    8 Nov 2019 20:14:15 -0000
@@ -20,26 +20,12 @@ REVISION = 4
 FULL_VERSION = $V
 FULL_PKGVERSION = $V
 
-ADASTRAP_LIBC-amd64 = 95.1
-ADASTRAP_LIBM-amd64 = 10.1
 ADASTRAP-amd64 = adastrap-amd64-$V-1.tar.xz
-ADASTRAP_LIBC-arm = 88.0
-ADASTRAP_LIBM-arm = 9.0
 ADASTRAP-arm = adastrap-arm-4.9.4-0.tar.xz
-ADASTRAP_LIBC-hppa = 95.0
-ADASTRAP_LIBM-hppa = 10.1
 ADASTRAP-hppa = adastrap-hppa-$V-0.tar.xz
-ADASTRAP_LIBC-i386 = 95.1
-ADASTRAP_LIBM-i386 = 10.1
 ADASTRAP-i386 = adastrap-i386-$V-1.tar.xz
-ADASTRAP_LIBC-mips64 = 95.1
-ADASTRAP_LIBM-mips64 = 10.1
 ADASTRAP-mips64 = adastrap-mips64-$V-0.tar.xz
-ADASTRAP_LIBC-powerpc = 95.1
-ADASTRAP_LIBM-powerpc = 10.1
 ADASTRAP-powerpc = adastrap-powerpc-$V-1.tar.xz
-ADASTRAP_LIBC-sparc64 = 93.0
-ADASTRAP_LIBM-sparc64 = 10.1
 ADASTRAP-sparc64 = adastrap-sparc64-6.5.0-0.tar.xz
 
 PKGNAME-main =  gcc-${FULL_PKGVERSION}
@@ -258,33 +244,19 @@ ADA_PACKAGE = ${PACKAGE_REPOSITORY}/${MA
 GCC_PACKAGE = ${PACKAGE_REPOSITORY}/${MACHINE_ARCH}/all/${FULLPKGNAME-main}.tgz
 GXX_PACKAGE = ${PACKAGE_REPOSITORY}/${MACHINE_ARCH}/all/${FULLPKGNAME-c++}.tgz
 
+.PHONY: adastrap
+
 adastrap: ${ADA_PACKAGE} ${GCC_PACKAGE} ${GXX_PACKAGE}
-.if !defined(ADASTRAP_LIBC-${MACHINE_ARCH}) || \
-       !defined(ADASTRAP_LIBM-${MACHINE_ARCH})
-       @echo 1>&2 "Error: you must specify libc and libm to bundle"
-       @exit 1
-.else
        mkdir -p ${WRKDIR}/prepare/bootstrap/system-libs
-       cp /usr/lib/libc.so.${ADASTRAP_LIBC-${MACHINE_ARCH}} \
-               ${WRKDIR}/prepare/bootstrap/system-libs
-       cp /usr/lib/libm.so.${ADASTRAP_LIBM-${MACHINE_ARCH}} \
-               ${WRKDIR}/prepare/bootstrap/system-libs
-       cd ${WRKDIR}/prepare/bootstrap && tar zxf ${ADA_PACKAGE}
-       cd ${WRKDIR}/prepare/bootstrap && tar zxf ${GCC_PACKAGE}
-       cd ${WRKDIR}/prepare/bootstrap && tar zxf ${GXX_PACKAGE}
+       cd ${WRKDIR}/prepare/bootstrap && tar xzf ${ADA_PACKAGE}
+       cd ${WRKDIR}/prepare/bootstrap && tar xzf ${GCC_PACKAGE}
+       cd ${WRKDIR}/prepare/bootstrap && tar xzf ${GXX_PACKAGE}
        rm -rf ${WRKDIR}/prepare/bootstrap/{+*,info,man,share}
-       rm -rf 
${WRKDIR}/prepare/bootstrap/lib/gcc/*-unknown-openbsd*/$V/include-fixed
-       if ! ldd ${WRKDIR}/prepare/bootstrap/bin/egcc | \
-               fgrep libc.so.${ADASTRAP_LIBC-${MACHINE_ARCH}} >/dev/null; then 
\
-               echo 1>&2 "Error: adastrap egcc linked against unbundled libc"; 
\
-               exit 1; \
-       fi
-       if ! ldd ${WRKDIR}/prepare/bootstrap/bin/egcc | \
-               fgrep libm.so.${ADASTRAP_LIBM-${MACHINE_ARCH}} >/dev/null; then 
\
-               echo 1>&2 "Error: adastrap egcc linked against unbundled libm"; 
\
-               exit 1; \
-       fi
+       rm -rf ${WRKDIR}/prepare/bootstrap/lib/gcc/*-openbsd*/$V/include-fixed
+       for f in \
+           `ldd ${WRKDIR}/prepare/bootstrap/libexec/gcc/*-openbsd*/$V/cc1 | \
+           awk '$$3 == "rlib" { print $$7 }'`; do \
+               cp $$f ${WRKDIR}/prepare/bootstrap/system-libs/; \
+       done
        cd ${WRKDIR}/prepare && tar cf - bootstrap | \
-               xz > ${FULLDISTDIR}/${ADASTRAP-${MACHINE_ARCH}}
-.endif
-
+               xz -T0 > ${FULLDISTDIR}/${ADASTRAP-${MACHINE_ARCH}}
-- 
Christian "naddy" Weisgerber                          na...@mips.inka.de

Reply via email to