[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...


*  OPENSTEP- / OS X- compatible
** These local cvs variants and TODO lists just keep growing... :-/

reply via email to

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