1 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. 1.1 Version 2.2.0 ================= `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. `parallel building' Parallel building is supported now. You can build using the normal make mechanism, e.g. 'make -j 2'. `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'. `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'. 1.2 Version 2.0.7 ================= `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). `--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. `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. `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. `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. 1.3 Version 2.0.6 ================= `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. `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. `gnustep-make.info renamed to make.info' 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. 1.4 Version 2.0.5 ================= `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. `~/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. `xxx_NEEDS_GUI' This new variable can be used to specify that a project needs to be 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 linked. If unspecified, the generic variable NEEDS_GUI is used; if that is also unspecified, the behaviour depends on the project type (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. `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). If set to yes, the gui library will be linked; if set to no, the gui library will not be linked. This behaviour can be overridden for specific project targets by using the xxx_NEEDS_GUI variable (see above). 1.5 Version 2.0.0 ================= 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. `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. 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 `filesystem' for more information on the available variables. `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 `filesystem' for more information on the available variables. `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'. `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'. `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. `xxx_PREPROCESS_INFO_PLIST' This variable is now obsolete and can be removed; gnustep-make version 2 can automatically detect plists that need preprocessing. `Framework default version' The default framework resource version changed from 'A' to INTERFACE_VERSION (which is set, by default, to '0'). `Microsoft Windows updates' If you are using Microsoft Windows, you probably want to check the new installation instructions and reinstall everything. `Java tools location changed' Java tools are now installed into GNUSTEP_JAVA rather than in a subdirectory of GNUSTEP_TOOLS. `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 `INSTALL_ROOT_DIR' All instances of INSTALL_ROOT_DIR in user's makefiles should be replaced with DESTDIR. `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'. `./shared_obj' The ./shared_obj, ./shared_debug_obj directories and similar are no longer created. You can use ./obj instead. `library names' All libraries now have the same name. `application names' All applications now have the same name. Copyright (C) 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.