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