diff --git a/ChangeLog b/ChangeLog index 69c7023b..45781756 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2001-02-21 Adam Fedor + + * Documentation/make.texi: Update + * Documentation/news.texi: Likewise + * Documentation/install.texi: Likewise + * NEWS, INSTALL: Regenerate + 2001-02-19 Nicola Pero * configure.in: Accept --with-local-root and --with-network-root diff --git a/Documentation/install.texi b/Documentation/install.texi index f9e5288d..d5b23ec8 100644 --- a/Documentation/install.texi +++ b/Documentation/install.texi @@ -1,6 +1,15 @@ -@ifclear HOWTO + +@node Top, Introduction, (dir), (dir) @chapter GNUstep makefile package installation +@menu +* Introduction:: +* Configuration:: +* Installation:: +* Setup:: +@end menu + +@node Introduction, Configuration, Top, Top @section Introduction 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 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}. -@section Additional Libraries - +@node Configuration, Installation, Introduction, Top @section Configuration -@end ifclear The GNUstep packages uses the Autoconf mechanism for 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 install). +@menu +* Alternate Libraries:: +* Cross-Compiling:: +* Flat Structure:: +@end menu + +@node Alternate Libraries, Cross-Compiling, Configuration, Configuration @subsection Alternate Library Setup 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 you are willing to deal with PostScript problems and other bugs. - -@subsection 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 @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 +@node Cross-Compiling, Flat Structure, Alternate Libraries, Configuration +@subsection Configuring the GNUstep makefile package for a cross-compile target 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 @@ -179,7 +122,8 @@ make install make install @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 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 intimidating) for naive users to handle. -@ifclear HOWTO +@node Installation, Setup, Configuration, Top @section Installation 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 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 -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. For most 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: +@menu +* Multi-User:: +* Single-User:: +@end menu + +@node Multi-User, Single-User, Setup, Setup +@subsection Setting up the GNUstep environment for all users + +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 # Setup for the GNUstep environment -. /usr/GNUstep/Makefiles/GNUstep.sh +. /usr/GNUstep/System/Makefiles/GNUstep.sh @end example 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: @example -~/GNUstep:/usr/GNUstep/Local:/usr/GNUstep +~/GNUstep:/usr/GNUstep/Local:/usr/GNUstep/System @end example 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 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 variables; thus making them available for the user. -@include end.texi -@end ifclear - - - - - - +@bye diff --git a/Documentation/make.texi b/Documentation/make.texi index f5130dea..163e86f4 100644 --- a/Documentation/make.texi +++ b/Documentation/make.texi @@ -584,136 +584,33 @@ directory. Typically this is either @code{$(GNUSTEP_SYSTEM_ROOT)}), it defaults to @code{$(GNUSTEP_LOCAL_ROOT)}. @end defvr -@defvr {RPM} PACKAGE_SOURCE -This is typically set to the location and name of the original source -file. For example, -@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. +@defvr {RPM} RPM_DISABLE_RELOCATABLE +Set this to @code{YES} if the package must be in @code{$(GNUSTEP_SYSTEM_ROOT)} +and is not relocatable. @end defvr -@defvr {RPM} PACKAGE_COPYRIGHT -This should describe the license the package is released under, such as -@code{GPL}. +@defvr {RPM} PACKAGE_NEEDS_CONFIGURE +Set this to @code{YES} if a configure script needs to be run before +compilation @end defvr -@defvr {RPM} PACKAGE_SUMMARY -This is a short (one line) summary of the package. -@end defvr +In addition you need to provide a stub spec file named for the package +name, such as this example @file{libobjc.spec.in} file: -@defvr {RPM} PACKAGE_DESCRIPTION -This is a longer description of the package. Note that the text in this -variable is formated like a printf statement, so remember to add -@code{\n} and other appropriate formatting characters here. -@end defvr - -@defvr {RPM} PACKAGER -Set this to the name and e-mail address of the packager. Note that -these variables are set via a shell script so you should escape -the standard e-mail braces (e.g. @code{Mr. GNUstep \}). -@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 +@example +Release: 1 +Source: ftp://ftp.gnustep.org/pub/gnustep/libs/%@{gs_name@}-%@{gs_version@}. +tar.gz +Copyright: GPL +Group: Development/Libraries +Summary: Objective-C Runtime Library +Packager: Adam Fedor +Vendor: The GNUstep Project +URL: http://www.gnustep.org/ +%description +Library containing the Objective-C runtime. +@end example @node service.make, subproject.make, rpm.make, Project Types @subsection Services (@file{service.make}) diff --git a/Documentation/news.texi b/Documentation/news.texi index 67836463..d601ac24 100644 --- a/Documentation/news.texi +++ b/Documentation/news.texi @@ -9,6 +9,20 @@ 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} 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 @end itemize -@ifclear ANNOUNCE-ONLY @section Noteworthy changes in version @samp{0.6.6} The GNUstep system libraries are now installed in a separate system root diff --git a/INSTALL b/INSTALL index 07cb1afa..dbfc0093 100644 --- a/INSTALL +++ b/INSTALL @@ -4,7 +4,7 @@ GNUstep makefile package installation 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 how to install the entire GNUstep package (including this package). 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 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 . -Additional Libraries -==================== - 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 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 or -. 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 - or -patch the standard library with the patch at -. - - 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 -=================================================================== +------------------------------------------------------------------- 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 @@ -170,7 +97,7 @@ for multiple targets then just perform the above steps multiple times. make install Configuring the GNUstep makefile package for a flattened structure -================================================================== +------------------------------------------------------------------ On systems where you know you are only interested in supporting a 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 your system, perform the appropriate step below. +Setting up the GNUstep +====================== + Setting up the GNUstep environment for all users -================================================ +------------------------------------------------ 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. For most 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: +to call that shell. Some systems, like GNU/Linux have an +`/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: # 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 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: - ~/GNUstep:/usr/GNUstep/Local:/usr/GNUstep + ~/GNUstep:/usr/GNUstep/Local:/usr/GNUstep/System when all is done. Setting up the GNUstep environment for a single user -==================================================== +---------------------------------------------------- The GNUstep environment and thus usage of the makefile package is based almost solely upon the GNUSTEP_SYSTEM_ROOT environment variable. diff --git a/NEWS b/NEWS index e9889660..d524f5f4 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,22 @@ 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' ==========================