Version 1.3.0

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/trunk@13115 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Adam Fedor 2002-03-14 15:48:30 +00:00
parent 1f73722085
commit 28e6d8a6b8
10 changed files with 301 additions and 521 deletions

View file

@ -1,7 +1,7 @@
Announcement
************
The GNUstep Makefile Package version 1.2.1 is now available.
The GNUstep Makefile Package version 1.3.0 is now available.
What is the GNUstep makefile package?
=====================================
@ -12,28 +12,33 @@ write a project without having to deal with the complex issues
associated with configuration, building, installation, and packaging.
It also allows the user to easily create cross-compiled binaries.
Changes in version `1.2.1'
Changes in version `1.3.0'
==========================
* the source distribution code has been rewritten to be more general
and extended. Packages built using gnustep-make now automatically
have handy targets building tarballs from sources or from CVS
imports.
The package has gone through an extensive reorganization to break up
each sub-make into two separate components. This allows for much
simplified code and lots of code sharing between components. As a side
effect, it also increased the speed of the code by at least a factor of
2.
* implemented support for auto-dependencies, which means that any
object file automatically depends on all the header files which
were used to build it. Only works with newer compilers.
* Force shared=yes for cygwin and mingw
* implemented INSTALL_AS_USER and INSTALL_AS_GROUP.
* Bundles copy resources from subprojects.
* implemented a strip=yes option.
* Better resource management. Resources handled accross all project
types.
* various bug fixes and minor improvements.
* Simplified and fixed user root location between make and base
libraries.
* Changed Apps directory to Applications
* Fixes for MacOSX, MingW
Obtaining gnustep-make
======================
You can get the gstep-make-1.2.1.tar.gz distribution file at
You can get the gstep-make-1.3.0.tar.gz distribution file at
<ftp://ftp.gnustep.org/pub/gnustep/core>
Please send bug reports to <bug-gnustep@gnu.org>.

View file

@ -1,3 +1,9 @@
2002-03-14 Adam Fedor <fedor@gnu.org>
* Version: 1.3.0
* Documentation/README.MinGW: Minor formatting.
* README, ANNOUNCE, GNUstep-HOWTO, ...: Regenerate.
2002-03-13 Adam Fedor <fedor@gnu.org>
* Documentation/gnustep-howto.texi: Update.

View file

@ -27,27 +27,23 @@ Probably background file handle operations (other than networking) and
advanced parts of NSTask code do not currently work.
PRELIMINARIES
-------------
Before we start, we need to get some preliminary windoze software -
a tool for fetching source code via CVS.
If you don't want to use windows tools for this ... you can get the
latest cygwin distribution and use the cvs client in that - the following is
for people qho don't want to download all that cygwin stuff.
If you don't want to use windows tools for this, you can get the
latest cygwin distribution and use the cvs client in that. The following is
for people who don't want to download all that cygwin stuff.
To get stuff from CVCS you can download and install WinCVS ... which you
can find at http://sourceforge.net/projects/cvsgui
You will need to be a system administrator on your machine to install
this software.
To get stuff from CVS you can download and install WinCVS ... which
you can find at http://sourceforge.net/projects/cvsgui You will need
to be a system administrator on your machine to install this software.
You should be able to use it without changing/setting any special
configuration options.
Installing and setting up MINGW and MSYS
----------------------------------------
@ -62,14 +58,13 @@ This will unpack the mingw source tree within the msys hierarchy.
Unpacking mingw into the correct location within msys will ensure that the
path set up in /etc/profile in msys picks up the mingw tools too.
Remove the mingw make.exe file ... mingw make is not good.
Remove the mingw make.exe file - mingw make is not good.
Rename the msys gmake.exe to make.exe, so we will use this make program.
It's a good idea to remove the libobjc.a and include/objc header that come
with gcc (gcc -v for location) so that they are not accidentally found
instead of the libobjc DLL that you will compile below.
Now you can double click on the c:/msys/version-number/bin/sh program to
open a window containing a shell.
@ -79,55 +74,53 @@ to point to the home directory you wish to work from (though the defaults
may be ok for you).
NB. This home directory for building software must *not* contain spaces.
From this window we can now start building things...
From this window we can now start building things.
Obtaining GNUstep
-----------------
The main GNUstep project pages tell you how to get hold of this.
The main GNUstep project pages tell you how to get hold of this. You can get
the latest release of the following libraries. However, since MinGW support
is currently evolving, we recommend that you get the latest snapshot
or code from CVS.
You need things in the following order -
You need things in the following order:
GNUstep-make (cvs core module)
GNUstep-make (release, snapshot, or cvs core module)
libffcall (http://ftp.gnustep.org/pub/gnustep/lib)
GNUstep-libobjc (cvs dev-apps module)
GNUstep-base (cvs core module)
If you can't get the latest CVS code, recent snapshots might work by the
time you read this (at 11-Mar-2002 they won't)
GNUstep-libobjc (release, snapshot, or cvs dev-apps module)
GNUstep-base (release, snapshot, or cvs core module)
Setting up the GNUstep make environment
---------------------------------------
In the core/make package, do 'configure --prefix=C:/GNUstep'
You can of course use a different prefix to install the GNUstep system in
an alternative location, but it is important that the path you use is a
full windows style path with a drive letter and colon at the start of it.
This is because, while the msys shell and other tools automatically map
unix style paths to windows paths, the mingw compiler does not!
In the GNUstep-make (core/make) package, do 'configure
--prefix=C:/GNUstep' You can of course use a different prefix to
install the GNUstep system in an alternative location, but it is
important that the path you use is a full windows style path with a
drive letter and colon at the start of it. This is because, while the
msys shell and other tools automatically map unix style paths to
windows paths, the mingw compiler does not!
IMPORTANT ... bear this in mind. The msys tools all handle unix style
paths and map them to windows style paths internally. The mingw tools
only handle windows style paths. In particular this means that where
absolute paths are given for commands within makefiles, and where paths
for headers and libraries are supplied to the compiler, these paths must
be in windows format, not unix format!!!
The big place where things go wrong is with configure .... the configure
script may use the msys shell and other tools to locate binaries etc, and
the msys tools will supply those locations as unix style paths. If the
configure script then causes those paths to be built in to makefiles, the
make process is likely to fall over.
IMPORTANT: The msys tools all handle unix style paths and map them to
windows style paths internally. The mingw tools only handle windows
style paths. In particular this means that where absolute paths are
given for commands within makefiles, and where paths for headers and
libraries are supplied to the compiler, these paths must be in windows
format, not unix format!!! The big place where things go wrong is
with configure. The configure script may use the msys shell and other
tools to locate binaries etc, and the msys tools will supply those
locations as unix style paths. If the configure script then causes
those paths to be built in to makefiles, the make process is likely to
fall over.
Now you can type 'make install' to build and install the make package.
Once this is done, type '. GNUstep.sh' to set up your GNUstep environment.
The environment for building software is now completely set up ... but for
ease of use later, you might set up a script to be used to set up any new
shell windows you create. Something like this -
Once this is done, type '. GNUstep.sh' to set up your GNUstep
environment. The environment for building software is now completely
set up, but for ease of use later, you might set up a script to be
used to set up any new shell windows you create. Something like this:
. /etc/profile
export HOMEDRIVE=C:
@ -142,16 +135,16 @@ Building and installing FFCALL
The next priority is to get the ffcall library built and installed.
You should get the latest ffcall archive from
http://ftp.gnustep.org/pub/gnustep/libs
Currently this is ffcall-1.8d.tar.gz
http://ftp.gnustep.org/pub/gnustep/libs. Currently this is
ffcall-1.8d.tar.gz
Ignore any other instructions for builting this ...
First, rename the msys/version-number/bin/ln.exe file ...
this program creates 'symbolic links' using windows 'shortcuts' ...
but some tools like the compiler won't follow them - so renaming this
program forces configure scripts to use the 'cp' program instead.
If you don't do this, the configure scripts for ffcall will produce
First, rename the msys/version-number/bin/ln.exe file ... this
program creates 'symbolic links' using windows 'shortcuts' ... but
some tools like the compiler won't follow them - so renaming this
program forces configure scripts to use the 'cp' program instead. If
you don't do this, the configure scripts for ffcall will produce
makefiles which won't work properly!
Next, in the shell window in which you have set up your GNUstep
@ -159,20 +152,19 @@ environment, type
RANLIB=touch ./configure --prefix=`$GNUSTEP_MAKEFILES/fixpath.sh -u $GNUSTEP_SYSTEM_ROOT`
We use 'touch' as a substitute for 'ranlib', as windows does not
have (and does not need) ranlib.
We provided the installation prefix as a unix style pathname ...
since the libtool scripts barf on windows style paths.
We use 'touch' as a substitute for 'ranlib', as windows does not have
(and does not need) ranlib. We provided the installation prefix as a
unix style pathname, since the libtool scripts barf on windows style
paths.
Having configured the ffcall library, you can now build and install
it simply by typing -
it simply by typing:
make install
Finally, rename the ln.exe program back into place.
Building and installing libobjc
-------------------------------
@ -180,25 +172,21 @@ Despite the statement in the GNUstep-HOWTO, even if you have a 3.x
compiler, you still need to install gnustep-objc as it properly
exports symbols for DLLs.
You get this from the dev-apps area of the GNUstep cvs repository
(not the ftp site).
Go into dev-apps/libobjc, and type
Go to gnustep-objc (or from CVS, into dev-apps/libobjc), and type
make install
This should build and install the ObjectiveC runtime and headers for you.
Optional libraries
------------------
There are some optional (but very strongly recommended) libraries you
can install to make GNUstep work better.
libiconv ...
needed for multilingual character support (unicode etc)
libiconv
Needed for multilingual character support (unicode etc)
Get the binary package from
http://www.fh-frankfurt.de/~igor/projects/libxml
@ -207,11 +195,11 @@ libiconv ...
cp iconv.lib $GNUSTEP_SYSTEM_ROOT/Libraries/ix86/mingw32/libiconv.a
cp iconv.dll $GNUSTEP_SYSTEM_ROOT/Tools/ix86/mingw32/iconv.dll
libxml2 ...
needed for XML parsing support - needed for MacOS-X compatible
property lists and for documentation processing.
NB. at the time of writing, XML support in GNUstep base has *not*
been ported to windows - but when it is, you will need this package.
libxml2
Needed for XML parsing support, for MacOS-X compatible
property lists, and for documentation processing.
NB. at the time of writing, XML support in GNUstep base has *not*
been ported to windows - but when it is, you will need this package.
Get the binary package from
http://www.fh-frankfurt.de/~igor/projects/libxml
@ -220,10 +208,10 @@ been ported to windows - but when it is, you will need this package.
cp libxml2.lib $GNUSTEP_SYSTEM_ROOT/Libraries/ix86/mingw32/libxml2.a
cp libxml2.dll $GNUSTEP_SYSTEM_ROOT/Tools/ix86/mingw32
openssl ...
needed for the SSL bundle, providing HTTPS support for NSURL.
NB. at the time of writing, SSL support in GNUstep base has *not*
been ported to windows - but when it is, you will need this package.
openssl
Needed for the SSL bundle, providing HTTPS support for NSURL.
NB. at the time of writing, SSL support in GNUstep base has *not*
been ported to windows - but when it is, you will need this package.
Get the binary package from
http://www.kix.or.jp/~fujino/openssl
Unpack this and
@ -232,11 +220,10 @@ been ported to windows - but when it is, you will need this package.
cp *.dll *.exe $GNUSTEP_SYSTEM_ROOT/Tools/ix86/mingw32
Building and installing GNUstep-base
------------------------------------
Go into the core/base directory, and type
Go gnustep-base (or from CVS into the core/base directory), and type
make install

View file

@ -383,7 +383,7 @@ fi
@end itemize
@example
if [ `gdomap -L GDNCServer | grep -c Found` == '0' ]; then
if [ `gdomap -L GDNCServer | grep Unable` ]; then
echo "Starting GNUstep services..."
gdnc
gpbs

432
FAQ
View file

@ -1,261 +1,12 @@
GNUstep Frequently Asked Questions with Answers
***********************************************
Last updated 1 January 2002 Please send corrections to
<gnustep-maintainer@gnu.org>.
Last updated 14 March 2002. Please send corrections to
<gnustep-maintainer@gnu.org>. Also look at the user FAQ for more user
oriented questions.
GNUstep General Information
===========================
What is GNUstep?
----------------
GNUstep is the Free Software Foundation's effort to implement NeXT
Software Inc.'s (now Apple Inc.) OpenStep Standard. The project is not
finished, however some components are useable now.
The GNUstep project consists of the following sub-projects:
* GNU Objective C Compiler and Objective C Runtime Library -
Although not actually a component of GNUstep, GCC and the GNU
Objective C Runtime Library are integral to GNUstep, since they
are used to make every GNU Objective C program.
* GNUstep Base Library - Code for non-graphical objects, such as
strings, collections, archiving support and distributed objects
messaging. (Including functionality similar to OpenStep's
`FoundationKit'.)
* GNUstep GUI Library - Code for graphical objects used in making a
Graphical User Interface (GUI). This includes buttons, sliders,
text fields, windows, menus, etc. (Including functionality
similar to OpenStep's `AppKit'.)
* GNUstep DisplayGhostscript Server - A server that draws PostScript
graphics to the screen, and receives events from the keyboard and
mouse. It is based on GNU GhostScript. There is also an DPS
extension to Xfree*6 that is usable.
* Various Tools and applications, including GORM, The GNUstep
interface builder for graphically assembling application
interfaces, and ProjectCenter, a project manager.
What is the OpenStep standard?
------------------------------
OpenStep is an Application Programming Interface (API) for creating
applications using the Objective C language. It was published by NeXT
Computer Inc. in 1994.
OpenStep consists of three parts: the `FoundationKit', a library of
non-graphical objects; the `AppKit', a library of objects usful in
creating graphical applications; and `Display Postscript', an interface
for drawing to the screen using the PostScript graphics language.
You can obtain a copy of the OpenStep standard from the GNUstep web
site <http://www.gnustep.org> or it's mirror sites.
What platforms does GNUstep run on?
-----------------------------------
See the list of supported platforms at
<http://www.gnustep.org/information/machines_toc.html> for information
on what machines GNUstep builds on and what the status of the ports is.
Probably a few days porting to any other Unix system where current
gcc/egcs compilers and gdb debugger work.
Does GNUstep run on Windows?
----------------------------
The primary targets for GNUstep are free 'Unix' platforms such as
GNU/Linux.
That being said, the base library should run on Windows-NT,98 with
the Cygwin unix emulation library from Cygnus
(http://sourceware.cygnus.com/cygwin/) or the MinGW libraries. At
present there are a few problems with networking (Distributed Objects)
support, but the library is believed to work.
The gui library needs a win32 backend library to work under
Windows-NT. The backend library is a thin layer that converts the
GNUstep methods to handle drawing of GUI elements to calls to the win32
api. This is a project looking for a volunteer.
The application-wrapper used for GNUstep already allows for multiple
binaries to be stored for different systems, so you should be able to
write once, deploy anywhere.
What is GNUstep's position towards KDE and the GNOME project?
-------------------------------------------------------------
You can use GNUstep with GNOME and/or KDE. GNUstep displays on top
of X11. You can still do programming in C (since Objective-C is just a
superset of C), and when (if?) GCC gets around to it, you'll be able to
mix C++ and Objective-C code in the SAME file.
GNUstep, is much more than a window manager or desktop environment.
It frees you to develop cross-platform applications without the work of
developing an OS independent framework from scratch. It gives you lots
of basic functionality, from Font Panels to Unicode strings to
Distributed Objects.
Is the Objective C API for GTK related?
---------------------------------------
No. GNUstep applications provide their GUI via the OpenStep API,
which provides fully object-oriented access to GUI manipulation.
The object-oriented nature of the libraries and language make it
much easier for new users to create their own subclasses rather than
simply using the supplied widgets as in other frameworks.
How about implementing parts of the Application Kit with GTK?
-------------------------------------------------------------
Yes and No - The GNUstep architecture provides a single,
platform-independent, API for handling all aspects of GUI interaction
(implemented in the gstep-gui library), with a backend architecture
that permits you to have different display models (display postscript,
X-windows, win32, berlin ...) while letting you use the same code for
printing as for displaying. Use of GTK in the frontend gui library
would remove some of those advantages without adding any.
That being said, a backend library could be implemented using gtk if
anyone wanted to do so. Since the frontend library handles most of the
work involved in implementing the OpenStep API, the backend is a
relatively thin layer and the advantages of GTK over direct xlib or
win32 calls is likely to be minimal. If/when GTK is ported to more
systems, a backend written using it could be a valuable asset -
volunteers are, as always, wecome.
Which compiler can I use? Where can I get it?
---------------------------------------------
Use gcc-2.8.1 or later, from any GNU ftp site or, on some platforms
you must use egcs-1.1.1 or later, from http://egcs.cygnus.com/
Which Foundation Library can I use?
-----------------------------------
That depends ...
If you only want to use the database package - gnustep-db, you can
use either the gnustep base library or libFoundation.
If you want to develop/use GNUstep gui applications, you must use
the gnustep-base library since libFoundation is (13-Feb-2000) missing
much essential functionality.
How do you use the gnustep-make package?
----------------------------------------
Good question. Read the tutorials at the GNUstep web site. Also,
use the makefiles in the libraries, tool directories, and test
applications as examples.
How can I get GNUstep?
----------------------
Get the HOWTO from
<http://www.gnustep.org/resources/documentation/GNUstep-HOWTO> Get the
latest release from <ftp://ftp.gnustep.org>. If you're really
adventurous, get the latest snapshot by anonymous ftp from
<ftp://ftp.gnustep.org:/pub/daily-snapshots>
Use anonymous CVS to keep up to date - instructions are in the HOWTO.
How do you run GNUstep?
-----------------------
You are presumably under the misapprehension that GNUstep is some
sort of window manager.
It isn't.
GNUstep is a whole load of things - primarily a set of libraries for
developing software.
At present, it's those libraries, plus various command-line based
support tools and service providing daemons. In the future, it will be
the libraries, plus the support tools, plus various GUI development
tools, a GUI desktop/workspace application etc.
At no stage will you ever 'run' GNUstep - you will run applications
and tools and will make use of it's services (though at some point you
may well find packages distributed as 'GNUstep' systems in the way that
you get 'Linux' systems packaged today).
Current tools are -
The makefiles package
To make building GNUstep tools and apps simple.
The 'openapp' script
To start up a GUI application from the command line.
The defaults tools
To read, create, delete, and modify user defaults from the command
line.
The name server
To permit applications and tools to locate each other and
communicate.
The pasteboard server
To permit cut-and-paste, drag-and-drop, and to let applicationsm
and tools transparently provide services to each other.
The distributed notification center
To permit applications and tools to be notified of arbitrary
external events.
The 'make_services' program
To locate (and cache information about) applications that are
willing to provide services to other applications.
The 'set_show_service' program
A command-line utility to determine what services an application
should be permitted to offer on it's 'services' menu.
If you want to see a sample GUI application running you need to build
GNUstep and look at the example applications in the gstep-examples
package. Build 'Finger' or 'Ink' and start it with 'openapp Finger.app'
or 'openapp Ink.app'
To look best - use WindowMaker (the currently preferred GNUstep
window manager) as your window manager.
Is there a web site?
--------------------
See <http://www.gnustep.org/>.
When is GNUstep intended to be available?
-----------------------------------------
It's usable now. Releases are made about every six months. However,
if you are a serious developer, it's probably best to use the latest
snapshots. See the GNUstep web site for a release schedule.
What is usable?
---------------
* gstep-make does pretty much what the makefiles in NeXTstep do.
* gstep-base (Foundation) stuff should work fine for almost all
projects.
* gstep-db is only EOF-1.0 compatible but should work ok.
* gstep-gui (AppKit) has a lot working but there is still stuff
missing.
* DGS (Display Ghostscript) is usable but slow.
Compatibility with OPENSTEP/Cocoa/MacOSX
========================================
Can I run NeXT OPENSTEP or Apple Rhapsody programs on GNUstep?
--------------------------------------------------------------
You can't run these programs on GNUstep, but if you have the source
code for the programs, you should be able to port them to GNUstep and
compile them. Whether or not you will be able to run them depends on how
complete GNUstep is at the time.
Compatibility
=============
Is it easy to port OPENSTEP and Rhapsody programs to GNUstep?
-------------------------------------------------------------
@ -311,38 +62,14 @@ archive format (which can be edited by Gorm). There IS a conversion
tool called nib2gmodel that can be compiled under OPENSTEP to convert
OPENSTEP nib files to GNUstep gmodel files.
Will code without NIB files work?
---------------------------------
Well, GNUstep implements the OpenStep API, not the old NeXTstep API
but, Yes - once the gui library is complete, OpenStep or MacOS-X code
should work without translation under GNUstep.
Is GNUstep following Apple's Changes to OpenStep?
-------------------------------------------------
Yes - gstep-base already contains the documented changes in the
Foundation library. GNUstep aims to be compatible with both the
OpenStep specification and with MacOS-X It should be easy to write an
application that compiles cleanly under both GNUstep and Yellow Box.
Do we have to have the NeXTstep look and feel?
----------------------------------------------
Gnustep is aiming for something like the NeXTstep-3.3 look and feel.
This is mostly determined by the gui backend library. In the case of
the two existing backends (xdps and xgps), both are designed to look
like NeXTstep/OPENSTEP. If someone wants to write a backend with a
different look, they can. This would only be a few man-months work.
Can one use the hybrid "Objective-C++"
--------------------------------------
that one could on the NeXT?
No - at present the GNU compiler (gcc) does not support
"Objective-C++" There are no specific plans to make it do so, but any
volunteers to do it would be welcome.
No. at present the GNU compiler (gcc) does not support
"Objective-C++". Apple has submitted patches for this, but it is up to
the GCC steering commitee to decide if they want to add them. If you
would like to see this, please politely and respectfully lobby them at
<gcc@gnu.org>.
Is there a plan to support the Java/YellowBox Bindings?
-------------------------------------------------------
@ -360,16 +87,52 @@ objective-C objects.
What if I compile GNUstep under OPENSTEP/MacOS X Server?
--------------------------------------------------------
No - GNUstep uses the X-windows display postscript extension - the
GNUstep uses the X-windows display postscript extension. The
interface to that is not the same as the interface to the
OPENSTEP/MacOS-X windows server. While someone could write a backend
library to provide the interface, nobody has bothered to date.
Also, the GNUstep base library is still being ported to Darwin.
Is the Objective C API for GTK related?
---------------------------------------
No. GNUstep applications provide their GUI via the OpenStep API,
which provides fully object-oriented access to GUI manipulation.
The object-oriented nature of the libraries and language make it
much easier for new users to create their own subclasses rather than
simply using the supplied widgets as in other frameworks.
How about implementing parts of the Application Kit with GTK?
-------------------------------------------------------------
Yes and No - The GNUstep architecture provides a single,
platform-independent, API for handling all aspects of GUI interaction
(implemented in the gstep-gui library), with a backend architecture
that permits you to have different display models (display postscript,
X-windows, win32, berlin ...) while letting you use the same code for
printing as for displaying. Use of GTK in the frontend gui library
would remove some of those advantages without adding any.
That being said, a backend library could be implemented using gtk if
anyone wanted to do so. Since the frontend library handles most of the
work involved in implementing the OpenStep API, the backend is a
relatively thin layer and the advantages of GTK over direct xlib or
win32 calls is likely to be minimal. If/when GTK is ported to more
systems, a backend written using it could be a valuable asset -
volunteers are, as always, wecome.
Compiling and Developing
========================
How can I get started programming?
----------------------------------
Good question. Read the tutorials at the GNUstep web site. Also
look at Apple's documentation (pointers in the Resources section on the
GNUstep web site.
How can I help with GNUstep?
----------------------------
@ -377,7 +140,7 @@ How can I help with GNUstep?
2. Write documentation
3. Update the TODO list and library headers
3. Update the task list and library headers
4. Write applications
@ -402,8 +165,12 @@ you have take on too large/complex a project. It's much better to
'resign' and take on a smaller job than to just stop without telling
anyone.
How do I start writing code?
----------------------------
Please document the code you add or change (using autogsdoc comments
that begin with a slash and two asterices). But PLEASE, do not copy from
the Apple documentation or any other copyrighted documentation.
Helping develop GNUstep
-----------------------
There is plenty of unimplemented stuff in the gui library and
backend libraries that volunteers can work on - just browse through the
@ -415,8 +182,8 @@ website.
Once you have coded something, you could always write a testcase and
documentation for it :-)
How do I start writing documentation?
-------------------------------------
Helping document GNUstep
------------------------
All class documentation is written directly in the source code itself
and translated using the autogsdoc program. See the source code and
@ -441,19 +208,21 @@ Software Foundation.
How do I update the task list?
------------------------------
The task list (<http://www.gnustep.org/developers/tasks.html>) is
supposed to tell people what jobs are waiting to be done.
The task list (<http://savannah.gnu.org/pm/?group_id=99>) is
supposed to tell people what jobs are waiting to be done. Feel free to
add to it or update the tasks that are there (you need to create a login
for yourself first).
One job of major importance that pretty much anyone can do is to
look for jobs to add to the task list. In the case of methods from the
OpenStep specification or the MacOS-X documentation not being present
in the GNustep libraries, it is also helpful to add the method
in the GNUstep libraries, it is also helpful to add the method
prototypes to the library header files.
Send any changes or additions to <bug-gnustep@gnu.org>.
A beginner can look through the MacOS-X documentation, the OpenStep
specification and the GNUstep source and contribute TODO items.
specification and the GNUstep source and contribute task items.
If a class or method is in MacOS-X and OpenStep but is not in
GNUstep - it's a high priority TODO and should at least be added to the
@ -482,8 +251,8 @@ latest GNUstep snapshots you can find. Then checkout the 'tests' module
from CVS. In the 'tests' directory, you will find a regression testing
framework. In order to use this you will also need a recent (v 1.3.2
or later) copy of Guile (you can get this from a GNU ftp site) and will
need to hacke checked out, built, and installed the 'guile' package
from the GNUstep CVS repository.
need to check-out, built, and installed the 'guile' package from the
GNUstep CVS repository.
How do I start writing applications?
------------------------------------
@ -498,13 +267,13 @@ How can I help with the GNUstep website?
Talk to Adam Fedor <fedor@gnu.org>, the maintainer.
The GNUstep website is kept as a CVS module, but the largest portions
of it (the FAQ, the TODO list, and the Documentation) are actually
generated from files in the individual GNUstep packages.
of it (the FAQ and the Documentation) are actually generated from files
in the individual GNUstep packages.
If you want to update the FAQ or TODO list or documentation - grab
the latest snapshot of the GNUstep core you can find, update it from
the CVS repository, and work with the contents of the appropriate
documentation directory.
If you want to update the FAQ or documentation - grab the latest
snapshot of the GNUstep core you can find, update it from the CVS
repository, and work with the contents of the appropriate documentation
directory.
If you want to work on other parts of the website, you can grab a
copy of the website via anonymous CVS. See
@ -514,36 +283,11 @@ do that.
The main task with the website is to figure out which bits are
out-of-date (or wrong) and update/mark-as-outdated as required.
How do I compile GNUstep on my machine?
---------------------------------------
GNU Objective C Compiler and Runtime
====================================
Read the file `GNUstep-HOWTO', which comes with the GNUstep
distribution, and also is available separately on the GNUstep web site.
Are there any precompiled packages available?
---------------------------------------------
Check <http://www.gnustep.org/resources/sources.html> for links to
sites with RPMS, and perhaps in the future, Debian packages. In some
cases. You can check the debian site for preconfigured GNUstep
packages. Also check the BSD sites for GNUstep ports.
What are these type and size warnings?
--------------------------------------
These warnings:
/usr/bin/ld: warning: type and size of dynamic symbol
`__objc_class_name_NSConstantString' are not defined
are a common occurence and are due to a mismatch between gcc and ld.
They don't do any harm so they can be safely ignored. Apparently no one
has bothered to fix them yet.
GNU Objective C Compiler and Objective C Runtime Library
========================================================
What is the Objective C Runtime Library?
----------------------------------------
What is the Objective C Runtime?
--------------------------------
The Objective C Runtime Library provides C functions and data
structures required to execute an Objective C program.
@ -584,24 +328,11 @@ initialization of static instances (such as @""-style string objects).
corresponding NeXT functions; the GNU names conform to the GNU
coding standards.
* NeXT's compiler, `cc', is based on an old version of `gcc'. GNU's
compiler is, of course, the latest version of `gcc', and therefore
contains all the latest enhancements.
Does it allow a mixture of Objective C and C++?
-----------------------------------------------
No. Unlike NeXT's `cc', GNU GCC does not support source files
containing both Objective C and C++. Apple seems to be willing to
merge their code back into the main GCC project, but this may take some
convincing of the GCC maintainers due to the large number of changes
necessary. Send email to `discuss-gnustep@gnu.org' if you are
interesting in pushing this issue, so that the efforts of all those
people interested can be coordinated.
Also, unlike NeXT's `cc', GNU GCC does not support the `extern
"Objective-C"' construct.
No. See *note Can one use the hybrid "Objective-C++"::
Where can I find more information?
----------------------------------
@ -647,7 +378,7 @@ ease-of-use as NeXT's; be warned, however, that they are not compatible
with each other. They have different class heirarchies, different
instance variables, different method names, different implementation
strategies and different network message formats. You cannot
communicate with a NeXT NSConnection using a GNU Connection.
communicate with a NeXT NSConnection using a GNU NSConnection.
Here are some differences between GNU distributed objects and NeXT's
distributed objects: NeXT NSDistantObject asks it's remote target for
@ -688,12 +419,11 @@ front-end contains the majority of implementation, but leaves out the
low-level drawing and event code. A back-end can override whatever
methods necessary in order to implement low-level drawing event
receiving. Different back-ends will make GNUstep available on various
platforms. The default GNU back-end will run on top of X Windows and
the DisplayGhostScript Server. Other back-ends could allow GNUstep to
run on OpenGL, OS/2, and WIN32 graphics/event platforms. Much work
will be saved by this clean separation between front- and back-end,
because it allows different platforms to share the large amount of
front-end code.
platforms. The default GNU back-end will run on top of X Windows.
Other back-ends could allow GNUstep to run on OpenGL and WIN32
graphics/event platforms. Much work will be saved by this clean
separation between front- and back-end, because it allows different
platforms to share the large amount of front-end code.
What is the current state of development of the front-end?
----------------------------------------------------------

View file

@ -1,7 +1,7 @@
GNUstep HOWTO
*************
Last Update: 1 January 2002
Last Update: 14 March 2002
This document explains how to build the different components of the
GNUstep core libraries and GNUstep Launchpad.
@ -33,34 +33,25 @@ Summary
In order to compile the libraries, you need to compile and install
the following packages first (if you don't already have them):
* gcc (Version 2.8.0 or greater)
* gcc (Version 2.8.0 or greater, 3.0.4 or greater recommended)
* GNU make (Version 3.75 or greater)
* The TIFF library (libtiff) (Version 3.4beta36 or greater)
* gdb, if you plan to do any debugging
After installing these packages, get the following individual
packages:
You may also need to install some of the following libraries and
packages described below. Most of these packages are optional, but some
are required.
* gnustep-make
`ffcall libraries (HIGHLY RECOMMENDED)'
This is a library that provides stack frame handling for
NSInvocation and NSConnection. This library is highly recommended.
The previous builtin method for stack frame handling is no longer
supported and may be removed in the future. ffcall is under GNU
GPL. As a special exception, if used in GNUstep or in derivate
works of GNUstep, the included parts of ffcall are under GNU LGPL.
* gnustep-base
* gnustep-gui
* gnustep-xdps
* gnustep-xgps
For GNUstep Launchpad, substitue `gnustep-guile' and `jigs' for
`gnustep-gui' and `gnustep-xgps/xdps'.
See <http://www.gnustep.org> for information on where to get these
packages. Only one of gnustep-xgps or gnustep-xdps is required. We
currently recommend gnustep-xgps. Other packages you may need to get
depending on the type of system you are using, include:
`WindowMaker (Version >= 0.62)'
`WindowMaker (Version >= 0.62) (OPTIONAL)'
GNUstep and WindowMaker work together to provide a consistant
interface. Although it is not required, GNUstep will work much
better if you use it with the WindowMaker window manager. In
@ -68,7 +59,43 @@ depending on the type of system you are using, include:
uses that would otherwise not be available. Get WindowMaker from
<http://www.windowmaker.org>.
`DGS, the XFree86 DPS extension, or Adobe DPS'
`libxml2 (OPTIONAL)'
The libxml library (Version 2) is used to translate some of the
documentation for GNUstep and to provide suport for MacOS-X
compatible XML-based property-lists. It is recommended but not
currently required.
`openssl (OPTIONAL)'
The openssl library is used to provide support for https
connections by the NSURL and HSURLHandle classes. This
functionality is compiled as a separate bundle since the OpenSSL
license is not compatible with GPL, and in the hopes that if
someone writes an openssl replacement, it can quickly be used by
creating another bundle.
`libiconv (OPTIONAL)'
Unicode support functions (iconv) come with glibc version 2.1 or
greater. If you don't have this, you can get the separate libiconv
library from <
http://clisp.cons.org/~haible/packages-libiconv.html>. However,
neither one is required to use GNUstep.
`gnustep-objc package (for gcc version < 3.0) (RECOMMENDED)'
This is a special version of the Objective-C runtime that include
several bug fixes and features that were not in gcc versions
previous to 3.0. It is available at
<ftp://ftp.gnustep.org/pub/gnustep/libs> which compiles using the
GNUstep Makefile package (so you don't have to get the entire gcc
dist). Make sure to set the THREADING variable in the GNUmakefile.
It's possible to compile the library static (make shared=no) and
just copy to the place where the gcc libobjc library is (type gcc
-v to get this location). Note you have to install gnustep-make
(below) before installing this library.
`The TIFF library (libtiff) (Version 3.4beta36 or greater) (REQUIRED)'
The GUI library uses this to handle loading and saving TIFF images.
`DGS, the XFree86 DPS extension, or Adobe DPS (OPTIONAL)'
If you want to use the features of a Display Postscript
(DPS)backend. Note that it is not required since you can use the
XGPS backend that is Xlib based. Note that the DPS backend is
@ -81,63 +108,39 @@ depending on the type of system you are using, include:
* Adobe DPS, (contact your OS distributor)
`PCThreads'
`PCThreads (OPTIONAL)'
For GNU/Linux systems on Intel x86 processors. PCThreads is no
longer necessary (and should not be used) on GNU/Linux systems with
glibc version 2, such as Debian 2.0 and RedHat 5.x and greater.
`GDB and Objective-C patch'
`GDB and Objective-C patch (OPTIONAL)'
GDB can be obtained from <ftp://ftp.gnu.org/gnu/gdb>. The patch to
make it work better with GNUstep can be obtained from
<ftp://ftp.gnustep.org/pub/gnustep>
`libxml'
The libxml library (Version 2) is used to translate some of the
documentation for GNUstep and to provide suport for MacOS-X
compatible XML-based property-lists. It is recommended but not
currently required.
`openssl'
The openssl library is used to provide support for https
connections by the NSURL and HSURLHandle classes. This
functionality is compiled as a separate bundle since the OpenSSL
license is not compatible with GPL, and in the hopes that if
someone writes an openssl replacement, it can quickly be used by
creating another bundle.
`libiconv'
Unicode support functions (iconv) come with glibc version 2.1 or
greater. If you don't have this, you can get the separate libiconv
library from <
http://clisp.cons.org/~haible/packages-libiconv.html>. However,
neither one is required to use GNUstep.
`ffcall libraries'
This is a library that provides stack frame handling for
NSInvocation and NSConnection. This library is highly recommended.
The previous builtin method for stack frame handling is no longer
supported and may be removed in the future. ffcall is under GNU
GPL. As a special exception, if used in GNUstep or in derivate
works of GNUstep, the included parts of ffcall are under GNU LGPL.
`gnustep-objc package (for gcc version < 3.0)'
This is a special version of the Objective-C runtime that include
several bug fixes and features that were not in gcc versions
previous to 3.0. It is available at
<ftp://ftp.gnustep.org/pub/gnustep/libs> which compiles using the
GNUstep Makefile package (so you don't have to get the entire gcc
dist). Make sure to set the THREADING variable in the GNUmakefile.
It's possible to compile the library static (make shared=no) and
just copy to the place where the gcc libobjc library is (type gcc
-v to get this location).
Compiling and Installing the packages
*************************************
Get the following individual packages:
* gnustep-make
* gnustep-base
* gnustep-gui
* gnustep-xgps
For GNUstep Launchpad, substitue `gnustep-guile' and `jigs' for
`gnustep-gui' and `gnustep-xgps/xdps'.
See <http://www.gnustep.org> for information on where to get these
packages. Only one of gnustep-xgps or gnustep-xdps is required. We
currently recommend gnustep-xgps.
Make sure you install all the previously mentioned libraries first
before configuring and building GNUstep (Except you need to install
gnustep-objc after installing gnustep-make, unless your installing it
as part of gcc).
gnustep-objc after installing gnustep-make).
Note: you will need to be able to install packages as root (at least
the base library) for applications to work correctly.
@ -150,6 +153,10 @@ Windows).
Using a Display Postscript System
=================================
Please skip this instruction unless you really know what you are
doing. The DPS backend is not well developed. You are better off
sticking to the gnustep-xgps backend.
Install a Display PostScript system if you want to use the XDPS
backend. You do not need it if you want to use the XGPS backend. Some
systems, like Sun Microcomputers(TM) already have a DPS system
@ -301,7 +308,7 @@ app:
* gpbs - Put this after executing `GNUstep.sh' in your local .profile
if [ `gdomap -L GDNCServer | grep -c Found` == '0' ]; then
if [ `gdomap -L GDNCServer | grep Unable` ]; then
echo "Starting GNUstep services..."
gdnc
gpbs
@ -632,15 +639,18 @@ Solaris 2.7/Intel
=================
`Recommended compiler'
egcs 1.1.2
egcs 1.1.2, unknown
`Extra libs needed'
Unknown
`Special Instructions'
Make sure there are no -g compiler flags (specify `CFLAGS=
./configure', when configuring) or remove it from `OPTFLAG'
make/config.make. You will probable get a lot of text relocation
Make sure there are no -g compiler flags (i.e. compiling with
debug=yes might be a problem). Unsure of correct bundle flags -
You might need to use the alternate flags listed in target.make,
line 989. Also, configuring gnustep-make with
`--disable-backend-bundle' might be necessary if you can't get
bundles to work. You will probable get a lot of text relocation
warnings, which probably can be ignored. See the other Solaris
instructions above for more information.

23
INSTALL
View file

@ -9,7 +9,9 @@ libraries, read the file GNUstep-HOWTO for more complete instructions on
how to install the entire GNUstep package (including this package).
GNUstep-HOWTO comes with this distribution.
This should be the first GNUstep package you install.
This should be the first GNUstep package you install. After
installing this package, install ffcall and any other libraries that
GNUstep may need (see the GNUstep-HOWTO). Then install gnustep-base.
When you configure additional libraries, make sure you use the same
configuration options as with gstep-make.
@ -196,9 +198,10 @@ as `/etc/bashrc', where you could add lines similar to these:
This will source in the GNUstep.sh file and set the environment
variables; thus making them available for all users. Before executing
this script, you can setup a default path for searching for tools and
apps by defining the variable GNUSTEP_PATHPREFIX_LIST (and exporting
it). By default, it's set to
this script, you can setup a default path for scripts in the makefiles
package to use for searching for tools and apps by defining the
variable GNUSTEP_PATHPREFIX_LIST (and exporting it). By default, it's
set to
$GNUSTEP_USER_ROOT:$GNUSTEP_LOCAL_ROOT:$GNUSTEP_SYSTEM_ROOT
@ -208,6 +211,10 @@ it). By default, it's set to
when all is done.
NB. This path is NOT used by GNUstep tools and applications
themselves ... they use a standard function
NSSearchPathForDirectoriesInDomains() to locate files instead.
Setting up the GNUstep environment for a single user
----------------------------------------------------
@ -229,3 +236,11 @@ add the following lines to that file:
This will source in the GNUstep.sh file and set the environment
variables; thus making them available for the user.
The GNUstep.sh file will set up GNUSTEP_USER_ROOT to the GNUstep
subdirectory of the users home directory by default. This may be
overridden by a user providing a .GNUsteprc file in their home
directory.
# Set up to store GNUstep files directly in my home directory
GNUSTEP_USER_ROOT=~

25
NEWS
View file

@ -1,7 +1,30 @@
NEWS
****
The currently released version is `1.2.1'.
The currently released version is `1.3.0'.
Changes in version `1.3.0'
==========================
The package has gone through an extensive reorganization to break up
each sub-make into two separate components. This allows for much
simplified code and lots of code sharing between components. As a side
effect, it also increased the speed of the code by at least a factor of
2.
* Force shared=yes for cygwin and mingw
* Bundles copy resources from subprojects.
* Better resource management. Resources handled accross all project
types.
* Simplified and fixed user root location between make and base
libraries.
* Changed Apps directory to Applications
* Fixes for MacOSX, MingW
Changes in version `1.2.1'
==========================

4
README
View file

@ -25,6 +25,10 @@ various machine specific READMEs in the Documentation directory.
design of the Makefile system and how to write your own makefiles that
work with it.
Note that releases numbers that have an odd minor version (e.g.
1.3.2) are unstable releases. They are not as well tested as stable
releases (e.g. 1.4.1).
License
=======

View file

@ -3,7 +3,7 @@
# The version number of this release.
GNUSTEP_MAKE_MAJOR_VERSION=1
GNUSTEP_MAKE_MINOR_VERSION=2
GNUSTEP_MAKE_SUBMINOR_VERSION=1
GNUSTEP_MAKE_MINOR_VERSION=3
GNUSTEP_MAKE_SUBMINOR_VERSION=0
GNUSTEP_MAKE_VERSION=${GNUSTEP_MAKE_MAJOR_VERSION}.${GNUSTEP_MAKE_MINOR_VERSION}.${GNUSTEP_MAKE_SUBMINOR_VERSION}