diff --git a/ChangeLog b/ChangeLog index cb9c0d42c..07adee2a3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2016-03-04 Richard Frith-Macdonald + + * configure.ac: Enable strict v2 mode by default + * configure: regenerate + * README.Packaging: Warn about updating ancient makefiles + * Documentation/library-combo.7: Talk about ng runtime + * Version: + * Documentation/news.texi: + * Documentation/releasenotes.texi: + Update prior to new release + 2016-03-02 Richard Frith-Macdonald * configure.ac: Improve selection of clang when 'ng' runtime library diff --git a/Documentation/GNUstep.7 b/Documentation/GNUstep.7 index d9e2fa364..9f1b204d4 100644 --- a/Documentation/GNUstep.7 +++ b/Documentation/GNUstep.7 @@ -9,10 +9,10 @@ GNUstep \- A free implementation of the OpenStep standard .B GNUstep provides an Object-Oriented application development framework and toolset for use on a wide variety of computer platforms. .B GNUstep -is based on the original OpenStep specification provided by NeXT, Inc. (now Apple). +is based on the original OpenStep specification provided by NeXT, Inc. (now Apple and called Cocoa). .P .B GNUstep -is written in Objective-C, an object-oriented superset of the C programming language, similar to SmallTalk. However there exist a number of brigdes and interfaces to develop +is written in Objective-C, an object-oriented superset of the C programming language, similar to SmallTalk. However there exist a number of bridges and interfaces to develop .B GNUstep programs using other languages like JAVA or Ruby. @@ -36,7 +36,8 @@ This is the backend of .BR GNUstep 's GUI part which does the actual rendering and event handling. It acts as a layer between gnustep-gui and the operating/drawing system. Backends exist for X11 (one using cairo, one using libart, one using xlib drawing) and win32. .PP -Apart from the above, there exist a number of addon libraries, like +Apart from the above, there exist a number of addon libraries related to +GNUstep, like .B Renaissance which allows developers to specify an application's user interface in xml. For database access, there is .B GDL2 diff --git a/Documentation/library-combo.7 b/Documentation/library-combo.7 index 0cd77ea75..6aac184a0 100644 --- a/Documentation/library-combo.7 +++ b/Documentation/library-combo.7 @@ -39,12 +39,12 @@ etc. flags. An important issue is to let to a package the ability to deal with various libraries and configurations available now: .TP .B Objective-C runtimes -In the Objective-C world there are three major runtimes: the NeXT runtime, the Apple runtime and the +In the Objective-C world there are three major runtimes: the GNUstep runtime, the Apple runtime and the .SM GNU runtime (both with and without garbage collection enabled). They are different in several respects and a program or library that works at the runtime level should be aware of them. .TP .B Foundation libraries -There are several Foundation libraries an application or tool can be written on top of: NeXT Foundation library which runs on NeXTStep/OPENSTEP systems, gnustep-base, libFoundation and Apple Cocoa system. +There are different Foundation libraries an application or tool can be written on top of: gnustep-base, libFoundation and Apple Cocoa system. .TP .B Graphical interfaces Until now three libraries provide or try to provide OpenStep compliant systems: the AppKit from NeXT, gnustep-gui and Cocoa from Apple. @@ -52,17 +52,17 @@ Until now three libraries provide or try to provide OpenStep compliant systems: If a program wants to work with all the possible combinations it will have to provide different binaries for each combination because it's not possible to have a tool compiled for NeXT Foundation that runs with gnustep-base or vice-versa. To summarize, a program can be compiled for these combinations: .TP .B Objective-C runtime -nx (for NeXT), gnu (for +ng (for GNUstep Next Generation), gnu (for .SM GNU -without garbage collection), gnugc (for +without garbage collection, or for GNUstep without latest language features), gnugc (for .SM GNU -with garbage collection), apple (for Apple) +with garbage collection), apple (for Apple), nx (for NeXT) .TP .B Foundation library -nx (for NeXT), gnu (for gnustep-base), fd (for libFoundation), apple (for Apple Cocoa) +gnu (for gnustep-base), fd (for libFoundation), apple (for Apple Cocoa), nx (for NeXT Foundation) .TP .B GUI library -nx (for NeXT), gnu (for gnustep-gui), apple (for Apple Cocoa) +gnu (for gnustep-gui), apple (for Apple Cocoa), nx (for NeXT GUI) .PP We'll denote the fact that an application was compiled for a certain combination of the above values by using the abbreviations of the different subsystems and placing dashes between them. For example an application compiled for NeXT Foundation using NeXT AppKit will have the compile attribute nx\-nx\-nx. An application compiled for Apple Cocoa with the .SM GNU @@ -80,6 +80,8 @@ under Unix will be denoted by gnu\-gnu\-gnu. Here is a list of some of the possi nx fd gnu .RS 0 gnu gnu gnu +.RS 0 + ng gnu gnu .RS 0 gnu fd gnu .RS 0 diff --git a/Documentation/news.texi b/Documentation/news.texi index f4edd4693..2e64adc05 100644 --- a/Documentation/news.texi +++ b/Documentation/news.texi @@ -9,6 +9,22 @@ The currently released version is @samp{@value{GNUSTEP-MAKE-VERSION}}. @end ifclear +@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. + +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. + +@ifclear ANNOUNCE-ONLY + @section Changes in version @samp{2.6.7} Improved package building support @@ -19,8 +35,6 @@ Improved Java support Various minor bugfixes, documentation spelling corrections etc. -@ifclear ANNOUNCE-ONLY - @section Changes in version @samp{2.6.6} Debian packaging support diff --git a/Documentation/releasenotes.texi b/Documentation/releasenotes.texi index e81f468df..b58728b33 100644 --- a/Documentation/releasenotes.texi +++ b/Documentation/releasenotes.texi @@ -4,6 +4,20 @@ 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. +@section Version 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. + +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 Version 2.6.7 Improved package building support diff --git a/README.Packaging b/README.Packaging index 87169fb73..804b08e1c 100644 --- a/README.Packaging +++ b/README.Packaging @@ -163,17 +163,16 @@ filesystem layout. ================= The library-combo defines the main components of your Objective-C -environment. Unless you're on Darwin or Apple, it's unlikely that you -ever need to bother with library-combos and the default gnu-gnu-gnu is -perfect for you. +environment. -"gnu-gnu-gnu" means that the system is using the GNU Objective-C -runtime library, the GNU foundation/base library, and the GNU app/gui -library. It is possible in some situations to replace some of these -components with Apple libraries, for example, eg, the apple-gnu-gnu -library combo would mean using the Apple Objective-C runtime library -instead of the GNU one. +The default is currently "gnu-gnu-gnu", which means that the system +is using the GNU Objective-C runtime library, the GNU foundation/base +library, and the GNU app/gui library. +You may well wish to use "ng-gnu-gnu", which means that the runtime +library is the GNUstep runtime for ObjectiveC-2, and also means that +the latest language features are expected with the compiler. +To use this you must ship the GNUstep runtime and clang-3.1 or later. 4. CONFIGURATION FILE ===================== @@ -253,7 +252,7 @@ command now looks something like Or, if you really wanted to change a lot of things, it might look like - ./configure --with-layout={FILE} --with-config-file={LOCATION} --with-user-defaults-dir={DEFAULTS_DIR} + ./configure --with-layout={FILE} --with-library-combo=ng-gnu-gnu --with-config-file={LOCATION} --with-user-defaults-dir={DEFAULTS_DIR} 8. USER ENVIRONMENT diff --git a/Version b/Version index 9df26c7d4..373d9eca2 100644 --- a/Version +++ b/Version @@ -4,6 +4,6 @@ # The version number of this release. GNUSTEP_MAKE_MAJOR_VERSION=2 GNUSTEP_MAKE_MINOR_VERSION=6 -GNUSTEP_MAKE_SUBMINOR_VERSION=7 +GNUSTEP_MAKE_SUBMINOR_VERSION=8 GNUSTEP_MAKE_VERSION=${GNUSTEP_MAKE_MAJOR_VERSION}.${GNUSTEP_MAKE_MINOR_VERSION}.${GNUSTEP_MAKE_SUBMINOR_VERSION} diff --git a/configure b/configure index 5f4a7e6f5..e25b9d069 100755 --- a/configure +++ b/configure @@ -1430,19 +1430,9 @@ Optional Features: --enable-strict-v2-mode Enable strict gnustep-make version 2 mode by default. Use this option to have gnustep-make be aggressively backwards-incompatible - with gnustep-make version 1. You can use it when you are debugging / - upgrading your makefiles and software to gnustep-make version 2 and - want to test test that they do not depend on obsolete or deprecated - version 1 features and variables. Important: you must never ship - gnustep-make to end-users with --enable-strict-v2-mode as it would - cause extremely confusing and dangerous problems with software that - has not been updated to gnustep-make v2 yet. Use it only on test - builds or development machines to test that makefiles and software - have been updated. Make sure to use it extremely carefully with old - makefiles because it can produce unpredictable and dangerous results - (for examples, since GNUSTEP_SYSTEM_ROOT is undefined when using - --enable-strict-v2-mode, installing into GNUSTEP_SYSTEM_ROOT/Headers - would actually install into /Headers). + with gnustep-make version 1. You should use it to help upgrade old + makefiles. Packegers should make sure that old makefiles have been + upgraded before releasing builds using this option. --enable-absolute-install-paths @@ -4613,7 +4603,7 @@ $as_echo_n "checking if we should enable strict gnustep-make version 2 mode by d if test "${enable_strict_v2_mode+set}" = set; then : enableval=$enable_strict_v2_mode; ac_cv_strict_v2_mode=$enableval else - ac_cv_strict_v2_mode="no" + ac_cv_strict_v2_mode="yes" fi @@ -4621,12 +4611,14 @@ if test "$ac_cv_strict_v2_mode" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; GNUSTEP_MAKE_STRICT_V2_MODE="yes" - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Use strict version 2 mode at your own risk; it must only be used on development/test systems" >&5 -$as_echo "$as_me: WARNING: Use strict version 2 mode at your own risk; it must only be used on development/test systems" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Useing strict version 2 mode; ancient makefiles may need to be updated" >&5 +$as_echo "$as_me: WARNING: Useing strict version 2 mode; ancient makefiles may need to be updated" >&2;} else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; GNUSTEP_MAKE_STRICT_V2_MODE="no" + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Disable strict version 2 mode at your own risk; it may allow faulty makefiles to go unnoticed" >&5 +$as_echo "$as_me: WARNING: Disable strict version 2 mode at your own risk; it may allow faulty makefiles to go unnoticed" >&2;} fi diff --git a/configure.ac b/configure.ac index 483051395..1e82ea9a5 100644 --- a/configure.ac +++ b/configure.ac @@ -343,30 +343,21 @@ AC_ARG_ENABLE(strict-v2-mode, [ --enable-strict-v2-mode Enable strict gnustep-make version 2 mode by default. Use this option to have gnustep-make be aggressively backwards-incompatible - with gnustep-make version 1. You can use it when you are debugging / - upgrading your makefiles and software to gnustep-make version 2 and - want to test test that they do not depend on obsolete or deprecated - version 1 features and variables. Important: you must never ship - gnustep-make to end-users with --enable-strict-v2-mode as it would - cause extremely confusing and dangerous problems with software that - has not been updated to gnustep-make v2 yet. Use it only on test - builds or development machines to test that makefiles and software - have been updated. Make sure to use it extremely carefully with old - makefiles because it can produce unpredictable and dangerous results - (for examples, since GNUSTEP_SYSTEM_ROOT is undefined when using - --enable-strict-v2-mode, installing into GNUSTEP_SYSTEM_ROOT/Headers - would actually install into /Headers). + with gnustep-make version 1. You should use it to help upgrade old + makefiles. Packegers should make sure that old makefiles have been + upgraded before releasing builds using this option. ], ac_cv_strict_v2_mode=$enableval, - ac_cv_strict_v2_mode="no") + ac_cv_strict_v2_mode="yes") if test "$ac_cv_strict_v2_mode" = "yes"; then AC_MSG_RESULT(yes); GNUSTEP_MAKE_STRICT_V2_MODE="yes" - AC_MSG_WARN(Use strict version 2 mode at your own risk; it must only be used on development/test systems) + AC_MSG_WARN(Useing strict version 2 mode; ancient makefiles may need to be updated) else AC_MSG_RESULT(no); GNUSTEP_MAKE_STRICT_V2_MODE="no" + AC_MSG_WARN(Disable strict version 2 mode at your own risk; it may allow faulty makefiles to go unnoticed) fi AC_SUBST(GNUSTEP_MAKE_STRICT_V2_MODE)