On Jan 17, 2012, at 7:17 PM, David Holmes wrote:

> On 18/01/2012 7:07 AM, Kelly O'Hair wrote:
>> Generally, I have no objection to this change.
>> 
>> But instead of setting it to NO_SUCH_PATH, I would not set it at all, and 
>> avoid the $(shell) to see if it
>> exists completely.  Just don't set CUSTOM_MAKE_DIR if it does not exist.
>> Then you don't need the HAS_CUSTOM_MAKE, it can just be ifdef CUSTOM_MAKE_DIR
> 
> But I/we want the default setting to occur in the build files and not require 
> that it be set externally. My final suggestion gets rid of the 
> HAS_CUSTOM_MAKE and the shell usage. Incorporating your suggestion it 
> simplifies to:
> 
> ifneq ($(OPENJDK),true)
>  CUSTOM_MAKE_DIR = $(BUILDDIR)/closed
> endif

Or something like:

# Custom makefile additions
ifneq ($(OPENJDK),true)
  CUSTOM_MAKE_DIR = $(BUILDDIR)/closed
  # This directory should exist if OPENJDK is not "true"
  ifeq ($(shell if [ ! -d $(CUSTOM_MAKE_DIR) ]; then echo "missing"; 
fi),missing)
    x:=$(error "ERROR: Not OPENJDK, and missing $(CUSTOM_MAKE_DIR)")
  endif
endif

> 
> in Defs.gmk and then:
> 
> -include $(CUSTOM_MAKE_DIR)/<path-to-file.gmk>

And:

# Custom makefile additions
ifdef CUSTOM_MAKE_DIR
  include $(CUSTOM_MAKE_DIR)/<path-to-file.gmk>
endif

> 
> as needed. Though I may get an error with CUSTOM_MAKE_DIR being undefined in 
> which case I'll need to declare it for OpenJDK builds.

Undefined is the same as being defined as empty in terms of expansion $(var)

> 
>> Not sure I like the word CUSTOM, but that's just a name debate.
> 
> It customizes the build logic. I preferred it to the "alt" name we use for 
> hotspot as here it isn't an alternative but an addition. Anyway just a name 
> game.

Not a big deal, but kind of liked the piggyback idea. ;^)

-kto

> 
> Thanks,
> David
> 
>> Maybe ADDON or MODDING or MODS or oo oo PIGGYBACK? ;^)
>> http://3.bp.blogspot.com/-cHeD4qJSB44/TbMtSsAiY4I/AAAAAAAAA1c/gctQfVffu_o/s1600/PiggyBack.jpg
>> 
>> -kto
>> 
>> On Jan 15, 2012, at 9:01 PM, David Holmes wrote:
>> 
>>> Presently the build system contains some files, and directives involving 
>>> those files, that supports the building of the Java SE Embedded product. 
>>> What I would like to do is remove direct support for this and replace it 
>>> with a more general mechanism that allows for custom make files to be 
>>> included from an arbitrary location - which then allows for the removal of 
>>> the embedded specific files.
>>> 
>>> Initially I've modeled this on some other conditional mechanisms by 
>>> defining the default location for non-OpenJDK builds, checking its 
>>> existence and then using that as a guard for the individual files.
>>> 
>>> http://cr.openjdk.java.net/~dholmes/custom-make/webrev/
>>> 
>>> ! ifneq ($(OPENJDK),true)
>>> !   CUSTOM_MAKE_DIR_REL=closed
>>> ! else
>>> !   CUSTOM_MAKE_DIR_REL=NO_SUCH_PATH
>>> ! endif
>>> ! CUSTOM_MAKE_DIR=$(BUILDDIR)/$(CUSTOM_MAKE_DIR_REL)
>>> 
>>> + # Use this variable to guard inclusion of the custom files
>>> + HAS_CUSTOM_MAKE := $(shell if [ -d $(CUSTOM_MAKE_DIR) ]; then echo 1; 
>>> else echo 0; fi)
>>> 
>>> ...
>>> 
>>> + ifeq ($(HAS_CUSTOM_MAKE),1)
>>> +   include $(CUSTOM_MAKE_DIR)/Defs.gmk
>>> + endif
>>> 
>>> Initially there are only two hooks for these custom files:
>>> 
>>> 1. At the end common/Defs.gmk (as it gets included by all the Makefiles)
>>> 2. In the top-level JDK Makefile, including a custom Release.gmk
>>> 
>>> Naturally these map to the existing uses of the *-embedded.gmk files.
>>> 
>>> It then occurred to me that if someone wanted to add an additional hook 
>>> somewhere else, that it might be best to check for the existence of the 
>>> actual file rather than a root directory for all such files. That led me to 
>>> consider a function custom_include(<filename>) to hide the existence logic. 
>>> But I wasn't sure if a function could contain an include directive and upon 
>>> checking on that I discovered a much simpler approach: the -include 
>>> directive. This is like the include directive but does not trigger an error 
>>> if the file does not exist. So we would simply have this in Defs.gmk:
>>> 
>>> ifneq ($(OPENJDK),true)
>>>   CUSTOM_MAKE_DIR_REL=closed
>>> else
>>>   CUSTOM_MAKE_DIR_REL=NO_SUCH_PATH
>>> endif
>>> CUSTOM_MAKE_DIR=$(BUILDDIR)/$(CUSTOM_MAKE_DIR_REL)
>>> 
>>> and then
>>> 
>>> -include $(CUSTOM_MAKE_DIR)/<path-to-file.gmk>
>>> 
>>> wherever we needed it (again initially only the two locations I mentioned).
>>> 
>>> I'd like to hear people's opinions on this.
>>> 
>>> Thanks,
>>> David
>> 

Reply via email to