mirror of
https://github.com/gnustep/tools-make.git
synced 2025-05-12 06:11:04 +00:00
Update
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/trunk@9204 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
e99c05b6bc
commit
f0f3dea686
6 changed files with 124 additions and 310 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2001-02-21 Adam Fedor <fedor@gnu.org>
|
||||||
|
|
||||||
|
* Documentation/make.texi: Update
|
||||||
|
* Documentation/news.texi: Likewise
|
||||||
|
* Documentation/install.texi: Likewise
|
||||||
|
* NEWS, INSTALL: Regenerate
|
||||||
|
|
||||||
2001-02-19 Nicola Pero <nicola@brainstorm.co.uk>
|
2001-02-19 Nicola Pero <nicola@brainstorm.co.uk>
|
||||||
|
|
||||||
* configure.in: Accept --with-local-root and --with-network-root
|
* configure.in: Accept --with-local-root and --with-network-root
|
||||||
|
|
|
@ -1,6 +1,15 @@
|
||||||
@ifclear HOWTO
|
|
||||||
|
@node Top, Introduction, (dir), (dir)
|
||||||
@chapter GNUstep makefile package installation
|
@chapter GNUstep makefile package installation
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Introduction::
|
||||||
|
* Configuration::
|
||||||
|
* Installation::
|
||||||
|
* Setup::
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Introduction, Configuration, Top, Top
|
||||||
@section Introduction
|
@section Introduction
|
||||||
|
|
||||||
If you are installing this package as part of the GNUstep core
|
If you are installing this package as part of the GNUstep core
|
||||||
|
@ -14,13 +23,11 @@ configuration options as with gstep-make.
|
||||||
|
|
||||||
Also make sure you've read the machine-specific instructions for your
|
Also make sure you've read the machine-specific instructions for your
|
||||||
particular operating system and CPU. These instructions come with the
|
particular operating system and CPU. These instructions come with the
|
||||||
core libraries and are also located at the GNUstep web site at
|
GNUstep-HOWTO and are also located at the GNUstep web site at
|
||||||
@url{http://www.gnustep.org}.
|
@url{http://www.gnustep.org}.
|
||||||
|
|
||||||
@section Additional Libraries
|
@node Configuration, Installation, Introduction, Top
|
||||||
|
|
||||||
@section Configuration
|
@section Configuration
|
||||||
@end ifclear
|
|
||||||
|
|
||||||
The GNUstep packages uses the Autoconf mechanism for
|
The GNUstep packages uses the Autoconf mechanism for
|
||||||
configuration; it checks some host capabilties which are used by
|
configuration; it checks some host capabilties which are used by
|
||||||
|
@ -60,6 +67,13 @@ switches, shared and debug. As in ``make shared=no debug=yes'' (Make sure
|
||||||
you use the same switches for every package you compile, and also when
|
you use the same switches for every package you compile, and also when
|
||||||
you install).
|
you install).
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Alternate Libraries::
|
||||||
|
* Cross-Compiling::
|
||||||
|
* Flat Structure::
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Alternate Libraries, Cross-Compiling, Configuration, Configuration
|
||||||
@subsection Alternate Library Setup
|
@subsection Alternate Library Setup
|
||||||
|
|
||||||
You can specify compilation of alternate libraries by using the
|
You can specify compilation of alternate libraries by using the
|
||||||
|
@ -74,79 +88,8 @@ to compile with the xdps library rather than the default xgps backend.
|
||||||
IMPORTANT: The xdps backend is still experimental. Do not use it unless
|
IMPORTANT: The xdps backend is still experimental. Do not use it unless
|
||||||
you are willing to deal with PostScript problems and other bugs.
|
you are willing to deal with PostScript problems and other bugs.
|
||||||
|
|
||||||
|
@node Cross-Compiling, Flat Structure, Alternate Libraries, Configuration
|
||||||
@subsection Reading Command-Line Arguments
|
@subsection Configuring the GNUstep makefile package for a cross-compile target
|
||||||
|
|
||||||
There are two features that change how GNUstep gets access to
|
|
||||||
command-line arguments and environment variables (normally passed to
|
|
||||||
the program in the @code{main()} function. These features are
|
|
||||||
@code{--enable-pass-arguments} and the @code{--enable-fake-main}
|
|
||||||
option(s).
|
|
||||||
|
|
||||||
The fake-main option @emph{secretly} renames the @code{main()} function
|
|
||||||
and substitutes it's own function which stores the command line
|
|
||||||
arguments before calling the real main.
|
|
||||||
|
|
||||||
The pass-arguments option absolves GNUstep of any effort to get the
|
|
||||||
command-line arguments and instead forces the developer to insert the
|
|
||||||
line
|
|
||||||
|
|
||||||
@example
|
|
||||||
[NSProcessInfo initializeWithArguments:argv count:argc environment:env];
|
|
||||||
@end example
|
|
||||||
|
|
||||||
in the @code{main()} function of their program.
|
|
||||||
|
|
||||||
Normally, the configure script will determine if a program
|
|
||||||
can read process information directly from the system (for use by the
|
|
||||||
class NSProcessInfo) and enable or disable the fake-main hack
|
|
||||||
automatically, but if you find that configure is not doing this
|
|
||||||
correctly, you can force the fake-main hack to be used, which will
|
|
||||||
always work. Note that if the fake-main hack is enabled, you need to
|
|
||||||
include the header file GSConfig.h in you main program -- this is done
|
|
||||||
by default if you include NSObject.h or Foundation.h. If you want to
|
|
||||||
avoid the whole idea of the fake-main hack, you can use the
|
|
||||||
pass-arguments option. In this case you will be forced to call the
|
|
||||||
NSProcessInfo initializeWithArguments method to pass the program
|
|
||||||
arguments to NSProcessInfo (This would be done automatically if you use
|
|
||||||
the NSApplicationMain function in a gui application).
|
|
||||||
|
|
||||||
@subsection FFI Library
|
|
||||||
|
|
||||||
GNUstep's NSInvocations and Distributed Objects code involves detailed
|
|
||||||
manipulation of function (method) calls, which does not work on all
|
|
||||||
machine architectures. A more robust and portable solution is to use a
|
|
||||||
library that implements a Foreign-Function Interface (FFI), such as the
|
|
||||||
ffcall libraries.
|
|
||||||
|
|
||||||
Use of the ffcall libraries are now @emph{highly recommended} for in the
|
|
||||||
GNUstep system. The old gcc __builtin_apply method used previously is
|
|
||||||
no longer supported and may at some time in the future be removed entirely.
|
|
||||||
Failure to use the ffcall libraries will make GNUstep's Distributed Objects
|
|
||||||
system incompatible with other GNUstep systems. The ffcall library is
|
|
||||||
required on most non-x86 machines for proper operation of invocations and DO.
|
|
||||||
|
|
||||||
For this to work, you need to have the ffcall libraries, which you can
|
|
||||||
get from @url{ftp://ftp.santafe.edu/pub/gnu/} or
|
|
||||||
@url{http://clisp.cons.org/~haible/}. You also need to have a special
|
|
||||||
version of the Objective-C library (as of gcc 2.95.x the required hooks
|
|
||||||
are not in the standard library). You can get this library from
|
|
||||||
@url{ftp://www.gnustep.org/pub/gnustep/libs/libobjc-20010105.tar.gz} or
|
|
||||||
patch the standard library with the patch at
|
|
||||||
@url{ftp://www.gnustep.org/pub/gnustep/libs/patches/libobjc-ffi.patch}.
|
|
||||||
|
|
||||||
Note that the ffcall libraries are GPL, not LGPL, but the copyright
|
|
||||||
holder has created a special exception when ffcall is linked with GNUstep:
|
|
||||||
|
|
||||||
@example
|
|
||||||
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.
|
|
||||||
@end example
|
|
||||||
|
|
||||||
Make sure you specify this option when configuring gstep-base also.
|
|
||||||
|
|
||||||
@section Configuring the GNUstep makefile package for a cross-compile target
|
|
||||||
|
|
||||||
By default when you run configure, it assumes that you want to create
|
By default when you run configure, it assumes that you want to create
|
||||||
executables for the same host that you are compiling on; however, the
|
executables for the same host that you are compiling on; however, the
|
||||||
|
@ -179,7 +122,8 @@ make install
|
||||||
make install
|
make install
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@section Configuring the GNUstep makefile package for a flattened structure
|
@node Flat Structure, , Cross-Compiling, Configuration
|
||||||
|
@subsection Configuring the GNUstep makefile package for a flattened structure
|
||||||
|
|
||||||
On systems where you know you are only interested in supporting a single
|
On systems where you know you are only interested in supporting a single
|
||||||
operating system, cpu type, and library combination, it's possible to
|
operating system, cpu type, and library combination, it's possible to
|
||||||
|
@ -192,7 +136,7 @@ in a @code{$(GNUSTEP_CPU)/$(GNUSTEP_OS)/$(LIBRARY_COMBO)} subdirectory.
|
||||||
You lose a lot of versatility with this layout, but it's simpler (less
|
You lose a lot of versatility with this layout, but it's simpler (less
|
||||||
intimidating) for naive users to handle.
|
intimidating) for naive users to handle.
|
||||||
|
|
||||||
@ifclear HOWTO
|
@node Installation, Setup, Configuration, Top
|
||||||
@section Installation
|
@section Installation
|
||||||
|
|
||||||
After you configure the GNUstep makefile package, then you need to
|
After you configure the GNUstep makefile package, then you need to
|
||||||
|
@ -210,20 +154,32 @@ some minor administration to be performed. Based upon whether you are
|
||||||
setting up the GNUstep environment for a single user or all users on
|
setting up the GNUstep environment for a single user or all users on
|
||||||
your system, perform the appropriate step below.
|
your system, perform the appropriate step below.
|
||||||
|
|
||||||
@section Setting up the GNUstep environment for all users
|
@node Setup, , Installation, Top
|
||||||
|
@section Setting up the GNUstep
|
||||||
|
|
||||||
The GNUstep environment and thus usage of the makefile package is
|
@menu
|
||||||
based almost solely upon the GNUSTEP_SYSTEM_ROOT environment variable.
|
* Multi-User::
|
||||||
So essentially the setup involved is to make sure that the variable is
|
* Single-User::
|
||||||
defined for all users. The GNUstep.sh file within the makefile
|
@end menu
|
||||||
package contains all of the environment variable settings required, so
|
|
||||||
you want to call that shell. For most UNIX systems, the easiest way
|
@node Multi-User, Single-User, Setup, Setup
|
||||||
to do that is to modify the system rc.local file which is executed
|
@subsection Setting up the GNUstep environment for all users
|
||||||
upon system startup; add lines similar to these:
|
|
||||||
|
The GNUstep environment and thus usage of the makefile package is based
|
||||||
|
almost solely upon the GNUSTEP_SYSTEM_ROOT environment variable. So
|
||||||
|
essentially the setup involved is to make sure that the variable is
|
||||||
|
defined for all users. The GNUstep.sh file within the makefile package
|
||||||
|
contains all of the environment variable settings required, so you want
|
||||||
|
to call that shell. Some systems, like GNU/Linux have an
|
||||||
|
@file{/etc/profile.d} directory where scripts can be executed
|
||||||
|
automatically. Just copy GNUstep.sh to this directory for it to
|
||||||
|
work. For other UNIX systems, the easiest way to do that is to modify
|
||||||
|
the system rc.local file which is executed upon system startup; add
|
||||||
|
lines similar to these:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
# Setup for the GNUstep environment
|
# Setup for the GNUstep environment
|
||||||
. /usr/GNUstep/Makefiles/GNUstep.sh
|
. /usr/GNUstep/System/Makefiles/GNUstep.sh
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
This will source in the GNUstep.sh file and set the environment
|
This will source in the GNUstep.sh file and set the environment
|
||||||
|
@ -239,12 +195,13 @@ $GNUSTEP_USER_ROOT:$GNUSTEP_LOCAL_ROOT:$GNUSTEP_SYSTEM_ROOT
|
||||||
which might look something like this:
|
which might look something like this:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
~/GNUstep:/usr/GNUstep/Local:/usr/GNUstep
|
~/GNUstep:/usr/GNUstep/Local:/usr/GNUstep/System
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
when all is done.
|
when all is done.
|
||||||
|
|
||||||
@section Setting up the GNUstep environment for a single user
|
@node Single-User, , Multi-User, Setup
|
||||||
|
@subsection Setting up the GNUstep environment for a single user
|
||||||
|
|
||||||
The GNUstep environment and thus usage of the makefile package is
|
The GNUstep environment and thus usage of the makefile package is
|
||||||
based almost solely upon the GNUSTEP_SYSTEM_ROOT environment variable.
|
based almost solely upon the GNUSTEP_SYSTEM_ROOT environment variable.
|
||||||
|
@ -262,11 +219,4 @@ you can add the following lines to that file:
|
||||||
This will source in the GNUstep.sh file and set the environment
|
This will source in the GNUstep.sh file and set the environment
|
||||||
variables; thus making them available for the user.
|
variables; thus making them available for the user.
|
||||||
|
|
||||||
@include end.texi
|
@bye
|
||||||
@end ifclear
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -584,136 +584,33 @@ directory. Typically this is either @code{$(GNUSTEP_SYSTEM_ROOT)}),
|
||||||
it defaults to @code{$(GNUSTEP_LOCAL_ROOT)}.
|
it defaults to @code{$(GNUSTEP_LOCAL_ROOT)}.
|
||||||
@end defvr
|
@end defvr
|
||||||
|
|
||||||
@defvr {RPM} PACKAGE_SOURCE
|
@defvr {RPM} RPM_DISABLE_RELOCATABLE
|
||||||
This is typically set to the location and name of the original source
|
Set this to @code{YES} if the package must be in @code{$(GNUSTEP_SYSTEM_ROOT)}
|
||||||
file. For example,
|
and is not relocatable.
|
||||||
@file{ftp://ftp.gnustep.org/pub/gnustep/libs/libobjc-%@{ver@}.tar.gz}.
|
|
||||||
Notice the @file{%@{ver@}} construct which is a rpm macro that gets
|
|
||||||
replaced by the version number of the package.
|
|
||||||
@end defvr
|
@end defvr
|
||||||
|
|
||||||
@defvr {RPM} PACKAGE_COPYRIGHT
|
@defvr {RPM} PACKAGE_NEEDS_CONFIGURE
|
||||||
This should describe the license the package is released under, such as
|
Set this to @code{YES} if a configure script needs to be run before
|
||||||
@code{GPL}.
|
compilation
|
||||||
@end defvr
|
@end defvr
|
||||||
|
|
||||||
@defvr {RPM} PACKAGE_SUMMARY
|
In addition you need to provide a stub spec file named for the package
|
||||||
This is a short (one line) summary of the package.
|
name, such as this example @file{libobjc.spec.in} file:
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} PACKAGE_DESCRIPTION
|
@example
|
||||||
This is a longer description of the package. Note that the text in this
|
Release: 1
|
||||||
variable is formated like a printf statement, so remember to add
|
Source: ftp://ftp.gnustep.org/pub/gnustep/libs/%@{gs_name@}-%@{gs_version@}.
|
||||||
@code{\n} and other appropriate formatting characters here.
|
tar.gz
|
||||||
@end defvr
|
Copyright: GPL
|
||||||
|
Group: Development/Libraries
|
||||||
@defvr {RPM} PACKAGER
|
Summary: Objective-C Runtime Library
|
||||||
Set this to the name and e-mail address of the packager. Note that
|
Packager: Adam Fedor <fedor@@gnu.org>
|
||||||
these variables are set via a shell script so you should escape
|
Vendor: The GNUstep Project
|
||||||
the standard e-mail braces (e.g. @code{Mr. GNUstep \<gnustep@@gnustep.org\>}).
|
URL: http://www.gnustep.org/
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} PACKAGE_URL
|
|
||||||
Set this to a URL which provides more information about the package.
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_GROUP
|
|
||||||
The project group that the project falls under. such as
|
|
||||||
@code{Applications/Productivity}. See the rpm documentation
|
|
||||||
(@file{GROUPS}) for a list of valid groups. @file{rpm.make} tries to set
|
|
||||||
a reasonable value, but it is rarely correct.
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@@defvr {RPM} PACKAGE_SUMMARY_DEVEL
|
|
||||||
Library projects generate both a user rpm and a @file{devel} rpm. This
|
|
||||||
variable is used to describe the contents of the devel rpm. Typically it
|
|
||||||
would be something like @code{Headers and other files for developing
|
|
||||||
projects with the $(PACKAGE_NAME) library}. This varaible is only used
|
|
||||||
for library projects.
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} PACKAGE_DESCRIPTION_DEVEL
|
|
||||||
This is the description for the devel rpm package. See the
|
|
||||||
@code{PACKAGE_DESCRIPTION} variable for more information.
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
The following variables are not required, and are generally not needed
|
|
||||||
for most normal projects. Complex or speciallized projects that perform
|
|
||||||
compilation or installation outside the normal GNUstep system might
|
|
||||||
need to use some of these to customize the spec file.
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_RELEASE
|
|
||||||
The rpm release number, which defaults to @code{1} if not set. You would
|
|
||||||
only need to change this if you made a new rpm release without changing
|
|
||||||
the original source (for instance, if the first rpm release was somehow
|
|
||||||
corrupted).
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
defvr {RPM} RPM_DIST
|
|
||||||
Set to the rpm distributor
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_VENDOR
|
|
||||||
Set to the rpm vendor
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_CONFLICTS
|
|
||||||
A list of packages with which this package conflicts.
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_REQUIRES
|
|
||||||
A list of packages that this package requires.
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_SETUP
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_CONFIGURE
|
|
||||||
A shell command that provides additional configuration, such as a
|
|
||||||
configure script
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_ADDITIONAL_INSTALL
|
|
||||||
Additional installation instructions (beyond @code{make install}).
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_POST
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_PREUNINSTALL
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_POSTUNINSTALL
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_FILELIST
|
|
||||||
Additional files that should be included in the package. Note this text
|
|
||||||
is formated with printf, so insert a @code{\n} after each file.
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_FILELIST_DEVEL
|
|
||||||
Additional files that should be included in the devel package. Note this text
|
|
||||||
is formated with printf, so insert a @code{\n} after each file.
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_DIRLIST
|
|
||||||
Additional dirs that are owned by the package. Note this text
|
|
||||||
is formated with printf, so insert a @code{\n} after each file.
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_DIRLIST_DEVEL
|
|
||||||
Additional dirs that are owned by the devel package. Note this text
|
|
||||||
is formated with printf, so insert a @code{\n} after each file.
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_CONFLICTS_DEVEL
|
|
||||||
Packages that conflict with the devel package
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
@defvr {RPM} RPM_REQUIRES_DEVEL
|
|
||||||
Packages required by the devel package.
|
|
||||||
@end defvr
|
|
||||||
|
|
||||||
|
%description
|
||||||
|
Library containing the Objective-C runtime.
|
||||||
|
@end example
|
||||||
|
|
||||||
@node service.make, subproject.make, rpm.make, Project Types
|
@node service.make, subproject.make, rpm.make, Project Types
|
||||||
@subsection Services (@file{service.make})
|
@subsection Services (@file{service.make})
|
||||||
|
|
|
@ -9,6 +9,20 @@
|
||||||
|
|
||||||
The currently released version is @samp{@value{GNUSTEP-MAKE-VERSION}}.
|
The currently released version is @samp{@value{GNUSTEP-MAKE-VERSION}}.
|
||||||
|
|
||||||
|
@section Changes in version @samp{0.9.1}
|
||||||
|
|
||||||
|
Make has been reoganized so that it only relies on libraries and other things
|
||||||
|
that are necessary for the Makefile package itself. Any libraries wanting to
|
||||||
|
add extra package information can do so by installing a make stub in the
|
||||||
|
@file{Additional} directory. This greatly simplifies compilation and packaging.
|
||||||
|
|
||||||
|
@itemize @bullet
|
||||||
|
@item Javadoc support added.
|
||||||
|
@item debian directory added for dpkg
|
||||||
|
@item RPM support rewritten from scratch.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
@ifclear ANNOUNCE-ONLY
|
||||||
@section Changes in version @samp{0.9.0}
|
@section Changes in version @samp{0.9.0}
|
||||||
|
|
||||||
ffcall library is highly recommended for use with the GNUstep base
|
ffcall library is highly recommended for use with the GNUstep base
|
||||||
|
@ -23,7 +37,6 @@ package. See the INSTALL file.
|
||||||
@item Added support for Frameworks
|
@item Added support for Frameworks
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@ifclear ANNOUNCE-ONLY
|
|
||||||
@section Noteworthy changes in version @samp{0.6.6}
|
@section Noteworthy changes in version @samp{0.6.6}
|
||||||
|
|
||||||
The GNUstep system libraries are now installed in a separate system root
|
The GNUstep system libraries are now installed in a separate system root
|
||||||
|
|
100
INSTALL
100
INSTALL
|
@ -4,7 +4,7 @@ GNUstep makefile package installation
|
||||||
Introduction
|
Introduction
|
||||||
============
|
============
|
||||||
|
|
||||||
If you are installing this package as part of the GNUstep core
|
If you are installing this package as part of the GNUstep core
|
||||||
libraries, read the file GNUstep-HOWTO for more complete instructions on
|
libraries, read the file GNUstep-HOWTO for more complete instructions on
|
||||||
how to install the entire GNUstep package (including this package).
|
how to install the entire GNUstep package (including this package).
|
||||||
GNUstep-HOWTO comes with the core distribution and also is located at
|
GNUstep-HOWTO comes with the core distribution and also is located at
|
||||||
|
@ -15,12 +15,9 @@ configuration options as with gstep-make.
|
||||||
|
|
||||||
Also make sure you've read the machine-specific instructions for your
|
Also make sure you've read the machine-specific instructions for your
|
||||||
particular operating system and CPU. These instructions come with the
|
particular operating system and CPU. These instructions come with the
|
||||||
core libraries and are also located at the GNUstep web site at
|
GNUstep-HOWTO and are also located at the GNUstep web site at
|
||||||
<http://www.gnustep.org>.
|
<http://www.gnustep.org>.
|
||||||
|
|
||||||
Additional Libraries
|
|
||||||
====================
|
|
||||||
|
|
||||||
Configuration
|
Configuration
|
||||||
=============
|
=============
|
||||||
|
|
||||||
|
@ -70,78 +67,8 @@ backend. IMPORTANT: The xdps backend is still experimental. Do not use
|
||||||
it unless you are willing to deal with PostScript problems and other
|
it unless you are willing to deal with PostScript problems and other
|
||||||
bugs.
|
bugs.
|
||||||
|
|
||||||
Reading Command-Line Arguments
|
|
||||||
------------------------------
|
|
||||||
|
|
||||||
There are two features that change how GNUstep gets access to
|
|
||||||
command-line arguments and environment variables (normally passed to
|
|
||||||
the program in the `main()' function. These features are
|
|
||||||
`--enable-pass-arguments' and the `--enable-fake-main' option(s).
|
|
||||||
|
|
||||||
The fake-main option _secretly_ renames the `main()' function and
|
|
||||||
substitutes it's own function which stores the command line arguments
|
|
||||||
before calling the real main.
|
|
||||||
|
|
||||||
The pass-arguments option absolves GNUstep of any effort to get the
|
|
||||||
command-line arguments and instead forces the developer to insert the
|
|
||||||
line
|
|
||||||
|
|
||||||
[NSProcessInfo initializeWithArguments:argv count:argc environment:env];
|
|
||||||
|
|
||||||
in the `main()' function of their program.
|
|
||||||
|
|
||||||
Normally, the configure script will determine if a program can read
|
|
||||||
process information directly from the system (for use by the class
|
|
||||||
NSProcessInfo) and enable or disable the fake-main hack automatically,
|
|
||||||
but if you find that configure is not doing this correctly, you can
|
|
||||||
force the fake-main hack to be used, which will always work. Note that
|
|
||||||
if the fake-main hack is enabled, you need to include the header file
|
|
||||||
GSConfig.h in you main program - this is done by default if you include
|
|
||||||
NSObject.h or Foundation.h. If you want to avoid the whole idea of the
|
|
||||||
fake-main hack, you can use the pass-arguments option. In this case you
|
|
||||||
will be forced to call the NSProcessInfo initializeWithArguments method
|
|
||||||
to pass the program arguments to NSProcessInfo (This would be done
|
|
||||||
automatically if you use the NSApplicationMain function in a gui
|
|
||||||
application).
|
|
||||||
|
|
||||||
FFI Library
|
|
||||||
-----------
|
|
||||||
|
|
||||||
GNUstep's NSInvocations and Distributed Objects code involves
|
|
||||||
detailed manipulation of function (method) calls, which does not work
|
|
||||||
on all machine architectures. A more robust and portable solution is to
|
|
||||||
use a library that implements a Foreign-Function Interface (FFI), such
|
|
||||||
as the ffcall libraries.
|
|
||||||
|
|
||||||
Use of the ffcall libraries are now _highly recommended_ for in the
|
|
||||||
GNUstep system. The old gcc __builtin_apply method used previously is
|
|
||||||
no longer supported and may at some time in the future be removed
|
|
||||||
entirely. Failure to use the ffcall libraries will make GNUstep's
|
|
||||||
Distributed Objects system incompatible with other GNUstep systems. The
|
|
||||||
ffcall library is required on most non-x86 machines for proper
|
|
||||||
operation of invocations and DO.
|
|
||||||
|
|
||||||
For this to work, you need to have the ffcall libraries, which you
|
|
||||||
can get from <ftp://ftp.santafe.edu/pub/gnu/> or
|
|
||||||
<http://clisp.cons.org/~haible/>. You also need to have a special
|
|
||||||
version of the Objective-C library (as of gcc 2.95.x the required hooks
|
|
||||||
are not in the standard library). You can get this library from
|
|
||||||
<ftp://www.gnustep.org/pub/gnustep/libs/libobjc-20010105.tar.gz> or
|
|
||||||
patch the standard library with the patch at
|
|
||||||
<ftp://www.gnustep.org/pub/gnustep/libs/patches/libobjc-ffi.patch>.
|
|
||||||
|
|
||||||
Note that the ffcall libraries are GPL, not LGPL, but the copyright
|
|
||||||
holder has created a special exception when ffcall is linked with
|
|
||||||
GNUstep:
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
Make sure you specify this option when configuring gstep-base also.
|
|
||||||
|
|
||||||
Configuring the GNUstep makefile package for a cross-compile target
|
Configuring the GNUstep makefile package for a cross-compile target
|
||||||
===================================================================
|
-------------------------------------------------------------------
|
||||||
|
|
||||||
By default when you run configure, it assumes that you want to create
|
By default when you run configure, it assumes that you want to create
|
||||||
executables for the same host that you are compiling on; however, the
|
executables for the same host that you are compiling on; however, the
|
||||||
|
@ -170,7 +97,7 @@ for multiple targets then just perform the above steps multiple times.
|
||||||
make install
|
make install
|
||||||
|
|
||||||
Configuring the GNUstep makefile package for a flattened structure
|
Configuring the GNUstep makefile package for a flattened structure
|
||||||
==================================================================
|
------------------------------------------------------------------
|
||||||
|
|
||||||
On systems where you know you are only interested in supporting a
|
On systems where you know you are only interested in supporting a
|
||||||
single operating system, cpu type, and library combination, it's
|
single operating system, cpu type, and library combination, it's
|
||||||
|
@ -199,20 +126,25 @@ some minor administration to be performed. Based upon whether you are
|
||||||
setting up the GNUstep environment for a single user or all users on
|
setting up the GNUstep environment for a single user or all users on
|
||||||
your system, perform the appropriate step below.
|
your system, perform the appropriate step below.
|
||||||
|
|
||||||
|
Setting up the GNUstep
|
||||||
|
======================
|
||||||
|
|
||||||
Setting up the GNUstep environment for all users
|
Setting up the GNUstep environment for all users
|
||||||
================================================
|
------------------------------------------------
|
||||||
|
|
||||||
The GNUstep environment and thus usage of the makefile package is
|
The GNUstep environment and thus usage of the makefile package is
|
||||||
based almost solely upon the GNUSTEP_SYSTEM_ROOT environment variable.
|
based almost solely upon the GNUSTEP_SYSTEM_ROOT environment variable.
|
||||||
So essentially the setup involved is to make sure that the variable is
|
So essentially the setup involved is to make sure that the variable is
|
||||||
defined for all users. The GNUstep.sh file within the makefile package
|
defined for all users. The GNUstep.sh file within the makefile package
|
||||||
contains all of the environment variable settings required, so you want
|
contains all of the environment variable settings required, so you want
|
||||||
to call that shell. For most UNIX systems, the easiest way to do that
|
to call that shell. Some systems, like GNU/Linux have an
|
||||||
is to modify the system rc.local file which is executed upon system
|
`/etc/profile.d' directory where scripts can be executed automatically.
|
||||||
startup; add lines similar to these:
|
Just copy GNUstep.sh to this directory for it to work. For other UNIX
|
||||||
|
systems, the easiest way to do that is to modify the system rc.local
|
||||||
|
file which is executed upon system startup; add lines similar to these:
|
||||||
|
|
||||||
# Setup for the GNUstep environment
|
# Setup for the GNUstep environment
|
||||||
. /usr/GNUstep/Makefiles/GNUstep.sh
|
. /usr/GNUstep/System/Makefiles/GNUstep.sh
|
||||||
|
|
||||||
This will source in the GNUstep.sh file and set the environment
|
This will source in the GNUstep.sh file and set the environment
|
||||||
variables; thus making them available for all users. Before executing
|
variables; thus making them available for all users. Before executing
|
||||||
|
@ -224,12 +156,12 @@ it). By defualt, it's set to
|
||||||
|
|
||||||
which might look something like this:
|
which might look something like this:
|
||||||
|
|
||||||
~/GNUstep:/usr/GNUstep/Local:/usr/GNUstep
|
~/GNUstep:/usr/GNUstep/Local:/usr/GNUstep/System
|
||||||
|
|
||||||
when all is done.
|
when all is done.
|
||||||
|
|
||||||
Setting up the GNUstep environment for a single user
|
Setting up the GNUstep environment for a single user
|
||||||
====================================================
|
----------------------------------------------------
|
||||||
|
|
||||||
The GNUstep environment and thus usage of the makefile package is
|
The GNUstep environment and thus usage of the makefile package is
|
||||||
based almost solely upon the GNUSTEP_SYSTEM_ROOT environment variable.
|
based almost solely upon the GNUSTEP_SYSTEM_ROOT environment variable.
|
||||||
|
|
17
NEWS
17
NEWS
|
@ -1,7 +1,22 @@
|
||||||
NEWS
|
NEWS
|
||||||
****
|
****
|
||||||
|
|
||||||
The currently released version is `0.6.7'.
|
The currently released version is `0.9.0'.
|
||||||
|
|
||||||
|
Changes in version `0.9.1'
|
||||||
|
==========================
|
||||||
|
|
||||||
|
Make has been reoganized so that it only relies on libraries and
|
||||||
|
other things that are necessary for the Makefile package itself. Any
|
||||||
|
libraries wanting to add extra package information can do so by
|
||||||
|
installing a make stub in the `Additional' directory. This greatly
|
||||||
|
simplifies compilation and packaging.
|
||||||
|
|
||||||
|
* Javadoc support added.
|
||||||
|
|
||||||
|
* debian directory added for dpkg
|
||||||
|
|
||||||
|
* RPM support rewritten from scratch.
|
||||||
|
|
||||||
Changes in version `0.9.0'
|
Changes in version `0.9.0'
|
||||||
==========================
|
==========================
|
||||||
|
|
Loading…
Reference in a new issue