This is the mail archive of the ecos-devel@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Verbose modes for eCos makefiles


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]