[comp.windows.x] R5 and Imake

meo@rsiatl.UUCP (Miles ONeal) (08/10/90)

I would like to see Imake made more general.

Perhaps using the work Paul DuBois has done?

Moving the X stuff into a subarea, so that
Imake was more generic, yet still used by
X, would be great. For all its faults, I still
have seen nothing better. And as with X,
going ahead with a good standard is better
than waiting for the perfect one.

As part of this, I would like to see Imake
removed from the default X tree (at least as
a bootstrap imake & make world option).


If the Consortium is willing, but doesn't have time,
I'd be happy to jump in. Unless Paul has already
beaten me to the trick or really wants to do it...

-Miles

Miles O'Neal
{uunet | emory}!rsiatl!meo (home)
meo@sware.com              (work)
{uunet | emory}!sware!meo  (work)

rhl@grendel.Princeton.EDU (Robert Lupton (the Good)) (08/10/90)

The more I learn about Imake the more times I come across admissions
that things are made extra-specially-convoluted to avoid unhappy habits
of cpp. 

There are public domain cpp's around (e.g. the decus one on the X11
tape), so why oh why doesn't someone simply hack up the source to do it
right -- where right means without the need for /**/'s to insulate
Makefile comments, and worries about spaces turning into tabs at the
drop of a hat (or back at the drop of another hat).

I'd volunteer, except that I'm not that familiar with imake... Maybe
another fun project for poor Paul DuBois?


			L&K,
			
				Robert

bin@primate.wisc.edu (Brain in Neutral) (08/11/90)

From article <3534@rsiatl.UUCP>, by meo@rsiatl.UUCP (Miles ONeal):
> I would like to see Imake made more general.
> ...
> Moving the X stuff into a subarea, so that
> Imake was more generic, yet still used by
> X, would be great. For all its faults, I still
> have seen nothing better. And as with X,
> going ahead with a good standard is better
> than waiting for the perfect one.

imake itself is generic.  Do you mean the X configuration files?  Some of
the generic-ness is already there, in the system-description/build-description
section of Imake.tmpl.  The X-specific stuff is in Project.tmpl.  But you
no doubt already know that, so what do you have in mind other than this?

> As part of this, I would like to see Imake
> removed from the default X tree (at least as
> a bootstrap imake & make world option).

What are the implications of this?  Would you require that imake be already
compiled on the machine in question, and provide source as an option were
that not the case?
Or would it be something separate from the X distribution?

> If the Consortium is willing, but doesn't have time,
> I'd be happy to jump in. Unless Paul has already
> beaten me to the trick or really wants to do it...

I have, I think, with the modifications to extend the config file architecture
to multiple simultaneous projects.  Or maybe not.  I've never actually tested
that against the X config files, but I don't see any obvious problems with
doing so.  I use my own config file suit on lots of projects, with overlapping
but differing requirements, and it seems to do perhaps what you're asking.

This stuff is on indri.primate.wisc.edu for ftp, or I can mail it to people...

Paul DuBois
dubois@primate.wisc.edu

bin@primate.wisc.edu (Brain in Neutral) (08/11/90)

From article <1767@idunno.Princeton.EDU>, by rhl@grendel.Princeton.EDU (Robert Lupton (the Good)):
> 
> The more I learn about Imake the more times I come across admissions
> that things are made extra-specially-convoluted to avoid unhappy habits
> of cpp. 
> ... 
> I'd volunteer, except that I'm not that familiar with imake... Maybe
> another fun project for poor Paul DuBois?

Well, one of the things cpp is used for in X is to create scripts from
template files.  It seems that the use of cpp in those instances is mainly
to substitute into the template the values of certain make variables, e.g.,
like a library directory into a shell script.

As you've noted, there are certain problems with this.  As I would put it,
the main ones are:

(1) cpp modifies its source besides symbol substitution, e.g., lines
beginning with ``#'' are special and comments (``/* ... */'') are deleted.
(2) it is necessary to pass a -D flag for every symbol to be substituted.
This can make for very long rule invocations in your Imakefile.  Hard to
read and subject to error.  And it's simply a pain to have to explicitly
list every symbol you want to substitute.

Why not read the Makefile directly, yank out the variable values, look
for instances of $(varname) or ${varname) in the template, and substitute
the values - and leave everything else alone?

That's why I wrote msub.
Mail me if you're interested.

Paul DuBois
dubois@primate.wisc.edu