2007-04-11 22:35:22 +00:00
|
|
|
@chapter GNUstep Make Release Notes
|
|
|
|
|
|
|
|
The release notes include descriptions of API changes, behavior
|
|
|
|
changes and other information that might help developers and users
|
|
|
|
migrate to using a newer version of the make system.
|
|
|
|
|
2009-08-15 21:32:38 +00:00
|
|
|
@section Version 2.2.1
|
|
|
|
@table @samp
|
|
|
|
|
2010-02-11 11:11:29 +00:00
|
|
|
@item the order in which tools are built is no longer guaranteed
|
|
|
|
If you use something like ``TOOL_NAME = ToolA ToolB'' to build
|
|
|
|
multiple tools in the same GNUmakefile, you need to be aware that the
|
|
|
|
way the tools are built changed in version 2.2.1. Before version
|
|
|
|
2.2.1, the tools were always built one after the other one, exactly in
|
|
|
|
the order specified. So, in the example ToolA would be built before
|
|
|
|
ToolB. Starting with 2.2.1, the tools might be built completely in
|
|
|
|
parallel if parallel building is enabled. So, the order in which they
|
|
|
|
are built is no longer defined and your GNUmakefile should not depend
|
|
|
|
on the order in which tools are specified in the GNUmakefile. Most
|
|
|
|
GNUmakefiles should be unaffected because rarely people rely on the
|
|
|
|
order in which tools are built. If your GNUmakefile does depend on
|
|
|
|
the order in which tools are built, you have a few options. The
|
|
|
|
preferred option is to identify the code or steps that need to be
|
2010-02-11 12:46:14 +00:00
|
|
|
executed before some of the tools are built and put them into a
|
|
|
|
before-all:: rule, which is guaranteed to be executed before anything
|
|
|
|
else. In this way your serialized code is executed first, and the
|
|
|
|
build can continue in a completely parallel fashion afterwards.
|
|
|
|
|
|
|
|
If you just want to force a specific tool (say, ToolA) to be
|
|
|
|
built before the others, you can always add a 'before-all:: ToolA'
|
|
|
|
rule which will make sure ToolA is built before the other ones.
|
|
|
|
|
2010-02-11 13:26:58 +00:00
|
|
|
If you want to disable parallel building altogether, you can add
|
2010-02-11 12:46:14 +00:00
|
|
|
GNUSTEP_MAKE_PARALLEL_BUILDING=no just after including common.make, or
|
|
|
|
pass it on the command-line.
|
2010-02-11 11:11:29 +00:00
|
|
|
|
2010-02-07 19:56:09 +00:00
|
|
|
@item support for having source files in subdirectories
|
|
|
|
Starting with version 2.2.1, it is possible to put source files in
|
|
|
|
subdirectories by specifiying them as in xxx_OBJC_FILES =
|
|
|
|
Source/Beauty.m. This syntax does not work on versions before 2.2.1
|
|
|
|
so you should not use it if you want to support older versions of
|
|
|
|
gnustep-make; previously you had to create a subproject and add a
|
|
|
|
GNUmakefile in the subdirectory using subproject.make. You can now
|
|
|
|
spread your source files in multiple subdirectories without using
|
|
|
|
subprojects.
|
|
|
|
|
|
|
|
@item support for having header files in subdirectories
|
|
|
|
Starting with version 2.2.1, it is possible to put header files in
|
|
|
|
subdirectories by specifiying them as in xxx_HEADER_FILES =
|
|
|
|
Beauty/Beauty.h. This syntax does not work on versions before 2.2.1
|
|
|
|
so you should not use it if you want to support older versions of
|
|
|
|
gnustep-make. When headers are put in subdirectories specified in
|
|
|
|
this way, corresponding subdirectories are created when the header
|
|
|
|
files are installed. For example Beauty/Beauty.h would be
|
|
|
|
automatically installed into
|
|
|
|
GNUSTEP_HEADERS/HEADER_FILES_INSTALL_DIR/Beauty/Beauty.h. To get the
|
|
|
|
same result in versions before 2.2.1 you would have had to manually
|
|
|
|
create the header installation subdirectories.
|
|
|
|
|
|
|
|
@item support for HEADER_FILES_DIR in framework subproject
|
|
|
|
Before version 2.2.1, specifying xxx_HEADER_FILES_DIR in a framework
|
|
|
|
subproject would have no effect. Starting with version 2.2.1, the
|
|
|
|
variable is now recognized and can be used to have the files in a
|
|
|
|
subdirectory. You should avoid using the variable in framework
|
|
|
|
subprojects if you want to support older versions of gnustep-make.
|
|
|
|
|
2009-09-19 08:57:25 +00:00
|
|
|
@item info files renamed adding a gnustep- prefix
|
|
|
|
To prevent conflicts with other documentation, all the gnustep-make
|
|
|
|
info files have been renamed adding a gnustep- prefix. For example,
|
|
|
|
to access the GNUstep faq using info, you now need to type 'info
|
|
|
|
gnustep-faq' instead of 'info faq'. Please note that this info
|
|
|
|
documentation is in the core/make/Documentation subdirectory and at
|
|
|
|
the moment is not automatically installed unless you explicitly go in
|
|
|
|
that subdirectory and install it.
|
|
|
|
|
2009-09-19 09:01:49 +00:00
|
|
|
@item better cleaning for texinfo documentation
|
|
|
|
When you build html documentation from texinfo files, the local
|
|
|
|
directory containing the html files was not being removed when doing a
|
|
|
|
'make clean'. Starting with version 2.2.1, 'make clean' removes the
|
|
|
|
directory too.
|
|
|
|
|
2009-09-20 10:34:39 +00:00
|
|
|
@item debug=no made the default
|
|
|
|
gnustep-make now builds using debug=no by default. As a consequence,
|
|
|
|
on most platforms C/Objective-C/C++ code is now built by default using
|
|
|
|
-g -O2 instead of just -g. If you do not want the -O2 flag, you can
|
|
|
|
simply build using 'make debug=yes'. You can also use the new
|
|
|
|
./configure --enable-debug-by-default option to make 'debug=yes' the
|
|
|
|
default flag that is always used when compiling if nothing else is
|
|
|
|
specified. If you do not want the debugging symbols, remember that
|
|
|
|
you can use the 'make strip=yes' option to have them stripped out from
|
|
|
|
all object files when they are installed.
|
2009-08-15 21:32:38 +00:00
|
|
|
|
2009-10-08 00:31:00 +00:00
|
|
|
@item batch-compilation of Java files
|
|
|
|
gnustep-make used to compile Java files one by one. In most Java
|
|
|
|
compilers this is very suboptimal. Starting from release 2.2.1,
|
|
|
|
gnustep-make will compile all Java files in a Java project with a
|
|
|
|
single Java compiler invocation. This can significantly speed up
|
|
|
|
compilation of large projects. To disable it and get the behaviour of
|
|
|
|
gnustep-make 2.2.0, please set the variable BATCH_COMPILE_JAVA_FILES
|
|
|
|
to 'no' (or the variable xxx_BATCH_COMPILE_JAVA_FILES to 'no' to
|
|
|
|
disable it for a single instance). Please note that if you are using
|
|
|
|
the xxx_FILE_FLAGS or xxx_FILE_FILTER_OUT_FLAGS functionality for Java
|
|
|
|
files, which allows you to customize the compilation flags for each
|
|
|
|
Java file, then batch compilation is automatically disabled and all
|
|
|
|
files are compiled separately.
|
|
|
|
|
2009-08-15 21:32:38 +00:00
|
|
|
@end table
|
|
|
|
|
2009-05-09 18:32:29 +00:00
|
|
|
@section Version 2.2.0
|
2009-02-02 16:46:14 +00:00
|
|
|
@table @samp
|
|
|
|
|
2009-05-07 02:30:25 +00:00
|
|
|
@item libobjc library
|
|
|
|
You can now specify a particular libobjc library to use with the
|
|
|
|
--with-objc-lib-flag in configure. Make now also automatically uses
|
|
|
|
-lobjc_gc when using garbage collection.
|
|
|
|
|
|
|
|
@item parallel building
|
|
|
|
Parallel building is supported now. You can build using the normal make
|
|
|
|
mechanism, e.g. 'make -j 2'.
|
|
|
|
|
2009-02-02 16:46:14 +00:00
|
|
|
@item install -p
|
|
|
|
gnustep-make now uses 'install -p' by default when installing headers
|
|
|
|
and other files. This preserves the file timestamps and can in some
|
|
|
|
cases reduce spurious rebuilds triggered by reinstalling headers that
|
|
|
|
have not been modified. You can use the gnustep-make configure option
|
|
|
|
--disable-install-p to disable this behaviour and go back to always
|
|
|
|
using a standard 'install'.
|
|
|
|
|
|
|
|
@item uninstallation of resources
|
|
|
|
gnustep-make now is more careful and accurate when uninstalling
|
|
|
|
resources, which means that 'make uninstall' will do a better job at
|
|
|
|
removing directories that were created during by 'make install'.
|
|
|
|
|
|
|
|
@end table
|
|
|
|
|
2008-10-21 15:38:29 +00:00
|
|
|
@section Version 2.0.7
|
|
|
|
|
|
|
|
@table @samp
|
|
|
|
|
2008-12-21 22:47:52 +00:00
|
|
|
@item default installation
|
|
|
|
New configuration file that allows hardcore developers building
|
|
|
|
everything from source to specify arbitrary default installation domains
|
|
|
|
for the software. You just need to copy the installation-domains.conf
|
|
|
|
file to the same directory as the GNUstep.conf file, and edit it to
|
|
|
|
customize the default installation domain (Thanks to Richard for the
|
|
|
|
idea).
|
|
|
|
|
2008-10-21 15:38:29 +00:00
|
|
|
@item --no-print-directory
|
|
|
|
gnustep-make now uses the --no-print-directory flag when invoking make
|
|
|
|
recursively, so the output has changed - starting from 2.0.7 it should
|
|
|
|
be shorter and more readable.
|
|
|
|
|
|
|
|
@item change to intermediate object file names
|
|
|
|
gnustep-make now supports having in the same project source files with
|
|
|
|
the same name, but a different extension - for example file.c and
|
|
|
|
file.m. The names of intermediate object files have been internally
|
|
|
|
changed (for example, from file.o to file.c.o) to support this.
|
|
|
|
|
|
|
|
@item change in path checking algorithm in GNUstep.sh and GNUstep.csh
|
|
|
|
GNUstep.sh and GNUstep.csh perform more careful checks for duplicate
|
|
|
|
paths when adding paths to PATH and other path variables. Now they
|
|
|
|
check each path separately before adding it, which in some cases will
|
|
|
|
produce smaller and less intrusive additions to PATH; in particular,
|
|
|
|
on FHS filesystem layout, they will never add /usr/bin or other system
|
|
|
|
paths if they are already there. If you are in a situation where
|
|
|
|
there is an overlap between GNUstep paths and system paths and you are
|
|
|
|
using GNUstep.sh or GNUstep.csh, you may want to check the new values
|
|
|
|
of PATH, CLASSPATH, GUILE_LOAD_PATH, INFOPATH, LD_LIBRARY_PATH and
|
|
|
|
similar variables since they may be different from the old ones.
|
|
|
|
|
|
|
|
@item test applications linked against gnustep-gui by default
|
|
|
|
Test applications (that is, applications created using
|
|
|
|
test-application.make) are now linked against gnustep-gui by default.
|
|
|
|
|
|
|
|
@end table
|
|
|
|
|
2008-05-18 18:13:34 +00:00
|
|
|
@section Version 2.0.6
|
|
|
|
|
|
|
|
@table @samp
|
|
|
|
|
2008-05-22 13:16:43 +00:00
|
|
|
@item GNUSTEP_ABSOLUTE_INSTALL_PATHS
|
|
|
|
Added the --enable-absolute-install-paths option to configure on
|
|
|
|
Darwin. Enabling this option modifies the process for building
|
|
|
|
dynamic libraries so the install_name stored within a library
|
|
|
|
is an absolute path. Dynamic libraries with an absolute
|
|
|
|
install_name can be placed in non-standard locations, but may
|
|
|
|
not be moved from their designated location.
|
|
|
|
|
2008-05-18 18:13:34 +00:00
|
|
|
@item default location of GNUstep.conf on BSD systems
|
|
|
|
This has been changed to /etc/GNUstep/GNUstep.conf to be consistent
|
|
|
|
across all Unix systems (except for Apple Mac OS X where it is
|
|
|
|
installed in /Library/GNUstep/GNUstep.conf). To install in a
|
|
|
|
different location, use the --with-config-file=PATH option, as in
|
|
|
|
--with-config-file=/usr/pkg/etc/GNUstep.conf.
|
|
|
|
|
2009-09-17 08:26:42 +00:00
|
|
|
@item make.info renamed to gnustep-make.info
|
2008-06-11 16:28:47 +00:00
|
|
|
To prevent conflicts with the standard GNU 'make' info documentation,
|
|
|
|
the gnustep-make one has been renamed. Now you can access it as in
|
|
|
|
'info gnustep-make' instead of 'info make', avoiding any conflicts and
|
|
|
|
confusion. Please note that this info documentation is in the
|
|
|
|
core/make/Documentation subdirectory and at the moment is not
|
|
|
|
automatically installed unless you explicitly go in that subdirectory
|
|
|
|
and install it.
|
|
|
|
|
2008-05-18 18:13:34 +00:00
|
|
|
@end table
|
|
|
|
|
2008-01-14 13:04:47 +00:00
|
|
|
@section Version 2.0.5
|
|
|
|
|
|
|
|
@table @samp
|
|
|
|
|
2008-03-02 18:37:50 +00:00
|
|
|
@item default filesystem layout on apple-apple-apple
|
|
|
|
The default filesystem layout when using the apple-apple-apple
|
|
|
|
library-combo has been changed from 'gnustep' to the new 'apple'
|
|
|
|
filesystem layout, and on darwin the configuration file is by default
|
|
|
|
installed in /Library/GNUstep/GNUstep.conf instead of
|
|
|
|
/etc/GNUstep/GNUstep.conf. Using the 'gnustep' filesystem layout with
|
|
|
|
the apple-apple-apple library-combo did not make much sense; in
|
|
|
|
gnustep-make version 2.0.5 and newer, a ./configure on Apple Mac OS X
|
|
|
|
automatically chooses the right library-combo and filesystem layout to
|
|
|
|
compile and install Apple native frameworks and applications.
|
|
|
|
|
2008-01-14 13:04:47 +00:00
|
|
|
@item ~/GNUstep/GNUstep.sh
|
|
|
|
This script used to be automatically sourced whenever the main
|
|
|
|
GNUstep.sh file was sourced. In gnustep-make version 2 (starting with
|
|
|
|
2.0.5) the file is no longer sourced. If you are sourcing GNUstep.sh
|
|
|
|
at start-up and have a custom shell script that you'd like to source
|
|
|
|
in addition to GNUstep.sh, please source it in your shell init script
|
|
|
|
before or after sourcing GNUstep.sh. The same applies to
|
|
|
|
~/GNUstep/GNUstep.csh.
|
|
|
|
|
2008-02-19 10:49:20 +00:00
|
|
|
@item xxx_NEEDS_GUI
|
|
|
|
This new variable can be used to specify that a project needs to be
|
2008-03-11 01:06:50 +00:00
|
|
|
linked against the gui library (or not). If set to yes, the gui
|
|
|
|
library will be linked; if set to no, the gui library will not be
|
2008-02-19 14:15:08 +00:00
|
|
|
linked. If unspecified, the generic variable NEEDS_GUI is used; if
|
|
|
|
that is also unspecified, the behaviour depends on the project type
|
2008-02-19 10:49:20 +00:00
|
|
|
(and is backwards-compatible): applications, bundles, frameworks,
|
|
|
|
palettes and libraries link automatically against the gui library;
|
|
|
|
other project types do not. It is recommended that you set
|
|
|
|
xxx_NEEDS_GUI for all bundles, frameworks and libraries to clarify how
|
|
|
|
the linking should be done.
|
|
|
|
|
2008-02-19 14:15:08 +00:00
|
|
|
@item NEEDS_GUI
|
|
|
|
This new variable can be used to specify that all projects built by
|
|
|
|
this GNUmakefile need to be linked against the gui library (or not).
|
2008-03-11 01:06:50 +00:00
|
|
|
If set to yes, the gui library will be linked; if set to no, the gui
|
2008-02-19 14:15:08 +00:00
|
|
|
library will not be linked. This behaviour can be overridden for
|
|
|
|
specific project targets by using the xxx_NEEDS_GUI variable (see
|
|
|
|
above).
|
|
|
|
|
2008-01-14 13:04:47 +00:00
|
|
|
@end table
|
|
|
|
|
2007-04-11 22:35:22 +00:00
|
|
|
@section Version 2.0.0
|
|
|
|
|
2007-04-12 17:56:12 +00:00
|
|
|
Version 2.0.0 is a new major release of gnustep-make which includes a
|
|
|
|
number of major changes compared to previous 1.x releases. Most of
|
|
|
|
the changes are backwards compatible in the sense that old
|
|
|
|
GNUmakefiles will work with gnustep-make version 1 or 2 when used in
|
|
|
|
the same conditions (traditional GNUstep filesystem layout). But
|
|
|
|
GNUmakefiles might need updating to work with the new filesystem
|
|
|
|
layout configurations that are allowed by gnustep-make version 2.
|
2007-04-11 22:35:22 +00:00
|
|
|
|
2007-04-12 17:56:12 +00:00
|
|
|
@table @samp
|
2007-04-11 22:35:22 +00:00
|
|
|
|
2007-04-12 17:56:12 +00:00
|
|
|
@item GNUSTEP_INSTALLATION_DIR
|
|
|
|
This variable is deprecated in gnustep-make version 2; you should
|
|
|
|
never use it. gnustep-make version 2 supports installation domains
|
|
|
|
that are mapped to filesystem locations in arbitrary ways; for this
|
|
|
|
reason, specifying a GNUSTEP_INSTALLATION_DIR no longer makes sense.
|
|
|
|
If you need to relocate the whole installation (for example,
|
|
|
|
installing into /tmp to prepare a binary package) you should use
|
|
|
|
DESTDIR, as in 'make install DESTDIR=/tmp'. To choose an installation
|
|
|
|
domain, you should use GNUSTEP_INSTALLATION_DOMAIN, as in 'make
|
|
|
|
install GNUSTEP_INSTALLATION_DOMAIN=LOCAL'. It's particularly
|
|
|
|
important that you remove any reference to GNUSTEP_INSTALLATION_DIR
|
|
|
|
inside your own GNUmakefiles.
|
2007-04-11 22:35:22 +00:00
|
|
|
|
2007-04-12 17:56:12 +00:00
|
|
|
If your GNUmakefiles contains references to GNUSTEP_INSTALLATION_DIR
|
|
|
|
(or similar), you should remove them by replacing them with references
|
|
|
|
to the actual logical directory into which you want to install. For
|
|
|
|
example, if your GNUmakefile is trying to install something into
|
|
|
|
GNUSTEP_INSTALLATION_DIR/Library/Libraries, you need to replace it
|
|
|
|
with GNUSTEP_LIBRARIES. This is important for non-GNUstep filesystem
|
|
|
|
layouts (where, eg, GNUSTEP_LIBRARIES should be set to /usr/lib or
|
|
|
|
/usr/local/lib or /home/nicola/GNUstep/Library/Libraries depending on
|
|
|
|
the installation domain); in that case, gnustep-make will manage
|
|
|
|
GNUSTEP_LIBRARIES for you. Please check the file @file{filesystem}
|
|
|
|
for more information on the available variables.
|
2007-04-11 22:35:22 +00:00
|
|
|
|
2007-04-12 17:56:12 +00:00
|
|
|
@item GNUSTEP_xxx_ROOT
|
|
|
|
The variables GNUSTEP_SYSTEM_ROOT, GNUSTEP_LOCAL_ROOT,
|
|
|
|
GNUSTEP_NETWORK_ROOT, GNUSTEP_USER_ROOT and GNUSTEP_ROOT are
|
|
|
|
deprecated in gnustep-make version 2 and you should never use them.
|
|
|
|
gnustep-make version 2 supports installation domains that are mapped
|
|
|
|
to filesystem locations in arbitrary ways; for this reason, a variable
|
|
|
|
like GNUSTEP_SYSTEM_ROOT has no longer any use.
|
|
|
|
|
|
|
|
If your GNUmakefiles contains references to GNUSTEP_SYSTEM_ROOT (or
|
|
|
|
similar), you should remove them by replacing them with references to
|
|
|
|
the actual logical directory into which you want to install. For
|
|
|
|
example, if your GNUmakefile is trying to install something into
|
|
|
|
GNUSTEP_SYSTEM_ROOT/Library/Libraries, you need to replace it with
|
|
|
|
GNUSTEP_SYSTEM_LIBRARIES. Please check the file @file{filesystem} for
|
|
|
|
more information on the available variables.
|
|
|
|
|
|
|
|
@item gnustep-make ./configure and install options
|
|
|
|
The options to configure (and make install), particularly the ones to
|
|
|
|
determine the filesystem layout, have been radically changed in
|
|
|
|
gnustep-make version 2. If you have a building or packaging script
|
|
|
|
for gnustep-make, you need to make sure you replace your old
|
|
|
|
./configure options with the new ones. In particular, the
|
|
|
|
--with-system-root, --with-local-root and --with-network-root
|
|
|
|
configure options have been replaced by the more powerful
|
|
|
|
--with-layout configure option. Also, configure no longer imports an
|
|
|
|
existing configuration file so you need to make sure that you pass all
|
|
|
|
the options every time. 'make install special_prefix=xxx' has been
|
|
|
|
replaced by 'make install DESTDIR=xxx'.
|
|
|
|
|
|
|
|
@item make debug=yes is now the default
|
|
|
|
The default used to be 'make debug=no'; this has now been changed to
|
|
|
|
be 'make debug=yes'. To get the traditional behaviour, please use
|
|
|
|
'make debug=no'.
|
|
|
|
|
|
|
|
@item RPM support rewritten
|
|
|
|
The RPM support has been rewritten so if you're using gnustep-make
|
|
|
|
to automatically generate RPM packages for your software, you may
|
|
|
|
want to review the process. In particular, there is no longer
|
|
|
|
a distinction between debug and non-debug packages.
|
|
|
|
|
|
|
|
@item xxx_PREPROCESS_INFO_PLIST
|
|
|
|
This variable is now obsolete and can be removed; gnustep-make version 2
|
|
|
|
can automatically detect plists that need preprocessing.
|
|
|
|
|
|
|
|
@item Framework default version
|
|
|
|
The default framework resource version changed from 'A' to
|
2007-04-18 02:52:48 +00:00
|
|
|
INTERFACE_VERSION (which is set, by default, to '0').
|
2007-04-12 17:56:12 +00:00
|
|
|
|
|
|
|
@item Microsoft Windows updates
|
|
|
|
If you are using Microsoft Windows, you probably want to check
|
|
|
|
the new installation instructions and reinstall everything.
|
|
|
|
|
|
|
|
@item Java tools location changed
|
|
|
|
Java tools are now installed into GNUSTEP_JAVA rather than
|
|
|
|
in a subdirectory of GNUSTEP_TOOLS.
|
|
|
|
|
|
|
|
@item resource-set.make install directory
|
|
|
|
The variable xxx_RESOURCE_FILES_INSTALL_DIR for resource-set.make has
|
|
|
|
been deprecated in favour of xxx_INSTALL_DIR. For backwards
|
|
|
|
compatibility, you may want to set them both:
|
|
|
|
|
|
|
|
xxx_INSTALL_DIR = $(GNUSTEP_LIBRARY)/Libraries/Resources/xxx
|
|
|
|
|
|
|
|
xxx_RESOURCE_FILES_INSTALL_DIR = /Library/Libraries/Resources/xxx
|
|
|
|
|
|
|
|
@item INSTALL_ROOT_DIR
|
|
|
|
All instances of INSTALL_ROOT_DIR in user's makefiles should be
|
|
|
|
replaced with DESTDIR.
|
|
|
|
|
|
|
|
@item GNUSTEP_FLATTENED
|
|
|
|
All checks for GNUSTEP_FLATTENED should be updated to check the new
|
|
|
|
variable GNUSTEP_IS_FLATTENED instead, and to compare it explicitly to
|
|
|
|
'yes' and 'no', and assume that '' means 'yes'.
|
|
|
|
|
|
|
|
@item ./shared_obj
|
|
|
|
The ./shared_obj, ./shared_debug_obj directories and similar are no longer
|
|
|
|
created. You can use ./obj instead.
|
|
|
|
|
|
|
|
@item library names
|
|
|
|
All libraries now have the same name.
|
|
|
|
|
|
|
|
@item application names
|
|
|
|
All applications now have the same name.
|
|
|
|
|
|
|
|
@end table
|
2007-04-11 22:35:22 +00:00
|
|
|
|
|
|
|
@ifinfo
|
|
|
|
Copyright @copyright{} 2007 Free Software Foundation
|
|
|
|
|
|
|
|
Copying and distribution of this file, with or without modification,
|
|
|
|
are permitted in any medium without royalty provided the copyright
|
|
|
|
notice and this notice are preserved.
|
|
|
|
@end ifinfo
|
|
|
|
|
|
|
|
|