1@chapter GNUstep Make Release Notes
2
3The release notes include descriptions of API changes, behavior
4changes and other information that might help developers and users
5migrate to using a newer version of the make system.
6
7@section Version 2.8.0
8
9We now include better library combo and ABI detection: gnustep-make will now
10attempt to detect the optimal library combo and ABI supported by the
11installed compiler and Objective-C runtime library. Explicit selection of the
12runtime ABI is now possible using the @code{--with-runtime-abi} configure
13option.
14
15There's now full support for the gnustep-2.0 Objective-C ABI.
16
17This release includes support for creating a Git tag and creating a tarball
18from a git tag using the @code{git-tag} and @code{git-dist} targets.
19
20This release includes support for creating a Mercurial tag and creating a
21tarball from a hg tag using the @code{hg-tag} and @code{hg-dist} targets.
22
23We have dropped legacy Rhapsody and FreeBSD-out support.
24
25@section Version 2.7.0
26
27When building non-flattened, the subdirectory name for libraries/binaries
28is changed for Debian compatibility (and simplicity) to use a directory
29whose name is of the form architecture/library-combo rather than nested
30directories of the form cpu/os-abi/library-combo.  The architecture name
31format is a sanitised triplet cpu-os-abi (where previously we had cpu/os-abi).
32
33When building non-flattened, header files are now installed in an architecture
34and library-combo dependent subdirectory in the same way that binary libraries
35are installed.  This removes an inconsistency and makes sense with Debian
36multiarch support which puts headers in an architecture specific subdirectory.
37
38The long since deprecated GNUSTEP_INSTALLATION_DIR is removed.
39
40Various bugfixes and minor improvements.
41
42@section Version 2.6.8
43
44Configure option '--with-library-combo=ng-gnu-gnu' to use the 'Next Generation' setup of the latest ObjectiveC-2 runtime and compiler features rather than traditional runtime.  Requires the new runtime and a recent clang compiler.
45
46With the 'ng' runtime in use, you can define GS_WITH_ARC=1 at the start of a makefile, or in your environment, or in the command line arguments to have objC code built using ARC.
47
48Command line option 'documentation=no' to suppress builds of documentation.
49
50Integration of testsuite for regression/unit testing of libraries using the 'check' target.  In your makefile define libraryname_TEST_DIR = TestsSubdirectory
51
52Various minor bugfixes, documentation spelling corrections etc.
53
54The '--enable-strict-v2-mode' option is now, after eight years, turned on by default (in anticipation of finally removing backward compatibility with version one).  WARNING; Packagers please ensure that you update any old gnustep-make version one makefiles.
55
56Garbage collection support to be removed at the next release.
57
58@section Version 2.6.7
59
60Improved package building support
61
62Improved environment variable support
63
64Improved Java support
65
66Various minor bugfixes, documentation spelling corrections etc.
67
68@section Version 2.6.6
69
70Debian packagge generation support added.
71
72Bug fixes
73
74@section Version 2.6.5
75
76Bugfix for non-fragile ABI test
77
78Bugfix order if include diorectories for system includes
79
80Bugfix equality test for prorocol testing
81
82Added minimal test support for .c and .cc files.
83
84@section Version 2.6.4
85
86Test framework enhancement (extended equality tests)
87
88Android build target
89
90@section Version 2.6.3
91
92Bug fixes
93
94@section Version 2.6.2
95@table @samp
96@item Added standalone filesystem layout for putting everything in
97one directory for easy deployment of relocatable
98
99@item Other bug fixes
100@end table
101
102@section Version 2.6.1
103
104Bug fixes
105
106@section Version 2.6.0
107@table @samp
108
109@item The default filesystem layout is now the 'fhs' layout
110Before version 2.6.0, the default filesystem layout was the 'gnustep'
111layout.  Starting with 2.6.0, the default filesystem layout has
112changed and is now the 'fhs' layout.  To get the old default layout,
113configure gnustep-make using ./configure --with-layout=gnustep.  Note
114that this change does not affect gnustep-make when used with the
115apple-apple-apple library combo, in which case the default filesystem
116layout remains the 'apple' one.
117
118The change in the default filesystem layout means that the location of
119the GNUstep.sh file in a default installation has changed from
120/usr/GNUstep/System/Library/Makefiles/GNUstep.sh to
121/usr/local/share/GNUstep/Makefiles/GNUstep.sh.  If you use the default
122layout and execute the GNUstep.sh script on startup, you need to
123change the command from
124
125@smallexample
126. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
127@end smallexample
128
129to
130
131@smallexample
132. /usr/local/share/GNUstep/Makefiles/GNUstep.sh
133@end smallexample
134
135@item The default location of the configuration file changed
136Before version 2.6.0, the configuration file was always by default
137/etc/GNUstep/GNUstep.conf no matter what filesystem layout and prefix
138were used.  Starting with version 2.6.0, that is the default location
139of the configuration file only when installing system-wide, that is
140with a prefix set to /, /usr or /usr/GNUstep.  In all other cases, the
141configuration file is by default located in
142$prefix/etc/GNUstep/GNUstep.conf.
143
144In particular, this means that if ./configure is invoked with no
145options specified, the default location of the configuration file is
146now /usr/local/etc/GNUstep/GNUstep.conf (and no longer
147/etc/GNUstep/GNUstep.conf).
148
149Please note that the --with-config-file=xxx option allow you to
150specify whatever location for the configuration file that you want;
151the default is only used if no such option is specified and
152gnustep-make has to pick a reasonable default location for the
153configuration file.
154
155Finally, also note that the default location of the configuration file
156on Darwin has not changed and is still /Library/GNUstep/GNUstep.conf
157regardless of the prefix selected.
158
159@item Removed the --with-system-root, --with-local-root and --with-network-root options
160These configure options were obsolete and are ignored by all releases
161in the past 4 years and have now finally been removed.
162
163@item Removed obsolete variables
164Some very old variables that were deprecated 4 years ago have now been
165removed.  This includes xxx_RESOURCE_FILES_INSTALL_DIR in
166resource-set.make (you should use xxx_INSTALL_DIR instead) and
167GNUSTEP_GSWAPPS in gswapp.make (you should use GNUSTEP_WEB_APPS
168instead).
169
170@item New Test Framework
171GNUstep-make now includes a test framework that can be used to easily
172write testcases for Objective-C software.  The new releases of
173GNUstep-base and GNUstep-gui include regression test suites that use
174this test framework.  Please check the README in the TestFramework
175directory for more information on how it works or how to use it.
176
177@item objc.make is deprecated
178The file objc.make, which is used to compile Objective-C command-line
179tools without a Foundation library such as GNUstep base, is now
180deprecated.  Please use tool.make instead.
181
182@item --enable-absolute-install-paths is now the default on Darwin
183This makes it easier to use GNUstep with the gnu-gnu-gnu library combo
184on Apple Mac OS X.
185
186@end table
187
188@section Version 2.4.0
189@table @samp
190
191@item You can enable the use of the non-fragile ivar ABI
192The --enable-objc-nonfragile-abi flag can be used to enable the
193non-fragile ivar ABI for compilers (such as clang) that support it.
194
195@item -Wall is now used by default unless 'make warn=no' is specified
196Before version 2.4.0, 'make debug=yes' would not only build object
197files particularly suited for debugging, but would also add the -Wall
198flag on the compiler command line when compiling C/ObjC/C++/ObjC++.
199Starting with 2.4.0, the -Wall flag is controlled by a separate warn
200flag, so you can turn it on and off indipendentely by doing 'make
201warn=yes' or 'make warn=no'.  Since warn=yes is the default, the
202default behaviour also changed; starting with 2.4.0, gnustep-make will
203use -Wall by default.  You can turn it off by using 'make warn=no'.
204
205A similar change occurred for Java compilations, where the flag
206-deprecation, which used to be enabled by debug=yes, is now enabled by
207warn=yes.  As a consequence, Java code is now compiled by default with
208the -deprecation flag.  You can turn it off by compiling with 'make
209warn=no'.
210
211@item PACKAGE_NEEDS_CONFIGURE and JAVADOC_BUILD_ALWAYS now support 'yes' and 'no'
212gnustep-make boolean variables traditionally use the values 'yes' and
213'no', with the unfortunate exception of PACKAGE_NEEDS_CONFIGURE and
214JAVADOC_BUILD_ALWAYS which used to only recognize the values 'YES' and
215'NO'.  For consistency with everything else, starting with
216gnustep-make 2.4.0 these two variables recognize the values 'yes' and
217'no' too.
218
219@item Versions of GNU make older then 3.79.1 (June 2000) are no longer supported
220The .NOTPARALLEL pseudo-target is only available in GNU make 3.79 and
221is essential for parallel builds to work.  Starting with version
2222.4.0, gnustep-make recommends using GNU make 3.79.1 or greater; a
223warning will be issued during configure if an older GNU make is
224detected.  Older versions of GNU make are likely to work (except for
225parallel building) but are no longer supported.  As 3.79.1 was
226released about 10 years ago, this should not be a particular problem.
227
228@item new internalmessages=yes option
229Starting with version 2.4.0, gnustep-make recognized the new
230internalmessages=yes option (separate from messages=yes) which prints
231all the recursive make invocations that are used.  This is mostly
232useful to understand how gnustep-make internally works and is not
233meant for end-users.
234
235@item javadoc is run in quiet mode
236Starting with version 2.4.0, javadoc is by default executed with the
237-quiet option (unless messages=yes is specified), and a ``Generating
238javadoc documentation...'' is printed instead.
239
240@item new API to build subdirectories
241Before version 2.4.0, aggregate.make was used to step into
242subdirectories and build them.  It did not support parallel building.
243Starting with version 2.4.0, two new makefile fragments have been
244introduced: serial-subdirectories.make and
245parallel-subdirectories.make.  These can be used to build
246subdirectories, and encourage (indeed, force) the developer to
247explicitly decide if the subdirectories are to be built serially, or
248in parallel.
249
250Using parallel-subdirectories.make often produces massively faster
251builds (or installs or cleans) during a parallel build on a multicore
252machine.  But if you use parallel-subdirectories.make, you need to
253make sure the different subdirectories are completely independent of
254each other.  The operations that are executed in parallel are 'all',
255'clean', 'distclean', 'check' and 'strings'.  'install' and
256'uninstall' are still executed in serial order to prevent any
257concurrency problems when creating (or removing) common installation
258directories.
259
260aggregate.make is still available if you want or need to be
261backwards-compatible with older versions of gnustep-make.  It is
262normally a wrapper around serial-subdirectories.make, but if you
263specify 'GNUSTEP_USE_PARALLEL_AGGREGATE = yes' in your GNUmakefile, it
264becomes a wrapper around parallel-subdirectories.make.  aggregate.make
265will be deprecated in 2012 and removed in 2015, but for the next
266couple of years it might be a good solution while you wait for your
267users to upgrade their gnustep-make installations.
268
269
270@item each instance stores object files in its own subdirectory
271Before version 2.4.0, there was a single object directory where all
272object files where stored.  In the most common case, this directory
273was simply ./obj, so if you compiled file source.m, you'd end up with
274./obj/source.m.o.  Starting with version 2.4.0, different instances
275store their object files in different subdirectories; for example, if
276the file was compiled as part of tool ToolA, it would end up in
277./obj/ToolA.obj/source.m.o, while if compiled as part of ToolB, it
278would end up in ./obj/ToolB.obj/source.m.o.  This allows ToolA and
279ToolB to be built in parallel with no race conditions, even if they
280share some source files.  There are a number of side effects of this
281change.  First of all, in the unlikely event that your GNUmakefile
282depends on the location of the object files (bad idea by the way),
283you'll have to update it.  Second, if you are reusing a single source
284file in multiple instances in the same project, this will now be
285compiled multiple times instead of one (on the plus side, you can
286fully parallelize the build by just using 'make -j N', without having
287to change anything in your GNUmakefile.  On a machine with multiple
288cpus/cores this can massively speed up the build).  Finally, the rules
289to compile C/ObjC/C++/ObjC++/Windres files are no longer available in
290the Master invocation - they are only available when compiling a
291specific instance.  It's hard to imagine a situation where this change
292of private internals would affect any user; but people with their own
293private gnustep-make forks or advanced extensions might be affected.
294
295@item the order in which instances are built is no longer guaranteed
296If you build more than one tool in the same GNUmakefile by listing
297them all in TOOL_NAME as in ``TOOL_NAME = ToolA ToolB', you need to be
298aware that the way the instances are built changed in version 2.4.0.
299
300This change affects applications, bundles, ctools, clibraries,
301libraries, services, palettes, test-applications, test-libraries,
302test-tools, tools.  It does not affect Java, resource sets or
303documentation. [FIXME: frameworks ?]
304
305Before version 2.4.0, instances were always built one after the other
306one, exactly in the order specified.  So, in the example ToolA would
307be built before ToolB.  Starting with 2.4.0, the instances might be
308built completely in parallel if parallel building is enabled.  So, the
309order in which they are built is no longer defined and your
310GNUmakefile should not depend on the order in which instances are
311specified in the GNUmakefile.  Most GNUmakefiles should be unaffected
312because they rarely rely on the order in which instances are built.
313If your GNUmakefile does depend on the order, you have a few options.
314The preferred option is to identify the code or steps that need to be
315executed before some of the instances are built and put them into a
316before-all:: rule, which is guaranteed to be executed before anything
317else.  In this way your serialized code is executed first, and the
318build can continue in a completely parallel fashion afterwards.
319
320Another option is to move your instances into separate subdirectories,
321and use serial-subdirectories.make to build them.
322serial-subdirectories.make will respect the order and always build
323them in the order you require.
324
325If you want to disable parallel building altogether, you can add
326GNUSTEP_MAKE_PARALLEL_BUILDING=no just after including common.make to
327prevent a specific GNUmakefile from doing a parallel build.
328
329Please note that this does not affect the relationship between
330instances of different types; if you include library.make before
331tool.make, for example, the library (or libraries) will still be built
332before the tool (or tools).  It is the order in which the libraries
333(or tools) are built that is no longer guaranteed.
334
335@item support for having source files in subdirectories
336Starting with version 2.4.0, it is possible to put source files in
337subdirectories by specifiying them as in xxx_OBJC_FILES =
338Source/Beauty.m.  This syntax does not work on versions before 2.4.0
339so you should not use it if you want to support older versions of
340gnustep-make; previously you had to create a subproject and add a
341GNUmakefile in the subdirectory using subproject.make.  You can now
342spread your source files in multiple subdirectories without using
343subprojects.
344
345@item support for having header files in subdirectories
346Starting with version 2.4.0, it is possible to put header files in
347subdirectories by specifiying them as in xxx_HEADER_FILES =
348Beauty/Beauty.h.  This syntax does not work on versions before 2.4.0
349so you should not use it if you want to support older versions of
350gnustep-make.  When headers are put in subdirectories specified in
351this way, corresponding subdirectories are created when the header
352files are installed.  For example Beauty/Beauty.h would be
353automatically installed into
354GNUSTEP_HEADERS/HEADER_FILES_INSTALL_DIR/Beauty/Beauty.h.  To get the
355same result in versions before 2.4.0 you would have had to manually
356create the header installation subdirectories.
357
358@item support for HEADER_FILES_DIR in framework subproject
359Before version 2.4.0, specifying xxx_HEADER_FILES_DIR in a framework
360subproject would have no effect.  Starting with version 2.4.0, the
361variable is now recognized and can be used to have the files in a
362subdirectory.  You should avoid using the variable in framework
363subprojects if you want to support older versions of gnustep-make.
364
365@item info files renamed adding a gnustep- prefix
366To prevent conflicts with other documentation, all the gnustep-make
367info files have been renamed adding a gnustep- prefix.  For example,
368to access the GNUstep faq using info, you now need to type 'info
369gnustep-faq' instead of 'info faq'.  Please note that this info
370documentation is in the core/make/Documentation subdirectory and at
371the moment is not automatically installed unless you explicitly go in
372that subdirectory and install it.
373
374@item better cleaning for texinfo documentation
375When you build html documentation from texinfo files, the local
376directory containing the html files was not being removed when doing a
377'make clean'.  Starting with version 2.4.0, 'make clean' removes the
378directory too.
379
380@item debug=no made the default
381gnustep-make now builds using debug=no by default.  As a consequence,
382on most platforms C/Objective-C/C++ code is now built by default using
383-g -O2 instead of just -g.  If you do not want the -O2 flag, you can
384simply build using 'make debug=yes'.  You can also use the new
385./configure --enable-debug-by-default option to make 'debug=yes' the
386default flag that is always used when compiling if nothing else is
387specified.  If you do not want the debugging symbols, remember that
388you can use the 'make strip=yes' option to have them stripped out from
389all object files when they are installed.
390
391@item batch-compilation of Java files
392gnustep-make used to compile Java files one by one.  In most Java
393compilers this is very suboptimal.  Starting from release 2.4.0,
394gnustep-make will compile all Java files in a Java project with a
395single Java compiler invocation.  This can significantly speed up
396compilation of large projects.  To disable it and get the behaviour of
397gnustep-make 2.2.0, please set the variable BATCH_COMPILE_JAVA_FILES
398to 'no' (or the variable xxx_BATCH_COMPILE_JAVA_FILES to 'no' to
399disable it for a single instance).  Please note that if you are using
400the xxx_FILE_FLAGS or xxx_FILE_FILTER_OUT_FLAGS functionality for Java
401files, which allows you to customize the compilation flags for each
402Java file, then batch compilation is automatically disabled and all
403files are compiled separately.
404
405@item library resources always installed in directory without 'lib'
406This change only applies to libraries where LIBRARY_NAME starts with
407'lib' and that install resources.  Due to a bug, versions of
408gnustep-make before 2.4.0 would in this case install the resources
409into the wrong directory, without removing 'lib' from the library
410name.  For example, if LIBRARY_NAME is libgnustep-base, the resources
411would have been installed into
412GNUSTEP_LIBRARY/Libraries/libgnustep-base/Versions/1.14/Resources/
413instead of the correct
414GNUSTEP_LIBRARY/Libraries/gnustep-base/Versions/1.14/Resources/.  In
415gnustep-make 2.4.0, this bug has been fixed and the library name,
416without 'lib', will always be used in the resource installation
417directory, no matter if LIBRARY_NAME includes 'lib' or not.
418
419If you have a makefile which is affected and you need to support older
420versions of gnustep-make, you could remove 'lib' from the
421LIBRARY_NAME.  That should install resources in the same directory on
422all gnustep-make versions that support library resources (ie,
423gnustep-make >= 2.0.x).
424@end table
425
426@section Version 2.2.0
427@table @samp
428
429@item libobjc library
430You can now specify a particular libobjc library to use with the
431--with-objc-lib-flag in configure.  Make now also automatically uses
432-lobjc_gc when using garbage collection.
433
434@item parallel building
435Parallel building is supported now.  You can build using the normal make
436mechanism, e.g. 'make -j 2'.
437
438@item install -p
439gnustep-make now uses 'install -p' by default when installing headers
440and other files.  This preserves the file timestamps and can in some
441cases reduce spurious rebuilds triggered by reinstalling headers that
442have not been modified.  You can use the gnustep-make configure option
443--disable-install-p to disable this behaviour and go back to always
444using a standard 'install'.
445
446@item uninstallation of resources
447gnustep-make now is more careful and accurate when uninstalling
448resources, which means that 'make uninstall' will do a better job at
449removing directories that were created during by 'make install'.
450
451@end table
452
453@section Version 2.0.7
454
455@table @samp
456
457@item default installation
458New configuration file that allows hardcore developers building
459everything from source to specify arbitrary default installation domains
460for the software.  You just need to copy the installation-domains.conf
461file to the same directory as the GNUstep.conf file, and edit it to
462customize the default installation domain (Thanks to Richard for the
463idea).
464
465@item --no-print-directory
466gnustep-make now uses the --no-print-directory flag when invoking make
467recursively, so the output has changed - starting from 2.0.7 it should
468be shorter and more readable.
469
470@item change to intermediate object file names
471gnustep-make now supports having in the same project source files with
472the same name, but a different extension - for example file.c and
473file.m.  The names of intermediate object files have been internally
474changed (for example, from file.o to file.c.o) to support this.
475
476@item change in path checking algorithm in GNUstep.sh and GNUstep.csh
477GNUstep.sh and GNUstep.csh perform more careful checks for duplicate
478paths when adding paths to PATH and other path variables.  Now they
479check each path separately before adding it, which in some cases will
480produce smaller and less intrusive additions to PATH; in particular,
481on FHS filesystem layout, they will never add /usr/bin or other system
482paths if they are already there.  If you are in a situation where
483there is an overlap between GNUstep paths and system paths and you are
484using GNUstep.sh or GNUstep.csh, you may want to check the new values
485of PATH, CLASSPATH, GUILE_LOAD_PATH, INFOPATH, LD_LIBRARY_PATH and
486similar variables since they may be different from the old ones.
487
488@item test applications linked against gnustep-gui by default
489Test applications (that is, applications created using
490test-application.make) are now linked against gnustep-gui by default.
491
492@end table
493
494@section Version 2.0.6
495
496@table @samp
497
498@item GNUSTEP_ABSOLUTE_INSTALL_PATHS
499Added the --enable-absolute-install-paths option to configure on
500Darwin.  Enabling this option modifies the process for building
501dynamic libraries so the install_name stored within a library
502is an absolute path.  Dynamic libraries with an absolute
503install_name can be placed in non-standard locations, but may
504not be moved from their designated location.
505
506@item default location of GNUstep.conf on BSD systems
507This has been changed to /etc/GNUstep/GNUstep.conf to be consistent
508across all Unix systems (except for Apple Mac OS X where it is
509installed in /Library/GNUstep/GNUstep.conf).  To install in a
510different location, use the --with-config-file=PATH option, as in
511--with-config-file=/usr/pkg/etc/GNUstep.conf.
512
513@item make.info renamed to gnustep-make.info
514To prevent conflicts with the standard GNU 'make' info documentation,
515the gnustep-make one has been renamed.  Now you can access it as in
516'info gnustep-make' instead of 'info make', avoiding any conflicts and
517confusion.  Please note that this info documentation is in the
518core/make/Documentation subdirectory and at the moment is not
519automatically installed unless you explicitly go in that subdirectory
520and install it.
521
522@end table
523
524@section Version 2.0.5
525
526@table @samp
527
528@item default filesystem layout on apple-apple-apple
529The default filesystem layout when using the apple-apple-apple
530library-combo has been changed from 'gnustep' to the new 'apple'
531filesystem layout, and on darwin the configuration file is by default
532installed in /Library/GNUstep/GNUstep.conf instead of
533/etc/GNUstep/GNUstep.conf.  Using the 'gnustep' filesystem layout with
534the apple-apple-apple library-combo did not make much sense; in
535gnustep-make version 2.0.5 and newer, a ./configure on Apple Mac OS X
536automatically chooses the right library-combo and filesystem layout to
537compile and install Apple native frameworks and applications.
538
539@item ~/GNUstep/GNUstep.sh
540This script used to be automatically sourced whenever the main
541GNUstep.sh file was sourced.  In gnustep-make version 2 (starting with
5422.0.5) the file is no longer sourced.  If you are sourcing GNUstep.sh
543at start-up and have a custom shell script that you'd like to source
544in addition to GNUstep.sh, please source it in your shell init script
545before or after sourcing GNUstep.sh.  The same applies to
546~/GNUstep/GNUstep.csh.
547
548@item xxx_NEEDS_GUI
549This new variable can be used to specify that a project needs to be
550linked against the gui library (or not).  If set to yes, the gui
551library will be linked; if set to no, the gui library will not be
552linked.  If unspecified, the generic variable NEEDS_GUI is used; if
553that is also unspecified, the behaviour depends on the project type
554(and is backwards-compatible): applications, bundles, frameworks,
555palettes and libraries link automatically against the gui library;
556other project types do not.  It is recommended that you set
557xxx_NEEDS_GUI for all bundles, frameworks and libraries to clarify how
558the linking should be done.
559
560@item NEEDS_GUI
561This new variable can be used to specify that all projects built by
562this GNUmakefile need to be linked against the gui library (or not).
563If set to yes, the gui library will be linked; if set to no, the gui
564library will not be linked.  This behaviour can be overridden for
565specific project targets by using the xxx_NEEDS_GUI variable (see
566above).
567
568@end table
569
570@section Version 2.0.0
571
572Version 2.0.0 is a new major release of gnustep-make which includes a
573number of major changes compared to previous 1.x releases.  Most of
574the changes are backwards compatible in the sense that old
575GNUmakefiles will work with gnustep-make version 1 or 2 when used in
576the same conditions (traditional GNUstep filesystem layout).  But
577GNUmakefiles might need updating to work with the new filesystem
578layout configurations that are allowed by gnustep-make version 2.
579
580@table @samp
581
582@item GNUSTEP_INSTALLATION_DIR
583This variable is deprecated in gnustep-make version 2; you should
584never use it.  gnustep-make version 2 supports installation domains
585that are mapped to filesystem locations in arbitrary ways; for this
586reason, specifying a GNUSTEP_INSTALLATION_DIR no longer makes sense.
587If you need to relocate the whole installation (for example,
588installing into /tmp to prepare a binary package) you should use
589DESTDIR, as in 'make install DESTDIR=/tmp'.  To choose an installation
590domain, you should use GNUSTEP_INSTALLATION_DOMAIN, as in 'make
591install GNUSTEP_INSTALLATION_DOMAIN=LOCAL'.  It's particularly
592important that you remove any reference to GNUSTEP_INSTALLATION_DIR
593inside your own GNUmakefiles.
594
595If your GNUmakefiles contains references to GNUSTEP_INSTALLATION_DIR
596(or similar), you should remove them by replacing them with references
597to the actual logical directory into which you want to install.  For
598example, if your GNUmakefile is trying to install something into
599GNUSTEP_INSTALLATION_DIR/Library/Libraries, you need to replace it
600with GNUSTEP_LIBRARIES.  This is important for non-GNUstep filesystem
601layouts (where, eg, GNUSTEP_LIBRARIES should be set to /usr/lib or
602/usr/local/lib or /home/nicola/GNUstep/Library/Libraries depending on
603the installation domain); in that case, gnustep-make will manage
604GNUSTEP_LIBRARIES for you.  Please check the file @file{filesystem}
605for more information on the available variables.
606
607@item GNUSTEP_xxx_ROOT
608The variables GNUSTEP_SYSTEM_ROOT, GNUSTEP_LOCAL_ROOT,
609GNUSTEP_NETWORK_ROOT, GNUSTEP_USER_ROOT and GNUSTEP_ROOT are
610deprecated in gnustep-make version 2 and you should never use them.
611gnustep-make version 2 supports installation domains that are mapped
612to filesystem locations in arbitrary ways; for this reason, a variable
613like GNUSTEP_SYSTEM_ROOT has no longer any use.
614
615If your GNUmakefiles contains references to GNUSTEP_SYSTEM_ROOT (or
616similar), you should remove them by replacing them with references to
617the actual logical directory into which you want to install.  For
618example, if your GNUmakefile is trying to install something into
619GNUSTEP_SYSTEM_ROOT/Library/Libraries, you need to replace it with
620GNUSTEP_SYSTEM_LIBRARIES.  Please check the file @file{filesystem} for
621more information on the available variables.
622
623@item gnustep-make ./configure and install options
624The options to configure (and make install), particularly the ones to
625determine the filesystem layout, have been radically changed in
626gnustep-make version 2.  If you have a building or packaging script
627for gnustep-make, you need to make sure you replace your old
628./configure options with the new ones.  In particular, the
629--with-system-root, --with-local-root and --with-network-root
630configure options have been replaced by the more powerful
631--with-layout configure option.  Also, configure no longer imports an
632existing configuration file so you need to make sure that you pass all
633the options every time.  'make install special_prefix=xxx' has been
634replaced by 'make install DESTDIR=xxx'.
635
636@item make debug=yes is now the default
637The default used to be 'make debug=no'; this has now been changed to
638be 'make debug=yes'.  To get the traditional behaviour, please use
639'make debug=no'.
640
641@item RPM support rewritten
642The RPM support has been rewritten so if you're using gnustep-make
643to automatically generate RPM packages for your software, you may
644want to review the process.  In particular, there is no longer
645a distinction between debug and non-debug packages.
646
647@item xxx_PREPROCESS_INFO_PLIST
648This variable is now obsolete and can be removed; gnustep-make version 2
649can automatically detect plists that need preprocessing.
650
651@item Framework default version
652The default framework resource version changed from 'A' to
653INTERFACE_VERSION (which is set, by default, to '0').
654
655@item Microsoft Windows updates
656If you are using Microsoft Windows, you probably want to check
657the new installation instructions and reinstall everything.
658
659@item Java tools location changed
660Java tools are now installed into GNUSTEP_JAVA rather than
661in a subdirectory of GNUSTEP_TOOLS.
662
663@item resource-set.make install directory
664The variable xxx_RESOURCE_FILES_INSTALL_DIR for resource-set.make has
665been deprecated in favour of xxx_INSTALL_DIR.  For backwards
666compatibility, you may want to set them both:
667
668xxx_INSTALL_DIR = $(GNUSTEP_LIBRARY)/Libraries/Resources/xxx
669
670xxx_RESOURCE_FILES_INSTALL_DIR = /Library/Libraries/Resources/xxx
671
672@item INSTALL_ROOT_DIR
673All instances of INSTALL_ROOT_DIR in user's makefiles should be
674replaced with DESTDIR.
675
676@item GNUSTEP_FLATTENED
677All checks for GNUSTEP_FLATTENED should be updated to check the new
678variable GNUSTEP_IS_FLATTENED instead, and to compare it explicitly to
679'yes' and 'no', and assume that '' means 'yes'.
680
681@item ./shared_obj
682The ./shared_obj, ./shared_debug_obj directories and similar are no longer
683created.  You can use ./obj instead.
684
685@item library names
686All libraries now have the same name.
687
688@item application names
689All applications now have the same name.
690
691@end table
692
693@ifinfo
694Copyright @copyright{} 2007 Free Software Foundation
695
696Copying and distribution of this file, with or without modification,
697are permitted in any medium without royalty provided the copyright
698notice and this notice are preserved.
699@end ifinfo
700
701
702