On Sun, Feb 10, 2008 at 12:48:50PM +0800, simon.zheng at sun.com wrote:

> To generate .h and .cc files from .hg and ccg, gmmproc is executed like
> this.
> 
> $./gmmproc -I ../../tools/m4 --defs ./src
> 
> Here, -I and --defs specifies m4 files and .defs files directory. That
> it, gmmproc needs to cooperate with two kinds of files, .m4 and .defs.
> In fact, gtkmm svn repository has included these files beforehand.
> Therefore, no extra work for them needs to be done when building.
> 
> The complete steps is below:
> - STEP 0: Write .m4, .ccg, .hg files and prepare .defs files, put them
> into svn repository. This is done before real building.
> - STEP 1: Preprocess of building. Use gmmproc to get .c and .h source
> files.
> - STEP 2: Compiling of building. Create gtkmm library from source files.

Is this for any project based on gtkmm, or is this just when building
gtkmm?  The way you write the gmmproc commandline and then this step 2
sounds like the latter.  I mostly don't care how you build this project; I
care about how developers basing their own projects on this one will use
the interfaces you provide.

> > Is generate_extra_defs something you'd put in a makefile to run over
> > the .hg and .ccg files to generate a .defs file?  
> 
> No, generate_extra_defs isn't put into any makefile. Usually
> generate_extra_defs is run manually by the developer to generate new
> .defs file, and then put these pre-generated .defs file into source
> repository.

Sort of like checking .o files into the repository?  Why don't developers
simply keep the source checked in, and all derived files built via the
build system?

> For example, when gtk+ C library is upgraded and a new widget class is
> added, gtk_signals.defs needs to be updated accordingly. Firstly, the
> developer modifies generate_defs_gtk.cc, then build generate_extra_defs
> binary. After that, he run generate_extra_defs manually to generate the
> new gtk_signals.defs. Finally he put the gtk_signals.def into svn
> repository.
> 
> In one word, generate_extra_defs is just used to generate .defs before
> real building. So we don't develiver libglibmm_generate_extra_defs-2.4
> library. It's private.

I think I'm understanding the architecture here less and less.  Are you
talking about building gtkmm, or some random other project that uses gtkmm?

> - Keep gmmproc public. Since it's only used by building rather than by
> users directly, I hope move to /usr/lib/gmmproc, just like part of
> "/usr/libexec" on Solaris. Do you think it's reasonable?

/usr/bin hold plenty of executables that are only useful to developers, so
that's where I'd expect it to be.  Do typical linux systems put it in
/usr/libexec?  If so, do makefiles and configure scripts tend to try to
find it there?

Danek

Reply via email to