Skip site navigation (1)Skip section navigation (2)
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>