lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GOP-PROP 5: build system output (probable decision)


From: Ian Hulin
Subject: Re: GOP-PROP 5: build system output (probable decision)
Date: Sun, 24 Jul 2011 12:33:13 +0100
User-agent: Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20110624 Thunderbird/5.0

Hi Trevor,

On 23/07/11 15:07, Trevor Daniels wrote:
> 
> Jan Warchoł wrote Saturday, July 23, 2011 1:39 PM
> 
> 
>> 2011/7/21 Trevor Daniels <address@hidden>:
>>>
>>> If the compile and link succeed, you usually ctrl-C out of make
>>> as soon as linking has finished so you can get on with testing.
>>> So you need to see the relevant messages on the console
>>> to determine this.
>>
>> I'm not sure if i understand your workflow, but I think a far better
>> solution than watching console output is to use a script.  I attach a
>> scipt that i use for this, it saves me some time.
> 
> Not really.  If you have changed only one or two C++ routines
> the compile and link part of make take only a few seconds.
> There's no point in letting it go on to check all the doc files.
> 
> So really no time is wasted watching the console output.  In
> my case there are usually compile errors to fix most of the time,
> so it takes even less time :)
> 
> Actually Graham's suggestion to have a compile and link only
> target in make was a good one.  That would save having to
> ctrl-C out.
> 
There *is* a make exe "generic" target, but it doesn't do anything as if
all the binary executable targets are up-to-date. (see below).

1+ for Graham's proposal, provided his bin target acts as a synonym for
exe, and builds all the stuff in out/bin.

*However*, as a general developer note, the fact that you can build the
lilypond executable and run it up successfully with no args is not a
full sanity check, owing to the way the main C++ code runs up Guile  via
lily.scm.

It's actually done as a two-pass job.

We first get Guile to load up lily.scm and all the scm files it loads to
build the (lily) Guile module.  This is done by calling scm_boot_guile
with a callback to routine main_with_guile.  The callback routine then
does some housekeeping and initialisation to get Scheme behave the way
Lily needs to¸ and at the end of that main_with_guile then calls the
scheme entry-point lilypond-main to start compiling the users .ly files etc.

Unfortunately the -v or --version processing in routine parse-argv
optimises this so that the image exits with a success code before it
even touches the Guile API.

Anyway, I still think a working make exe and/or make bin is worth having
for people having to change any C++ code.

Graham, what are the time estimates for adding a top-level make target
for developer who's a build-system virgin?

Cheers,

Ian

(Output from make help)

address@hidden:~/src/lilypond/build$ make help
Makefile for LilyPond 2.15.6
Usage: make [VARIABLE=value]... [TARGET]

Targets specific to current directory:
  config          rerun configure
  dist            roll tarball: ././out/lilypond-2.15.6.tar.gz
  distclean       also remove configure output
  cvs-clean       also remove out directories and generated files
  maintainerclean also remove distributed generated files
  po              make new translation Portable Object database
  po-replace      do po-update and replace catalogs with msgmerged versions
  po-update       update translation Portable Object database

  install-doc     install website documentation in
                    (webdir=/usr/local/share/doc/lilypond/html)
                    and Info documentation with images
  uninstall-doc   remove installed documentation with images
  info            build Info documentation with images
  install-info    install Info documentation with images

Some more targets are available for testing changes:
  test-baseline
  check
  test-redo
  test-clean

  For more information on these targets, see
    `Testing LilyPond' in the Contributor's Guide.

Generic targets that recurse into subdirectories*:
  all          update everything except documentation with images
  clean        remove all generated stuff in ./out
  bin-clean    same as clean, except that mf/out is preserved
  doc          update documentation with images in directory `out-www'
  doc-stage-1  update only PDF and Info documentation in directory `out-www'
  doc-clean    clean `out-www' directory
  install      install programs and data (prefix=/usr/local)
  uninstall    uninstall programs and data

  *Note: Prepend `local-' (eg. `local-clean') to restrict
         any of the above commands to the current directory.

Other generic targets:
  default      same as the empty target
**************************************
  exe          update all executables
**************************************
  help         this help
  lib          update all libraries
  TAGS         generate tagfiles

`make' may be invoked from any subdirectory.
address@hidden:~/src/lilypond/build$




reply via email to

[Prev in Thread] Current Thread [Next in Thread]