How to add options to the javac build in the JDK 8 repo?
Erik Joelsson
erik.joelsson at oracle.com
Wed Aug 14 10:08:21 UTC 2013
Hello Joe,
On 2013-08-13 23:31, Joe Darcy wrote:
> A follow-up, the build incantation to embed a comma seems to be
> "(COMMA)". Therefore, I will upgrade this to a code review request:
>
Actually, you need to use $(COMMA) for it to work. Unfortunately FLAGS
isn't a valid parameter to the SetupJavaCompilation macro and will be
silently ignored. For a list of valid parameters, see
common/makefiles/JavaCompilation.gmk. ADD_JAVAC_FLAGS is probably the
one you are looking for. Using this would result in two -Xlint
parameters on the javac line however.
Each SetupJavaCompilation call refers to a "SETUP" which is a compiler
configuration. GENERATE_JDKBYTECODE is defined in
jdk/makefiles/Setup.gmk and includes an -Xlint line disabling most
warnings. I tried replacing that with your line for
GENERATE_JDKBYTECODE. Unfortunately I had to disable fallthrough, try
and finally to get the build to pass. It looked like only one warning
per kind so should be easy to fix.
Here is the diff:
diff -r 18ce880b5fb4 makefiles/Setup.gmk
--- a/makefiles/Setup.gmk
+++ b/makefiles/Setup.gmk
@@ -25,6 +25,8 @@
DISABLE_WARNINGS:=-Xlint:all,-deprecation,-unchecked,-rawtypes,-cast,-serial,-dep-ann,-static,-fallthrough,-try,-varargs,-empty,-finally
+JAVAC_WARNINGS:=-Xlint:-unchecked,-deprecation,auxiliaryclass,classfile,divzero,empty,-fallthrough,-finally,-try,varargs
-Werror
+
# The generate old bytecode javac setup uses the new compiler to
compile for the
# boot jdk to generate tools that need to be run with the boot jdk.
# Thus we force the target bytecode to 7.
@@ -41,7 +43,7 @@
JVM:=$(JAVA),\
JAVAC:=$(NEW_JAVAC),\
FLAGS:=-bootclasspath $(JDK_OUTPUTDIR)/classes -source 8 -target 8 \
- -encoding ascii -XDignore.symbol.file=true $(DISABLE_WARNINGS) \
+ -encoding ascii -XDignore.symbol.file=true $(JAVAC_WARNINGS) \
$(GENERATE_JDKBYTECODE_EXTRA_FLAGS),\
SERVER_DIR:=$(SJAVAC_SERVER_DIR),\
/Erik
> diff -r a4b0be7341ef makefiles/CompileJavaClasses.gmk
> --- a/makefiles/CompileJavaClasses.gmk Tue Aug 13 19:10:54 2013 +0100
> +++ b/makefiles/CompileJavaClasses.gmk Tue Aug 13 14:24:21 2013 -0700
> @@ -291,6 +291,7 @@
>
> $(eval $(call SetupJavaCompilation,BUILD_JDK,\
> SETUP:=GENERATE_JDKBYTECODE,\
> +
> FLAGS:=-Xlint:-unchecked(COMMA)-deprecation(COMMA)auxiliaryclass(COMMA)classfile(COMMA)divzero(COMMA)empty(COMMA)fallthrough(COMMA)finally(COMMA)try(COMMA)varargs
> -Werror,\
> SRC:=$(JDK_TOPDIR)/src/share/classes \
> $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/classes \
> $(MACOSX_SRC_DIRS) \
>
> Thanks,
>
> -Joe
>
>
> On 08/13/2013 11:09 AM, Joe Darcy wrote:
>> Hello build gurus,
>>
>> In in effort to have javac help us maintain good code quality in the
>> jdk 8 repo, I'd like to turn on selected lint warnings and make them
>> errors. In particular, the set of javac options I want to try out is
>>
>> -Xlint:-unchecked,-deprecation,auxiliaryclass,classfile,divzero,empty,fallthrough,finally,try,varargs
>> -Werror
>>
>> That is, treat as an error any of the auxiliaryclass,classfile, ...
>> lint categories. The jdk repo's code should already be clean on these
>> categories and I'd like to get it clean on other categories before
>> JDK 8 ships.
>>
>> In any case, how does one get these javac options added to the build?
>> I've tried
>>
>> --- a/makefiles/CompileJavaClasses.gmk Tue Aug 13 10:12:03 2013 -0700
>> +++ b/makefiles/CompileJavaClasses.gmk Tue Aug 13 11:07:01 2013 -0700
>> @@ -291,6 +291,7 @@
>>
>> $(eval $(call SetupJavaCompilation,BUILD_JDK,\
>> SETUP:=GENERATE_JDKBYTECODE,\
>> +
>> FLAGS:=-Xlint:-unchecked,-deprecation,auxiliaryclass,classfile,divzero,empty,fallthrough,finally,try,varargs
>> -Werror,\
>> SRC:=$(JDK_TOPDIR)/src/share/classes \
>> $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/classes \
>> $(MACOSX_SRC_DIRS) \
>>
>> (as well as trying ADD_JAVAC_FLAGS instead of FLAGS), but get an
>> error like
>>
>> CompileJavaClasses.gmk:292: *** Internal makefile error: Too many
>> arguments to SetupJavaCompilation, please update
>> JavaCompilation.gmk. Stop.
>>
>> Thanks,
>>
>> -Joe
>
More information about the build-dev
mailing list