Problems with ALT_OUTPUTDIR in debug build
Kelly.Ohair at Sun.COM
Fri Jan 11 08:32:37 PST 2008
Remove the last two MKDIR lines. I don't think they are needed and that might help.
Volker Simonis wrote:
> Ok, I think I can live with ALT_OUTPUTDIR=$(OUTPUTDIR)-$(DEBUG_NAME)
> as well. This at least honours the original user setting of
> ALT_OUTPUTDIR (though with a "-debug" suffix).
> But it will create FOUR outputdirectories, if we say "make debug_build
> ALT_OUTPUTDIR=xxx" of which only "xxx-debug" will be used:
> If we say "make fastdebug_build ALT_OUTPUTDIR=xxx" if will create
> THREE directories, of which only "xxx-fastdebug", will be used:
> I still think this is quite confusing (especially
> "xxx-debug-fastdebug" and "xxx-fastdebug-fastdebug" - what should they
> be good for).
> The main cause for this hassle is the setup rule in the top-level
> Makefile (and the recursive invocation of this makefile for the
> "debug" and "fasdebug" targets) :
> $(MKDIR) -p $(OUTPUTDIR)/j2sdk-image
> $(MKDIR) -p $(ABS_OUTPUTDIR)/j2sdk-image
> $(MKDIR) -p $(OUTPUTDIR)-fastdebug/j2sdk-image
> $(MKDIR) -p $(ABS_OUTPUTDIR)-fastdebug/j2sdk-image
> I still don't understand why it is necessary, because if I remove all
> the MKDIRs, (and with ALT_OUTPUTDIR=$(OUTPUTDIR)-$(DEBUG_NAME) as
> suggested above), at least on my Linux box everything works fine:
> "make debug_build ALT_OUTPUTDIR=xxx" creates two directories and puts
> the output to "xxx-debug":
> "make fastdebug_build ALT_OUTPUTDIR=xxx" creates two directories and
> puts the output to "xxx-fastdebug":
> and "make all ALT_OUTPUTDIR=xxx" creates just "xxx" and puts the output into.
> This seams reasonable to me!
> You wrote that the "MKDIRs" in the setup rules are only needed to
> workaround a windows problem. I didn't built an Windows, but perhaps
> somebody can try if they are still needed (Ted?). And if they will be
> really needed, perhaps we can conditionally enable them on Windows
> only, so we don't clutter the Unix build with usless directories?
> On 1/10/08, Kelly O'Hair <Kelly.Ohair at sun.com> wrote:
>> doesn't make sense to me.
>> The makefiles will define OUTPUTDIR to be equal to $(ALT_OUTPUTDIR) if
>> ALT_OUTPUTDIR is set.
>> The _OUTPUTDIR is the default build location, when ALT_OUTPUTDIR is not set.
>> The original idea here in setting ALT_OUTPUTDIR=$(_OUTPUTDIR)-$(DEBUG_NAME)
>> was to put all the results of a debug build in a completely different
>> directory, which I still think is right.
>> I suspect this needs to be:
>> A long time ago, the debug files were built along side the normal files, and
>> all debug files had that "_g" suffix (e.g. jvm_g.dll, etc.) but we completely
>> got rid of that because it was a nightmare.
>> The debug builds then just became a second pass over the source with the same
>> makefiles but just a different output directory so they didn't mix.
>> I'm afraid using ALT_OUTPUTDIR=$(OUTPUTDIR) will mix up the optimized files
>> with the debug files, which won't be good.
>> Volker Simonis wrote:
>>> I would suggest to fix the top-level Makefile such that
>>> COMMON_DEBUG_FLAGS uses $(OUTPUTDIR) instead of $(_OUTPUTDIR)
>>> and doesn't append "-$(DEBUG_NAME)" to ALT_OUTPUTDIR like so:
>>> COMMON_DEBUG_FLAGS= \
>>> DEBUG_NAME=$(DEBUG_NAME) \
>>> ALT_OUTPUTDIR=$(OUTPUTDIR) \
>>> We will than always end up with two directories like so:
>>> if we used "ALT_OUTPUTDIR=xxx".
>>> "xxx-fastdebug" will always be empty (but needed if I follow your
>>> previous post) so we can remove it after the build. But the user will
>>> get the output in the directory he specified with ALT_OUTPUTDIR and
>>> that seems crucial to me.
>>> What do you think?
>>> On 1/10/08, Kelly O'Hair <Kelly.Ohair at sun.com> wrote:
>>>> Your final paragraph I think is the answer:
>>>> "In my eyes, the cleanest solution would be if ALT_OUTPUTDIR would be honoured
>>>> "as is", as the output directory for everything we built, without anything
>>>> appended to it. So the developer should be free to choose whatever he wants as
>>>> the output directory. And there should be no additional directories created."
>>>> The ongoing problem has been how to make this work in all cases.
>>>> But I'm all for it.
>>>> The generally accepted default for an output directory has been a ./build or
>>>> ./dist directory at the top of the source tree you are building.
>>>> With corba, jaxp, jaxws, langtools, hotspot all being independently buildable,
>>>> what exactly are you recommending to fix this?
>>>> Volker Simonis wrote:
>>>>>>> Any comments if this is the right way to do a debug build?
>>>>>> If it works it's fine. I usually just run 'make debug_build', does that not work?
>>>>> It works, but it has the problems that I detailed in my first mail.
>>>>> Did you also read that one?
>>>>> I may seem that my second mail contained the solution for the first
>>>>> one, but that's not true, its justa partial workaround for the problem
>>>>> described in the first one:
>>>>> Thanks and regards,
More information about the build-dev