[En-Nut-Discussion] Make hides compiler command lines

Ulrich Prinz ulrich.prinz at googlemail.com
Tue Jul 3 22:36:10 CEST 2012


Hi Harald,

the intention of that hiding was simple: Overview.
With compiling the nut/os itself it is not such a problem as compiler
settings are harsh and every warning will lead to an abort.

But if you use this setup in a project you will not get very far at the
beginning where specifications vary and hardware is not finalized. So
you accept warnings.
But with the old full blown compiler output you will never see your
warnings again later, and so you forget to fix all the warnings.

The modification of the Makefiles only suppresses output to 1 (stdout)
not 2 (stderr) so any error or warning is printed and as this is
disturbing the 'picture' even on a make -j16 (on a big xeon machine) you
see that there was something you have to check.

The silencing was only a side effect of finding all the points where a 
new compiler has to be added in the Makefiles. I remember that I 
collected all the tools in one file and defined them there.
I replaced all bla-blub-gcc by $(GCC) and all rm by $(RM), bla-blub-ld 
by $(LD) and so on.

So silencing was only a simple thing
GCC=$(CROSS_COMPILE)gcc
is printing every call and a @ in front
GCC=@$(CROSS_COMPILE)gcc
avoids that printing something.

Only AR needed a different switch to be more silent.

The way to suppress the messages by compiling inside (q)nutconf was not 
an option as the 16 nut/os based projects part of one big project and 
are build from scripts (including the option to build the all at once)

Without wanting to start a discussion if linux way is always the best 
one, I originally thought about using CROSS_COMPILE as a master variable 
for my mechanism.
So setting, exporting or passing this variable with nut/os Makefiles 
should define the toolchain. But that collides with the settings on our 
build machine that compiles for an ARM linux box too. So I used TRGT as 
a variable for target system.

The original m3n configuration can be build by calling make 
TRGT=arm-eCross- clean all install as well as any project derived can be 
build with make TRGT=arm-eCross- clean all program.

Btw. I added "make burn" as a second 'programming' target. It simply 
programs without recompiling anything, what is helpful if you just need 
to test your things on a series of targets.

I have still no time to check what of all the features made it into trunk.

Best regards
Ulrich


Am 03.07.2012 11:57, schrieb Harald Kipp:
> Hi all,
>
> While the list shows increased activity, I'd like ask something I had
> been fighting with for some time now.
>
> In the course of CM3 merging, some Makefiles are now hiding the
> compiler command line. This is a bit inconvenient when experimenting
> with different compile options and you want to make sure, that
> everything was setup correctly. Furthermore, when users are posting
> command line reports copied from the Configurator's message window or
> the command line, you cannot see, how the compiler options looked
> like.
>
> So I'm wondering, what could have been the reason to hide this
> information.
>
> Regards,
>
> Harald
>
> _______________________________________________
> http://lists.egnite.de/mailman/listinfo/en-nut-discussion
>




More information about the En-Nut-Discussion mailing list