* Verbose modes for eCos makefiles @ 2011-08-13 13:17 Sergei Gavrikov 2011-08-21 20:41 ` John Dallaway 0 siblings, 1 reply; 3+ messages in thread From: Sergei Gavrikov @ 2011-08-13 13:17 UTC (permalink / raw) To: eCos Developers [-- Attachment #1: Type: TEXT/PLAIN, Size: 3517 bytes --] Hi I've written a few small patches to add a bit of sugar for eCos build process when ``ecosconfig`` and ``make`` are used from command line. Example: % ecosconfig new pid % ecosconfig tree % make GEN mlt_arm_pid_ram.ldi GEN mlt_arm_pid_rom.ldi GEN mlt_arm_pid_ram.h GEN mlt_arm_pid_rom.h headers finished GEN ecos.mak GEN arm.inc GEN heapgeninc.tcl GEN heaps.cxx CC hal_misc.c ... CXX errno.cxx AR libtarget.a CC vectors.S GEN target.ld build finished It was added a few checks for "V" variable (a verbose level) in eCos ``rules.mak`` file and the level of the verbosity is set in a top most eCos ``makefile`` (which is auto-generated). The level of verbosity can be set from a command line as ``make V=x`` where "x" can be set to 0, 1, or 2) V=0 - silent build (it is equal to a call ``make --silent``) V=1 - "semi-silence", when ``make`` outputs a kind of work is doing now V=2 - full output (it is equal to "old" call of ``make``) Default level is 1 (semi-silence). IMHO, it is right value and it is no need to type ``make V=1`` every time. Pros (V=1): - He/she will be know what is running. - He/she will be know/learn an order the build process. - He/she will see any warnings and possible they will sent us the patches to fix it :-) % make tests ... CC strtoul.c LINK strtoul CC memchr.c /home/sg/repo/ecos-hg/packages/language/c/libc/string/current/tests/memchr.c: In function âmainâ: /home/sg/repo/ecos-hg/packages/language/c/libc/string/current/tests/memchr.c:107: warning: assignment discards qualifiers from pointer target type LINK memchr ... Cons: - It is needed to re-built ``ecosconfig`` to get it working. NOTE: Only a few lines were added to only one source host/tools/configtool/common/common/build.cxx - Very few people work with command-line and they need to know about V=x (V=2). - eCos ConfigTool (may be "semi-silence" is odd for it, not tested). - ? About ``make`` and ``make_objects`` rules in eCos config files (CDL). Fortunately, it is not required to fix the lines which call any compiler or generator. I did not use a function to wrap the calls and only added 1 "echo-line" by a condition per a "generator", e.g.: --- a/packages/hal/synth/arch/current/cdl/hal_synth.cdl +++ b/packages/hal/synth/arch/current/cdl/hal_synth.cdl @@ -65,6 +65,7 @@ cdl_package CYGPKG_HAL_SYNTH { make { <PREFIX>/lib/target.ld: <PACKAGE>/src/synth.ld + $(if $(filter 1,$(V)),@echo " GEN $(notdir $@)") $(CC) -E -P -Wp,-MD,target.tmp -DEXTRAS=1 -xc $(INCLUDE_PATH) $(ACTUAL_CFLAGS) -o $@ $< @echo $@ ": \\" > $(notdir $@).deps @tail -n +2 target.tmp >> $(notdir $@).deps NOTE: May be you offer/know a better 1-liner. I've "invented" it, because it was not possible to use make's "ifeq/ifneq" there. Thus, it seems to me we will not break eCos build process when we will fix the eCos config files. FYI: I already have the patches for arm/synth/i386/memalloc eCos config files. Also a check for V-variable was added to eCos examples/Makefile. Well, if you do not see any pitfalls in such a modernism I can send the patches to eCos Bugzilla, otherwise, please forget it. I'm sorry for this long post (in a fact, I could write, I would add a few checks for "V" variable to eCos makefiles. Do you agree with it? Sergei ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Verbose modes for eCos makefiles 2011-08-13 13:17 Verbose modes for eCos makefiles Sergei Gavrikov @ 2011-08-21 20:41 ` John Dallaway 2011-08-22 8:47 ` Sergei Gavrikov 0 siblings, 1 reply; 3+ messages in thread From: John Dallaway @ 2011-08-21 20:41 UTC (permalink / raw) To: Sergei Gavrikov; +Cc: eCos Developers Hi Sergei Sergei Gavrikov wrote: > It was added a few checks for "V" variable (a verbose level) in eCos > ``rules.mak`` file and the level of the verbosity is set in a top most > eCos ``makefile`` (which is auto-generated). The level of verbosity can > be set from a command line as ``make V=x`` where "x" can be set to 0, 1, > or 2) > > V=0 - silent build (it is equal to a call ``make --silent``) > V=1 - "semi-silence", when ``make`` outputs a kind of work is > doing now > V=2 - full output (it is equal to "old" call of ``make``) > > Default level is 1 (semi-silence). IMHO, it is right value and it is no > need to type ``make V=1`` every time. > > Pros (V=1): > > - He/she will be know what is running. > - He/she will be know/learn an order the build process. > - He/she will see any warnings and possible they will sent us the > patches to fix it :-) > > % make tests > ... > CC strtoul.c > LINK strtoul > CC memchr.c > /home/sg/repo/ecos-hg/packages/language/c/libc/string/current/tests/memchr.c: In function âmainâ: > /home/sg/repo/ecos-hg/packages/language/c/libc/string/current/tests/memchr.c:107: warning: assignment discards qualifiers from pointer target type > LINK memchr > ... I can appreciate that the "semi-silent" output you are proposing makes warning messages stand out more clearly, but this appears to be the only benefit. The existing output already indicates what is running and the order of the build process. Have I missed something? > Cons: > > - It is needed to re-built ``ecosconfig`` to get it working. > > NOTE: Only a few lines were added to only one source > host/tools/configtool/common/common/build.cxx > > - Very few people work with command-line and they need to know about > V=x (V=2). > - eCos ConfigTool (may be "semi-silence" is odd for it, not tested). I would also be concerned about the processing overhead on Cygwin hosts and the possiblility of unexpected output when using multiple eCos repositories or older eCos host tools. Is your proposal based on another build system you have used? John Dallaway eCos maintainer http://www.dallaway.org.uk/john ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Verbose modes for eCos makefiles 2011-08-21 20:41 ` John Dallaway @ 2011-08-22 8:47 ` Sergei Gavrikov 0 siblings, 0 replies; 3+ messages in thread From: Sergei Gavrikov @ 2011-08-22 8:47 UTC (permalink / raw) To: John Dallaway; +Cc: eCos Developers [-- Attachment #1: Type: TEXT/PLAIN, Size: 4435 bytes --] On Sun, 21 Aug 2011, John Dallaway wrote: > Hi Sergei Hi John, > Sergei Gavrikov wrote: > > > It was added a few checks for "V" variable (a verbose level) in eCos > > ``rules.mak`` file and the level of the verbosity is set in a top most > > eCos ``makefile`` (which is auto-generated). The level of verbosity can > > be set from a command line as ``make V=x`` where "x" can be set to 0, 1, > > or 2) > > > > V=0 - silent build (it is equal to a call ``make --silent``) > > V=1 - "semi-silence", when ``make`` outputs a kind of work is > > doing now > > V=2 - full output (it is equal to "old" call of ``make``) > > > > Default level is 1 (semi-silence). IMHO, it is right value and it is no > > need to type ``make V=1`` every time. > > > > Pros (V=1): > > > > - He/she will be know what is running. > > - He/she will be know/learn an order the build process. > > - He/she will see any warnings and possible they will sent us the > > patches to fix it :-) > > > > % make tests > > ... > > CC strtoul.c > > LINK strtoul > > CC memchr.c > > /home/sg/repo/ecos-hg/packages/language/c/libc/string/current/tests/memchr.c: In function âmainâ: > > /home/sg/repo/ecos-hg/packages/language/c/libc/string/current/tests/memchr.c:107: warning: assignment discards qualifiers from pointer target type > > LINK memchr > > ... > > I can appreciate that the "semi-silent" output you are proposing makes > warning messages stand out more clearly, but this appears to be the only > benefit. The existing output already indicates what is running and the > order of the build process. Have I missed something? You are right, it is only benefit (it only added a pretty printing for V=1 choice). Besides I've changed my view since that my post about default verbose level and now I think that nothing has not to been changed from default behaviors, thus, default make outputs for ``make`` and ``make -s`` must not been touched. So, I corrected my patch already (set V=2 by default). > > Cons: > > > > - It is needed to re-built ``ecosconfig`` to get it working. > > > > NOTE: Only a few lines were added to only one source > > host/tools/configtool/common/common/build.cxx > > > > - Very few people work with command-line and they need to know about > > V=x (V=2). > > - eCos ConfigTool (may be "semi-silence" is odd for it, not tested). > > I would also be concerned about the processing overhead on Cygwin hosts > and the possiblility of unexpected output when using multiple eCos > repositories or older eCos host tools. Ah! You are right again. I missed the main thing (compatibility with old tools and repositories (== rules.mak)), however, when I did set value of V to 2 by default, nothing won't change if we will just type "make"). Of course, the checks of "V" variable in every build rule can waste a bit of time, but, output of the long lines in a terminal also takes a time (but, I did not check time penalty). > Is your proposal based on another build system you have used? No. I used GNU make. In my patch the configtool's build.cxx "included" an 1-line *not forced* inclusion to an auto-generated eCos top-level makefile: -include make.mak and "generated" that ``make.mak'' which is # eCos makefile # This is a generated file - do not edit export V := $(if $(findstring s,$(MAKEFLAGS)),0,2) ifneq (,$(or $(filter 0,$(V)),$(filter 1,$(V)))) .SILENT: endif On top of eCos ``rules.mak'' I added # NOTE: default level of verbosity is 2 (full output). V ?= $(if $(findstring s,$(MAKEFLAGS)),0,2) ifneq (,$(or $(filter 0,$(V)),$(filter 1,$(V)))) .SILENT: endif and fixed (added the checks) there for every build rule, e.g. %.o.d : %.c ... ifeq ($(V),1) @echo " CC $(notdir $<)" endif etc. This is almost all. But, I must confess that full patch requires to add many small, however, trivial fixes to eCos config files which uses "make" and "make_object" rules: % grep -rl --include=*.cdl 'make.*{' $ECOS_REPOSITORY 155 This fact and your "Cons." has beaten my small "benefit" :-) and I'm totally agreed with your concern now. So, John, I want to say thank you for your time on thinking about and I must be more accurate with "feature" requests which would break things. Sergei > John Dallaway > eCos maintainer > http://www.dallaway.org.uk/john > ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-08-22 8:47 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2011-08-13 13:17 Verbose modes for eCos makefiles Sergei Gavrikov 2011-08-21 20:41 ` John Dallaway 2011-08-22 8:47 ` Sergei Gavrikov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).