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 >>