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>
