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