[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC] Header organization
From: |
David Ayers |
Subject: |
[RFC] Header organization |
Date: |
Fri, 20 Jun 2003 17:03:14 +0200 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4b) Gecko/20030507 |
Hello Everyone,
As some of you know, I've been plowing through the files changing the
include syntax of local headers. I was going through -back tweaking
minor related issues )as it seems, most local/non-local headers are
included corrctly (""/<>). There are only minor descrepencies.) While
doing this, I noticed that we currently have a rather awkward situation
in the way we handle GS specific headers.
In the source tree for -base (-gui), headers are contained in the
Headers/gnustep/base (Headers/gnustep/gui) directores respectively. The
-make system creates a symbolic link Headers/Foundation (Headers/AppKit)
so that the headers can be located either through gnustep/base/ or
Foundation (gnustep/gui or AppKit) while *building* base (gui) or it's
subprojects.
Yet when the headers are installed, they are installed into real
seperate directories, which seemed rather strange, but I had previously
never given it much thought. I would have suspected that all GS
specific files would be installed in gnustep/base (gnustep/gui) and all
OS* compatible files to be installed in Foundation (AppKit). Well the
later part is true, but the former isn't.
This leads to the situation, that it's fine for GSMime.m to include
gnustep/base/GSMime.h but any external project must include
Foundation/GSMime.h (well at least on non OS X machines, I'm not sure
where/if it gets installed on OS X.)
For -base this could quickly be resolved by moving GSMime.h and GSXML.h
from FOUNDATION_HEADERS to ADD_HEADERS in base/Source/GNUmakefile.
For gui things are a bit messier. All "library" headers are installed
into AppKit. Additinally while installing the Model project, certain
"library" headers are also copied to gnustep/gui, making these few
redundant.
Now, I would volunteer** to help sort this out, if we can find a
consensus on how it should be and how we can get there.
My preferred solution would be to have real gnustep/base and Foundation
(gnustep/gui and AppKit) directories in the source tree as well as in
the installed Headers directory. The gnustep/base (gnustep/gui)
directory whould contain all GS specific headers and the Foundation
(AppKit) diectory would contain the OS* specific headers.
Of course the includes would have to be adapted accordingly. But this
would also break user code which currently includes <AppKit/GS*.h> files.
Do we accept this API instability?
Do we accept the loss of CVS history by moving the NS*.h files into a
new directory?
The only thing we really gain is consistency, transparency and possibly
simpler makefiles. It doesn't fix any real bugs (I know of). I
personally still think we should.
Comments, suggestions...
Cheers,
David
* OPENSTEP- / OS X- compatible
** These local cvs variants and TODO lists just keep growing... :-/
- [RFC] Header organization,
David Ayers <=