Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Feb 2013 14:08:34 -0700
From:      Warner Losh <imp@bsdimp.com>
To:        "Justin T. Gibbs" <gibbs@scsiguy.com>
Cc:        Simon Gerraty <sjg@juniper.net>, Brooks Davis <brooks@freebsd.org>, James Rogers <jamesr@spectralogic.com>, freebsd-arch@freebsd.org
Subject:   Re: bsd.own.mk - just let WITHOUT_* take precedence
Message-ID:  <2D7C1DD3-303A-4ED3-8807-42298EF02F9E@bsdimp.com>
In-Reply-To: <033D35FE-A51C-46B0-9A20-A8E0DAC76B24@scsiguy.com>
References:  <20121007001423.9878F58094@chaos.jnpr.net> <20121008154853.GC23400@lor.one-eyed-alien.net> <20121022193903.GA88336@dragon.NUXI.org> <20121024154508.GA93546@lor.one-eyed-alien.net> <20121025192715.GA31501@dragon.NUXI.org> <033D35FE-A51C-46B0-9A20-A8E0DAC76B24@scsiguy.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On Feb 20, 2013, at 12:51 PM, Justin T. Gibbs wrote:

> On Oct 25, 2012, at 1:27 PM, David O'Brien <obrien@FreeBSD.org> wrote:
>=20
>> On Wed, Oct 24, 2012 at 10:45:08AM -0500, Brooks Davis wrote:
>>>> Note that our Handbook () still has:
>>>>   <!-- XXXTR: WITH_CTF has been reported to leave a user with a
>>>>        broken system when used with buildworld.  Until this is
>> ...
>>>> We really need to make this as easy as possible for users and get =
the
>>>> docs matching reality.
>>>=20
>>> I believe this is largely wrong and outdated.
>>=20
>> Yes I also feel that way.  But didn't want to take that out until =
there
>> is consensus on this build issue.
>>=20
>> --=20
>> -- David  (obrien@FreeBSD.org)
>=20
>=20
> Issues still remain regarding the interaction of WITH_*/WITHOUT_*,
> NO_*, and MK_*.  On -stable, which appears to mostly match the state
> of -head in this regard, we're running with the following changes
> in order to allow WITH_CTF to be specified on the command line of
> a build.  Is this the correct approach for solving this issue?

Both of these changes looks good to my eye, and will solve the =
interaction issues that are somewhat unique to CTF.

Warner


> Thanks,
> Justin
>=20
> Change 657233 by justing@justing_ns1_spectrabsd on 2013/02/15 15:58:19
>=20
> 	Ensure debug (-g) symbols are included in CTF'ed binaries
> 	if requested by the user (e.g. CFLAGS+=3D-g in make.conf).
> =09
> 	share/mk/sys.mk:
> 		sys.mk is included before the parsing of any user
> 		specified Makefile.  For this reason, the user's
> 		specification of CFLAGS, if any, is not visible
> 		when it is processed.  Even for files like make.conf
> 		that are included by sys.mk, CFLAGS is set after it
> 		is consulted in the setup of CTFFLAGS.
>=20
> 		Instead of using a parse time test for the presence
> 		of "-g" in CFLAGS to control debug symbol inclusion
> 		during CTF processing, add "${CFLAGS:M-g}"
> 		unconditionally to CTFFLAGS since this will be
> 		evaluated on demand as make builds targets.
>=20
> 	share/mk/bsd.lib.mk:
> 	share/mk/bsd.prog.mk:
> 		Remove per-build-type manipulation of CTFFLAGS to =
include
> 		-g.  sys.mk's definition does this already.
>=20
> Affected files ...
>=20
> ... //SpectraBSD/stable/share/mk/sys.mk#4 edit
>=20
> Differences ...
>=20
> =3D=3D=3D=3D //SpectraBSD/stable/share/mk/sys.mk#4 (text) =3D=3D=3D=3D
>=20
> @@ -67,18 +67,11 @@
> .endif
>=20
> # C Type Format data is required for DTrace
> -CTFFLAGS	?=3D	-L VERSION
> +CTFFLAGS	?=3D	-L VERSION ${CFLAGS:M-g}
>=20
> CTFCONVERT	?=3D	ctfconvert
> CTFMERGE	?=3D	ctfmerge
> DTRACE		?=3D	dtrace
> -.if defined(CFLAGS) && (${CFLAGS:M-g} !=3D "")
> -CTFFLAGS	+=3D	-g
> -.else
> -# XXX: What to do here? Is removing the CFLAGS part completely ok =
here?
> -# For now comment it out to not compile with -g unconditionally.
> -#CFLAGS		+=3D	-g
> -.endif
>=20
> CXX		?=3D	c++
> CXXFLAGS	?=3D	=
${CFLAGS:N-std=3D*:N-Wnested-externs:N-W*-prototypes:N-Wno-pointer-sign:N-=
Wold-style-definition}
> =3D=3D=3D=3D //SpectraBSD/stable/share/mk/bsd.lib.mk#6 (text) =3D=3D=3D=3D=

>=20
> @@ -35,10 +35,6 @@
>=20
> .if defined(DEBUG_FLAGS)
> CFLAGS+=3D ${DEBUG_FLAGS}
> -
> -.if ${MK_CTF} !=3D "no" && ${DEBUG_FLAGS:M-g} !=3D ""
> -CTFFLAGS+=3D -g
> -.endif
> .endif
>=20
> .if !defined(DEBUG_FLAGS)
>=20
> =3D=3D=3D=3D //SpectraBSD/stable/share/mk/bsd.prog.mk#4 (text) =3D=3D=3D=
=3D
>=20
> @@ -18,10 +18,6 @@
> .if defined(DEBUG_FLAGS)
> CFLAGS+=3D${DEBUG_FLAGS}
> CXXFLAGS+=3D${DEBUG_FLAGS}
> -
> -.if ${MK_CTF} !=3D "no" && ${DEBUG_FLAGS:M-g} !=3D ""
> -CTFFLAGS+=3D -g
> -.endif
> .endif
>=20
> .if defined(CRUNCH_CFLAGS)
> Change 657888 by justing@justing_ns1_spectrabsd on 2013/02/20 08:32:32
>=20
> 	Allow WITH_CTF to be defined from src.conf, make.conf, or
> 	via the command line with equal efficacy.
> =09
> 	share/mk/bsd.own.mk:
> 		Make maintains three classes of global variables:
> 		variables from the environment, variables specified
> 		on the command line, and variables defined in a
> 		sourced Makefile.  Only variables in the last
> 		category can be undefined (via .undef) from within
> 		a Makefile.
> =09
> 		Re-implement NO_* (e.g. NO_CTF) option handling to
> 		not rely on the ability to undefine a variable.  A
> 		new variable __OVERRIDABLE_OPTIONS now contains the
> 		options for which the build system honors NO_{option}
> 		(typically for boot strapping phases).  Embed directly
> 		in the logic converting from WITH_*/WITHOUT_* to MK_*
> 		the test for NO_*.
> =09
> 		Remove warnings emitted when a user specified option
> 		is overridden.  Necessary overrides occur hundreds of
> 		times during bootstrap phases of the build, making these
> 		messages just noise that users will quickly learn to
> 		ignore.
>=20
> Affected files ...
>=20
> ... //SpectraBSD/stable/share/mk/bsd.own.mk#7 edit
>=20
> Differences ...
>=20
> =3D=3D=3D=3D //SpectraBSD/stable/share/mk/bsd.own.mk#7 (text) =3D=3D=3D=3D=

>=20
> @@ -200,25 +200,16 @@
>=20
> #
> # Supported NO_* options (if defined, MK_* will be forced to "no",
> -# regardless of user's setting).
> +# regardless of user's setting).  NO_* options are used to =
temporarily
> +# disable user requested behavior during portions of the build that
> +# cannot support certain options (e.g. during bootstrap phases).
> #
> -.for var in \
> +__OVERRIDABLE_OPTIONS =3D \
>     CTF \
>     COVERAGE \
>     INSTALLLIB \
>     MAN \
>     PROFILE
> -.if defined(NO_${var})
> -.if defined(WITH_${var})
> -.warning unsetting WITH_${var}
> -.undef WITH_${var}
> -.if defined(WITH_${var})
> -.error wtf
> -.endif
> -.endif
> -WITHOUT_${var}=3D
> -.endif
> -.endfor
>=20
> #
> # Compat NO_* options (same as above, except their use is deprecated).
> @@ -474,11 +465,16 @@
> .if defined(MK_${var})
> .error MK_${var} can't be set by a user.
> .endif
> +.if defined(NO_${var}) && !empty(__OVERRIDABLE_OPTIONS:M${var})
> +MK_${var}:=3D	no
> +.else
> .if defined(WITHOUT_${var})
> MK_${var}:=3D	no
> .else
> MK_${var}:=3D	yes
> .endif
> +.endif
> +
> .endfor
> .undef __DEFAULT_YES_OPTIONS
>=20
> @@ -492,13 +488,18 @@
> .if defined(MK_${var})
> .error MK_${var} can't be set by a user.
> .endif
> +.if defined(NO_${var}) && !empty(__OVERRIDABLE_OPTIONS:M${var})
> +MK_${var}:=3D	no
> +.else
> .if defined(WITH_${var})
> MK_${var}:=3D	yes
> .else
> MK_${var}:=3D	no
> .endif
> +.endif
> .endfor
> .undef __DEFAULT_NO_OPTIONS
> +.undef __OVERRIDABLE_OPTIONS
>=20
> #
> # Force some options off if their dependencies are off.
>=20
>=20
> _______________________________________________
> freebsd-arch@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arch
> To unsubscribe, send any mail to =
"freebsd-arch-unsubscribe@freebsd.org"




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2D7C1DD3-303A-4ED3-8807-42298EF02F9E>