merge in fixes from trunk

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/branches/gnustep_stable_20070311@24938 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-MacDonald 2007-03-29 16:48:25 +00:00
parent 0be373f3e0
commit 5517909208
18 changed files with 635 additions and 171 deletions

115
ChangeLog
View file

@ -1,3 +1,116 @@
2007-03-21 Nicola Pero <nicola.pero@meta-innovation.com>
* Documentation/README.MinGW: Warn people not to install libxslt
(Reported by Xavier Glattard <xavier.glattard@online.fr> and
Christopher Armstrong <carmstrong@fastmail.com.au>).
2007-03-17 Nicola Pero <nicola.pero@meta-innovation.com>
* Documentation/gnustep-howto.texi: Updated. In particular:
removed all references to obsolete GNUSTEP_SYSTEM_ROOT, mention
the existence of various filesystem layouts and of the new setup
options, and updated explanations of how to checkout the source
code.
* Documentation/machines.texi (RedHat/Intel): Renamed to
'RedHat/i386'; marked as 'Supported' and added some doc.
(CentOS/i386): New section.
(FedoraCore/i386): New section.
2007-03-17 Nicola Pero <nicola.pero@meta-innovation.com>
* Documentation/make.texi: Changed the basic example to use
tool.make instead of objc.make. Updated some comments.
(Directory Paths): Updated documentation; in particular,
documented GNUSTEP_ADMIN_APPS, GNUSTEP_WEB_APPS,
GNUSTEP_ADMIN_TOOLS, GNUSTEP_LIBRARY, GNUSTEP_DOC,
GNUSTEP_DOC_MAN, GNUSTEP_DOC_INFO.
2007-03-17 Nicola Pero <nicola.pero@meta-innovation.com>
* configure.ac: Added -shared-libgcc when linking with ObjC
exceptions (Suggestion from Andrew Pinski).
* common.make (INTERNAL_LDFLAGS): Same change.
* configure: Regenerated.
2007-03-16 Nicola Pero <nicola.pero@meta-innovation.com>
Implemented rebuilding Info-gnustep.plist when xxxInfo.plist is
changed (and palette.table from xxxpalette.table for palettes).
For applications, automated detecting xxxInfo.cplist and
preprocessing it, so that xxx_PREPROCESS_INFO_PLIST in
GNUmakefiles is now obsolete and can be removed.
* Instance/application.make (GNUSTEP_PLIST_DEPEND): Automatically
add xxxInfo.plist if the file is there; if not, automatically add
xxxInfo.cplist if there. Removed xxx_PREPROCESS_INFO_PLIST.
* Instance/bundle.make: Have Info-gnustep.plist automatically
depend on xxxInfo.plist if it exists.
* Instance/framework.make: Same change.
* Instance/gswapp.make: Same change.
* Instance/service.make: Same change.
* Instance/palette.make Have Info-gnustep.plist automatically
depend on xxxInfo.plist if it exists, and palette.table
automatically depend on xxxpalette.table if it exists.
* Instance/framework.make (FRAMEWORK_INFO_PLIST_FILE): New
variable fixing the fact that frameworks on gnu-gnu-gnu were
creating Info.plist instead of Info-gnustep.plist.
* Instance/service.make: Fixed rules to only cat xxxInfo.plist if
it exists. Print a warning if it doesn't, as services need to
have one to be useful.
* Version: bumped to 1.98.2.
2007-03-16 Xavier Glattard <xavier.glattard@online.fr>
* configure.ac (CYGWIN): Set to no on MinGW.
* configure: Regenerated.
2007-03-15 Chris Vetter <chris.vetter@gmail.com>
* mac: New filesystem layout (comments at the top of the file
edited by Nicola).
2007-03-15 Nicola Pero <nicola.pero@meta-innovation.com>
* configure.ac: Added -fexceptions as well when trying the
ObjC exception test program. Restore CFLAGS and LIBS after
the ObjC exception test.
* configure: Regenerated.
* common.make (OBJCFLAGS, INTERNAL_LDFLAGS): Add -fexceptions when
ObjC exceptions are enabled.
2007-03-13 Nicola Pero <nicola.pero@meta-innovation.com>
* Instance/framework.make (CURRENT_VERSION_NAME): If no
CURRENT_VERSION_NAME is set, use INTERFACE_VERSION for it (instead
of 'A'), so that by default the shared object and the resources
follow a similar versioning (can still be configured, as before,
to have separated versioning).
* Master/rules.make (%.variables, %.subprojects): Corresponding
update.
2007-03-13 Nicola Pero <nicola.pero@meta-innovation.com>
* Instance/framework.make
(GNUSTEP_BUILD_DIR/GNUSTEP_INSTANCE.framework/GNUSTEP_TARGET_LDIR):
New rule to create the directory when non-flattened.
(GNUSTEP_BUILD_DIR/GNUSTEP_INSTANCE.framework/GNUSTEP_TARGET_LDIR/GNUSTEP_INSTANCE):
Depend on the new rule; use REL_PATH_SCRIPT to compute correct
symlink when non-flattened.
2007-03-13 Nicola Pero <nicola.pero@meta-innovation.com>
* Instance/resource-set.make (RESOURCE_FILES_DIR): New variable.
($(RESOURCE_FILES_INSTALL_DIR)): Added missing CHOWN.
(LOCALIZED_RESOURCE_DIRS): New variable; implemented rules to
support it.
(internal-resource_set-install_): Create the
LOCALIZED_RESOURCE_DIRS if needed. Use 'cp -rf' instead of
INSTALL_DATA to install RESOURCE_FILES and
LOCALIZED_RESOURCE_FILES so that directories can be used as well.
Do a final CHOWN to fixup ownership of all the installed stuff.
($(RESOURCE_FILES_INSTALL_DIR)/%): Do a CHOWN.
2007-03-09 Nicola Pero <nicola.pero@meta-innovation.com>
* Instance/library.make: Changed resource installation directory
@ -414,7 +527,7 @@
* Instance/Documentation/latex.make: Add correct extension to target.
Filter out 'no' when getting LATEX2HMTL exec.
* Instance/pallette.make: Link with all libs even on darwin.
* Instance/palette.make: Link with all libs even on darwin.
* target.make (darwin): Use gnu runtime as test for gnu compilation.
(Based on suggestions from Yves de Champlain).

View file

@ -258,6 +258,10 @@ make install
You should now have libxml2 installed on your system.
IMPORTANT: Do *not* install libxslt. It has been reported that
libxslt is currently built in the wrong way and will prevent anything
from linking correctly if you try to use it.
14. Installing gnustep-base
===========================

View file

@ -20,7 +20,7 @@ Last Update: @today{}
@page
@vskip 0pt plus 1filll
Copyright @copyright{} 1996 - 2002 Free Software Foundation, Inc.
Copyright @copyright{} 1996 - 2007 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
@ -38,7 +38,7 @@ any later version published by the Free Software Foundation.
This document explains how to build the different components of the
GNUstep core libraries and GNUstep Launchpad.
Copyright (C) 1996 - 2002 Free Software Foundation, Inc.
Copyright (C) 1996 - 2007 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Public License, Version 1.0 or
@ -170,12 +170,12 @@ Although it is not required, GNUstep will work much better if you use it
with the WindowMaker window manager.
Get WindowMaker from @url{http://www.windowmaker.info}.
@item gnustep-objc package (for gcc version < 3.0 ONLY or MINGW/Cygwin) (RECOMMENDED)
@item gnustep-objc package (REQUIRED BUT ONLY for gcc version < 3.0 or MINGW/Cygwin)
Note: Do not install this library unless you are sure you need it.
You probably don't need it except on MinGW and Cygwin (regardless of the
gcc version you have).
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.
This is a special version of the Objective-C runtime that is compiled
as a shared library.
It is available at @url{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.
@ -225,28 +225,41 @@ the gnustep-make Documentation directory (such as README.MingW for Windows).
@node Core Package, , Compiling and Installing, Compiling and Installing
@section Installing the Core Libraries
The GNUstep packages uses the Autoconf mechanism for
configuration; it checks some host capabilties which are used by
all GNUstep software. To configure just type:
The GNUstep packages uses the Autoconf mechanism for configuration; it
checks some host capabilities which are used by all GNUstep software.
The first package you will compile is gnustep-make. To configure
gnustep-make just type:
@example
./configure
@end example
The GNUstep makefile package needs a root directory. If the
GNUSTEP_SYSTEM_ROOT environment variable is set then configure will
determine the root directory from its value (by removing the final
/System path component from it). You can also specify the root
directory when you run configure with the prefix paramater; the
following command makes /usr/local/GNUstep the root directory:
The GNUstep makefile package can be configured to use different types
of filesystem layouts. By default, GNUstep is installed with a
GNUstep filesystem layout into /usr/GNUstep. That is a good,
recommended default if you don't have an opinion on which filesystem
layout to use.
But you can also install it somewhere else by using the prefix
parameter; the following command makes /usr/local/GNUstep the root
directory:
@example
./configure --prefix=/usr/local/GNUstep
@end example
If you do not have the GNUSTEP_SYSTEM_ROOT environment variable set
and you do not specify a root directory when running configure, then
configure will use /usr/GNUstep as the default root directory.
You can also install GNUstep using an FHS layout (or some other filesystem layout
of your choice) by using the with-layout parameter; the following command
configures GNUstep to use the standard FHS (unix) filesystem layout:
@example
./configure --with-layout=fhs
@end example
In this document we will always present examples that assume that you
are using the default GNUstep filesystem layout in /usr/GNUstep. If
you are using a different layout, you will need to make the obvious
changes.
@menu
* Alternate Library Setup::
@ -272,15 +285,15 @@ make
make install
@end example
Start with the Makefile Pacakge (gnustep-make). After installing
gnustep-make you need to execute GNUstep's shell configuration
script, as follows:
Start with the Makefile Package (gnustep-make). After installing
gnustep-make you need to execute GNUstep's shell configuration script,
as follows:
@example
. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
@end example
before proceeding any further.
before proceeding any further.
NOTE for gcc 2.X or MinGW users: Now install gnustep-objc. Before building
gnustep-objc, edit the @file{GNUmakefile} and set the @var{THREADING}
@ -314,40 +327,71 @@ administrator to start the gdomap server using it.
@node Environment Setup, GNUstep Home, Additional Installation, Additional Installation
@section Environment Setup
Add the shell script @file{GNUstep.sh} located in the Makefile
package to your shell startup file (such as @file{.profile}). For instance,
if your GNUSTEP_SYSTEM_ROOT is @file{/usr/GNUstep/System},
You need to make sure your environment is properly setup in order to
compile and run GNUstep software. The steps to setup your environment
differ slightly depending on your filesystem layout.
There is a way of setting up your environment that always works:
sourcing the @file{GNUstep.sh} shell script before using GNUstep. The
shell script @file{GNUstep.sh} is located in the Makefile package; you
may want to add it to your shell startup file (such as
@file{.profile}). For instance, if you installed GNUstep with the
default GNUstep filesystem layout in @file{/usr/GNUstep}, then adding
@example
. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
@end example
in your @file{.profile} file will work (Note the period at the beginning
of the line, and the space between the period and the following path;
if your GNUSTEP_SYSTEM_ROOT is different, you need to replace
@file{/usr/GNUstep/System} with your GNUSTEP_SYSTEM_ROOT).
It defines environment variables that are needed to find
GNUstep files and executables. Users of csh need to use the
@file{GNUstep.csh} script. Read the make package @file{README} for more
info. Some systems, like GNU/Linux have an @file{/etc/profile.d}
directory where scripts can be executed automatically. If you want to
set up GNUstep for every user on your system, you can try
copying/linking the @file{GNUstep.sh} there. For csh or tcsh, try
in your @file{.profile} file will work (Note the period at the
beginning of the line, and the space between the period and the
following path; if you installed GNUstep somewhere else, you need to
replace @file{/usr/GNUstep/System/Library/Makefiles} with the path to
your @file{GNUstep.sh} script). The script defines environment
variables that are needed to find GNUstep files and executables.
Users of csh need to use the @file{GNUstep.csh} script. Read the make
package @file{README} for more info. Some systems, like GNU/Linux have
an @file{/etc/profile.d} directory where scripts can be executed
automatically. If you want to set up GNUstep for every user on your
system, you can try copying/linking the @file{GNUstep.sh} there. For
csh or tcsh, try
@example
source /usr/GNUstep/System/Library/Makefiles/GNUstep.csh
@end example
Finally, in most filesystem configuration it's also possible to
manually set up your environment by setting PATH, the linker library
paths and the @code{GNUSTEP_MAKEFILES} variable (instead of using
@file{GNUstep.sh}). For example, on GNU/Linux (with a default GNUstep
installation), instead of sourcing @file{GNUstep.sh} you could manually
add the Tools directories to your PATH:
@example
PATH="/usr/GNUstep/System/Tools:/usr/GNUstep/Local/Tools:$PATH"
@end example
manually add @file{/usr/GNUstep/System/Library/Libraries} and
@file{/usr/GNUstep/Local/Library/Libraries} to your
@file{/etc/ld.so.conf} file (don't forget to run @code{ldconfig} every
time you install a library), and set the environment variable
@code{GNUSTEP_MAKEFILES} when you want to compile something:
@example
GNUSTEP_MAKEFILES=/usr/GNUstep/System/Library/Makefiles
@end example
@node GNUstep Home, Time Zone, Environment Setup, Additional Installation
@section GNUstep Home
Your home GNUstep directory should be created automatically the first
time you use a GNUstep tool or application.
This is where user defaults are kept as well as
other user configuration files. User installed apps, libraries, etc
are also here (if the default user directory is used). By default this
is the directory @file{GNUstep} under your home directory, but you can change
this (see the gnustep-make installation documentation).
time you use a GNUstep tool or application. This is where user
defaults are kept as well as other user configuration files. User
installed apps, libraries, etc are also here (if the default user
directory is used). By default this is the directory @file{GNUstep}
under your home directory, but you can change this (see the
gnustep-make installation documentation).
@node Time Zone, GNUstep deamons, GNUstep Home, Additional Installation
@section Time Zone
@ -360,21 +404,23 @@ GNUstep defaults utility to set @kbd{Local Time Zone} to your local time
zone. Type something like @kbd{defaults write NSGlobalDomain "Local
Time Zone" GB}. Where @kbd{GB} is a time zone abbreviation.
See @file{$GNUSTEP_SYSTEM_ROOT/Library/Libraries/Resources/gnustep-bsae/NSTimeZones/zones} for typical time zones):
See
@file{/usr/GNUstep/System/Library/Libraries/gnustep-base/Versions/1.14/Resources/NSTimeZones/zones/}
(or equivalent on your system depending on your filesystem layout) for
typical time zones.
@node GNUstep deamons, , Time Zone, Additional Installation
@section GNUstep deamons
Set up your system to execute some GNUstep deamons. If you don't do
this, they will be started automatically when you run your first GNUstep
app:
Set up your system to execute some GNUstep deamons. This is optional
because if you don't do this, they will be started automatically when
you run your first GNUstep app:
@itemize @bullet
@item gdomap - Put this in a system startup file, like @file{/etc/rc.local} or @file{/etc/rc.d/rc.local} (customize for your system)
@example
GNUSTEP_SYSTEM_ROOT=/usr/GNUstep/System
if [ -f $GNUSTEP_SYSTEM_ROOT/Tools/gdomap ]; then
$GNUSTEP_SYSTEM_ROOT/Tools/gdomap
if [ -f /usr/GNUstep/System/Tools/gdomap ]; then
/usr/GNUstep/System/Tools/gdomap
fi
@end example
@item gdnc - Start after sourcing @file{GNUstep.sh} (e.g. in .profile)
@ -396,17 +442,17 @@ make_services
@node Tools and Applications, Machine Specific, Additional Installation, Top
@chapter Test Tools and Applications
Example applications are located in the gstep-examples package. To make these,
just uncompress and untar this package, cd to the appropriate
directory, and type make. You will need to install the GNUstep core libraries
first before doing this.
Example applications are located in the gstep-examples package. To
build these, just uncompress and untar this package, cd to the
appropriate directory, and type make. You will need to install the
GNUstep core libraries first before doing this.
To run the examples. Use the openapp utility that is part of the GNUstep
makefile package (and stored in
@file{$GNUSTEP_SYSTEM_ROOT/Tools}). Usage is:
To run the examples. Use the openapp utility that is part of the
GNUstep makefile package (and stored in
@file{/usr/GNUstep/System/Tools}). Usage is:
@example
openapp application [additional arguments to app]
openapp application_name [additional arguments to app]
@end example
Good Luck!
@ -426,16 +472,16 @@ to @url{http://www.gnustep.org/resources/sources.html} for information on how
to get the sourcecode.
If you haven't already done so, change to the directory, where you
want the source to reside. To get a list of potential modules to check out,
want the source to reside. To checkout all of the GNUstep repository,
type
@example
cvs -z3 checkout -c
svn co http://svn.gna.org/svn/gnustep/modules
@end example
For instance, to check our @file{core}, which contains all the GNUstep
code libraries:
To check out only the @file{core}, which contains all the GNUstep core
libraries:
@example
cvs -z3 checkout core
svn co http://svn.gna.org/svn/gnustep/modules/core
@end example
After you have checked out the source you can compile it as
@ -443,7 +489,7 @@ usual. To update the source, go into the directory of the source tree
you want to update, for example, go into 'base', and type:
@example
cvs -z3 update -Pd
svn update
@end example
You don't have to re-checkout after you have the source, just update!

View file

@ -23,6 +23,7 @@ GNUstep @email{bug-gnustep@@gnu.org}.
@menu
* Compilers::
* CentOS/i386::
* Darwin/ix86::
* Darwin/PowerPC::
* Debian/Alpha::
@ -30,6 +31,7 @@ GNUstep @email{bug-gnustep@@gnu.org}.
* Debian/em64t::
* Debian/PowerPC::
* Debian/SPARC::
* FedoraCore/i386::
* FreeBSD 5.x::
* FreeBSD 4.x::
* FreeBSD 3.x::
@ -47,7 +49,7 @@ GNUstep @email{bug-gnustep@@gnu.org}.
* Netwinder::
* OpenBSD 3.x::
* OSF/Alpha::
* RedHat/Intel::
* RedHat/i386::
* Slackware/Intel::
* Slackware/Sparc::
* Solaris 2.5.1/Sparc::
@ -63,7 +65,7 @@ GNUstep @email{bug-gnustep@@gnu.org}.
@end menu
@c -----------------------------------------
@node Compilers, Darwin/ix86, Machine Specific, Machine Specific
@node Compilers, CentOS/i386, Machine Specific, Machine Specific
@section Compilers
A recommended compiler is listed for each machine, if known. You should try
@ -132,7 +134,15 @@ setp procedures to run correctly.
@end table
@c -----------------------------------------
@node Darwin/ix86, Darwin/PowerPC, Compilers, Machine Specific
@node CentOS/i386, Darwin/ix86, Compilers, Machine Specific
@section CentOS/ix86 (@emph{Supported})
This RedHat variant is well-tested and well-supported (tested at least
up to CentOS release 4.4). For more information, please check the
section on RedHat/i386 below.
@c -----------------------------------------
@node Darwin/ix86, Darwin/PowerPC, CentOS/i386, Machine Specific
@section Darwin/ix86 (@emph{Unsupported})
Currently tested on Darwin 7.x
@ -234,13 +244,21 @@ Tested on 'unstable'.
Tested on sid.
@c -----------------------------------------
@node Debian/SPARC, FreeBSD 5.x, Debian/PowerPC, Machine Specific
@node Debian/SPARC, FedoraCore/i386, Debian/PowerPC, Machine Specific
@section Debian/SPARC (@emph{Release})
Tested on sid.
@c -----------------------------------------
@node FreeBSD 5.x, FreeBSD 4.x, Debian/SPARC, Machine Specific
@node FedoraCore/i386, FreeBSD 5.x, Debian/SPARC, Machine Specific
@section FedoraCore/ix86 (@emph{Supported})
This RedHat variant is well-tested and well-supported (tested at least
up to Fedora Core release 6). For more information, please check the
section on RedHat/i386 below.
@c -----------------------------------------
@node FreeBSD 5.x, FreeBSD 4.x, FedoraCore/i386, Machine Specific
@section FreeBSD 5.x (@emph{Supported})
Tested on 5.0, 5.1, 5.3
@ -501,7 +519,7 @@ Ports at
@url{http://mail.rochester.edu/~asveikau/gnustep-openbsd/}
@c -----------------------------------------
@node OSF/Alpha, RedHat/Intel, OpenBSD 3.x, Machine Specific
@node OSF/Alpha, RedHat/i386, OpenBSD 3.x, Machine Specific
@section OSF/Alpha (@emph{Needs Testing, Unstable})
@c Contact: suzukis@file.phys.tohoku.ac.jp
@ -525,11 +543,29 @@ ADDTIONAL_TOOL_LIBS in the GNUmakefile(.preamble).
@end table
@c -----------------------------------------
@node RedHat/Intel, Slackware/Intel, OSF/Alpha, Machine Specific
@section RedHat/Intel (@emph{Unsupported})
@node RedHat/i386, Slackware/Intel, OSF/Alpha, Machine Specific
@section RedHat/i386 (@emph{Supported})
RedHat and variants/clones such as Fedora Core and CentOS are all very
well supported and are regularly tested with all GNUstep releases.
@table @var
@item Recommended compiler
The default compiler works very well.
@item Extra libs needed
All extra libs needed are easily available from standard packages; the
only tricky one is ffcall. If you don't find an RPM for that one,
download it directly from the GNUstep web site
(http://www.gnustep.org).
@item Special Instructions
None.
@end table
@c -----------------------------------------
@node Slackware/Intel, Slackware/Sparc, RedHat/Intel, Machine Specific
@node Slackware/Intel, Slackware/Sparc, RedHat/i386, Machine Specific
@section Slackware/Intel (@emph{Unsupported})
@c -----------------------------------------

View file

@ -73,15 +73,15 @@ Here is an example makefile (named GNUmakefile to emphasis the fact that it reli
include $(GNUSTEP_MAKEFILES)/common.make
# Build a simple Objective-C program
OBJC_PROGRAM_NAME = simple
TOOL_NAME = simple
# The Objective-C files to compile
simple_OBJC_FILES = simple.m
-include GNUmakefile.preamble
# Include in the rules for making Objective-C programs
include $(GNUSTEP_MAKEFILES)/objc.make
# Include in the rules for making GNUstep command-line programs
include $(GNUSTEP_MAKEFILES)/tool.make
-include GNUmakefile.postamble
@end smallexample
@ -393,9 +393,8 @@ This example makefile illustrates two libraries, @file{libone} and
@file{libtwo}, that are to be generated.
@smallexample
#
# An example makefile
# An example GNUmakefile
#
# Include the common variables defined by the Makefile Package
@ -523,7 +522,7 @@ This makefile illustrates two Objective-C programs, @file{simple} and
@smallexample
#
# An example makefile
# An example GNUmakefile
#
# Include the common variables defined by the Makefile Package
@ -887,7 +886,6 @@ your specific package or that are to be used by developers only.
* Overridable Flags::
@end menu
Any of these variables that are defined by @file{common.make} can and
should be used by the user's makefile fragments to reference directories
and/or perform any tasks which are not done automatically by the
@ -917,6 +915,22 @@ applications are installed. This variable is dependent upon the
accordingly if the user specifies a different installation domain.
@end defvar
@defvar GNUSTEP_ADMIN_APPS
@code{GNUSTEP_ADMIN_APPS} is the absolute path to the directory where
GUI applications for the system Administrator are installed. This
variable is dependent upon the @code{GNUSTEP_INSTALLATION_DOMAIN}
variable, so the path will change accordingly if the user specifies a
different installation domain.
@end defvar
@defvar GNUSTEP_WEB_APPS
@code{GNUSTEP_WEB_APPS} is the absolute path to the directory where
web applications (for web development frameworks such as GSWeb or
SOPE) are installed. This variable is dependent upon the
@code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change
accordingly if the user specifies a different installation domain.
@end defvar
@defvar GNUSTEP_TOOLS
@code{GNUSTEP_TOOLS} is the absolute path for the root directory where
command line tools are installed. Only command line tools which are
@ -929,6 +943,19 @@ Paths,,TOOL_INSTALLATION_DIR}. This variable is dependent upon the
accordingly if the user specifies a different installation domain.
@end defvar
@defvar GNUSTEP_ADMIN_TOOLS
@code{GNUSTEP_ADMIN_TOOLS} is the absolute path for the root directory
where command line tools for the system administrator are installed.
Only command line tools which are target platform independent should
be installed in @code{GNUSTEP_ADMIN_TOOLS}; target platform dependent
command line tools should be placed in the appropriate subdirectory of
@code{GNUSTEP_ADMIN)TOOLS}, see @ref{Directory
Paths,,GNUSTEP_TARGET_DIR}, and @ref{Directory
Paths,,TOOL_INSTALLATION_DIR}. This variable is dependent upon the
@code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change
accordingly if the user specifies a different installation domain.
@end defvar
@defvar GNUSTEP_HEADERS
@code{GNUSTEP_HEADERS} is the absolute path for the root directory where
header files are installed. Normally header files are not installed in
@ -943,6 +970,21 @@ path will change accordingly if the user specifies a different
installation domain.
@end defvar
@defvar GNUSTEP_LIBRARY
@code{GNUSTEP_LIBRARY} is the absolute path for the 'Library'
directory where all sorts of resources are installed. This directory
can be expected to have (at least) some standard subdirectories with
fixed names, which are @code{ApplicationSupport}, @code{Bundles},
@code{Frameworks}, @code{ApplicationSupport/Palettes},
@code{Services}, @code{Libraries/Resources} and @code{Libraries/Java}.
You can access them in your GNUmakefile as
@code{GNUSTEP_LIBRARY/ApplicationSupport},
@code{GNUSTEP_LIBRARY/Bundles}, etc. This variable is dependent upon
the @code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will
change accordingly if the user specifies a different installation
domain.
@end defvar
@defvar GNUSTEP_LIBRARIES
@code{GNUSTEP_LIBRARIES} is the absolute path for the directory where
libraries are installed taking the target platform and library
@ -960,10 +1002,33 @@ fonts, printer type information, model files for system panels, and
system images. The resource files are generally associated with
libraries, because resources for applications or bundles are included
within the application or bundle directory wrapper.
@code{GNUSTEP_RESOURCES} is a subdirectory of @code{GNUSTEP_LIBRARY};
it is dependent upon the @code{GNUSTEP_INSTALLATION_DOMAIN} variable,
so the path will change accordingly if the user specifies a different
installation domain.
@code{GNUSTEP_RESOURCES} is the @code{Libraries/Resources}
subdirectory of @code{GNUSTEP_LIBRARY}; it is dependent upon the
@code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change
accordingly if the user specifies a different installation domain.
@end defvar
@defvar GNUSTEP_DOC
@code{GNUSTEP_DOC} is the absolute path for the directory where
documentation is installed (with the exception of man pages and info
documentation, which need to be installed into @code{GNUSTEP_DOC_MAN}
and @code{GNUSTEP_DOC_INFO}). This variable is dependent upon the
@code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change
accordingly if the user specifies a different installation domain.
@end defvar
@defvar GNUSTEP_DOC_MAN
@code{GNUSTEP_DOC_MAN} is the absolute path for the directory where
man pages are to be installed. This variable is dependent upon the
@code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change
accordingly if the user specifies a different installation domain.
@end defvar
@defvar GNUSTEP_DOC_INFO
@code{GNUSTEP_DOC_INFO} is the absolute path for the directory where
info documentation is installed. This variable is dependent upon the
@code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change
accordingly if the user specifies a different installation domain.
@end defvar
@defvar GNUSTEP_HOST_DIR

64
FilesystemLayouts/mac Normal file
View file

@ -0,0 +1,64 @@
#
# Mac-like filesystem layout
#
# This is similar to the layout found on Apple Mac OS X. It mimicks
# most of the layout, but doesn't go all the way since GNUstep doesn't
# have GNUSTEP_DEVELOPER_xyz for example.
#
# To use gnustep-make in this environment, source GNUstep.sh or use
# 'export GNUSTEP_MAKEFILES=/System/Library/Makefiles'.
# By default, we install into /, but this can be overridden by using
# ./configure --prefix=xxx when configuring.
GNUSTEP_DEFAULT_PREFIX=/
# NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL
# paths.
GNUSTEP_MAKEFILES=/System/Library/Makefiles
GNUSTEP_SYSTEM_APPS=/Applications
GNUSTEP_SYSTEM_ADMIN_APPS=/Applications/Utilities
GNUSTEP_SYSTEM_TOOLS=/usr/local/bin
GNUSTEP_SYSTEM_ADMIN_TOOLS=/usr/local/sbin
GNUSTEP_SYSTEM_LIBRARY=/System/Library
GNUSTEP_SYSTEM_HEADERS=/System/Library/Headers
GNUSTEP_SYSTEM_LIBRARIES=/System/Library/Libraries
GNUSTEP_SYSTEM_DOCUMENTATION=/Library/Documentation
GNUSTEP_SYSTEM_DOCUMENTATION_MAN=/Library/Documentation/man
GNUSTEP_SYSTEM_DOCUMENTATION_INFO=/Library/Documentation/info
GNUSTEP_LOCAL_APPS=/Applications
GNUSTEP_LOCAL_ADMIN_APPS=/Applications/Utilities
GNUSTEP_LOCAL_TOOLS=/usr/local/bin
GNUSTEP_LOCAL_ADMIN_TOOLS=/usr/local/sbin
GNUSTEP_LOCAL_LIBRARY=/Library
GNUSTEP_LOCAL_HEADERS=/Library/Headers
GNUSTEP_LOCAL_LIBRARIES=/Library/Libraries
GNUSTEP_LOCAL_DOCUMENTATION=/Library/Documentation
GNUSTEP_LOCAL_DOCUMENTATION_MAN=/Library/Documentation/man
GNUSTEP_LOCAL_DOCUMENTATION_INFO=/Library/Documentation/info
GNUSTEP_NETWORK_APPS=/Applications
GNUSTEP_NETWORK_ADMIN_APPS=/Applications/Utilities
GNUSTEP_NETWORK_TOOLS=/usr/local/bin
GNUSTEP_NETWORK_ADMIN_TOOLS=/usr/local/sbin
GNUSTEP_NETWORK_LIBRARY=/Library
GNUSTEP_NETWORK_HEADERS=/Library/Headers
GNUSTEP_NETWORK_LIBRARIES=/Library/Libraries
GNUSTEP_NETWORK_DOCUMENTATION=/Library/Documentation
GNUSTEP_NETWORK_DOCUMENTATION_MAN=/Library/Documentation/man
GNUSTEP_NETWORK_DOCUMENTATION_INFO=/Library/Documentation/info
GNUSTEP_USER_DIR_APPS=Applications
GNUSTEP_USER_DIR_ADMIN_APPS=Applications/Utilities
GNUSTEP_USER_DIR_TOOLS=bin
GNUSTEP_USER_DIR_ADMIN_TOOLS=sbin
GNUSTEP_USER_DIR_LIBRARY=Library
GNUSTEP_USER_DIR_HEADERS=Library/Headers
GNUSTEP_USER_DIR_LIBRARIES=Library/Libraries
GNUSTEP_USER_DIR_DOCUMENTATION=Documentation
GNUSTEP_USER_DIR_DOCUMENTATION_MAN=Documentation/man
GNUSTEP_USER_DIR_DOCUMENTATION_INFO=Documentation/info
GNUSTEP_USER_CONFIG_FILE=Library/.GNUstep.conf
GNUSTEP_USER_DEFAULTS_DIR=Library/Defaults

View file

@ -186,8 +186,9 @@ MAIN_MARKUP_FILE = $(strip $(subst .gsmarkup,,$($(GNUSTEP_INSTANCE)_MAIN_MARKUP_
# APPLICATION_ICON and/or MAIN_MODEL_FILE and/or MAIN_MARKUP_FILE has
# changed since last time we built Info.plist. We use
# stamp-string.make, which will store the variables in a stamp file
# inside GNUSTEP_STAMP_DIR, and rebuild Info.plist iff
# GNUSTEP_STAMP_STRING changes.
# inside GNUSTEP_STAMP_DIR, and rebuild Info.plist if
# GNUSTEP_STAMP_STRING changes. We will also depend on xxxInfo.plist
# if any.
GNUSTEP_STAMP_STRING = $(PRINCIPAL_CLASS)-$(APPLICATION_ICON)-$(MAIN_MODEL_FILE)-$(MAIN_MARKUP_FILE)
ifneq ($(FOUNDATION_LIB),apple)
@ -202,14 +203,11 @@ endif
include $(GNUSTEP_MAKEFILES)/Instance/Shared/stamp-string.make
# FIXME: Missing dependency on $(GNUSTEP_INSTANCE)Info.plist files
# You can have a single xxxInfo.plist for both GNUstep and Apple.
# Often enough, you can just put in it all fields required by both
# GNUstep and Apple; if there is a conflict, you can add
# xxx_PREPROCESS_INFO_PLIST = yes to your GNUmakefile, and provide a
# xxxInfo.cplist (please note the suffix!) - that file is
# GNUstep and Apple; if there is a conflict, you can provide
# axxxInfo.cplist (please note the suffix!) - that file is
# automatically run through the C preprocessor to generate a
# xxxInfo.plist file from it. The preprocessor will define GNUSTEP
# when using gnustep-base, APPLE when using Apple FoundationKit, NEXT
@ -223,17 +221,17 @@ include $(GNUSTEP_MAKEFILES)/Instance/Shared/stamp-string.make
# to have your .cplist use different code for each.
#
# The following is really a hack, but very elegant. Our problem is
# that we'd like to always depend on xxxInfo.plist if it's there, and
# not depend on it if it's not there - but we don't have a solution to
# this problem at the moment, so we don't depend on it. Adding
# xxx_PREPROCESS_INFO_PLIST = yes at the moment just turns on the
# dependency on xxxInfo.plist, which is then built from xxxInfo.cplist
# using the %.plist: %.cplist rules.
ifeq ($($(GNUSTEP_INSTANCE)_PREPROCESS_INFO_PLIST), yes)
GNUSTEP_PLIST_DEPEND = $(GNUSTEP_INSTANCE)Info.plist
else
GNUSTEP_PLIST_DEPEND =
# Our problem is that we'd like to always depend on xxxInfo.plist if
# it's there, and not depend on it if it's not there - which we solve
# by expanding $(wildcard $(GNUSTEP_INSTANCE)Info.plist)
GNUSTEP_PLIST_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)Info.plist)
# As a special case, if xxxInfo.cplist is there, in this case as well
# we'd like to depend on xxxInfo.plist.
ifeq ($(GNUSTEP_PLIST_DEPEND),)
# xxxInfo.plist is not there. Check if xxxInfo.cplist is there, and
# if so, convert it to xxxInfo.plist and add it to the dependencies.
GNUSTEP_PLIST_DEPEND = $(patsubst %.cplist,%.plist,$(wildcard $(GNUSTEP_INSTANCE)Info.cplist))
endif
# On Apple we assume that xxxInfo.plist has a '{' (and nothing else)

View file

@ -255,10 +255,14 @@ endif
else # following executed if FOUNDATION_LIB != apple
# Depend on xxxInfo.plist but only if it exists.
GNUSTEP_PLIST_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)Info.plist)
ifneq ($(OBJ_FILES_TO_LINK),)
# GNUstep bundles
$(BUNDLE_DIR)/Resources/Info-gnustep.plist: $(BUNDLE_DIR)/Resources \
$(GNUSTEP_STAMP_DEPEND)
$(GNUSTEP_STAMP_DEPEND) \
$(GNUSTEP_PLIST_DEPEND)
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
echo " NSExecutable = \"$(GNUSTEP_INSTANCE)$(BUNDLE_OBJ_EXT)\";"; \
echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \
@ -270,7 +274,8 @@ $(BUNDLE_DIR)/Resources/Info-gnustep.plist: $(BUNDLE_DIR)/Resources \
else # following code for when no object file is built
# GNUstep bundles
$(BUNDLE_DIR)/Resources/Info-gnustep.plist: $(BUNDLE_DIR)/Resources \
$(GNUSTEP_STAMP_DEPEND)
$(GNUSTEP_STAMP_DEPEND) \
$(GNUSTEP_PLIST_DEPEND)
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \
echo "}") >$@$(END_ECHO)

View file

@ -74,12 +74,36 @@ endif
# might be installed at the same time :-).
#
# Set VERSION from xxx_VERSION
ifneq ($($(GNUSTEP_INSTANCE)_VERSION),)
VERSION = $($(GNUSTEP_INSTANCE)_VERSION)
endif
ifeq ($(VERSION),)
VERSION = 0.0.1
endif
# By setting xxx_INTERFACE_VERSION you can change the soversion used
# when linking the library. See comments in library.make for the
# variables with the same name for libraries.
ifeq ($($(GNUSTEP_INSTANCE)_INTERFACE_VERSION),)
# By default, if VERSION is 1.0.0, INTERFACE_VERSION is 1
INTERFACE_VERSION = $(word 1,$(subst ., ,$(VERSION)))
else
INTERFACE_VERSION = $($(GNUSTEP_INSTANCE)_INTERFACE_VERSION)
endif
# CURRENT_VERSION_NAME is the name of the version as used when
# building the library structure. We recommend just using
# INTERFACE_VERSION for that, so your resources and your shared
# library have the same versioning.
# Warning - the following variable is also used in Master/rules.make
# to build the OWNING_PROJECT_HEADER_DIR for the framework's
# subprojects. Make sure you keep them in sync if you change them.
CURRENT_VERSION_NAME = $($(GNUSTEP_INSTANCE)_CURRENT_VERSION_NAME)
ifeq ($(CURRENT_VERSION_NAME),)
CURRENT_VERSION_NAME = A
CURRENT_VERSION_NAME = $(INTERFACE_VERSION)
endif
# xxx_MAKE_CURRENT_VERSION can be set to 'no' if you do not want the
@ -113,15 +137,6 @@ ifeq ($(FRAMEWORK_VERSION_SUPPORT),no)
MAKE_CURRENT_VERSION = no
endif
# Set VERSION from xxx_VERSION
ifneq ($($(GNUSTEP_INSTANCE)_VERSION),)
VERSION = $($(GNUSTEP_INSTANCE)_VERSION)
endif
ifeq ($(VERSION),)
VERSION = 0.0.1
endif
# This is used on Apple to build frameworks which can be embedded into
# applications. You usually set it to something like
# @executable_path/../Frameworks and then you can embed the framework
@ -225,16 +240,6 @@ FRAMEWORK_LIBRARY_DIR = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_LIBRARY_DIR_NAME)
FRAMEWORK_CURRENT_LIBRARY_DIR_NAME = $(FRAMEWORK_CURRENT_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)
FRAMEWORK_CURRENT_LIBRARY_DIR = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_CURRENT_LIBRARY_DIR_NAME)
# By setting xxx_INTERFACE_VERSION you can change the soversion used
# when linking the library. See comments in library.make for the
# variables with the same name for libraries.
ifeq ($($(GNUSTEP_INSTANCE)_INTERFACE_VERSION),)
# By default, if VERSION is 1.0.0, INTERFACE_VERSION is 1
INTERFACE_VERSION = $(word 1,$(subst ., ,$(VERSION)))
else
INTERFACE_VERSION = $($(GNUSTEP_INSTANCE)_INTERFACE_VERSION)
endif
ifneq ($(BUILD_DLL), yes)
FRAMEWORK_LIBRARY_FILE = lib$(GNUSTEP_INSTANCE)$(SHARED_LIBEXT)
@ -442,15 +447,21 @@ $(DUMMY_FRAMEWORK_OBJ_FILE): $(DUMMY_FRAMEWORK_FILE)
$(ECHO_COMPILING)$(CC) $< -c $(ALL_CPPFLAGS) $(ALL_OBJCFLAGS) -o $@$(END_ECHO)
endif
ifeq ($(FOUNDATION_LIB),gnu)
FRAMEWORK_INFO_PLIST_FILE = Info-gnustep.plist
else
FRAMEWORK_INFO_PLIST_FILE = Info.plist
endif
ifeq ($(FRAMEWORK_VERSION_SUPPORT), yes)
build-framework: $(FRAMEWORK_FILE) \
shared-instance-bundle-all \
$(FRAMEWORK_VERSION_DIR)/Resources/Info.plist \
$(FRAMEWORK_VERSION_DIR)/Resources/$(FRAMEWORK_INFO_PLIST_FILE) \
$(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)
else
build-framework: $(FRAMEWORK_FILE) \
shared-instance-bundle-all \
$(FRAMEWORK_VERSION_DIR)/Resources/Info.plist
$(FRAMEWORK_VERSION_DIR)/Resources/$(FRAMEWORK_INFO_PLIST_FILE)
endif
ifeq ($(findstring darwin, $(GNUSTEP_TARGET_OS)), darwin)
@ -465,7 +476,10 @@ ifeq ($(findstring darwin, $(GNUSTEP_TARGET_OS)), darwin)
# what we are compiling is not made the Current framework version, I
# think it's not our business to touch the Current stuff, so let's
# ignore it. It's faster to ignore it anyway. ;-)
$(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE):
$(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR):
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
$(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE): $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR)/
ifeq ($(MAKE_CURRENT_VERSION),yes)
$(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework; \
$(RM_LN_S) $(GNUSTEP_INSTANCE); \
@ -488,12 +502,19 @@ else
# by just using -Lpath_to_the_framework/xxx.framework/$TARGET_LDIR
#
ifeq ($(FRAMEWORK_VERSION_SUPPORT), yes)
$(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE):
$(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR):
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
$(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE): $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR)/
ifeq ($(MAKE_CURRENT_VERSION),yes)
$(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR); \
$(RM_LN_S) $(GNUSTEP_INSTANCE) $(FRAMEWORK_LIBRARY_FILES); \
$(LN_S) Versions/Current/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE) $(GNUSTEP_INSTANCE); \
$(LN_S) Versions/Current/$(GNUSTEP_TARGET_LDIR)/$(FRAMEWORK_LIBRARY_FILE) $(FRAMEWORK_LIBRARY_FILE)$(END_ECHO)
$(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_TARGET_LDIR) \
Versions/Current/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)` \
$(GNUSTEP_INSTANCE); \
$(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_TARGET_LDIR) \
Versions/Current/$(GNUSTEP_TARGET_LDIR)/$(FRAMEWORK_LIBRARY_FILE)` \
$(FRAMEWORK_LIBRARY_FILE)$(END_ECHO)
endif
endif
endif
@ -520,6 +541,9 @@ endif
MAIN_MODEL_FILE = $(strip $(subst .gmodel,,$(subst .gorm,,$(subst .nib,,$($(GNUSTEP_INSTANCE)_MAIN_MODEL_FILE)))))
# FIXME: Use stamp.make to depend on the value of MAIN_MODEL_FILE and PRINCIPAL_CLASS
# FIXME: MacOSX frameworks should also merge xxxInfo.plist into them
# MacOSX-S frameworks
$(FRAMEWORK_VERSION_DIR)/Resources/Info.plist: $(FRAMEWORK_VERSION_DIR)/Resources
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
@ -528,8 +552,14 @@ $(FRAMEWORK_VERSION_DIR)/Resources/Info.plist: $(FRAMEWORK_VERSION_DIR)/Resource
echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \
echo "}") >$@$(END_ECHO)
# Depend on xxxInfo.plist but only if it exists.
GNUSTEP_PLIST_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)Info.plist)
# GNUstep frameworks
$(FRAMEWORK_VERSION_DIR)/Resources/Info-gnustep.plist: $(FRAMEWORK_VERSION_DIR)/Resources $(DUMMY_FRAMEWORK_FILE)
$(FRAMEWORK_VERSION_DIR)/Resources/Info-gnustep.plist: \
$(FRAMEWORK_VERSION_DIR)/Resources \
$(DUMMY_FRAMEWORK_FILE) \
$(GNUSTEP_PLIST_DEPEND)
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
echo " NSExecutable = \"$(GNUSTEP_INSTANCE)$(FRAMEWORK_OBJ_EXT)\";"; \
echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \

View file

@ -149,7 +149,10 @@ HAS_GSWCOMPONENTS = $($(GNUSTEP_INSTANCE)_HAS_GSWCOMPONENTS)
GSWAPP_INFO_PLIST = $($(GNUSTEP_INSTANCE)_GSWAPP_INFO_PLIST)
MAIN_MODEL_FILE = $(strip $(subst .gmodel,,$(subst .gorm,,$(subst .nib,,$($(GNUSTEP_INSTANCE)_MAIN_MODEL_FILE)))))
$(GSWAPP_INFO_PLIST_FILE):
# Depend on xxxInfo.plist but only if it exists.
GNUSTEP_PLIST_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)Info.plist)
$(GSWAPP_INFO_PLIST_FILE): $(GNUSTEP_PLIST_DEPEND)
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \
echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \

View file

@ -119,7 +119,12 @@ ifeq ($(PALETTE_ICON),)
PALETTE_ICON = $(GNUSTEP_INSTANCE)
endif
$(PALETTE_DIR)/Resources/Info-gnustep.plist: $(PALETTE_DIR)/Resources
# Depend on xxxInfo.plist but only if it exists.
GNUSTEP_PLIST_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)Info.plist)
# FIXME - xxxInfo.plist in this case is not really a plist!
$(PALETTE_DIR)/Resources/Info-gnustep.plist: $(PALETTE_DIR)/Resources $(GNUSTEP_PLIST_DEPEND)
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
echo " NSExecutable = \"$(PALETTE_NAME)$(PALETTE_OBJ_EXT)\";"; \
if [ -r "$(GNUSTEP_INSTANCE)Info.plist" ]; then \
@ -129,7 +134,12 @@ $(PALETTE_DIR)/Resources/Info-gnustep.plist: $(PALETTE_DIR)/Resources
MAIN_MODEL_FILE = $(strip $(subst .gmodel,,$(subst .gorm,,$(subst .nib,,$($(GNUSTEP_INSTANCE)_MAIN_MODEL_FILE)))))
$(PALETTE_DIR)/Resources/palette.table: $(PALETTE_DIR)/Resources
# Depend on xxxpalette.table but only if it exists.
PALETTE_TABLE_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)palette.table)
# FIXME - use stamp.make to depend on the value of the variables
# MAIN_MODEL_FILE, PRINCIPAL_CLASS and PALETTE_ICON
$(PALETTE_DIR)/Resources/palette.table: $(PALETTE_DIR)/Resources $(PALETTE_TABLE_DEPEND)
$(ECHO_CREATING)(echo "{";\
echo ' NOTE = "Automatically generated, do not edit!";'; \
echo " NibFile = \"$(MAIN_MODEL_FILE)\";"; \

View file

@ -23,19 +23,31 @@ ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
endif
#
# This is used to install a bunch of resource files somewhere. It is
# different from a bundle without resources; in a bundle without
# resources, we first create the bundle in the build directory, then
# copy the build to the install dir, overwriting anything already
# there. This instead will install the separate resource files
# directly in the installation directory; it's more efficient as it
# doesn't create a local bundle, and it doesn't overwrite an existing
# bundle in the installation directory.
#
#
# The name of the set of resources is in the RESOURCE_SET_NAME variable.
# The list of resource file are in xxx_RESOURCE_FILES
# The list of resource files/dirs is in xxx_RESOURCE_FILES
# The list of resource directories to create are in xxx_RESOURCE_DIRS
# The directory in which to install the resources is in the
# xxx_INSTALL_DIR
# The directory in which the resources are is in the
# xxx_RESOURCE_FILES_DIR (defaults to ./ if omitted)
# The list of LANGUAGES is in the xxx_LANGUAGES variable.
# The list of localized files to be read from yyy.lproj and copied
# The list of localized files/dirs to be read from yyy.lproj and copied
# into $(RESOURCE_FILES_INSTALL_DIR)/yyy.lproj for each language yyy
# is in the xxx_LOCALIZED_RESOURCE_FILES variable.
#
# The list of localized dirs to be created empty inside each
# $(RESOURCE_FILES_INSTALL_DIR)/yyy.lproj for each language yyy
# is in the xxx_LOCALIZED_RESOURCE_DIRS variable.
.PHONY: internal-resource_set-install_ \
internal-resource_set-uninstall_
@ -63,21 +75,6 @@ ifeq ($(RESOURCE_FILES_INSTALL_DIR),)
RESOURCE_FILES_INSTALL_DIR = $(GNUSTEP_RESOURCES)/$(GNUSTEP_INSTANCE)
endif
# Rule to build the installation dir
$(RESOURCE_FILES_INSTALL_DIR):
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
# Determine the additional installation dirs to build
RESOURCE_DIRS = $($(GNUSTEP_INSTANCE)_RESOURCE_DIRS)
ifneq ($(RESOURCE_DIRS),)
# Rule to build the additional installation dirs
$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/,$(RESOURCE_DIRS)):
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
endif
# Determine the dir to take the resources from
RESOURCE_FILES_DIR = $($(GNUSTEP_INSTANCE)_RESOURCE_FILES_DIR)
ifeq ($(RESOURCE_FILES_DIR),)
@ -87,7 +84,23 @@ endif
# Determine the list of resource files
RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_RESOURCE_FILES)
RESOURCE_DIRS = $($(GNUSTEP_INSTANCE)_RESOURCE_DIRS)
ifneq ($(RESOURCE_DIRS),)
# Rule to build the additional installation dirs
$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/,$(RESOURCE_DIRS)):
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
ifneq ($(CHOWN_TO),)
$(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $@$(END_ECHO)
endif
endif
# Rule to build the installation dir
$(RESOURCE_FILES_INSTALL_DIR):
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
ifneq ($(CHOWN_TO),)
$(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $@$(END_ECHO)
endif
# Determine the list of languages
override LANGUAGES = $($(GNUSTEP_INSTANCE)_LANGUAGES)
@ -95,9 +108,20 @@ ifeq ($(LANGUAGES),)
override LANGUAGES = English
endif
# Determine the list of localized resource files
LOCALIZED_RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_LOCALIZED_RESOURCE_FILES)
LOCALIZED_RESOURCE_DIRS = $($(GNUSTEP_INSTANCE)_LOCALIZED_RESOURCE_DIRS)
ifneq ($(LOCALIZED_RESOURCE_DIRS),)
# The following expression will create all the
# RESOURCE_FILES_INSTALL_DIR/LANGUAGE/LOCALIZED_RESOURCE_DIR that we
# need to build.
$(foreach LANGUAGE,$(LANGUAGES),$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/$(LANGUAGE), $(LOCALIZED_RESOURCE_DIRS))):
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
ifneq ($(CHOWN_TO),)
$(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $@$(END_ECHO)
endif
endif
#
# We provide two different algorithms of installing resource files.
@ -108,23 +132,33 @@ ifeq ($(GNUSTEP_DEVELOPER),)
# Standard one - just run a subshell and loop, and install everything.
internal-resource_set-install_: \
$(RESOURCE_FILES_INSTALL_DIR) \
$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/,$(RESOURCE_DIRS))
$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/,$(RESOURCE_DIRS)) \
$(foreach LANGUAGE,$(LANGUAGES),$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/$(LANGUAGE), $(LOCALIZED_RESOURCE_DIRS)))
ifneq ($(RESOURCE_FILES),)
$(ECHO_NOTHING)for file in $(RESOURCE_FILES) __done; do \
if [ $$file != __done ]; then \
$(INSTALL_DATA) $(RESOURCE_FILES_DIR)/$$file \
$(RESOURCE_FILES_INSTALL_DIR)/$$file; \
$(ECHO_NOTHING)for f in $(RESOURCE_FILES); do \
if [ -f $$f -o -d $$f ]; then \
cp -fr $(RESOURCE_FILES_DIR)/$$f \
$(RESOURCE_FILES_INSTALL_DIR)/$$f; \
else \
echo "Warning: $$f not found - ignoring"; \
fi; \
done$(END_ECHO)
ifneq ($(CHOWN_TO),)
$(ECHO_CHOWNING)for f in $(RESOURCE_FILES); do \
if [ -f $$f -o -d $$f ]; then \
$(CHOWN) -R $(CHOWN_TO) $(RESOURCE_FILES_INSTALL_DIR)/$$f; \
fi; \
done$(END_ECHO)
endif
endif
ifneq ($(LOCALIZED_RESOURCE_FILES),)
$(ECHO_NOTHING)for l in $(LANGUAGES); do \
if [ -d $$l.lproj ]; then \
$(MKINSTALLDIRS) $(RESOURCE_FILES_INSTALL_DIR)/$$l.lproj; \
for f in $(LOCALIZED_RESOURCE_FILES); do \
if [ -f $$l.lproj/$$f ]; then \
$(INSTALL_DATA) $$l.lproj/$$f \
$(RESOURCE_FILES_INSTALL_DIR)/$$l.lproj; \
if [ -f $$l.lproj/$$f -o -d $$l.lproj/$$f ]; then \
cp -fr $$l.lproj/$$f \
$(RESOURCE_FILES_INSTALL_DIR)/$$l.lproj; \
else \
echo "Warning: $$l.lproj/$$f not found - ignoring"; \
fi; \
@ -133,16 +167,34 @@ ifneq ($(LOCALIZED_RESOURCE_FILES),)
echo "Warning: $$l.lproj not found - ignoring"; \
fi; \
done$(END_ECHO)
ifneq ($(CHOWN_TO),)
$(ECHO_CHOWNING)for l in $(LANGUAGES); do \
if [ -d $$l.lproj ]; then \
$(CHOWN) -R $(CHOWN_TO) $(RESOURCE_FILES_INSTALL_DIR)/$$l.lproj; \
for f in $(LOCALIZED_RESOURCE_FILES); do \
if [ -f $$l.lproj/$$f -o -d $$l.lproj/$$f ]; then \
$(CHOWN) -R $(CHOWN_TO) $(RESOURCE_FILES_INSTALL_DIR)/$$l.lproj/$$f; \
fi; \
done; \
fi; \
done$(END_ECHO)
endif
endif
else # Following code turned on by setting GNUSTEP_DEVELOPER=YES in the shell
# TODO/FIXME: Update the code; implement proper
# LOCALIZED_RESOURCE_FILES that also allows directories etc.
.PHONY: internal-resource-set-install-languages
# One optimized for recurrent installations during development - this
# rule installs a single file only if strictly needed
$(RESOURCE_FILES_INSTALL_DIR)/% : $(RESOURCE_FILES_DIR)/%
$(ECHO_NOTHING)$(INSTALL_DATA) $< $@$(END_ECHO)
$(ECHO_NOTHING)cp -fr $< $(RESOURCE_FILES_DIR)$(END_ECHO)
ifneq ($(CHOWN_TO),)
$(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $@$(END_ECHO)
endif
# This rule depends on having installed all files
internal-resource_set-install_: \

View file

@ -92,11 +92,22 @@ ifeq ($(GNUSTEP_MAKE_SERVICES),)
GNUSTEP_MAKE_SERVICES = make_services
endif
# Depend on xxxInfo.plist but only if it exists.
GNUSTEP_PLIST_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)Info.plist)
ifeq ($(GNUSTEP_PLIST_DEPEND),)
$(warning Service $(GNUSTEP_INSTANCE) missing $(GNUSTEP_INSTANCE)Info.plist)
endif
# FIXME - xxxInfo.plist in this case is not really a plist!
$(SERVICE_DIR)/Resources/Info-gnustep.plist: \
$(SERVICE_DIR)/Resources $(GNUSTEP_INSTANCE)Info.plist
$(SERVICE_DIR)/Resources $(GNUSTEP_PLIST_DEPEND)
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \
cat $(GNUSTEP_INSTANCE)Info.plist; \
if [ -r "$(GNUSTEP_INSTANCE)Info.plist" ]; then \
cat $(GNUSTEP_INSTANCE)Info.plist; \
fi; \
echo "}") >$@ ;\
if $(GNUSTEP_MAKE_SERVICES) --test $@; then : ; else rm -f $@; false; \
fi$(END_ECHO)

View file

@ -290,7 +290,15 @@ if [ "$($(basename $(basename $*))_SUBPROJECTS)" != "" ]; then \
if [ "$$type" = "framework" ]; then \
if [ "$(FRAMEWORK_VERSION_SUPPORT)" = "yes" ]; then \
framework_version="$($(basename $(basename $*))_CURRENT_VERSION_NAME)"; \
if [ "$$framework_version" = "" ]; then framework_version="A"; fi; \
if [ "$$framework_version" = "" ]; then \
framework_version="$($(basename $(basename $*))_INTERFACE_VERSION)"; \
if [ "$$framework_version" = "" ]; then \
framework_version="$(word 1,$(subst ., ,$($(basename $(basename $*))_VERSION)))"; \
if [ "$$framework_version" = "" ]; then \
framework_version="0.0"; \
fi; \
fi; \
fi; \
owning_project_header_dir="../$${instance}.framework/Versions/$${framework_version}/Headers"; \
else \
owning_project_header_dir="../$${instance}.framework/Headers"; \
@ -357,7 +365,15 @@ if [ "$($(basename $(basename $*))_SUBPROJECTS)" != "" ]; then \
if [ "$$type" = "framework" ]; then \
if [ "$(FRAMEWORK_VERSION_SUPPORT)" = "yes" ]; then \
framework_version="$($(basename $(basename $*))_CURRENT_VERSION_NAME)"; \
if [ "$$framework_version" = "" ]; then framework_version="A"; fi; \
if [ "$$framework_version" = "" ]; then \
framework_version="$($(basename $(basename $*))_INTERFACE_VERSION)"; \
if [ "$$framework_version" = "" ]; then \
framework_version="$(word 1,$(subst ., ,$($(basename $(basename $*))_VERSION)))"; \
if [ "$$framework_version" = "" ]; then \
framework_version="0.0"; \
fi; \
fi; \
fi; \
owning_project_header_dir="../$${instance}.framework/Versions/$${framework_version}/Headers"; \
else \
owning_project_header_dir="../$${instance}.framework/Headers"; \

View file

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

View file

@ -517,7 +517,8 @@ CFLAGS =
# If the compiler supports native ObjC exceptions and the user wants us to
# use them, turn them on!
ifeq ($(USE_OBJC_EXCEPTIONS), yes)
OBJCFLAGS += -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS
OBJCFLAGS += -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS
INTERNAL_LDFLAGS += -shared-libgcc -fexceptions
endif
#

9
configure vendored
View file

@ -2780,7 +2780,7 @@ case $host_os in
MSWIND=yes;;
*mingw32* )
MINGW32=yes
CYGWIN=yes
CYGWIN=no
MSWIND=yes;;
* )
MINGW32=no
@ -4555,7 +4555,10 @@ if test x"$USE_OBJC_EXCEPTIONS" = x"yes"; then
echo "$as_me:$LINENO: result: no: compiler isn't gcc" >&5
echo "${ECHO_T}no: compiler isn't gcc" >&6
else
CFLAGS="$CFLAGS -fobjc-exceptions"
CFLAGS_no_exceptions="$CFLAGS"
LIBS_no_exceptions="$LIBS"
CFLAGS="$CFLAGS -fexceptions -fobjc-exceptions"
LIBS="$LIBS -shared-libgcc -fexceptions"
if test "$cross_compiling" = yes; then
{ { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
See \`config.log' for more details." >&5
@ -4609,6 +4612,8 @@ rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftes
fi
echo "$as_me:$LINENO: result: $USE_OBJC_EXCEPTIONS" >&5
echo "${ECHO_T}$USE_OBJC_EXCEPTIONS" >&6
CFLAGS="$CFLAGS_no_exceptions"
LIBS="$LIBS_no_exceptions"
fi
if test x$USE_OBJC_EXCEPTIONS = xno; then
{ echo "$as_me:$LINENO: Native objective-c exceptions were requested, but the compiler" >&5

View file

@ -120,7 +120,7 @@ case $host_os in
MSWIND=yes;;
*mingw32* )
MINGW32=yes
CYGWIN=yes
CYGWIN=no
MSWIND=yes;;
* )
MINGW32=no
@ -1053,7 +1053,10 @@ if test x"$USE_OBJC_EXCEPTIONS" = x"yes"; then
USE_OBJC_EXCEPTIONS=no
AC_MSG_RESULT(no: compiler isn't gcc)
else
CFLAGS="$CFLAGS -fobjc-exceptions"
CFLAGS_no_exceptions="$CFLAGS"
LIBS_no_exceptions="$LIBS"
CFLAGS="$CFLAGS -fexceptions -fobjc-exceptions"
LIBS="$LIBS -shared-libgcc -fexceptions"
AC_RUN_IFELSE([[
#include <stdlib.h>
#include <objc/Object.h>
@ -1075,6 +1078,8 @@ int main(int argc, char **argv)
}
]], USE_OBJC_EXCEPTIONS=yes, USE_OBJC_EXCEPTIONS=no)
AC_MSG_RESULT($USE_OBJC_EXCEPTIONS)
CFLAGS="$CFLAGS_no_exceptions"
LIBS="$LIBS_no_exceptions"
fi
if test x$USE_OBJC_EXCEPTIONS = xno; then
AC_MSG_NOTICE([Native objective-c exceptions were requested, but the compiler])