Supporting custom-spec.gmk
David Holmes
david.holmes at oracle.com
Thu Oct 3 03:59:35 UTC 2013
Hi Jeremy,
On 3/10/2013 12:58 PM, Jeremy Manson wrote:
> Hi David,
>
> I only sort-of understand what you are saying. My workflow is to create
> a build/ directory, run configure from the JDK directory in that build/
> directory, and then run make. I also want some custom options in my spec.
>
> With the way it is currently set up, I would have to remember to copy
> the custom-spec in by hand after I run configure. That's awful.
>
> Now, I could write a script to do both of these steps, but surely that's
> what configure is for in the first place?
Right ... so ... the way we do this is to have custom files at various
points in the configure process - actually before the configure process
as we generate a custom generated-configure.sh as well. You would have a
separate custom-config directory that would contain your
custom-spec.gmk.in and your custom-hook.m4 if you need that (actually
this must exist to trigger the next part). Then you run autogen.sh
setting CUSTOM_CONFIG_DIR to that directory so that it produces both the
regular and custom generated-configure.sh file. (These are both checked
in files in our case because CUSTOM_CONFIG_DIR is itself in a repo.)
Now when you run configure you have to tell it where the custom files
are via CUSTOM_CONFIG_DIR again.
Does that make more sense now?
David
-----
> My thought was that, because you prescribe it to be a custom-spec.gmk in
> the build/ directory, suggesting what it should start as is not so
> terrible. Plus, it allows you to use configuration variables, which is
> nice. It is also worth pointing out that the inclusion of my patch
> doesn't actually mandate anything - if there is no custom-spec.gmk.in
> <http://custom-spec.gmk.in>, then you can create it exactly as you are
> creating it now. This is just an additional option.
>
> OTOH, perhaps it seems too prescriptive. Could you imagine instead
> having, say, a configure command line option to tell the system where to
> find (and copy in) this file?
>
> (Please be gentle with me, as I'm an autoconf newb, and I recognize that
> this might be something very, very standard that I just don't know about.)
>
> Jeremy
>
>
> On Wed, Oct 2, 2013 at 7:20 PM, David Holmes <david.holmes at oracle.com
> <mailto:david.holmes at oracle.com>> wrote:
>
> Hi Jeremy,
>
>
> On 3/10/2013 10:20 AM, Jeremy Manson wrote:
>
> I note that the bottom of spec.gmk.in <http://spec.gmk.in> has
> this nugget:
>
> # Include the custom-spec.gmk file if it exists
> -include $(dir @SPEC@)/custom-spec.gmk
>
> There is no support in the configuration file to make sure that
> this file
> exists in the build directory. Any support for something like the
> following patch?
>
>
> The whole point here is that there may or may not be a
> custom-spec.gmk present, but if there is then we include it. We
> don't mandate how that file gets created so the existence, or not,
> of a custom-spec.gmk.in <http://custom-spec.gmk.in> doesn't tell you
> anything. Plus you also have to know where to look for the .in file
> - which need not be AUTOCONF_DIR.
>
> David
> -----
>
>
>
> diff -r 0cc21882d2f6 common/autoconf/basics.m4
> --- a/common/autoconf/basics.m4 Thu Sep 26 10:43:04 2013 -0700
> +++ b/common/autoconf/basics.m4 Wed Oct 02 17:19:33 2013 -0700
> @@ -457,6 +457,10 @@
>
> AC_CONFIG_HEADERS([$OUTPUT___ROOT/config.h:$AUTOCONF_DIR/co__nfig.h.in
> <http://config.h.in>])
> # The spec.gmk file contains all variables for the make system.
>
> AC_CONFIG_FILES([$OUTPUT_ROOT/__spec.gmk:$AUTOCONF_DIR/spec.__gmk.in
> <http://spec.gmk.in>])
> +# The custom-spec.gmk file is an optional file that contains
> user-specific
> config
> +if test -e $AUTOCONF_DIR/custom-spec.gmk.__in
> <http://custom-spec.gmk.in>; then
> + AC_CONFIG_FILES([$OUTPUT_ROOT/__custom-spec.gmk:$AUTOCONF_DIR/
> custom-spec.gmk.in <http://custom-spec.gmk.in>])
> +fi
> # The hotspot-spec.gmk file contains legacy variables for the
> hotspot make
> system.
> AC_CONFIG_FILES([$OUTPUT_ROOT/__hotspot-spec.gmk:$AUTOCONF___DIR/
> hotspot-spec.gmk.in <http://hotspot-spec.gmk.in>])
> # The bootcycle-spec.gmk file contains support for boot cycle
> builds.
>
>
More information about the build-dev
mailing list