changeset 21790:6db6070d30b9

Make jvmci.make stable; add header for building the jvmci.make; default to use the jvmci.make file when running mx.build
author Stefan Anzinger <stefan.anzinger@oracle.com>
date Fri, 05 Jun 2015 16:28:19 +0200
parents 5b9adb645217
children cd36556e1b78
files make/Makefile make/jvmci.make mx/mx_graal.py mx/mx_graal_makefile.py mxtool/mx.py
diffstat 5 files changed, 147 insertions(+), 127 deletions(-) [+]
line wrap: on
line diff
--- a/make/Makefile	Mon Jun 08 20:24:51 2015 +0200
+++ b/make/Makefile	Fri Jun 05 16:28:19 2015 +0200
@@ -325,7 +325,7 @@
 	$(PYTHON) -u $(GAMMADIR)/mxtool/mx.py build --no-native --export-dir $(SHARED_DIR)
 else
 buildshared:
-	cd .. && $(MAKE) -f make/jvmci.make TARGET=build/make MX_TARGET=. HS_COMMON_SRC=$(HS_COMMON_SRC) JDK=$(ABS_BOOTDIR) EXPORT_DIR=$(SHARED_DIR) export
+	cd .. && $(MAKE) -f make/jvmci.make TARGET=build/make MX_TARGET=. HS_COMMON_SRC=$(HS_COMMON_SRC) ABS_BOOTDIR=$(ABS_BOOTDIR) EXPORT_DIR=$(SHARED_DIR) export
 endif
 
 
--- a/make/jvmci.make	Mon Jun 08 20:24:51 2015 +0200
+++ b/make/jvmci.make	Fri Jun 05 16:28:19 2015 +0200
@@ -1,24 +1,27 @@
+# This Makefile is generated automatically, do not edit
+# This file was build with command: mx.sh makefile -o make/jvmci.make
+
 VERBOSE=
 TARGET=.
-JDK=
+# Bootstrap JDK to be used (for javac and jar)
+ABS_BOOTDIR=
 
-WGET=wget
-JAVAC=$(JDK)/bin/javac -g -target 1.8
-JAR=$(JDK)/bin/jar
+JAVAC=$(ABS_BOOTDIR)/bin/javac -g -target 1.8
+JAR=$(ABS_BOOTDIR)/bin/jar
 
 EXPORT_DIR=export
 EXPORTED_FILES_ADDITIONAL=$(TARGET)/options $(TARGET)/services
 HS_COMMON_SRC=.
-# where all other stuff built by mx (graal.jar) resides
-MX_TARGET=.
+
+# Directories, where the generated property-files reside within the JAR files
 PROVIDERS_INF=/META-INF/providers/
 SERVICES_INF=/META-INF/services/
 OPTIONS_INF=/META-INF/options/
 
-ifeq ($(JDK),)
-    $(error Variable JDK must be set to a JDK installation.)
-    endif
-    ifneq ($(VERBOSE),)
+ifeq ($(ABS_BOOTDIR),)
+    $(error Variable ABS_BOOTDIR must be set to a JDK installation.)
+endif
+ifneq ($(VERBOSE),)
     SHELL=sh -x
 endif
 
@@ -53,24 +56,45 @@
 
 
 
-JDK_BOOTCLASSPATH = $(JDK)/jre/lib/resources.jar:$(JDK)/jre/lib/rt.jar:$(JDK)/jre/lib/jsse.jar:$(JDK)/jre/lib/jce.jar:$(JDK)/jre/lib/charsets.jar:$(JDK)/jre/lib/jfr.jar
+JDK_BOOTCLASSPATH = $(ABS_BOOTDIR)/jre/lib/resources.jar:$(ABS_BOOTDIR)/jre/lib/rt.jar:$(ABS_BOOTDIR)/jre/lib/jsse.jar:$(ABS_BOOTDIR)/jre/lib/jce.jar:$(ABS_BOOTDIR)/jre/lib/charsets.jar:$(ABS_BOOTDIR)/jre/lib/jfr.jar
+
+JVMCI_HOTSPOTVMCONFIG_PROCESSOR_SRC = $(shell find graal/com.oracle.jvmci.hotspotvmconfig/src -type f -name *.java 2> /dev/null)
+JVMCI_HOTSPOTVMCONFIG_PROCESSOR_SRC += $(shell find graal/com.oracle.jvmci.common/src -type f -name *.java 2> /dev/null)
+JVMCI_HOTSPOTVMCONFIG_PROCESSOR_SRC += $(shell find graal/com.oracle.jvmci.hotspotvmconfig.processor/src -type f -name *.java 2> /dev/null)
+
+JVMCI_HOTSPOTVMCONFIG_PROCESSOR_JAR = $(TARGET)/graal/com.oracle.jvmci.hotspotvmconfig.processor/ap/com.oracle.jvmci.hotspotvmconfig.processor.jar
 
-COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_SRC = $(shell find graal/com.oracle.jvmci.hotspotvmconfig/src -type f -name *.java 2> /dev/null)
-COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_SRC += $(shell find graal/com.oracle.jvmci.common/src -type f -name *.java 2> /dev/null)
-COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_SRC += $(shell find graal/com.oracle.jvmci.hotspotvmconfig.processor/src -type f -name *.java 2> /dev/null)
+JVMCI_OPTIONS_PROCESSOR_SRC = $(shell find graal/com.oracle.jvmci.service/src -type f -name *.java 2> /dev/null)
+JVMCI_OPTIONS_PROCESSOR_SRC += $(shell find graal/com.oracle.jvmci.options/src -type f -name *.java 2> /dev/null)
+JVMCI_OPTIONS_PROCESSOR_SRC += $(shell find graal/com.oracle.jvmci.options.processor/src -type f -name *.java 2> /dev/null)
 
-COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_JAR = $(TARGET)/graal/com.oracle.jvmci.hotspotvmconfig.processor/ap/com.oracle.jvmci.hotspotvmconfig.processor.jar
+JVMCI_OPTIONS_PROCESSOR_JAR = $(TARGET)/graal/com.oracle.jvmci.options.processor/ap/com.oracle.jvmci.options.processor.jar
+
+JVMCI_SERVICE_PROCESSOR_SRC = $(shell find graal/com.oracle.jvmci.service/src -type f -name *.java 2> /dev/null)
+JVMCI_SERVICE_PROCESSOR_SRC += $(shell find graal/com.oracle.jvmci.service.processor/src -type f -name *.java 2> /dev/null)
+
+JVMCI_SERVICE_PROCESSOR_JAR = $(TARGET)/graal/com.oracle.jvmci.service.processor/ap/com.oracle.jvmci.service.processor.jar
 
-COM_ORACLE_JVMCI_SERVICE_PROCESSOR_SRC = $(shell find graal/com.oracle.jvmci.service/src -type f -name *.java 2> /dev/null)
-COM_ORACLE_JVMCI_SERVICE_PROCESSOR_SRC += $(shell find graal/com.oracle.jvmci.service.processor/src -type f -name *.java 2> /dev/null)
+JVMCI_API_SRC = $(shell find graal/com.oracle.jvmci.meta/src -type f -name *.java 2> /dev/null)
+JVMCI_API_SRC += $(shell find graal/com.oracle.jvmci.code/src -type f -name *.java 2> /dev/null)
+JVMCI_API_SRC += $(shell find graal/com.oracle.jvmci.runtime/src -type f -name *.java 2> /dev/null)
+JVMCI_API_SRC += $(shell find graal/com.oracle.jvmci.options/src -type f -name *.java 2> /dev/null)
+JVMCI_API_SRC += $(shell find graal/com.oracle.jvmci.common/src -type f -name *.java 2> /dev/null)
+JVMCI_API_SRC += $(shell find graal/com.oracle.jvmci.debug/src -type f -name *.java 2> /dev/null)
 
-COM_ORACLE_JVMCI_SERVICE_PROCESSOR_JAR = $(TARGET)/graal/com.oracle.jvmci.service.processor/ap/com.oracle.jvmci.service.processor.jar
+JVMCI_API_JAR = $(TARGET)/build/jvmci-api.jar
 
-COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_SRC = $(shell find graal/com.oracle.jvmci.service/src -type f -name *.java 2> /dev/null)
-COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_SRC += $(shell find graal/com.oracle.jvmci.options/src -type f -name *.java 2> /dev/null)
-COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_SRC += $(shell find graal/com.oracle.jvmci.options.processor/src -type f -name *.java 2> /dev/null)
+JVMCI_API_DEP_JARS = $(TARGET)/build/jvmci-service.jar graal/findbugs-SuppressFBWarnings.jar
+
+EXPORTED_FILES += $(JVMCI_API_JAR)
+
+JVMCI_SERVICE_SRC = $(shell find graal/com.oracle.jvmci.service/src -type f -name *.java 2> /dev/null)
 
-COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_JAR = $(TARGET)/graal/com.oracle.jvmci.options.processor/ap/com.oracle.jvmci.options.processor.jar
+JVMCI_SERVICE_JAR = $(TARGET)/build/jvmci-service.jar
+
+JVMCI_SERVICE_DEP_JARS = graal/findbugs-SuppressFBWarnings.jar
+
+EXPORTED_FILES += $(JVMCI_SERVICE_JAR)
 
 JVMCI_HOTSPOT_SRC = $(shell find graal/com.oracle.jvmci.hotspotvmconfig/src -type f -name *.java 2> /dev/null)
 JVMCI_HOTSPOT_SRC += $(shell find graal/com.oracle.jvmci.hotspotvmconfig/graal/com.oracle.jvmci.hotspotvmconfig/src_gen -type f -name *.java 2> /dev/null)
@@ -89,84 +113,63 @@
 
 JVMCI_HOTSPOT_JAR = $(TARGET)/build/jvmci-hotspot.jar
 
-JVMCI_HOTSPOT_DEP_JARS = $(TARGET)/build/jvmci-service.jar $(TARGET)/build/jvmci-api.jar graal/findbugs-SuppressFBWarnings.jar
+JVMCI_HOTSPOT_DEP_JARS = $(TARGET)/build/jvmci-api.jar $(TARGET)/build/jvmci-service.jar graal/findbugs-SuppressFBWarnings.jar
 
 EXPORTED_FILES += $(JVMCI_HOTSPOT_JAR)
 
-JVMCI_SERVICE_SRC = $(shell find graal/com.oracle.jvmci.service/src -type f -name *.java 2> /dev/null)
-
-JVMCI_SERVICE_JAR = $(TARGET)/build/jvmci-service.jar
-
-JVMCI_SERVICE_DEP_JARS = graal/findbugs-SuppressFBWarnings.jar
-
-EXPORTED_FILES += $(JVMCI_SERVICE_JAR)
-
-JVMCI_API_SRC = $(shell find graal/com.oracle.jvmci.meta/src -type f -name *.java 2> /dev/null)
-JVMCI_API_SRC += $(shell find graal/com.oracle.jvmci.code/src -type f -name *.java 2> /dev/null)
-JVMCI_API_SRC += $(shell find graal/com.oracle.jvmci.runtime/src -type f -name *.java 2> /dev/null)
-JVMCI_API_SRC += $(shell find graal/com.oracle.jvmci.options/src -type f -name *.java 2> /dev/null)
-JVMCI_API_SRC += $(shell find graal/com.oracle.jvmci.common/src -type f -name *.java 2> /dev/null)
-JVMCI_API_SRC += $(shell find graal/com.oracle.jvmci.debug/src -type f -name *.java 2> /dev/null)
-
-JVMCI_API_JAR = $(TARGET)/build/jvmci-api.jar
-
-JVMCI_API_DEP_JARS = $(TARGET)/build/jvmci-service.jar graal/findbugs-SuppressFBWarnings.jar
-
-EXPORTED_FILES += $(JVMCI_API_JAR)
-
-$(COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_JAR): $(COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_SRC)  
-	$(eval TMP := $(shell mktemp -d COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_XXXXX))
-	$(JAVAC) -d $(TMP)  -bootclasspath $(JDK_BOOTCLASSPATH)  $(COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_SRC)
+$(JVMCI_HOTSPOTVMCONFIG_PROCESSOR_JAR): $(JVMCI_HOTSPOTVMCONFIG_PROCESSOR_SRC)  
+	$(eval TMP := $(shell mktemp -d JVMCI_HOTSPOTVMCONFIG_PROCESSOR_XXXXX))
+	$(JAVAC) -d $(TMP)  -bootclasspath $(JDK_BOOTCLASSPATH)  $(JVMCI_HOTSPOTVMCONFIG_PROCESSOR_SRC)
 	cp -r graal/com.oracle.jvmci.hotspotvmconfig.processor/src/META-INF $(TMP)
 	$(call process_options,$(TMP),False)
-	mkdir -p $$(dirname $(COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_JAR))
-	$(JAR) cf $(COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_JAR) -C $(TMP) .
+	mkdir -p $$(dirname $(JVMCI_HOTSPOTVMCONFIG_PROCESSOR_JAR))
+	$(JAR) cf $(JVMCI_HOTSPOTVMCONFIG_PROCESSOR_JAR) -C $(TMP) .
 	rm -r $(TMP)
 
-$(COM_ORACLE_JVMCI_SERVICE_PROCESSOR_JAR): $(COM_ORACLE_JVMCI_SERVICE_PROCESSOR_SRC)  
-	$(eval TMP := $(shell mktemp -d COM_ORACLE_JVMCI_SERVICE_PROCESSOR_XXXXX))
-	$(JAVAC) -d $(TMP)  -bootclasspath $(JDK_BOOTCLASSPATH)  $(COM_ORACLE_JVMCI_SERVICE_PROCESSOR_SRC)
+$(JVMCI_OPTIONS_PROCESSOR_JAR): $(JVMCI_OPTIONS_PROCESSOR_SRC)  
+	$(eval TMP := $(shell mktemp -d JVMCI_OPTIONS_PROCESSOR_XXXXX))
+	$(JAVAC) -d $(TMP)  -bootclasspath $(JDK_BOOTCLASSPATH)  $(JVMCI_OPTIONS_PROCESSOR_SRC)
+	cp -r graal/com.oracle.jvmci.options.processor/src/META-INF $(TMP)
+	$(call process_options,$(TMP),False)
+	mkdir -p $$(dirname $(JVMCI_OPTIONS_PROCESSOR_JAR))
+	$(JAR) cf $(JVMCI_OPTIONS_PROCESSOR_JAR) -C $(TMP) .
+	rm -r $(TMP)
+
+$(JVMCI_SERVICE_PROCESSOR_JAR): $(JVMCI_SERVICE_PROCESSOR_SRC)  
+	$(eval TMP := $(shell mktemp -d JVMCI_SERVICE_PROCESSOR_XXXXX))
+	$(JAVAC) -d $(TMP)  -bootclasspath $(JDK_BOOTCLASSPATH)  $(JVMCI_SERVICE_PROCESSOR_SRC)
 	cp -r graal/com.oracle.jvmci.service.processor/src/META-INF $(TMP)
 	$(call process_options,$(TMP),False)
-	mkdir -p $$(dirname $(COM_ORACLE_JVMCI_SERVICE_PROCESSOR_JAR))
-	$(JAR) cf $(COM_ORACLE_JVMCI_SERVICE_PROCESSOR_JAR) -C $(TMP) .
+	mkdir -p $$(dirname $(JVMCI_SERVICE_PROCESSOR_JAR))
+	$(JAR) cf $(JVMCI_SERVICE_PROCESSOR_JAR) -C $(TMP) .
 	rm -r $(TMP)
 
-$(COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_JAR): $(COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_SRC)  
-	$(eval TMP := $(shell mktemp -d COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_XXXXX))
-	$(JAVAC) -d $(TMP)  -bootclasspath $(JDK_BOOTCLASSPATH)  $(COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_SRC)
-	cp -r graal/com.oracle.jvmci.options.processor/src/META-INF $(TMP)
-	$(call process_options,$(TMP),False)
-	mkdir -p $$(dirname $(COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_JAR))
-	$(JAR) cf $(COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_JAR) -C $(TMP) .
+$(JVMCI_API_JAR): $(JVMCI_API_SRC)  $(JVMCI_API_DEP_JARS)
+	$(eval TMP := $(shell mktemp -d JVMCI_API_XXXXX))
+	$(JAVAC) -d $(TMP)  -bootclasspath $(JDK_BOOTCLASSPATH) -cp $(shell echo $(JVMCI_API_DEP_JARS) | tr ' ' ':') $(JVMCI_API_SRC)
+	
+	$(call process_options,$(TMP),True)
+	mkdir -p $$(dirname $(JVMCI_API_JAR))
+	$(JAR) cf $(JVMCI_API_JAR) -C $(TMP) .
 	rm -r $(TMP)
 
-$(JVMCI_HOTSPOT_JAR): $(JVMCI_HOTSPOT_SRC) $(COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_JAR) $(COM_ORACLE_JVMCI_SERVICE_PROCESSOR_JAR) $(COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_JAR) $(JVMCI_HOTSPOT_DEP_JARS)
+$(JVMCI_SERVICE_JAR): $(JVMCI_SERVICE_SRC)  $(JVMCI_SERVICE_DEP_JARS)
+	$(eval TMP := $(shell mktemp -d JVMCI_SERVICE_XXXXX))
+	$(JAVAC) -d $(TMP)  -bootclasspath $(JDK_BOOTCLASSPATH) -cp $(shell echo $(JVMCI_SERVICE_DEP_JARS) | tr ' ' ':') $(JVMCI_SERVICE_SRC)
+	
+	$(call process_options,$(TMP),True)
+	mkdir -p $$(dirname $(JVMCI_SERVICE_JAR))
+	$(JAR) cf $(JVMCI_SERVICE_JAR) -C $(TMP) .
+	rm -r $(TMP)
+
+$(JVMCI_HOTSPOT_JAR): $(JVMCI_HOTSPOT_SRC) $(JVMCI_HOTSPOTVMCONFIG_PROCESSOR_JAR) $(JVMCI_OPTIONS_PROCESSOR_JAR) $(JVMCI_SERVICE_PROCESSOR_JAR) $(JVMCI_HOTSPOT_DEP_JARS)
 	$(eval TMP := $(shell mktemp -d JVMCI_HOTSPOT_XXXXX))
-	$(JAVAC) -d $(TMP) -processorpath $(COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_JAR):$(COM_ORACLE_JVMCI_SERVICE_PROCESSOR_JAR):$(COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_JAR) -bootclasspath $(JDK_BOOTCLASSPATH) -cp $(TARGET)/build/jvmci-service.jar:$(TARGET)/build/jvmci-api.jar:graal/findbugs-SuppressFBWarnings.jar $(JVMCI_HOTSPOT_SRC)
+	$(JAVAC) -d $(TMP) -processorpath $(JVMCI_HOTSPOTVMCONFIG_PROCESSOR_JAR):$(JVMCI_OPTIONS_PROCESSOR_JAR):$(JVMCI_SERVICE_PROCESSOR_JAR) -bootclasspath $(JDK_BOOTCLASSPATH) -cp $(shell echo $(JVMCI_HOTSPOT_DEP_JARS) | tr ' ' ':') $(JVMCI_HOTSPOT_SRC)
 	
 	$(call process_options,$(TMP),True)
 	mkdir -p $$(dirname $(JVMCI_HOTSPOT_JAR))
 	$(JAR) cf $(JVMCI_HOTSPOT_JAR) -C $(TMP) .
 	rm -r $(TMP)
 
-$(JVMCI_SERVICE_JAR): $(JVMCI_SERVICE_SRC)  $(JVMCI_SERVICE_DEP_JARS)
-	$(eval TMP := $(shell mktemp -d JVMCI_SERVICE_XXXXX))
-	$(JAVAC) -d $(TMP)  -bootclasspath $(JDK_BOOTCLASSPATH) -cp graal/findbugs-SuppressFBWarnings.jar $(JVMCI_SERVICE_SRC)
-	
-	$(call process_options,$(TMP),True)
-	mkdir -p $$(dirname $(JVMCI_SERVICE_JAR))
-	$(JAR) cf $(JVMCI_SERVICE_JAR) -C $(TMP) .
-	rm -r $(TMP)
-
-$(JVMCI_API_JAR): $(JVMCI_API_SRC)  $(JVMCI_API_DEP_JARS)
-	$(eval TMP := $(shell mktemp -d JVMCI_API_XXXXX))
-	$(JAVAC) -d $(TMP)  -bootclasspath $(JDK_BOOTCLASSPATH) -cp $(TARGET)/build/jvmci-service.jar:graal/findbugs-SuppressFBWarnings.jar $(JVMCI_API_SRC)
-	
-	$(call process_options,$(TMP),True)
-	mkdir -p $$(dirname $(JVMCI_API_JAR))
-	$(JAR) cf $(JVMCI_API_JAR) -C $(TMP) .
-	rm -r $(TMP)
-
-default: $(JVMCI_HOTSPOT_JAR) $(JVMCI_SERVICE_JAR) $(JVMCI_API_JAR)
+default: $(JVMCI_API_JAR) $(JVMCI_SERVICE_JAR) $(JVMCI_HOTSPOT_JAR)
 .PHONY: default
\ No newline at end of file
--- a/mx/mx_graal.py	Mon Jun 08 20:24:51 2015 +0200
+++ b/mx/mx_graal.py	Fri Jun 05 16:28:19 2015 +0200
@@ -839,7 +839,7 @@
     The global '--vm' and '--vmbuild' options select which VM type and build target to build."""
 
     # Turn all jdk distributions into non HotSpot; this is only necessary as long we support building/exporting JVMCI with make and mx
-    if not ("-m" in args or "--use-make" in args):
+    if "--avoid-make" not in args:
         for jdkDist in _jdkDeployedDists:
             if jdkDist.partOfHotSpot:
                 jdkDist.partOfHotSpot = False
@@ -862,7 +862,7 @@
     parser = AP()
     parser.add_argument('--export-dir', help='directory to which JVMCI and Graal jars and jvmci.options will be copied', metavar='<path>')
     parser.add_argument('-D', action='append', help='set a HotSpot build variable (run \'mx buildvars\' to list variables)', metavar='name=value')
-    parser.add_argument('-m', '--use-make', action='store_true', help='Use the jvmci.make file to build and export JVMCI')
+    parser.add_argument('--avoid-make', action='store_true', help='Do not use jvmci.make file to build and export JVMCI')
     opts2 = mx.build(['--source', '1.7'] + args, parser=parser)
     assert len(opts2.remainder) == 0
 
@@ -893,7 +893,7 @@
             shutil.copy(dist.path, opts2.export_dir)
 
         services, optionsFiles = _extractJVMCIFiles(jdkJars, jvmciJars, join(opts2.export_dir, 'services'), join(opts2.export_dir, 'options'))
-        if not opts2.use_make:
+        if opts2.avoid_make:
             for service in services:
                 defLine = 'EXPORT_LIST += $(EXPORT_JRE_LIB_JVMCI_SERVICES_DIR)/' + service
                 if defLine not in defs:
@@ -1054,7 +1054,7 @@
                         setMakeVar('STRIP_POLICY', 'no_strip')
             # This removes the need to unzip the *.diz files before debugging in gdb
             setMakeVar('ZIP_DEBUGINFO_FILES', '0', env=env)
-            if opts2.use_make:
+            if not opts2.avoid_make:
                 setMakeVar('JVMCI_USE_MAKE', '1')
             # Clear this variable as having it set can cause very confusing build problems
             env.pop('CLASSPATH', None)
@@ -1066,7 +1066,7 @@
             envPrefix = ' '.join([key + '=' + env[key] for key in env.iterkeys() if not os.environ.has_key(key) or env[key] != os.environ[key]])
             if len(envPrefix):
                 mx.log('env ' + envPrefix + ' \\')
-            makeTarget = "all_" + build + buildSuffix if opts2.use_make else build + buildSuffix
+            makeTarget = "all_" + build + buildSuffix if not opts2.avoid_make else build + buildSuffix
             runCmd.append(makeTarget)
 
             if not mx._opts.verbose:
--- a/mx/mx_graal_makefile.py	Mon Jun 08 20:24:51 2015 +0200
+++ b/mx/mx_graal_makefile.py	Fri Jun 05 16:28:19 2015 +0200
@@ -48,17 +48,18 @@
     parser = ArgumentParser(prog='mx makefile')
     parser.add_argument('-o', action='store', dest='output', help='Write contents to this file.')
     parser.add_argument('selectedDists', help="Selected distribution names which are going to be built with make.", nargs=REMAINDER)
-    args = parser.parse_args(args)
+    opts = parser.parse_args(args)
 
-    if args.selectedDists == None or len(args.selectedDists) == 0:
-        args.selectedDists = [d.name for d in mx_graal._jdkDeployedDists if d.partOfHotSpot]
+    if opts.selectedDists == None or len(opts.selectedDists) == 0:
+        opts.selectedDists = [d.name for d in mx_graal._jdkDeployedDists if d.partOfHotSpot]
     mf = Makefile()
-    if do_build_makefile(mf, args.selectedDists):
+    commandline = " ".join(["mx.sh", "makefile"] + args)
+    if do_build_makefile(mf, opts.selectedDists, commandline):
         contents = mf.generate()
-        if args.output == None:
+        if opts.output == None:
             print contents
         else:
-            with open(args.output, "w") as f:
+            with open(opts.output, "w") as f:
                 f.write(contents)
 
 
@@ -72,13 +73,21 @@
 def get_jdk_deployed_dists():
     return [d.name for d in mx_graal._jdkDeployedDists]
 
+def update_list(li, elements):
+    for e in elements:
+        if e not in li:
+            li.append(e)
+
 def make_dist_rule(dist, mf, bootClassPath=None):
     def path_dist_relative(p):
         return os.path.relpath(p, dist.suite.dir)
+    def short_dist_name(name):
+        return name.replace("COM_ORACLE_", "")
+    shortName = short_dist_name(dist.name)
     jdkDeployedDists = get_jdk_deployed_dists()
     jarPath = path_dist_relative(dist.path)
-    sourcesVariableName = dist.name + "_SRC"
-    depJarVariableName = dist.name + "_DEP_JARS"
+    sourcesVariableName = shortName + "_SRC"
+    depJarVariableName = shortName + "_DEP_JARS"
     sources = []
     resources = []
     sortedDeps = dist.sorted_deps(True, transitive=False, includeAnnotationProcessors=True)
@@ -86,17 +95,17 @@
     targetPathPrefix = "$(TARGET)" + os.path.sep
     libraryDeps = [path_dist_relative(l.get_path(False)) for l in filter_projects(sortedDeps, mx.Library)]
 
-    annotationProcessorDeps = set()
+    annotationProcessorDeps = []
     distDeps = dist.get_dist_deps(includeSelf=False, transitive=True)
-    distDepProjects = set()
+    distDepProjects = []
     for d in distDeps:
-        distDepProjects.update(d.sorted_deps(includeLibs=False, transitive=True))
+        update_list(distDepProjects, d.sorted_deps(includeLibs=False, transitive=True))
 
     classPath = [targetPathPrefix + path_dist_relative(d.path) for d in distDeps] + libraryDeps \
         + [path_dist_relative(mx.dependency(name).path) for name in dist.excludedDependencies]
     for p in projects:
         if p.definedAnnotationProcessors != None and p.definedAnnotationProcessorsDist != dist:
-            annotationProcessorDeps.add(p)
+            update_list(annotationProcessorDeps, [p])
     for p in projects:
         projectDir = path_dist_relative(p.dir)
         if p not in distDepProjects and p not in annotationProcessorDeps:
@@ -116,12 +125,12 @@
     apDistVariableNames = []
     for p in annotationProcessorDeps:
         apPaths.append(path_dist_relative(p.definedAnnotationProcessorsDist.path))
-        name = p.definedAnnotationProcessorsDist.name
+        name = short_dist_name(p.definedAnnotationProcessorsDist.name)
         apDistNames.append(name)
         apDistVariableNames.append("$(" + name + "_JAR)")
     shouldExport = dist.name in jdkDeployedDists
     props = {
-           "name": dist.name,
+           "name": shortName,
            "jarPath": targetPathPrefix + jarPath,
            "depends": "",
            "depJarsVariableAccess": "$(" + depJarVariableName + ")" if len(classPath) > 0 else "",
@@ -131,7 +140,7 @@
            "annotationProcessors": " ".join(apDistVariableNames),
            "cpAnnotationProcessors": "-processorpath " + ":".join(apDistVariableNames) if len(apDistVariableNames) > 0 else "",
            "bootCp": ("-bootclasspath " + bootClassPath) if bootClassPath != None else "",
-           "cpDeps": ("-cp " + ":".join(classPath)) if len(classPath) > 0 else "",
+           "cpDeps": ("-cp $(shell echo $(" + depJarVariableName + ") | tr ' ' ':')") if len(classPath) > 0 else "",
            "jarDeps": " ".join(classPath),
            "copyResources": "cp -r {} $(TMP)".format(" ".join(resources)) if len(resources) > 0 else "",
            "targetPathPrefix": targetPathPrefix,
@@ -154,33 +163,36 @@
 
 
 
-def do_build_makefile(mf, selectedDists):
+def do_build_makefile(mf, selectedDists, commandline):
     java = mx.java()
     bootClassPath = java.bootclasspath()
-    bootClassPath = bootClassPath.replace(java.jdk, "$(JDK)")
+    bootClassPath = bootClassPath.replace(java.jdk, "$(ABS_BOOTDIR)")
     jdkBootClassPathVariableName = "JDK_BOOTCLASSPATH"
 
-    mf.add_definition("""VERBOSE=
-TARGET=.
-JDK=
+    mf.add_definition("""# This Makefile is generated automatically, do not edit
+# This file was build with command: """ + commandline + """
 
-WGET=wget
-JAVAC=$(JDK)/bin/javac -g -target """ + str(java.javaCompliance) + """
-JAR=$(JDK)/bin/jar
+VERBOSE=
+TARGET=.
+# Bootstrap JDK to be used (for javac and jar)
+ABS_BOOTDIR=
+
+JAVAC=$(ABS_BOOTDIR)/bin/javac -g -target """ + str(java.javaCompliance) + """
+JAR=$(ABS_BOOTDIR)/bin/jar
 
 EXPORT_DIR=export
 EXPORTED_FILES_ADDITIONAL=$(TARGET)/options $(TARGET)/services
 HS_COMMON_SRC=.
-# where all other stuff built by mx (graal.jar) resides
-MX_TARGET=.
+
+# Directories, where the generated property-files reside within the JAR files
 PROVIDERS_INF=/META-INF/providers/
 SERVICES_INF=/META-INF/services/
 OPTIONS_INF=/META-INF/options/
 
-ifeq ($(JDK),)
-    $(error Variable JDK must be set to a JDK installation.)
-    endif
-    ifneq ($(VERBOSE),)
+ifeq ($(ABS_BOOTDIR),)
+    $(error Variable ABS_BOOTDIR must be set to a JDK installation.)
+endif
+ifneq ($(VERBOSE),)
     SHELL=sh -x
 endif
 
@@ -216,20 +228,20 @@
 
 """)
     s = mx.suite("graal")
-    dists = set()
-    ap = set()
-    projects = set()
+    dists = []
+    ap = []
+    projects = []
     for d in s.dists:
         if d.name in selectedDists:
-            dists.update(d.get_dist_deps(True, True))
-            projects.update(d.sorted_deps(includeLibs=False, transitive=True))
+            update_list(dists, d.get_dist_deps(True, True))
+            update_list(projects, d.sorted_deps(includeLibs=False, transitive=True))
 
     for p in projects:
         deps = p.all_deps([], False, includeSelf=True, includeJreLibs=False, includeAnnotationProcessors=True)
         for d in deps:
             if d.definedAnnotationProcessorsDist != None:
                 apd = d.definedAnnotationProcessorsDist
-                ap.add(apd)
+                update_list(ap, [apd])
 
     if len(dists) > 0:
         mf.add_definition(jdkBootClassPathVariableName + " = " + bootClassPath)
--- a/mxtool/mx.py	Mon Jun 08 20:24:51 2015 +0200
+++ b/mxtool/mx.py	Fri Jun 05 16:28:19 2015 +0200
@@ -144,13 +144,18 @@
         self.update_listeners.add(listener)
 
     def get_dist_deps(self, includeSelf=True, transitive=False):
-        deps = set()
+        deps = []
         if includeSelf:
-            deps.add(self)
-        deps.update([distribution(name) for name in self.distDependencies])
+            deps.append(self)
+        for name in self.distDependencies:
+            dist = distribution(name)
+            if dist not in deps:
+                deps.append(dist)
         if transitive:
             for depName in self.distDependencies:
-                deps.update(distribution(depName).get_dist_deps(False, False))
+                for recDep in distribution(depName).get_dist_deps(False, True):
+                    if recDep not in deps:
+                        deps.append(recDep)
         return list(deps)
 
     """