Date: Tue, 5 Nov 2013 21:57:22 +0100 From: Dimitry Andric <dim@FreeBSD.org> To: Luigi Rizzo <rizzo@iet.unipi.it> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r257691 - head/gnu/lib/libgcc Message-ID: <1A78125D-160B-4AE6-BA02-072A35DE4F93@FreeBSD.org> In-Reply-To: <20131105154519.GD65141@onelab2.iet.unipi.it> References: <201311050737.rA57bZkq059529@svn.freebsd.org> <20131105154519.GD65141@onelab2.iet.unipi.it>
next in thread | previous in thread | raw e-mail | index | archive | help
--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 <rizzo@iet.unipi.it> 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 <bsd.prog.mk> 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--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1A78125D-160B-4AE6-BA02-072A35DE4F93>