Is there any valid reason that a debug or fastdebug build should define PRODUCT and not ASSERT during compiles?

Derek White derek.white at oracle.com
Fri Jan 8 22:07:51 UTC 2016


[This is likely a bug, but thought I'd ask it as a question first].

I'm new to jdk builds on windows, and have spent way more time than I'd 
like to admit on figuring out why my fastdebug builds did not have 
asserts turned on.

The TL;DR; answer is that anyone can build this way on Windows by simply 
executing this in cygwin before doing a make:
 > export release="Derek is having a fun day"
 > bash common/bin/jib.sh make -p windows-x86-debug -- images

(This bug has nothing to do with jib, it's just the actual command line 
I used.)

This results in a build with both /D "DEBUG_LEVEL=\"fastdebug\"" and /D 
"PRODUCT" set, because nmake.exe uppercases all environment variables as 
it imports them (as a convenience to the user).

I'd think that there is no useful purpose to supporting such a 
configuration, and it's a bug to attempt it. I suggest doing an "!ifdef 
RELEASE" check in windows/makefiles/debug.make and 
windows/makefiles/fastdebug.make that either errors or unsets RELEASE 
before including vm.make.

Any thoughts on this? Thanks!

  - Derek





More information about the build-dev mailing list