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