Mercurial > hg > truffle
diff make/jvmci.make @ 21718:b5bbf03bc17a
Improve makefile generator, exporting files into shared dir (JBS:GRAAL-52)
author | Stefan Anzinger <stefan.anzinger@oracle.com> |
---|---|
date | Thu, 04 Jun 2015 03:21:58 +0200 |
parents | |
children | cbe8cc0f79ce |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/jvmci.make Thu Jun 04 03:21:58 2015 +0200 @@ -0,0 +1,154 @@ +[?1034hVERBOSE= +TARGET=. +JDK= + +WGET=wget +JAVAC=$(JDK)/bin/javac -g -target 1.8 +JAR=$(JDK)/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=. +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),) + SHELL=sh -x +endif + +define process_options = + $(eval providers=$(1)/$(PROVIDERS_INF)) + $(eval services=$(1)/$(SERVICES_INF)) + $(eval options=$(1)/$(OPTIONS_INF)) + test -d $(services) || mkdir -p $(services) + test ! -d $(providers) || (cd $(providers) && for i in $$(ls $(providers)); do c=$$(cat $$i); echo $$i >> $(services)$$c; rm $$i; done) + + # We're building all projects together with one javac call; thus we cannot determine, from which project the generated file is thus we hardcode it for now + $(eval vmconfig=$(1)/hotspot/HotSpotVMConfig.inline.hpp) + $(eval vmconfigDest=$(HS_COMMON_SRC)/../graal/com.oracle.jvmci.hotspot/src_gen/hotspot) + test ! -f $(vmconfig) || (mkdir -p $(vmconfigDest) && cp $(vmconfig) $(vmconfigDest)) +endef + +define extract = + $(eval TMP := $(shell mktemp -d)) + mkdir -p $(2); + cd $(TMP) && $(JAR) xf $(abspath $(1)) && ((test ! -d .$(SERVICES_INF) || cp -r .$(SERVICES_INF) $(abspath $(2))) && (test ! -d .$(OPTIONS_INF) || cp -r .$(OPTIONS_INF) $(abspath $(2)))) + rm -r $(TMP) + cp $(1) $(2) +endef + + +all: default + +export: all + mkdir -p $(EXPORT_DIR) + $(foreach export,$(EXPORTED_FILES),$(call extract,$(export),$(EXPORT_DIR))) +.PHONY: export + + + +EXPORTED_FILES += $(MX_TARGET)/build/truffle.jar + +EXPORTED_FILES += $(MX_TARGET)/build/graal.jar + +EXPORTED_FILES += $(MX_TARGET)/build/graal-truffle.jar + +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 + +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) + +COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_JAR = $(TARGET)/graal/com.oracle.jvmci.options.processor/ap/com.oracle.jvmci.options.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) + +COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_JAR = $(TARGET)/graal/com.oracle.jvmci.hotspotvmconfig.processor/ap/com.oracle.jvmci.hotspotvmconfig.processor.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 = lib/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) +JVMCI_HOTSPOT_SRC += $(shell find graal/com.oracle.jvmci.hotspot/src -type f -name *.java 2> /dev/null) +JVMCI_HOTSPOT_SRC += $(shell find graal/com.oracle.jvmci.hotspot/graal/com.oracle.jvmci.hotspot/src_gen -type f -name *.java 2> /dev/null) + +JVMCI_HOTSPOT_JAR = $(TARGET)/build/jvmci-hotspot.jar + +JVMCI_HOTSPOT_DEP_JARS = $(TARGET)/build/jvmci-service.jar $(TARGET)/build/jvmci-api.jar lib/findbugs-SuppressFBWarnings.jar + +EXPORTED_FILES += $(JVMCI_HOTSPOT_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 lib/findbugs-SuppressFBWarnings.jar + +EXPORTED_FILES += $(JVMCI_API_JAR) + +$(COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_JAR): $(COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_SRC) + $(eval TMP := $(shell mktemp -d)) + $(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) . + rm -r $(TMP) + +$(COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_JAR): $(COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_SRC) + $(eval TMP := $(shell mktemp -d)) + $(JAVAC) -d $(TMP) -bootclasspath $(JDK_BOOTCLASSPATH) $(COM_ORACLE_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) . + rm -r $(TMP) + +$(JVMCI_SERVICE_JAR): $(JVMCI_SERVICE_SRC) $(JVMCI_SERVICE_DEP_JARS) + $(eval TMP := $(shell mktemp -d)) + $(JAVAC) -d $(TMP) -bootclasspath $(JDK_BOOTCLASSPATH) -cp lib/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_HOTSPOT_JAR): $(JVMCI_HOTSPOT_SRC) $(COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_JAR) $(COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_JAR) $(JVMCI_HOTSPOT_DEP_JARS) + $(eval TMP := $(shell mktemp -d)) + $(JAVAC) -d $(TMP) -processorpath $(COM_ORACLE_JVMCI_HOTSPOTVMCONFIG_PROCESSOR_JAR):$(COM_ORACLE_JVMCI_OPTIONS_PROCESSOR_JAR) -bootclasspath $(JDK_BOOTCLASSPATH) -cp $(TARGET)/build/jvmci-service.jar:$(TARGET)/build/jvmci-api.jar:lib/findbugs-SuppressFBWarnings.jar $(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_API_JAR): $(JVMCI_API_SRC) $(JVMCI_API_DEP_JARS) + $(eval TMP := $(shell mktemp -d)) + $(JAVAC) -d $(TMP) -bootclasspath $(JDK_BOOTCLASSPATH) -cp $(TARGET)/build/jvmci-service.jar:lib/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_SERVICE_JAR) $(JVMCI_HOTSPOT_JAR) $(JVMCI_API_JAR) +.PHONY: default