diff -r bcb9f5ea5761 -r 3676b99f33cf make/common/JavaCompilation.gmk --- a/make/common/JavaCompilation.gmk Tue Oct 27 13:48:21 2015 +0100 +++ b/make/common/JavaCompilation.gmk Tue Oct 27 17:51:36 2015 +0100 @@ -59,6 +59,7 @@ # FLAGS:=Flags to be supplied to javac # SERVER_DIR:=Use a javac server (-XDserver) and store the server related files here # SERVER_JVM:=Use this JVM for the server. Defaults to the JVM above. +# DISABLE_SJAVAC:=Set to true if this setup does not support sjavac SetupJavaCompiler = $(NamedParamsMacroTemplate) define SetupJavaCompilerBody # The port file contains the tcp/ip on which the server listens @@ -439,6 +440,7 @@ endif $1_SJAVAC_PORTFILE := $$($$($1_SETUP)_SJAVAC_PORTFILE) $1_SERVER_JVM := $$($$($1_SETUP)_SERVER_JVM) + $1_DISABLE_SJAVAC := $$($$($1_SETUP)_DISABLE_SJAVAC) # Handle addons and overrides. $1_SRC:=$$(call ADD_SRCS,$$($1_SRC)) @@ -552,6 +554,15 @@ # and remove .java at the end. $1_REWRITE_INTO_CLASSES:=$$(foreach i,$$($1_SRC),-e 's|$$i/||g') -e 's|/|.|g' -e 's|.java$$$$||g' + # Create SJAVAC variable from JAVAC variable. Expects $1_JAVAC to be + # "bootclasspathprepend -cp .../javac.jar com.sun.tools.javac.Main" + # and javac is simply replaced with sjavac. + $1_SJAVAC:=$$(subst com.sun.tools.javac.Main,com.sun.tools.sjavac.Main,$$($1_JAVAC)) + + # Set the $1_REMOTE to spawn a background javac server. + $1_REMOTE:=--server:portfile=$$($1_SJAVAC_PORTFILE),id=$1,sjavac=$$(subst \ + $$(SPACE),%20,$$(subst $$(COMMA),%2C,$$(strip $$($1_SERVER_JVM) $$($1_SJAVAC)))) + ifeq ($$($1_DISABLE_SJAVAC)x$$(ENABLE_SJAVAC),xyes) ifneq (,$$($1_HEADERS)) $1_HEADERS_ARG := -h $$($1_HEADERS) @@ -560,15 +571,6 @@ # Using sjavac to compile. $1_COMPILE_TARGETS := $$($1_BIN)/_the.$1_batch - # Create SJAVAC variable form JAVAC variable. Expects $1_JAVAC to be - # "bootclasspathprepend -cp .../javac.jar com.sun.tools.javac.Main" - # and javac is simply replaced with sjavac. - $1_SJAVAC:=$$(subst com.sun.tools.javac.Main,com.sun.tools.sjavac.Main,$$($1_JAVAC)) - - # Set the $1_REMOTE to spawn a background javac server. - $1_REMOTE:=--server:portfile=$$($1_SJAVAC_PORTFILE),id=$1,sjavac=$$(subst \ - $$(SPACE),%20,$$(subst $$(COMMA),%2C,$$(strip $$($1_SERVER_JVM) $$($1_SJAVAC)))) - $1_VARDEPS := $$($1_JVM) $$($1_SJAVAC) $$($1_SJAVAC_ARGS) $$($1_FLAGS) \ $$($1_HEADERS_ARG) $$($1_BIN) $$($1_EXCLUDES) $$($1_INCLUDES) \ $$($1_EXCLUDE_FILES) $$($1_INCLUDE_FILES) @@ -632,13 +634,19 @@ $$($1_EXCLUDE_FILES) $$($1_INCLUDE_FILES) $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, $$($1_BIN)/_the.$1.vardeps) + ifeq ($$($1_DISABLE_SJAVAC)x$(ENABLE_JAVAC_SERVER), xyes) + $1_JAVAC_CMD := $$($1_SJAVAC) $$($1_REMOTE) + else + $1_JAVAC_CMD := $$($1_JAVAC) + endif + # When not using sjavac, pass along all sources to javac using an @file. $$($1_BIN)/_the.$1_batch: $$($1_SRCS) $$($1_DEPENDS) $$($1_VARDEPS_FILE) $(MKDIR) -p $$(@D) $$(eval $$(call ListPathsSafely,$1_SRCS, $$($1_BIN)/_the.$1_batch.tmp)) $(ECHO) Compiling `$(WC) $$($1_BIN)/_the.$1_batch.tmp | $(TR) -s ' ' | $(CUT) -f 2 -d ' '` files for $1 $(call LogFailures, $$($1_BIN)/_the.$$($1_SAFE_NAME)_batch.log, $$($1_SAFE_NAME), \ - $$($1_JVM) $$($1_JAVAC) $$($1_FLAGS) \ + $$($1_JVM) $$($1_JAVAC_CMD) $$($1_FLAGS) \ -implicit:none \ -d $$($1_BIN) $$($1_HEADERS_ARG) @$$($1_BIN)/_the.$1_batch.tmp) && \ $(MV) $$($1_BIN)/_the.$1_batch.tmp $$($1_BIN)/_the.$1_batch