# HG changeset patch # User Stefan Anzinger # Date 1433514499 -7200 # Node ID 6db6070d30b92c97de1983a3bde0620d40ee6abd # Parent 5b9adb645217006e436d534c204b7460d1106d24 Make jvmci.make stable; add header for building the jvmci.make; default to use the jvmci.make file when running mx.build diff -r 5b9adb645217 -r 6db6070d30b9 make/Makefile --- 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 diff -r 5b9adb645217 -r 6db6070d30b9 make/jvmci.make --- 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 diff -r 5b9adb645217 -r 6db6070d30b9 mx/mx_graal.py --- 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='') 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: diff -r 5b9adb645217 -r 6db6070d30b9 mx/mx_graal_makefile.py --- 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) diff -r 5b9adb645217 -r 6db6070d30b9 mxtool/mx.py --- 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) """