From owner-freebsd-toolchain@FreeBSD.ORG Thu Apr 26 09:36:09 2012 Return-Path: Delivered-To: toolchain@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 40A3D106566B; Thu, 26 Apr 2012 09:36:09 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id 9B08D8FC08; Thu, 26 Apr 2012 09:36:08 +0000 (UTC) Received: from skuns.kiev.zoral.com.ua (localhost [127.0.0.1]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id q3Q9ZohB060021; Thu, 26 Apr 2012 12:35:50 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.5/8.14.5) with ESMTP id q3Q9ZnvS052823; Thu, 26 Apr 2012 12:35:49 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.5/8.14.5/Submit) id q3Q9ZngZ052822; Thu, 26 Apr 2012 12:35:49 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Thu, 26 Apr 2012 12:35:48 +0300 From: Konstantin Belousov To: toolchain@freebsd.org Message-ID: <20120426093548.GR2358@deviant.kiev.zoral.com.ua> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="I1idRxCkzV0Ng7xp" Content-Disposition: inline User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-4.0 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: current@freebsd.org Subject: [RFC] Un-staticise the toolchain X-BeenThere: freebsd-toolchain@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Maintenance of FreeBSD's integrated toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Apr 2012 09:36:09 -0000 --I1idRxCkzV0Ng7xp Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable I think it is time to stop building the toolchain static. I was told that original reasoning for static linking was the fear of loosing the ability to recompile if some problem appears with rtld and any required dynamic library. Apparently, current dependencies are much more spread, e.g. /bin/sh is dynamically linked, and statically linked make does not solve anything. Patch below makes the dynamically linked toolchain a default, adding an WITHOUT_SHARED_TOOLCHAIN build-time option for real conservators. I did not looked in details why including bsd.own.mk makes NO_MAN non-functional. Please see the diffs for gnu/usr.bin/cc1*/Makefile. gnu/usr.bin/binutils/ar/Makefile | 3 +++ gnu/usr.bin/binutils/as/Makefile | 3 +++ gnu/usr.bin/binutils/ld/Makefile | 3 +++ gnu/usr.bin/binutils/ranlib/Makefile | 3 +++ gnu/usr.bin/cc/cc/Makefile | 2 ++ gnu/usr.bin/cc/cc1/Makefile | 5 ++++- gnu/usr.bin/cc/cc1plus/Makefile | 5 ++++- share/mk/bsd.own.mk | 3 ++- tools/build/options/WITH_STATIC_TOOLCHAIN | 6 ++++++ usr.bin/ar/Makefile | 4 ++++ usr.bin/make/Makefile | 4 ++++ 11 files changed, 38 insertions(+), 3 deletions(-) diff --git a/gnu/usr.bin/binutils/ar/Makefile b/gnu/usr.bin/binutils/ar/Mak= efile index 464445e..e26be85 100644 --- a/gnu/usr.bin/binutils/ar/Makefile +++ b/gnu/usr.bin/binutils/ar/Makefile @@ -1,6 +1,7 @@ # $FreeBSD$ =20 .include "../Makefile.inc0" +.include =20 .PATH: ${SRCDIR}/binutils ${SRCDIR}/binutils/doc =20 @@ -16,7 +17,9 @@ CFLAGS+=3D -D_GNU_SOURCE CFLAGS+=3D -I${.CURDIR}/${RELTOP}/libbinutils CFLAGS+=3D -I${SRCDIR}/binutils CFLAGS+=3D -I${SRCDIR}/bfd +.if ${MK_SHARED_TOOLCHAIN} !=3D "no" NO_SHARED?=3D yes +.endif DPADD=3D ${RELTOP}/libbinutils/libbinutils.a DPADD+=3D ${RELTOP}/libbfd/libbfd.a DPADD+=3D ${RELTOP}/libiberty/libiberty.a diff --git a/gnu/usr.bin/binutils/as/Makefile b/gnu/usr.bin/binutils/as/Mak= efile index bf8df81..a39918c 100644 --- a/gnu/usr.bin/binutils/as/Makefile +++ b/gnu/usr.bin/binutils/as/Makefile @@ -4,6 +4,7 @@ # BINDIR .include "${.CURDIR}/../../Makefile.inc" .include "${.CURDIR}/../Makefile.inc0" +.include =20 .PATH: ${SRCDIR}/gas ${SRCDIR}/gas/config =20 @@ -79,7 +80,9 @@ CFLAGS+=3D -D_GNU_SOURCE CFLAGS+=3D -I${SRCDIR}/gas -I${SRCDIR}/bfd -I${SRCDIR}/gas/config -I${SRCD= IR} CFLAGS+=3D -I${.CURDIR} -I${.CURDIR}/${TARGET_CPUARCH}-freebsd =20 +.if ${MK_SHARED_TOOLCHAIN} !=3D "no" NO_SHARED?=3D yes +.endif =20 DPADD=3D ${RELTOP}/libbfd/libbfd.a DPADD+=3D ${RELTOP}/libiberty/libiberty.a diff --git a/gnu/usr.bin/binutils/ld/Makefile b/gnu/usr.bin/binutils/ld/Mak= efile index d4420ed..50d88b5 100644 --- a/gnu/usr.bin/binutils/ld/Makefile +++ b/gnu/usr.bin/binutils/ld/Makefile @@ -1,6 +1,7 @@ # $FreeBSD$ =20 .include "../Makefile.inc0" +.include =20 .PATH: ${SRCDIR}/ld =20 @@ -34,7 +35,9 @@ CFLAGS+=3D -DBINDIR=3D\"${BINDIR}\" -DTARGET_SYSTEM_ROOT= =3D\"${TOOLS_PREFIX}\" CFLAGS+=3D -DTOOLBINDIR=3D\"${TOOLS_PREFIX}/${BINDIR}/libexec\" CFLAGS+=3D -D_GNU_SOURCE CFLAGS+=3D -I${SRCDIR}/ld -I${SRCDIR}/bfd +.if ${MK_SHARED_TOOLCHAIN} !=3D "no" NO_SHARED?=3D yes +.endif DPADD=3D ${RELTOP}/libbfd/libbfd.a DPADD+=3D ${RELTOP}/libiberty/libiberty.a LDADD=3D ${DPADD} diff --git a/gnu/usr.bin/binutils/ranlib/Makefile b/gnu/usr.bin/binutils/ra= nlib/Makefile index 8679375..6d4b13e 100644 --- a/gnu/usr.bin/binutils/ranlib/Makefile +++ b/gnu/usr.bin/binutils/ranlib/Makefile @@ -1,6 +1,7 @@ # $FreeBSD$ =20 .include "../Makefile.inc0" +.include =20 .PATH: ${SRCDIR}/binutils ${SRCDIR}/binutils/doc =20 @@ -16,7 +17,9 @@ CFLAGS+=3D -D_GNU_SOURCE CFLAGS+=3D -I${.CURDIR}/${RELTOP}/libbinutils CFLAGS+=3D -I${SRCDIR}/binutils CFLAGS+=3D -I${SRCDIR}/bfd +.if ${MK_SHARED_TOOLCHAIN} !=3D "no" NO_SHARED?=3D yes +.endif DPADD=3D ${RELTOP}/libbinutils/libbinutils.a DPADD+=3D ${RELTOP}/libbfd/libbfd.a DPADD+=3D ${RELTOP}/libiberty/libiberty.a diff --git a/gnu/usr.bin/cc/cc/Makefile b/gnu/usr.bin/cc/cc/Makefile index 78c83a5..6a65d69 100644 --- a/gnu/usr.bin/cc/cc/Makefile +++ b/gnu/usr.bin/cc/cc/Makefile @@ -9,7 +9,9 @@ PROG=3D gcc MAN=3D gcc.1 SRCS+=3D gccspec.c =20 +.if ${MK_SHARED_TOOLCHAIN} !=3D "no" NO_SHARED?=3Dyes +.endif =20 MLINKS=3D gcc.1 g++.1 .if ${MK_CLANG_IS_CC} =3D=3D "no" diff --git a/gnu/usr.bin/cc/cc1/Makefile b/gnu/usr.bin/cc/cc1/Makefile index c65acd2..bb8fe19 100644 --- a/gnu/usr.bin/cc/cc1/Makefile +++ b/gnu/usr.bin/cc/cc1/Makefile @@ -1,14 +1,17 @@ # $FreeBSD$ =20 .include "../Makefile.inc" +.include =20 .PATH: ${GCCDIR} =20 PROG=3D cc1 SRCS=3D main.c c-parser.c c-lang.c BINDIR=3D /usr/libexec -NO_MAN=3D +MAN=3D +.if ${MK_SHARED_TOOLCHAIN} !=3D "no" NO_SHARED?=3Dyes +.endif =20 OBJS+=3D ${PROG}-checksum.o DPADD=3D ${LIBBACKEND} ${LIBCPP} ${LIBDECNUMBER} ${LIBIBERTY} diff --git a/gnu/usr.bin/cc/cc1plus/Makefile b/gnu/usr.bin/cc/cc1plus/Makef= ile index 964d20f..0bcbe61 100644 --- a/gnu/usr.bin/cc/cc1plus/Makefile +++ b/gnu/usr.bin/cc/cc1plus/Makefile @@ -1,6 +1,7 @@ # $FreeBSD$ =20 .include "../Makefile.inc" +.include =20 .PATH: ${GCCDIR}/cp ${GCCDIR} =20 @@ -13,8 +14,10 @@ SRCS+=3D main.c cp-lang.c c-opts.c call.c class.c cvt.c = cxx-pretty-print.c \ cp-objcp-common.c cp-gimplify.c tree-mudflap.c =20 BINDIR=3D /usr/libexec -NO_MAN=3D +MAN=3D +.if ${MK_SHARED_TOOLCHAIN} !=3D "no" NO_SHARED?=3Dyes +.endif =20 CFLAGS+=3D -I${GCCDIR}/cp -I. =20 diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk index 55d6ba2..b0acbfd 100644 --- a/share/mk/bsd.own.mk +++ b/share/mk/bsd.own.mk @@ -425,7 +425,8 @@ __DEFAULT_NO_OPTIONS =3D \ ICONV \ IDEA \ LIBCPLUSPLUS \ - OFED + OFED \ + SHARED_TOOLCHAIN =20 # # Default behaviour of some options depends on the architecture. Unfortun= ately diff --git a/tools/build/options/WITH_STATIC_TOOLCHAIN b/tools/build/option= s/WITH_STATIC_TOOLCHAIN new file mode 100644 index 0000000..fa96a9f --- /dev/null +++ b/tools/build/options/WITH_STATIC_TOOLCHAIN @@ -0,0 +1,6 @@ +.\" $FreeBSD$ +Set to build the toolchain binaries static. +The set includes +.Xr cc 1 , +.Xr make 1 +and neccessary utilites like assembler, linker and librarian. \ No newline at end of file diff --git a/usr.bin/ar/Makefile b/usr.bin/ar/Makefile index e373120..72d1244 100644 --- a/usr.bin/ar/Makefile +++ b/usr.bin/ar/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ =20 +.include + PROG=3D ar SRCS=3D ar.c acplex.l acpyacc.y read.c util.c write.c y.tab.h =20 @@ -8,7 +10,9 @@ LDADD=3D -larchive -lelf =20 CFLAGS+=3D-I. -I${.CURDIR} =20 +.if ${MK_SHARED_TOOLCHAIN} !=3D "no" NO_SHARED?=3D yes +.endif LINKS=3D ${BINDIR}/ar ${BINDIR}/ranlib MLINKS=3D ar.1 ranlib.1 =20 diff --git a/usr.bin/make/Makefile b/usr.bin/make/Makefile index 2dc7e58..40243ed 100644 --- a/usr.bin/make/Makefile +++ b/usr.bin/make/Makefile @@ -2,13 +2,17 @@ # $Id: Makefile,v 1.6 1994/06/30 05:33:39 cgd Exp $ # $FreeBSD$ =20 +.include + PROG=3D make CFLAGS+=3D-I${.CURDIR} SRCS=3D arch.c buf.c cond.c dir.c for.c hash.c hash_tables.c job.c \ lst.c main.c make.c parse.c proc.c shell.c str.c suff.c targ.c \ util.c var.c =20 +.if ${MK_SHARED_TOOLCHAIN} !=3D "no" NO_SHARED?=3D YES +.endif =20 # Version has the RYYYYMMDDX format, where R is from RELENG_ CFLAGS+=3D-DMAKE_VERSION=3D\"5201111300\" --I1idRxCkzV0Ng7xp Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (FreeBSD) iEYEARECAAYFAk+ZFvQACgkQC3+MBN1Mb4ioDwCg0FGDd5XQ+B2gBxn5oMqGES3L hWwAmQH5aBsob67rbB2j4fzmC7K9NUo/ =vXCV -----END PGP SIGNATURE----- --I1idRxCkzV0Ng7xp--