tools-make/Documentation/news.texi
Richard Frith-Macdonald f0e00360a2 Dec 2022 release
2022-12-28 10:18:03 +00:00

637 lines
22 KiB
Text

@c -*-texinfo-*-
@ifclear ANNOUNCE-ONLY
@chapter NEWS
@ifset TEXT-ONLY
@include version.texi
@end ifset
The currently released version is @samp{@value{GNUSTEP-MAKE-VERSION}}.
@end ifclear
@section Changes in version @samp{2.9.1}
@itemize
@item Add workaround for Clang bug on Windows MSVC when tests contain no Objective-C constructs.
@item Various fixes for minor issues introduced in the test framework by parallelisation mof testcase execution.
@end itemize
@ifclear ANNOUNCE-ONLY
@section Changes in version @samp{2.9.0}
@itemize
@item Better check for objc runtime on Windows.
@item Split linker flags to better support partial linking: @code{ALL_LDFLAGS}
is now a combination of @code{FINAL_LDFLAGS} and @code{ALL_LDFLAGS}.
@item Better support for newer gcc versions.
@item Add support for storyboard files.
@item Increase autoconf version to 2.65 and make autoconf handle Objective-C++
and OBJCXX variables directly.
@item Fix bug that prevented ARC from getting used.
@item Link subproject object files directly instead of first merging them into
@code{subproject.o}.
@item Support building on Windows with Clang MSVC target.
@item Improve mingw64 support: for instance, adopt the triplet used by the
mingw-w64 project rather than using the one returned by autoconf. Fixes building
Gorm.
@end itemize
@section Changes in version @samp{2.8.0}
@itemize
@item Better library combo and ABI detection: gnustep-make will now attempt to
detect the optimal library combo and ABI supported by the installed compiler
and Objective-C runtime library. Explicit selection of the runtime ABI is now
possible using the @code{--with-runtime-abi} configure option.
@item Full support for the gnustep-2.0 Objective-C ABI.
@item Support for creating a Git tag and creating a tarball from a git tag
using the @code{git-tag} and @code{git-dist} targets.
@item Support for creating a Mercurial tag and creating a tarball from a hg
tag using the @code{hg-tag} and @code{hg-dist} targets.
@item Dropped legacy Rhapsody and FreeBSD-out support.
@end itemize
@section Changes in version @samp{2.7.0}
Garbage collection support removed
ARC enabled by default if the ng runtime is used
Multi-architecture directory layout adjusted to be more Debian compatible
Framework support fixes
Various other minor bugfixes
@section Changes in version @samp{2.6.8}
Configure 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.
With 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.
Command line option 'documentation=no' to suppress builds of documentation.
Integration of testsuite for regression/unit testing of libraries using the 'check' target. In your makefile define libraryname_TEST_DIR = TestsSubdirectory
Various minor bugfixes, documentation spelling corrections etc.
The '--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.
Garbage collection support to be removed at the next release.
@section Changes in version @samp{2.6.7}
Improved package building support
Improved environment variable support
Improved Java support
Various minor bugfixes, documentation spelling corrections etc.
@section Changes in version @samp{2.6.6}
Debian packaging support
Minor bugfixes.
@section Changes in version @samp{2.6.5}
Bugfix for non-fragile ABI test
Bugfix order if include diorectories for system includes
Bugfix equality test for prorocol testing
Added minimal test support for .c and .cc files.
@section Changes in version @samp{2.6.4}
Test framework extended equality tests.
Android build target
@section Changes in version @samp{2.6.3}
Minor bugfix release.
@section Changes in version @samp{2.6.2}
Added standalone filesystem layout for putting everything in
one directory for easy deployment of relocatable. Other bug fixes.
@section Changes in version @samp{2.6.1}
Bug fix release. Most notably to fix a problem compiling GNUstep with clang.
@section Changes in version @samp{2.6.0}
@itemize @bullet
@item The default filesystem layout is now the 'fhs' layout
@item The default location of the configuration file changed when not installing system-wide
@item Removed the --with-system-root, --with-local-root and --with-network-root options
@item Removed obsolete variables (deprecated 4 years ago).
@item A new test framework is included in the pacakge
@item objc.make deprecated. Use tool.make instead
@item --enable-absolute-install-paths is now the default on Darwin
@end itemize
@section Changes in version @samp{2.4.0}
@itemize @bullet
@item Add --enable-objc-nonfragile-abi flag
@item New serial-subdirectories.make and parallel-subdirectories.make.
@item Support for parallel building of subdirectories.
@item Support for parallel building of different instances.
@item Support source files in subdirectories without using a subproject.
@item Support header files in sub-subdirectories.
@item Batch-compile Java files (much faster).
@item Changed default compilation flags to -O2 -g.
@item Fixes for building documentation.
@item Renamed info files to prevent conflicts.
@item Updated cygwin support.
@end itemize
@section Changes in version @samp{2.2.0}
@itemize @bullet
@item New --with-objc-lib-flag for specifying libobjc.
@item Automatically uses -lobjc_gc with configured with garbage collection
@item Parallel building supported using e.g. make -j 2
@item Use install -p if available.
@item make uninstall works better now.
@end itemize
@section Changes in version @samp{2.0.8}
Minor bug fix to deal with installing in different domains
@section Changes in version @samp{2.0.7}
@itemize @bullet
@item New configuration file to set default installation
@item gnustep-make now uses the --no-print-directory flag when invoking make
@item Files make have same name but different extensions (.c and .m)
@item Change in path checking algorithm in GNUstep.sh and GNUstep.csh
@item Test applications linked against gnustep-gui by default
@end itemize
@section Changes in version @samp{2.0.6}
@itemize @bullet
@item Fixed some spurious rebuilds of plists, and framework headers.
@item Added the --enable-absolute-install-paths option for Darwin systems.
@item Install GNUstep.conf in /etc/GNUstep/GNUstep.conf on all systems.
@end itemize
@section Changes in version @samp{2.0.5}
@itemize @bullet
@item Update C++ and ObjC++ support so that g++ and proper flags are automatically used.
@item Added a new filesystem layout for Apple Mac OS X and use this by default on this system.
@item NEEDS_GUI variable added to determine linking behavior against gui library.
@item New option --enable-strict-v2-mode to test for obsolete variables.
@item ~/GNUstep/GNUstep.sh is no longer sourced.
@end itemize
@section Changes in version @samp{2.0.4}
Fixed a bug finding relative paths on Windows (during configuration).
@section Changes in version @samp{2.0.3}
New man pages for tools. Better uninstallation of files
Add Windows installer makefile for Applications.
@section Changes in version @samp{2.0.2}
Update license to GPLv3.
@section Changes in version @samp{2.0.1}
Bug fixes in filesystem layout and framework installation.
@section Changes in version @samp{2.0.0}
The Makefile package has had a major makover which befits a major
version update. The most user-visible change of this is customized
filesystem support. GNUstep can now be configured and installed using
any of many typical filesystem layouts, including FHS, Mac, and the
traditional GNUstep layout.
Due to this change a number of variable names have been changed or
deprecated. If you are a developer maintaining makefiles, you should
check your makefiles for these variables. Most notibly, variables such
as @samp{GNUSTEP_SYSTEM_ROOT} no longer make any sense, as various
directories that were previously in a traditional GNUstep system root
directory exist accross multiple directories in disparate places in
other filesystem layouts.
If you are a user or developer that is just installing GNUstep, read
the @file{GNUstep-HOWTO} and @file{INSTALL} documents to find out new
information about configuring and installing make.
If you are a developer, read the files @file{filesystem} and
@file{make} for information on new and changed variables. Read the
@file{RELEASENOTES} file for specific changes in this release and updates
you will need to make with this version of make.
Various changes include (See @file{RELEASENOTES} for more information):
@itemize @bullet
@item New configure option @samp{--with-layout} to choose different
filesystem layouts.
@item All applications use the @samp{.app} extension even when compiled with
debugging or profiling.
@item Precompiled header support added using xxx_OBJC_PRECOMPILED_HEADERS.
@item gnustep-config is a program which prints out information on the
GNUstep filesystem and variables (Similar to programs like pkg-config).
@item Better inline messages/help, including printing the version
of gnustep-make that is being used
@item Applications can be started now just using their name (by
installing a wrapper in the tools directory).
@item Versioning of Microsoft Windows DLLs implemented.
@item Use of @samp{GNUSTEP_SYSTEM_ROOT} and similar variables
deprecated.
@item Implement use of GNU standard @samp{DESTDIR} variable.
@item Object files are now placed in the @file{obj} directory.
@item Static and profile libraries have the same name as normal libraries.
@item Support for Admin Tools and Admin Apps directories
@item RPM support rewritten
@item Microsoft Windows support updated and extended
@item Easy consistent way to link non-installed frameworks by using
-Lpath_to_framework/xxx.framework/$GNUSTEP_TARGET_LDIR
@item Versioning of library resources
@item Fixed rebuilding .plist and .palette files
@end itemize
@section Changes in version @samp{1.13.0}
Debug libraries now have the same name as normal libraries (i.e. no "_d"
suffix). This reduces the possiblity of multiple libraries being loaded
into the same executable.
Added dragonfly OS to make targets.
Spaces and backslashes are no longer allowed in paths used by the make
package (e.g. with Windows OS). The libraries can still use native paths.
@section Changes in version @samp{1.12.0}
Minor fixes.
@section Changes in version @samp{1.11.2}
The @file{GNUstep.conf} file is now viewed as the essential
determination of the install location for GNUstep libraries, tools and
other files. During configuration, this file is read, if it exists, to
determine this information. This can still be overriden with
environment and command line options, however. See the filesystem
documentation in the GNUstep Make Documentation directory for more
information.
You no longer need to source GNUstep.sh in order to compile GNUstep
programs. All that is needed is the definition of
GNUSTEP_MAKEFILES. You should also have the GNUstep system tools
directory in your path.
All netbsd systems are assumed to use ELF libraries. Support for the old
static libs version of netbsd was removed.
Serveral new options were added to configure to change the location of
basic dir locations and basic configuration files. Also, the help was
greatly improved. Note that --prefix=/usr/GNUstep/System no longer
works. Please use --prefix=/usr/GNUstep or
--with-system-root=/usr/GNUstep/System.
A few more fixes for cygwin are included as well as Windows resource rules.
Support for ObjC++ has been added. You should list the ObjC++ .mm
files in the xxx_OBJCC_FILES variable, and put extra ObjC++ flags in
xxx_OBJCCFLAGS or ADDITIONAL_OBJCCFLAGS.
@section Changes in version @samp{1.11.1}
Part of the previous change was reversed. Now libobjc is still linked
with individual applications (as well as the base library), since some
operating systems require this to resolve external symbols. However,
there is no need to recompile all applications again.
Compilation of GNUstep on cygwin was revampled and fixed due to a lot of
work by Tom MacSween.
@section Changes in version @samp{1.11.0}
NOTE: The libobjc library is now linked in with the base library and NOT with
individual applications or tools (except on MingW). This requires that
you do a complete rebuild of all libraries, tools and apps when switching
to this new version.
@itemize @bullet
@item New rules for building and using DLLs were implemented. Now gcc
and other tricks are used to properly export symbols, so no .def file
should be needed.
@item The GNUsteprc file in $GNUSTEP_SYSTEM_ROOT is deprecated. See the
new GNUstep.conf file (which is not installed by default).
@item Psuedo-framwork support was implemented on MingW. This essentially
involves copying the framework to several places so it can be used without
links, which Windows does not really support. There's no other
clean way to do it.
@item Support for xxx_WINDRES_FILES on MinGW was implemented.
@end itemize
@section Changes in version @samp{1.10.0}
@itemize @bullet
@item a GNUsteprc file is now automatically created and installed in
$GNUSTEP_SYSTEM_ROOT, which sets the system-wide default for the user
root directory (default=~/GNUstep, which can be overriden with the
@code{--with-user-root} argument to configure, or by modifying GNUsteprc
after configuration.)
@item make_services is not run by GNUstep.sh anymore. You must run this
manually now (see the gnustep-gui documentation).
@item Palettes use a plist instead of a strings format file now for the
palette.table file.
@item You can use the @code{--enable-native-objc-exceptions} argument to
configure to enable use of built in objc exceptions with compilers that
support it.
@end itemize
@section Changes in version @samp{1.9.2}
@itemize @bullet
@item Application and Bundles use the latest convention on Apple.
@item Improve/Simplify dependency checking when making docs
@end itemize
@section Changes in version @samp{1.9.1}
@itemize @bullet
@item Remove @code{--disable-import} option
@item README.Darwin for darwin/MacOSX install
@item Framework version and naming clarified.
@end itemize
@section Changes in version @samp{1.9.0}
@itemize @bullet
@item Support for building in a separate build dir.
@item Add @code{--enable-strip-makefiles} option to configure
@item List of classes in a framework gets written to the plist file.
@end itemize
@section Changes in version @samp{1.8.0}
Read the NEWS file for a complete list of changes since the last stable
release. The major difference from 1.6.0 is that the locations of certain
directories have changed. Generally this will not cause a problem unless
your GNUstep directory is shared by multiple machines running this and
earlier (1.6.x) versions of the software.
@section Changes in version @samp{1.7.4}
Bug fixes.
@section Changes in version @samp{1.7.3}
@itemize @bullet
@item Adds library combo to Headers directory if not flattened.
@item Add Markup file (Renaissance) support.
@end itemize
@section Changes in version @samp{1.7.2}
--enable-flattened (Flat directory structure) is on by default.
@itemize @bullet
@item On WIN32 use HOMEPATH in preference to USERPROFILE
@item netbsd and openbsd compile fixes.
@end itemize
@section Changes in version @samp{1.7.1}
Bug fixes.
@section Changes in version @samp{1.7.0}
This version contains a major change in the location of certain
directories and installed files as detailed in the @file{filesystem.texi}
document. When installing this version for the first time, all old
directories and files in those directories will be moved to the new
locations automatically. However, you should update all GNUstep versions
on any machine you have them installed on in order to avoid any
incompatibilities.
Other changes:
@itemize @bullet
@item Support for preprocessed Info.plists.
@end itemize
@section Changes in version @samp{1.6.0}
Make now configures by default for only one system. To compile and run
GNUstep for multiple platforms from the same directory, use the
configure argument --enable-multi-platform.
@itemize @bullet
@item Auto-build def file for DLLs
@item Work natively on MacOSX systems. Now use apple-apple-apple
instead of nx-nx-nx on OSX systems.
@item More efficient checks for re-making a project.
@end itemize
@section Changes in version @samp{1.5.1}
@itemize @bullet
@item Framework support rewritten, also supports multiple names.
@item API change: Replace frameowork's xxx_TOOLS by xxx_COPY_INTO_DIR.
@item Unified link commands between libraries and frameworks (LIB_LINK_*).
@item New 'make strings' target for localization support.
@item Speed improvements.
@item Doesn't try to build OSX bundle on GNUstep and vice versa.
@item API change: Tools/Subproj can have resources.
@item API change: TOOL_INSTALL_DIR.
@end itemize
@section Changes in version @samp{1.5.0}
@itemize @bullet
@item Add NetBSD Elf support
@end itemize
@section Changes in version @samp{1.4.0}
@itemize @bullet
@item Update Darwin/GNU gcc and Irix targets
@end itemize
@section Changes in version @samp{1.3.4}
This is a first prerelease version for 1.4.
@itemize @bullet
@item Use gnugc-gnu-gnu library combo for garbage collecting version.
@item Add support for --library-combo in opentool
@item Change GNUSTEP_PATHPREFIX_LIST to GNUSTEP_PATHLIST
@item Add verbosity levels. Use make messages=yes for full messages.
@end itemize
@section Changes in version @samp{1.3.3}
@itemize @bullet
@item Recognizes XXX_STANDARD_INSTALL=no to not do installation.
@item Updated instructions for MingW/MSYS installation.
@end itemize
@section Changes in version @samp{1.3.2}
@itemize @bullet
@item Instructions for building on Windows with MSYS
@item Resolve library dependencies better on Windows
@item Fix frameworks in RPMs and DEBs
@item Continued reorganization.
@end itemize
@section Changes in version @samp{1.3.0}
The package has gone through an extensive reorganization to break up
each sub-make into two separate components. This allows for much
simplified code and lots of code sharing between components. As a side
effect, it also increased the speed of the code by at least a factor of
2.
@itemize @bullet
@item Force shared=yes for cygwin and mingw
@item Bundles copy resources from subprojects.
@item Better resource management. Resources handled accross all project types.
@item Simplified and fixed user root location between make and base libraries.
@item Changed Apps directory to Applications
@item Fixes for MacOSX, MingW
@end itemize
@section Changes in version @samp{1.2.1}
@itemize @bullet
@item the source distribution code has been rewritten to be more general
and extended. Packages built using gnustep-make now automatically
have handy targets building tarballs from sources or from CVS imports.
@item implemented support for auto-dependencies, which means that any object
file automatically depends on all the header files which were used to
build it. Only works with newer compilers.
@item implemented INSTALL_AS_USER and INSTALL_AS_GROUP.
@item implemented a strip=yes option.
@item various bug fixes and minor improvements.
@end itemize
@section Changes in version @samp{1.2.0}
@itemize @bullet
@item The core rules and internals of gnustep-make have been fundamentally
redesigned and rewritten. notably, gnustep-make now works using only
a single recursive sub-make invocation rather than two, which makes
it consistently faster and simpler in all circumstances.
@item The clean rules have been heavily optimized - they no longer use
recursive sub-make invocations at all and so they are really fast.
@item Many improvements to java support. Optimized management of nested classes
@item Better conformance to make conventions.
@item File specific compilation flags
@item Fixed darwin support
@item Support for C++ files.
@item Made use of library installation dir consistent with other installation.
@item Much improved Windows path support
@end itemize
@section Changes in version @samp{1.0.1}
@itemize @bullet
@item Support for Java tools.
@item Build GUI backend as a bundle (default).
@item Remove backend part of LIBRARY_COMBO.
@item Fixes to run on FreeBSD, Solaris.
@end itemize
@section Changes in version @samp{1.0.0}
@itemize @bullet
@item Optimizations that in many cases more than double the speed.
@item Added preliminary darwin support.
@item rpm packeing improvements.
@item Better checking for mingw and cygwin
@end itemize
@section Changes in version @samp{0.9.2}
@itemize @bullet
@item HOWTO and faq files moved from core package to here
@item Configurable GNUSTEP_LOCAL_ROOT and GNUSTEP_NETWORK_ROOT
@end itemize
@section Changes in version @samp{0.9.1}
Make has been reoganized so that it only relies on libraries and other things
that are necessary for the Makefile package itself. Any libraries wanting to
add extra package information can do so by installing a make stub in the
@file{Additional} directory. This greatly simplifies compilation and packaging.
@itemize @bullet
@item Javadoc support added.
@item debian directory added for dpkg
@item RPM support rewritten from scratch.
@end itemize
@section Changes in version @samp{0.9.0}
ffcall library is highly recommended for use with the GNUstep base
library. You need to have installed it prior to configuring the Makefile
package. See the INSTALL file.
@itemize @bullet
@item Support for automatically generating RPM spec files.
@item Build suitable files for MacOS bundles
@item Add option for flattened directory structure.
@item LaText documentation support.
@item Added support for Frameworks
@end itemize
@section Noteworthy changes in version @samp{0.6.6}
The GNUstep system libraries are now installed in a separate system root
directory (default /usr/GNUstep/System) rather than the GNUstep
root directory (default /usr/GNUstep). You can revert to the old behavior
using a configure option @samp{--without-system-root}. We also recommend
removing any previous GNUstep versions before installing the new one in order
to avoid problems with the system finding the correct binary and/or library.
@itemize @bullet
@item Support for Windows compilation (cygwin and mingw) and DLL creation
and usage.
@item Java support rewritten and extended.
@end itemize
@end ifclear
@c end ifclear ANNOUNCE-ONLY