Verbose modes for eCos makefiles

Sergei Gavrikov <[email protected]>
Newsgroups gmane.os.ecos.devel
Message-ID <alpine.DEB.2.00.1108131612030.17695@vostro>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.