From owner-svn-src-head@FreeBSD.ORG Tue Nov 5 20:57:37 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id DD0D52BB; Tue, 5 Nov 2013 20:57:37 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from tensor.andric.com (tensor.andric.com [IPv6:2001:7b8:3a7:1:2d0:b7ff:fea0:8c26]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 749CF2608; Tue, 5 Nov 2013 20:57:37 +0000 (UTC) Received: from [IPv6:2001:7b8:3a7::432:d81e:b512:b3] (unknown [IPv6:2001:7b8:3a7:0:432:d81e:b512:b3]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id 4BFD55C43; Tue, 5 Nov 2013 21:57:29 +0100 (CET) Content-Type: multipart/signed; boundary="Apple-Mail=_4214C5BC-9A5B-4515-924B-11B1B02FAD47"; protocol="application/pgp-signature"; micalg=pgp-sha1 Mime-Version: 1.0 (Mac OS X Mail 7.0 \(1816\)) Subject: Re: svn commit: r257691 - head/gnu/lib/libgcc From: Dimitry Andric In-Reply-To: <20131105154519.GD65141@onelab2.iet.unipi.it> Date: Tue, 5 Nov 2013 21:57:22 +0100 Message-Id: <1A78125D-160B-4AE6-BA02-072A35DE4F93@FreeBSD.org> References: <201311050737.rA57bZkq059529@svn.freebsd.org> <20131105154519.GD65141@onelab2.iet.unipi.it> To: Luigi Rizzo X-Mailer: Apple Mail (2.1816) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Nov 2013 20:57:37 -0000 --Apple-Mail=_4214C5BC-9A5B-4515-924B-11B1B02FAD47 Content-Type: multipart/mixed; boundary="Apple-Mail=_A0510B65-227D-4604-9321-614C968B6927" --Apple-Mail=_A0510B65-227D-4604-9321-614C968B6927 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii On 05 Nov 2013, at 16:45, Luigi Rizzo wrote: ... > I wonder if it is worthwhile adding to the default rules some > compiler-specific CFLAGS, say CFLAGS_CLANG and CFLAGS_GCC >=20 > (there is only a handful of cases now so maybe it is overkill, > and it harms readability; on the other hand, the Makefiles > already make a lot of assumptions on variable names) >=20 > % find ../head -name Makefile -exec grep -H COMPILER_TYPE \{\} \; > ../head/gnu/lib/libgcc/Makefile:.if ${COMPILER_TYPE} !=3D "clang" || = ${TARGET_CPUARCH} !=3D "arm" > ../head/gnu/lib/libgcc/Makefile:.if ${COMPILER_TYPE} =3D=3D "clang" > ../head/gnu/lib/libsupc++/Makefile:.if ${COMPILER_TYPE} =3D=3D "clang" > ../head/gnu/lib/libstdc++/Makefile:.if ${COMPILER_TYPE} =3D=3D "clang" > ../head/tools/tools/ath/athstats/Makefile:.if (${COMPILER_TYPE} =3D=3D = "clang") > ../head/tools/tools/net80211/wlanstats/Makefile:.if ${COMPILER_TYPE} = =3D=3D "clang" Something like the attached? We already had NO_WERROR.clang and NO_WFORMAT.clang, so I added CFLAGS.clang, CXXFLAGS.clang and their counterparts CFLAGS.gcc and CXXFLAGS.gcc. The only potential problem is flag ordering, since these are added to CFLAGS and CXXFLAGS in bsd.sys.mk, so they might appear earlier on the command line than when you specify them explicitly in individual Makefiles. I'm currently running test builds with clang and gcc, and it seems to run fine until now, but I will probably want to build a full universe before I commit it... -Dimitry --Apple-Mail=_A0510B65-227D-4604-9321-614C968B6927 Content-Disposition: attachment; filename=add-clang-and-gcc-specific-cflags-1.diff Content-Type: application/octet-stream; x-unix-mode=0644; name="add-clang-and-gcc-specific-cflags-1.diff" Content-Transfer-Encoding: 7bit Index: gnu/lib/libgcc/Makefile =================================================================== --- gnu/lib/libgcc/Makefile (revision 257620) +++ gnu/lib/libgcc/Makefile (working copy) @@ -112,9 +112,7 @@ LIB2_DIVMOD_FUNCS = _divdi3 _moddi3 _udivdi3 _umod .if ${TARGET_CPUARCH} == "arm" # from config/arm/t-strongarm-elf CFLAGS+= -Dinhibit_libc -fno-inline -.if ${COMPILER_TYPE} == "clang" -CFLAGS+= -fheinous-gnu-extensions -.endif +CFLAGS.clang+= -fheinous-gnu-extensions LIB1ASMSRC = lib1funcs.asm LIB1ASMFUNCS = _dvmd_tls _bb_init_func Index: gnu/lib/libstdc++/Makefile =================================================================== --- gnu/lib/libstdc++/Makefile (revision 257620) +++ gnu/lib/libstdc++/Makefile (working copy) @@ -637,6 +637,4 @@ CLEANFILES+= ${VERSION_MAP} # Filter out libc++-specific flags, and -std= flags above c++98 or gnu++98. CXXFLAGS:= ${CXXFLAGS:N-stdlib=libc++:N-std=c++[01][13x]:N-std=gnu++[01][13x]} -.if ${COMPILER_TYPE} == "clang" -CXXFLAGS+= -stdlib=libstdc++ -.endif +CXXFLAGS.clang+= -stdlib=libstdc++ Index: gnu/lib/libsupc++/Makefile =================================================================== --- gnu/lib/libsupc++/Makefile (revision 257620) +++ gnu/lib/libsupc++/Makefile (working copy) @@ -57,6 +57,4 @@ VERSION_MAP= ${.CURDIR}/Version.map # Filter out libc++-specific flags, and -std= flags above c++98 or gnu++98. CXXFLAGS:= ${CXXFLAGS:N-stdlib=libc++:N-std=c++[01][13x]:N-std=gnu++[01][13x]} -.if ${COMPILER_TYPE} == "clang" -CXXFLAGS+= -stdlib=libstdc++ -.endif +CXXFLAGS.clang+= -stdlib=libstdc++ Index: share/mk/bsd.sys.mk =================================================================== --- share/mk/bsd.sys.mk (revision 257620) +++ share/mk/bsd.sys.mk (working copy) @@ -114,12 +114,19 @@ CWARNFLAGS+= -Wno-format CWARNFLAGS+= -Wno-unknown-pragmas .endif # IGNORE_PRAGMA -.if ${COMPILER_TYPE} == "clang" && !defined(EARLY_BUILD) +.if !defined(EARLY_BUILD) +.if ${COMPILER_TYPE} == "clang" CLANG_NO_IAS= -no-integrated-as CLANG_OPT_SMALL= -mstack-alignment=8 -mllvm -inline-threshold=3\ -mllvm -enable-load-pre=false -mllvm -simplifycfg-dup-ret CFLAGS+= -Qunused-arguments +CFLAGS+= ${CFLAGS.clang} +CXXFLAGS+= ${CXXFLAGS.clang} +.else # !CLANG +CFLAGS+= ${CFLAGS.gcc} +CXXFLAGS+= ${CXXFLAGS.gcc} .endif # CLANG +.endif # !EARLY_BUILD .if ${MK_SSP} != "no" && ${MACHINE_CPUARCH} != "ia64" && \ ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips" Index: sys/conf/Makefile.arm =================================================================== --- sys/conf/Makefile.arm (revision 257620) +++ sys/conf/Makefile.arm (working copy) @@ -39,21 +39,17 @@ SYSTEM_DEP:= ${SYSTEM_DEP:$S/conf/ldscript.$M=ldsc STRIP_FLAGS = -S .endif -.if ${COMPILER_TYPE} != "clang" -CFLAGS += -mno-thumb-interwork -.endif +CFLAGS.gcc += -mno-thumb-interwork .if empty(DDB_ENABLED) -.if defined(WITHOUT_ARM_EABI) && ${COMPILER_TYPE} != "clang" -CFLAGS += -mno-apcs-frame +.if defined(WITHOUT_ARM_EABI) +CFLAGS.gcc += -mno-apcs-frame .endif .elif !defined(WITHOUT_ARM_EABI) CFLAGS += -funwind-tables -.if ${COMPILER_TYPE} == "clang" # clang requires us to tell it to emit assembly with unwind information -CFLAGS += -mllvm -arm-enable-ehabi +CFLAGS.clang += -mllvm -arm-enable-ehabi .endif -.endif SYSTEM_LD_ = ${LD} -Bdynamic -T ldscript.$M.noheader ${LDFLAGS} \ -warn-common -export-dynamic -dynamic-linker /red/herring -o \ Index: tools/tools/ath/athstats/Makefile =================================================================== --- tools/tools/ath/athstats/Makefile (revision 257620) +++ tools/tools/ath/athstats/Makefile (working copy) @@ -21,9 +21,7 @@ CLEANFILES+= opt_ah.h CFLAGS+=-DATH_SUPPORT_ANI CFLAGS+=-DATH_SUPPORT_TDMA -.if (${COMPILER_TYPE} == "clang") -CFLAGS+=-fbracket-depth=512 -.endif +CFLAGS.clang+= -fbracket-depth=512 opt_ah.h: echo "#define AH_DEBUG 1" > opt_ah.h Index: tools/tools/net80211/wlanstats/Makefile =================================================================== --- tools/tools/net80211/wlanstats/Makefile (revision 257620) +++ tools/tools/net80211/wlanstats/Makefile (working copy) @@ -7,8 +7,6 @@ BINDIR= /usr/local/bin NO_MAN= SRCS= statfoo.c wlanstats.c main.c -.if ${COMPILER_TYPE} == "clang" -CFLAGS+= -fbracket-depth=512 -.endif +CFLAGS.clang+= -fbracket-depth=512 .include Index: usr.bin/mkcsmapper/Makefile.inc =================================================================== --- usr.bin/mkcsmapper/Makefile.inc (revision 257620) +++ usr.bin/mkcsmapper/Makefile.inc (working copy) @@ -6,6 +6,4 @@ SRCS+= lex.l yacc.y CFLAGS+= -I${.CURDIR} -I${.CURDIR}/../mkcsmapper \ -I${.CURDIR}/../../lib/libc/iconv \ -I${.CURDIR}/../../lib/libiconv_modules/mapper_std -.if ${COMPILER_TYPE} == "gcc" -CFLAGS+= --param max-inline-insns-single=64 -.endif +CFLAGS.gcc+= --param max-inline-insns-single=64 --Apple-Mail=_A0510B65-227D-4604-9321-614C968B6927 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii --Apple-Mail=_A0510B65-227D-4604-9321-614C968B6927-- --Apple-Mail=_4214C5BC-9A5B-4515-924B-11B1B02FAD47 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP using GPGMail -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.22 (Darwin) iEYEARECAAYFAlJ5W7cACgkQsF6jCi4glqMljwCg1Z9M3qzP6jfZWiEGEw5uUgEx FJEAoK93CH+G/a6SwjY1IpeAhQuInbMv =eEGs -----END PGP SIGNATURE----- --Apple-Mail=_4214C5BC-9A5B-4515-924B-11B1B02FAD47--