mirror of
https://github.com/gnustep/tools-make.git
synced 2025-04-21 13:20:50 +00:00
Compare commits
No commits in common. "master" and "make-2_9_0" have entirely different histories.
master
...
make-2_9_0
47 changed files with 5957 additions and 7310 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -4,7 +4,6 @@ config.cache
|
|||
GNUmakefile
|
||||
GNUstep.sh
|
||||
GNUstep.csh
|
||||
GNUstep-reset.sh
|
||||
config.h
|
||||
config.status
|
||||
openapp
|
||||
|
|
33
ANNOUNCE
33
ANNOUNCE
|
@ -1,7 +1,7 @@
|
|||
1 Announcement
|
||||
**************
|
||||
|
||||
The GNUstep Makefile Package version 2.9.3 is now available.
|
||||
The GNUstep Makefile Package version 2.9.0 is now available.
|
||||
|
||||
1.1 What is the GNUstep Makefile Package?
|
||||
=========================================
|
||||
|
@ -12,24 +12,43 @@ project without having to deal with the complex issues associated with
|
|||
configuration, building, installation, and packaging. It also allows
|
||||
the user to easily create cross-compiled binaries.
|
||||
|
||||
1.2 Changes in version ‘2.9.3’
|
||||
1.2 Changes in version '2.9.0'
|
||||
==============================
|
||||
|
||||
• Added support for ASAN/LSAN builds
|
||||
* Better check for objc runtime on Windows.
|
||||
|
||||
• Various minor bugfixes.
|
||||
* Split linker flags to better support partial linking: 'ALL_LDFLAGS'
|
||||
is now a combination of 'FINAL_LDFLAGS' and 'ALL_LDFLAGS'.
|
||||
|
||||
* Better support for newer gcc versions.
|
||||
|
||||
* Add support for storyboard files.
|
||||
|
||||
* Increase autoconf version to 2.65 and make autoconf handle
|
||||
Objective-C++ and OBJCXX variables directly.
|
||||
|
||||
* Fix bug that prevented ARC from getting used.
|
||||
|
||||
* Link subproject object files directly instead of first merging them
|
||||
into 'subproject.o'.
|
||||
|
||||
* Support building on Windows with Clang MSVC target.
|
||||
|
||||
* 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.
|
||||
|
||||
1.3 Obtaining gnustep-make
|
||||
==========================
|
||||
|
||||
You can get the gnustep-make-2.9.3.tar.gz distribution file at
|
||||
You can get the gnustep-make-2.9.0.tar.gz distribution file at
|
||||
<ftp://ftp.gnustep.org/pub/gnustep/core>
|
||||
|
||||
It is accompanied by gnustep-make-2.9.3.tar.gz.sig, a PGP signature
|
||||
It is accompanied by gnustep-make-2.9.0.tar.gz.sig, a PGP signature
|
||||
which you can validate by putting both files in the same directory and
|
||||
using:
|
||||
|
||||
gpg --verify gnustep-make-2.9.3.tar.gz.sig
|
||||
gpg --verify gnustep-make-2.9.0.tar.gz.sig
|
||||
|
||||
Signature has been created using the key with the following
|
||||
fingerprint:
|
||||
|
|
132
ChangeLog
132
ChangeLog
|
@ -1,135 +1,3 @@
|
|||
2025-01-10 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* ANNOUNCE:
|
||||
* NEWS:
|
||||
* RELEASENOTES:
|
||||
* Documentation/news.texi:
|
||||
* Documentation/releasenotes.texi:
|
||||
Update announcement and release notes for 2.9.3.
|
||||
* Version: Bump version to 2.9.3.
|
||||
|
||||
2024-11-20 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* common.make: when building with the address/leak sanitizer
|
||||
(-asan=yes on command line or GNUSTEP_WITH_ASAN=1 in the environment)
|
||||
we add -DGNUSTEP_WITH_ASAN=1 for the preprocessor so that compiled
|
||||
code can take this into account.
|
||||
|
||||
2024-08-20 Wolfgang Lux <wolfgang.lux@gmail.com>
|
||||
|
||||
* TestFramework/gnustep-tests.in: Only return plain files when
|
||||
looking for test cases.
|
||||
|
||||
2024-07-31 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* TestFramework/gnustep-tests.in: Fix 'Failed build' detection in
|
||||
Summary.sh by recording build failures in tests.sum and test.log
|
||||
|
||||
2024-05-31 Yavor Doganov <yavor@gnu.org>
|
||||
|
||||
* GNUmakefile.in (install): Remove $(srcdir) from GNUstep-reset.sh
|
||||
since it is now a generated file. Fixes out-of-tree builds where
|
||||
builddir != srcdir.
|
||||
|
||||
2024-05-26 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* ANNOUNCE:
|
||||
* NEWS:
|
||||
* RELEASENOTES:
|
||||
* Documentation/news.texi:
|
||||
* Documentation/releasenotes.texi:
|
||||
Update announcement and release notes for 2.9.2.
|
||||
* Version: Bump version to 2.9.2.
|
||||
|
||||
2024-02-14 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* common.make:
|
||||
* rules.make:
|
||||
Rewrite 'javac -h' code because its usage turns out to be quite
|
||||
different from that of the javah command it is supposed to replace.
|
||||
Possibly the header generation and class file generation could/should
|
||||
be combined in a single pass, but we can't readily do that without
|
||||
breakign compatibility with older versions of java.
|
||||
|
||||
2024-02-11 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* Documentation/gnustep-make.texi:
|
||||
* common.make:
|
||||
* messages.make:
|
||||
* rules.make:
|
||||
* target.make:
|
||||
Use 'javac -h' if 'javah' does not exist, since the separate tool was
|
||||
removed after version 8. Update comments to match the change.
|
||||
|
||||
2023-12-12 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* TestFramework/gnustep-tests.in: Exit if no bash available
|
||||
* configure.ac: Require bash for test framework
|
||||
* configure: Regenerate
|
||||
|
||||
2023-12-05 Yavor Doganov <yavor@gnu.org>
|
||||
|
||||
* Documentation/gnustep-make.texi: Fix PDF generation with
|
||||
texinfo/7.1; reorder sectioning commands.
|
||||
* Documentation/gnustep-filesystem.texi: Likewise.
|
||||
|
||||
2022-02-06 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* Instance/Documentation/texi.make: for index.html specify explicit
|
||||
output file for texi2html (Debian Bug#1030387)
|
||||
|
||||
2023-02-06 Riccard Mottola <rm@gnu.org>
|
||||
|
||||
* Master/source-distribution.make
|
||||
Try to implement .dist-ignore support for git-dist: after archive,
|
||||
export and recompress again by excluding .dist-ignore
|
||||
|
||||
2022-12-28 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* ANNOUNCE:
|
||||
* NEWS:
|
||||
* RELEASENOTES:
|
||||
* Documentation/news.texi:
|
||||
* Documentation/releasenotes.texi:
|
||||
Update announcement and release notes for 2.9.1.
|
||||
* Version: Bump version to 2.9.1.
|
||||
|
||||
2022-12-05 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* TestFramework/gnustep-tests.in: use the -a option to force grep
|
||||
to treat log files as text rather than binary. If treated as binary
|
||||
it would not extract the information we need.
|
||||
* TestFramework/Testing.h: fix uninitialised variable in the macro
|
||||
to test for a regexp match.
|
||||
|
||||
2022-03-01 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* TestFramework/gnustep-tests.in:
|
||||
When using TestInfo send stdout and stderr to /dev/null so that
|
||||
thy don't interfere with the test output.
|
||||
|
||||
2022-02-16 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* TestFramework/gnustep-tests.in:
|
||||
Fix bug introduced in rewrite for parallelisation: we were getting
|
||||
immediate end of testing when one file failed, but that behavior
|
||||
should only occur when --failfast is specified.
|
||||
|
||||
2022-01-26 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* TestFramework/README:
|
||||
* TestFramework/TestInfo:
|
||||
* TestFramework/gnustep-tests.in:
|
||||
Add support for controlling test execution using SEQUENCE and PARALLEL
|
||||
in TestInfo to control the order of seuntial tests and the running of
|
||||
concurrent tests.
|
||||
|
||||
2021-03-28 Frederik Seiffert <frederik@algoriddim.com>
|
||||
|
||||
* TestFramework/Testing.h:
|
||||
Add workaround for Clang bug on Windows MSVC when tests contain no
|
||||
Objective-C constructs.
|
||||
|
||||
2021-03-21 Ivan Vucica <ivan@vucica.net>
|
||||
|
||||
* ANNOUNCE:
|
||||
|
|
|
@ -52,11 +52,11 @@ it's not possible to have an application compiled for NeXT PDO that
|
|||
runs with gnustep-base or vice-versa. To summarize, an application can
|
||||
be compiled for these combinations:
|
||||
|
||||
Objective-C runtime: NeXT, GNU, GNUstep/Apple
|
||||
Objective-C runtime: NeXT, GNU
|
||||
Foundation library: NeXT, PDO, gnustep-base, libFoundation
|
||||
GUI library: NeXT, gnustep-gui
|
||||
|
||||
Objective-C runtime: nx (for NeXT), gnu (for GNU), ng (for Next Generation (GNUstep or Apple for ObjC-2)
|
||||
Objective-C runtime: nx (for NeXT), gnu (for GNU)
|
||||
Foundation library: nx (for NeXT), pdo (for PDO), gnu (for gnustep-base),
|
||||
fd (for libFoundation)
|
||||
GUI library: nx (for NeXT), gnu (for gnustep-gui)
|
||||
|
@ -80,7 +80,6 @@ ObjC runtime Foundation GUI
|
|||
gnu gnu gnu
|
||||
nx fd gnu
|
||||
gnu fd gnu
|
||||
ng gnu gnu
|
||||
|
||||
Note that one can choose his/her own packages to build; it is not
|
||||
required to have all the packages installed on the system. Not having
|
||||
|
@ -340,20 +339,15 @@ if the target needs to be built as a shared library. On systems that support
|
|||
shared libraries this is the default; the user has to explicitly specify
|
||||
shared=no in the command line.
|
||||
|
||||
* asan
|
||||
|
||||
When this variable is yes, an address and leak sanitized version of the target
|
||||
is built. The default is no.
|
||||
|
||||
* profile
|
||||
|
||||
When this variable is yes, a profile version of the target is built. The
|
||||
default is no.
|
||||
|
||||
For example if you want to build a shared library with debug information
|
||||
and sanitization enabled but no profile information, the command line would be:
|
||||
enabled but no profile information, the command line would be:
|
||||
|
||||
$ make shared=yes debug=yes asan=yes profile=no
|
||||
$ make shared=yes debug=yes profile=no
|
||||
|
||||
The last argument is not necessary because the default is to build a version
|
||||
without profile information.
|
||||
|
@ -364,6 +358,62 @@ profile is turned on the output directory would be shared_profile_debug_obj.
|
|||
Of course you also have to specify the library combo if it's different than the
|
||||
default.
|
||||
|
||||
Naming conventions of the libraries
|
||||
===================================
|
||||
|
||||
Sometimes you need to have different versions of a library compiled with
|
||||
different options. Suppose you want to compile a library with profiling
|
||||
information enabled so that you can profile your code. But you don't want to
|
||||
overwrite your existing installed library so that only some of the applications
|
||||
will work with the profile library, the rest will still use the normal library.
|
||||
|
||||
The makefile package supports such a schema by having different names for
|
||||
different types of the same library. This works by appending an underscore
|
||||
after the name of the library followed by a letter which indicates the type of
|
||||
the library:
|
||||
|
||||
's' for a static library
|
||||
'p' for a profile library
|
||||
'd' for a debug library
|
||||
|
||||
So for example if you have the library 'example' compiled with debug
|
||||
information as a shared library it would be named libexample_d.so. If the same
|
||||
library is compiled as a static library its name would be named
|
||||
libexample_sd.a. The reason why the 's' letter for the static library appears
|
||||
in name of the library is for systems where the extensions of libraries don't
|
||||
matter.
|
||||
|
||||
It is possible to compile a library with whatever combination of flags you
|
||||
want. The letters are appended in the order specified above, so if you compile
|
||||
the library as a static library, with profile and debug information enabled,
|
||||
the library name will have the _spd suffix appended.
|
||||
|
||||
How a library is chosen
|
||||
=======================
|
||||
|
||||
What happens if you compile an application with profile enabled and you don't
|
||||
have a library compiled with profile info into it, but you do have a normal
|
||||
library installed? It would be great if the normal library is chosen instead.
|
||||
This is a problem because the library that should be chosen has a different
|
||||
name than the profile library.
|
||||
|
||||
We do support this schema by requiring the libraries to be specified using the
|
||||
short name, without any suffix appended to it. The `example' library in our
|
||||
case should be passed to the linker using -lexample, and not using -lexample_p.
|
||||
Based upon the shared, profile and debug variables, the makefile package will
|
||||
identify which are the libraries that exist on the system and it will come with
|
||||
the correct names when linking.
|
||||
|
||||
The search order of libraries depending on what type of library is required is
|
||||
as follows. First of all an exact match is searched; if one is found it is
|
||||
returned. If either debug or profile are required, a library that matches at
|
||||
least one of these attributes is returned. For example if there is a
|
||||
profile+debug version of a library but only debug is required this library will
|
||||
match. If a static version is required but no static versions of the library
|
||||
exist, then no library is chosen; in this case the system simply prints out the
|
||||
name of the library, assuming a static library is somewhere else in the
|
||||
libraries search path of the linker.
|
||||
|
||||
Building applications
|
||||
=====================
|
||||
|
||||
|
@ -378,7 +428,15 @@ the application wrapper and it contains the binaries for various architectures
|
|||
and resources needed by the application.
|
||||
|
||||
The name of the application wrapper is taken to be the name of the application
|
||||
with the .app extension.
|
||||
with the following extensions:
|
||||
|
||||
.profile - if the application has been built with profile enabled
|
||||
.debug - if the application has been built with debug enabled
|
||||
.app - if the application has been built without debug or profile enabled
|
||||
|
||||
If both debug and profile are enabled, the application extension will simply
|
||||
have the .profile extension. This is different from libraries were both options
|
||||
are reflected into the library's name.
|
||||
|
||||
The structure of makefiles
|
||||
==========================
|
||||
|
@ -425,4 +483,4 @@ The makefile package is installed under $(GNUSTEP_SYSTEM_ROOT)/Library/Makefiles
|
|||
|
||||
Ovidiu Predescu
|
||||
|
||||
Last updated: Jan, 2025
|
||||
Last updated: April, 2001
|
||||
|
|
|
@ -83,7 +83,7 @@ else
|
|||
# normal gnustep-make GNUmakefile for documentation.
|
||||
|
||||
# We normally install into System
|
||||
GNUSTEP_INSTALLATION_DOMAIN = LOCAL
|
||||
GNUSTEP_INSTALLATION_DOMAIN = SYSTEM
|
||||
|
||||
include $(GNUSTEP_MAKEFILES)/common.make
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ gnustep-config \- prints information about the current gnustep installation.
|
|||
can print information about the currently installed GNUstep system. Output
|
||||
is generated dynamically based on environment variables such as
|
||||
GNUSTEP_CONFIG_FILE and GNUSTEP_MAKEFILES,
|
||||
though default values for these are generated when the tool is configured/installed. Output is primarily the locations in which various GNUstep resources are installed, but also provide flags used to build different types of GNUstep project.
|
||||
though default values for these are generated when the tool is configured/installed. Output is primarily the locations in which various GNUstep resources are installed, but also provide flags used to build differnt types of GNUstep project.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.BI \-\-variable= variable
|
||||
|
|
|
@ -26,11 +26,10 @@ any later version published by the Free Software Foundation.
|
|||
@contents
|
||||
|
||||
|
||||
@node Top
|
||||
@top GNUstep Filesystem Hierarchy
|
||||
@node Top, The System Domain, (dir), (dir)
|
||||
@chapter GNUstep Filesystem Hierarchy
|
||||
|
||||
@menu
|
||||
* Introduction::
|
||||
* The System Domain::
|
||||
* The Local Domain::
|
||||
* The Network Domain::
|
||||
|
@ -39,9 +38,6 @@ any later version published by the Free Software Foundation.
|
|||
* Configuration::
|
||||
@end menu
|
||||
|
||||
@node Introduction
|
||||
@chapter Introduction
|
||||
|
||||
On GNUstep, there are four separate places where files related to
|
||||
GNUstep are installed: these places are called "domains". These four
|
||||
domains are the System domain, the Network domain, the Local domain,
|
||||
|
@ -87,7 +83,7 @@ filesystem layout is now the FHS (Unix) layout rooted in
|
|||
@file{/usr/local}.
|
||||
|
||||
@node The System Domain, The Local Domain, Top, Top
|
||||
@chapter The System Domain
|
||||
@section The System Domain
|
||||
|
||||
The System domain contains all files which were included in the
|
||||
default GNUstep installation or distribution. These files are
|
||||
|
@ -109,7 +105,7 @@ the @file{System} folder of the GNUstep installation.
|
|||
|
||||
|
||||
@node The Local Domain, The Network Domain, The System Domain, Top
|
||||
@chapter The Local Domain
|
||||
@section The Local Domain
|
||||
|
||||
The Local domain is meant as the location for installing software
|
||||
which was not included with your GNUstep distribution and which you or
|
||||
|
@ -129,7 +125,7 @@ In the GNUstep filesystem layout the entire Local domain is installed
|
|||
as the @file{Local} folder of your GNUstep installation.
|
||||
|
||||
@node The Network Domain, The Users Domain, The Local Domain, Top
|
||||
@chapter The Network Domain
|
||||
@section The Network Domain
|
||||
|
||||
The @file{Network} domain is optional and is usually coalesced with
|
||||
the @file{Local} domain by default; this is particularly appropriate
|
||||
|
@ -155,7 +151,7 @@ domain, in which case the entire Network domain is installed as the
|
|||
|
||||
|
||||
@node The Users Domain, Structure of a Domain, The Network Domain, Top
|
||||
@chapter The Users Domain
|
||||
@section The Users Domain
|
||||
|
||||
The main purpose of the Users domain is to hold GNUstep related files
|
||||
which shall not be available to other users on the system but only to
|
||||
|
@ -171,7 +167,7 @@ User domain is completely contained in a subdirectory of the user's
|
|||
home directory called @file{GNUstep}.
|
||||
|
||||
@node Structure of a Domain, Configuration, The Users Domain, Top
|
||||
@chapter Structure of a Domain
|
||||
@section Structure of a Domain
|
||||
|
||||
In this section we examine the interesting locations in a domain. We
|
||||
will enumerate the locations, and discuss what should be installed in
|
||||
|
@ -196,7 +192,7 @@ GNUstep filesystem layout and in a general filesystem layout.
|
|||
@end menu
|
||||
|
||||
@node The GNUstep Filesystem Layout, Accessing Domain Locations, Structure of a Domain, Structure of a Domain
|
||||
@section The GNUstep Filesystem Layout
|
||||
@subsection The GNUstep Filesystem Layout
|
||||
|
||||
We quickly present the GNUstep filesystem layout for a domain first
|
||||
because it is an essential reference for all discussions on the
|
||||
|
@ -238,7 +234,7 @@ point for all discussions. For example, every domain must have a
|
|||
'Library' location.
|
||||
|
||||
@node Accessing Domain Locations, Applications, The GNUstep Filesystem Layout, Structure of a Domain
|
||||
@section Accessing Domain Locations
|
||||
@subsection Accessing Domain Locations
|
||||
|
||||
In order to install and run software that uses some resources, you
|
||||
need to be able to install the resources in the appropriate location,
|
||||
|
@ -281,7 +277,7 @@ that can be used to access them.
|
|||
|
||||
|
||||
@node Applications, Admin Applications , Accessing Domain Locations, Structure of a Domain
|
||||
@section Applications
|
||||
@subsection Applications
|
||||
|
||||
The @file{Applications} location contains applications. Applications
|
||||
are programs that typically have a GUI interface and contain
|
||||
|
@ -310,7 +306,7 @@ using the @code{NSApplicationDirectory} directory key for
|
|||
|
||||
|
||||
@node Admin Applications, Web Applications, Applications, Structure of a Domain
|
||||
@section Admin Applications
|
||||
@subsection Admin Applications
|
||||
|
||||
The @file{Admin Applications} location contains applications that are
|
||||
only useful to the system administrator. A normal user wouldn't have
|
||||
|
@ -330,7 +326,7 @@ by using the @code{NSAdminApplicationDirectory} directory key for
|
|||
|
||||
|
||||
@node Web Applications, Tools, Admin Applications, Structure of a Domain
|
||||
@section Web Applications
|
||||
@subsection Web Applications
|
||||
|
||||
The @file{Web Applications} location contains web applications that
|
||||
were created using GSWeb or SOPE. These are programs contained with
|
||||
|
@ -351,7 +347,7 @@ by using the @code{GSWebApplicationDirectory} directory key for
|
|||
|
||||
|
||||
@node Tools, Admin Tools, Web Applications, Structure of a Domain
|
||||
@section Tools
|
||||
@subsection Tools
|
||||
|
||||
The @file{Tools} location contains tools and executable scripts. Tools
|
||||
are programs which generally have a command-line interface. Most are
|
||||
|
@ -380,7 +376,7 @@ In gnustep-base, the @file{Tools} locations are available by using the
|
|||
|
||||
|
||||
@node Admin Tools, Library, Tools, Structure of a Domain
|
||||
@section Admin Tools
|
||||
@subsection Admin Tools
|
||||
|
||||
The @file{Admin Tools} location contains tools and executable scripts
|
||||
that are only useful to the system administrator. A normal user
|
||||
|
@ -401,7 +397,7 @@ using the @code{GSAdminToolsDirectory} directory key for
|
|||
|
||||
|
||||
@node Library, Headers, Admin Tools, Structure of a Domain
|
||||
@section Library
|
||||
@subsection Library
|
||||
|
||||
The @file{Library} location contains most of the resources that are
|
||||
located and loaded at runtime. These resources are organized in
|
||||
|
@ -439,7 +435,7 @@ using the @code{NSLibraryDirectory} directory key for
|
|||
|
||||
|
||||
@node Headers, Libraries, Library, Structure of a Domain
|
||||
@section Headers
|
||||
@subsection Headers
|
||||
|
||||
The @code{Headers} location contains header files associated with a
|
||||
library located in @code{Libraries}.
|
||||
|
@ -457,7 +453,7 @@ available.
|
|||
|
||||
|
||||
@node Libraries, Documentation, Headers, Structure of a Domain
|
||||
@section Libraries
|
||||
@subsection Libraries
|
||||
|
||||
The @code{Libraries} location contains libraries (shared/static object
|
||||
files that are linked into programs). (NOTE: In the GNUstep
|
||||
|
@ -485,7 +481,7 @@ the @code{GSLibrariesDirectory} directory key for
|
|||
|
||||
|
||||
@node Documentation, Documentation (Info), Libraries, Structure of a Domain
|
||||
@section Documentation
|
||||
@subsection Documentation
|
||||
|
||||
The @code{Documentation} location contains documentation for
|
||||
libraries, applications, etc.
|
||||
|
@ -503,7 +499,7 @@ using the @code{NSDocumentationDirectory} directory key for
|
|||
|
||||
|
||||
@node Documentation (Info), Documentation (Man Pages), Documentation, Structure of a Domain
|
||||
@section Documentation (Info)
|
||||
@subsection Documentation (Info)
|
||||
|
||||
The @code{Documentation (Info)} location contains documentation in
|
||||
info format.
|
||||
|
@ -521,7 +517,7 @@ currently available.
|
|||
|
||||
|
||||
@node Documentation (Man Pages), Folders inside Library, Documentation (Info), Structure of a Domain
|
||||
@section Documentation (Man Pages)
|
||||
@subsection Documentation (Man Pages)
|
||||
|
||||
|
||||
The @code{Documentation (Man Pages)} location contains Unix man pages.
|
||||
|
@ -539,7 +535,7 @@ currently available.
|
|||
|
||||
|
||||
@node Folders inside Library, , Documentation (Man Pages), Structure of a Domain
|
||||
@section Folders inside Library
|
||||
@subsection Folders inside Library
|
||||
|
||||
In this section we discuss the standard folders that are available
|
||||
inside the @code{Library} location. To find any of these folders,
|
||||
|
@ -574,7 +570,7 @@ All such cases should be documented here.
|
|||
@end menu
|
||||
|
||||
@node ApplicationSupport, Bundles, Folders inside Library, Folders inside Library
|
||||
@subsection ApplicationSupport
|
||||
@subsubsection ApplicationSupport
|
||||
|
||||
This directory contains bundles and other resources that are provided
|
||||
for an application, but that are not specifically distributed with
|
||||
|
@ -599,7 +595,7 @@ by using the @code{NSApplicationSupportDirectory} directory key for
|
|||
@code{NSSearchPathForDirectoriesInDomains()}.
|
||||
|
||||
@node Bundles, ColorPickers, ApplicationSupport, Folders inside Library
|
||||
@subsection Bundles
|
||||
@subsubsection Bundles
|
||||
|
||||
This directory contains bundles. Bundles are collections of executable
|
||||
code and associated resources that may be loaded at runtime by an
|
||||
|
@ -619,7 +615,7 @@ folder inside the @code{Library} location.
|
|||
|
||||
|
||||
@node ColorPickers, Colors, Bundles, Folders inside Library
|
||||
@subsection ColorPickers
|
||||
@subsubsection ColorPickers
|
||||
|
||||
This directory contains bundles that are used by the color picking
|
||||
system. They may include code that implements picking colors from a
|
||||
|
@ -629,7 +625,7 @@ This folder is accessed as the @code{ColorPickers} folder inside
|
|||
@code{Library}.
|
||||
|
||||
@node Colors, DTDs, ColorPickers, Folders inside Library
|
||||
@subsection Colors
|
||||
@subsubsection Colors
|
||||
|
||||
This directory contains files that define specific color mappings for
|
||||
use within libraries or applications that require color definitions.
|
||||
|
@ -638,7 +634,7 @@ This folder is accessed as the @code{Colors} folder inside
|
|||
@code{Library}.
|
||||
|
||||
@node DTDs, DocTemplates, Colors, Folders inside Library
|
||||
@subsection DTDs
|
||||
@subsubsection DTDs
|
||||
|
||||
This directory contains any Document Type Definitions
|
||||
required for document parsing.
|
||||
|
@ -647,7 +643,7 @@ This folder is accessed as the @code{DTDs} folder inside
|
|||
@code{Library}.
|
||||
|
||||
@node DocTemplates, Fonts, DTDs, Folders inside Library
|
||||
@subsection DocTemplates
|
||||
@subsubsection DocTemplates
|
||||
|
||||
This directory contains text templates for automatic documentation, as
|
||||
generated by autodoc. Any additional documentation template types
|
||||
|
@ -661,7 +657,7 @@ This folder is accessed as the @code{DocTemplates} folder inside
|
|||
@code{Library}.
|
||||
|
||||
@node Fonts, Frameworks, DocTemplates, Folders inside Library
|
||||
@subsection Fonts
|
||||
@subsubsection Fonts
|
||||
|
||||
This directory contains fonts and files for organizing font information.
|
||||
|
||||
|
@ -669,7 +665,7 @@ This folder is accessed as the @code{Fonts} folder inside
|
|||
@code{Library}.
|
||||
|
||||
@node Frameworks, Images, Fonts, Folders inside Library
|
||||
@subsection Frameworks
|
||||
@subsubsection Frameworks
|
||||
|
||||
This directory contains frameworks. Frameworks are a type of bundle,
|
||||
which include, within their directory structure, a shared library
|
||||
|
@ -696,10 +692,10 @@ using the @code{GSFrameworksDirectory} directory key for
|
|||
@code{NSSearchPathForDirectoriesInDomains()}.
|
||||
|
||||
@node Images, Libraries/Java, Frameworks, Folders inside Library
|
||||
@subsection Images
|
||||
@subsubsection Images
|
||||
|
||||
@node Libraries/Java, Libraries/Resources, Images, Folders inside Library
|
||||
@subsection Libraries/Java
|
||||
@subsubsection Libraries/Java
|
||||
|
||||
This directory contains Java classes. If you are using Java with
|
||||
GNUstep, you probably want to make sure these directories are in your
|
||||
|
@ -716,7 +712,7 @@ In gnustep-base, you can access the @code{Libraries/Java} location as
|
|||
the @code{Libraries/Java} folder inside the @code{Library} location.
|
||||
|
||||
@node Libraries/Resources, KeyBindings, Libraries/Java, Folders inside Library
|
||||
@subsection Libraries/Resources
|
||||
@subsubsection Libraries/Resources
|
||||
|
||||
This directory contains resources used by shared libraries. In
|
||||
GNUstep a shared library can have an associated resource bundle (a
|
||||
|
@ -740,10 +736,10 @@ library by using the @code{[NSBundle +bundleForLibrary:]} method (it
|
|||
is a GNUstep extension).
|
||||
|
||||
@node KeyBindings, PostScript, Libraries/Resources, Folders inside Library
|
||||
@subsection KeyBindings
|
||||
@subsubsection KeyBindings
|
||||
|
||||
@node PostScript, Services, KeyBindings, Folders inside Library
|
||||
@subsection PostScript
|
||||
@subsubsection PostScript
|
||||
|
||||
This directory contains directories for specific PostScript document
|
||||
types and definitions, allowing applications written using the GNUstep
|
||||
|
@ -754,7 +750,7 @@ This folder is accessed as the @code{PostScript} folder inside
|
|||
@code{Library}.
|
||||
|
||||
@node Services, Sounds, PostScript, Folders inside Library
|
||||
@subsection Services
|
||||
@subsubsection Services
|
||||
|
||||
This directory contains bundles that are specifically built to provide
|
||||
functionality between different programs (for example, spell checking,
|
||||
|
@ -772,12 +768,12 @@ In gnustep-base, you can access the @code{Services} location as a
|
|||
folder inside the @code{Library} location.
|
||||
|
||||
@node Sounds, Tools/Resources, Services, Folders inside Library
|
||||
@subsection Sounds
|
||||
@subsubsection Sounds
|
||||
|
||||
This directory contains sound files.
|
||||
|
||||
@node Tools/Resources, , Sounds, Folders inside Library
|
||||
@subsection Tools/Resources
|
||||
@subsubsection Tools/Resources
|
||||
|
||||
This directory contains resources used by tools. In GNUstep a tool
|
||||
can have an associated resource bundle (a bundle only composed of
|
||||
|
@ -800,7 +796,7 @@ semantic is a GNUstep extension).
|
|||
|
||||
|
||||
@node Configuration, , Structure of a Domain, Top
|
||||
@chapter Configuration
|
||||
@section Configuration
|
||||
|
||||
GNUstep supports arbitrary filesystem layouts to map the locations in
|
||||
the various domains to directories on the filesystem.
|
||||
|
@ -845,7 +841,7 @@ them.
|
|||
@end menu
|
||||
|
||||
@node File Format, Windows (MINGW), Configuration, Configuration
|
||||
@section File Format
|
||||
@subsection File Format
|
||||
|
||||
By default, the configuration file is called GNUstep.conf; it
|
||||
typically exists in /etc/GNUstep or /usr/local/etc/GNUstep (depending
|
||||
|
@ -869,7 +865,7 @@ up-to-date list of all the variables that you can change with
|
|||
explanations of what they do.
|
||||
|
||||
@node Windows (MINGW), , File Format, Configuration
|
||||
@section Windows (MINGW)
|
||||
@subsection Windows (MINGW)
|
||||
|
||||
On ms-windows, for software development, you are likely to want to have an
|
||||
extra configuration file. This is because of the limitations of the
|
||||
|
|
|
@ -44,7 +44,7 @@ any later version published by the Free Software Foundation.
|
|||
|
||||
@c Makefile Package Chapter
|
||||
@node Top, Makefile Introduction, (dir), (dir)
|
||||
@top Makefile Package
|
||||
@chapter Makefile Package
|
||||
|
||||
@menu
|
||||
* Makefile Introduction::
|
||||
|
@ -58,7 +58,7 @@ any later version published by the Free Software Foundation.
|
|||
@end menu
|
||||
|
||||
@node Makefile Introduction, Makefile Structure, Top, Top
|
||||
@chapter Introduction
|
||||
@section Introduction
|
||||
|
||||
The Makefile package is a system of make commands that is designed to
|
||||
encapsulate all the complex details of building and installing various types
|
||||
|
@ -68,7 +68,7 @@ a fairly simple main makefile need to be written which specifies the
|
|||
type of project and files involved in the project.
|
||||
|
||||
@node Makefile Structure, Running Make, Makefile Introduction, Top
|
||||
@chapter Structure of a Makefile
|
||||
@section Structure of a Makefile
|
||||
|
||||
Here is an example makefile (named GNUmakefile to emphasis the fact that it relies on special features of the GNU make program).
|
||||
|
||||
|
@ -98,11 +98,10 @@ This is all that is necessary to define the project.
|
|||
|
||||
|
||||
@node Running Make, Project Types, Makefile Structure, Top
|
||||
@chapter Running Make
|
||||
@section Running Make
|
||||
@menu
|
||||
* Debug Information::
|
||||
* Profile Information::
|
||||
* Memory Sanitisation::
|
||||
* Library Types::
|
||||
@end menu
|
||||
|
||||
|
@ -112,7 +111,7 @@ the package, and the package is compiled without any additional
|
|||
interaction.
|
||||
|
||||
@node Debug Information, Profile Information, Running Make, Running Make
|
||||
@section Debug Information
|
||||
@subsection Debug Information
|
||||
|
||||
By default the Makefile Package tells the compiler to generate
|
||||
debugging information when compiling Objective-C and C files. The
|
||||
|
@ -124,8 +123,8 @@ not put into the binary files.
|
|||
make debug=no
|
||||
@end smallexample
|
||||
|
||||
@node Profile Information, Memory Sanitisation, Debug Information, Running Make
|
||||
@section Profile Information
|
||||
@node Profile Information, Library Types, Debug Information, Running Make
|
||||
@subsection Profile Information
|
||||
|
||||
By default the Makefile Package does not tell the compiler to generate
|
||||
profiling information when compiling Objective-C and C files. The
|
||||
|
@ -137,59 +136,8 @@ put into the binary files.
|
|||
make profile=yes
|
||||
@end smallexample
|
||||
|
||||
@node Memory Sanitisation, Library Types, Profile Information, Running Make
|
||||
@section Memory Sanitisation
|
||||
|
||||
Production code must not use memory sanitization tools, but during development
|
||||
and debugging these can be extremely useful, so the Makefile Package provides
|
||||
an option to tell the compiler to generate output for address and leak
|
||||
sanitization using https://github.com/google/sanitizers/wiki/addresssanitizer
|
||||
|
||||
Unfortunately, AddressSanitizer/LeakSanitizer is not particularly portable and
|
||||
is available on a limited selection of hardware and operating systems, so
|
||||
turning it on in GNUstep-make may not actually work on your system. It is
|
||||
however very good with modern GCC or Clang on the most popular platforms.
|
||||
|
||||
The following command illustrates how to tell the Makefile Package to pass
|
||||
the appropriate flags to the compiler so that sanitization is put into the
|
||||
binary and so that the preprocessor can be used to change code behaviour when
|
||||
it is built for sanitization (-fsanitize=address and -DGNUSTEP_WITH_ASAN=1).
|
||||
|
||||
@smallexample
|
||||
make asan=yes
|
||||
@end smallexample
|
||||
|
||||
You can get the same effect by setting an environment variable as follows:
|
||||
@smallexample
|
||||
export GNUSTEP_WITH_ASAN=1
|
||||
@end smallexample
|
||||
|
||||
When you build libraries, frameworks, or bundles with sanitization turned on,
|
||||
you must also use ASAN to build any apps or tools which use them. This
|
||||
is because the library/framework/bundle will have dependencies on the leak
|
||||
sanitization shared library, and those dependencies must be fulfilled when
|
||||
the app/tool is linked.
|
||||
|
||||
The basic effect of sanitization is that, in the event of an address error
|
||||
(when the code attempts to access memory it shouldn't), the app/tool is
|
||||
immediately terminated with details of the problem printed to stderr, and
|
||||
in the event of memory leaks (detected at app/tool exit) a report of the
|
||||
locations of the leaks is printed to stderr.
|
||||
|
||||
Beware that an app/tool built with ASAN maps a huge amount of virtual memory
|
||||
to help it detect memory violations in the code, and while this virtual memory
|
||||
usage does not require real memory, it does mean that processes monitoring the
|
||||
memory usage of your app/tool will give completely meaningless results.
|
||||
|
||||
Beware also, that an app/tool built with ASAN does use considerably more real
|
||||
memory than normal, and its usage of memory continually grows, because it is
|
||||
keeping records of what the app/tool does with memory in order to be able to
|
||||
perform leak analysis and reporting when the app/tool finishes.
|
||||
If you have many apps/tools under test concurrently and for a long time, your
|
||||
system may run out of memory.
|
||||
|
||||
@node Library Types, , Profile Information, Running Make
|
||||
@section Static, Shared, and Dynamic Link Libraries
|
||||
@subsection Static, Shared, and Dynamic Link Libraries
|
||||
|
||||
By default the Makefile Package will generate a shared library if it is
|
||||
building a library project type, and it will link with shared libraries
|
||||
|
@ -209,7 +157,7 @@ DLLs will be built by default unless the Makefile Package is told to
|
|||
build using static libraries instead, as in the above command.
|
||||
|
||||
@node Project Types, GNUmakefile.preamble, Running Make, Top
|
||||
@chapter Project Types
|
||||
@section Project Types
|
||||
@menu
|
||||
* aggregate.make::
|
||||
* application.make::
|
||||
|
@ -252,7 +200,7 @@ types) is in resource-set.make.
|
|||
|
||||
|
||||
@node aggregate.make, application.make, Project Types, Project Types
|
||||
@section Aggregate (@file{aggregate.make})
|
||||
@subsection Aggregate (@file{aggregate.make})
|
||||
|
||||
An Aggregate project is a project that consists of several
|
||||
subprojects. Each subproject can be of any other valid project type
|
||||
|
@ -265,46 +213,46 @@ that the Aggregate project should build.
|
|||
@end defvr
|
||||
|
||||
@node application.make, bundle.make, aggregate.make, Project Types
|
||||
@section Graphical Applications (@file{application.make})
|
||||
@subsection Graphical Applications (@file{application.make})
|
||||
|
||||
An application is an Objective-C program that includes a GUI component,
|
||||
and by default links in all the GNUstep libraries required for GUI
|
||||
development, such as the Base and Gui libraries.
|
||||
|
||||
@node bundle.make, ctool.make, application.make, Project Types
|
||||
@section Bundles (@file{bundle.make})
|
||||
@subsection Bundles (@file{bundle.make})
|
||||
|
||||
A bundle is a collection of resources and code that can be used to
|
||||
enhance an existing application or tool dynamically using the NSBundle
|
||||
class from the GNUstep base library.
|
||||
|
||||
@node ctool.make, documentation.make, bundle.make, Project Types
|
||||
@section Command Line C Tools (@file{ctool.make})
|
||||
@subsection Command Line C Tools (@file{ctool.make})
|
||||
|
||||
A ctool is a project that only uses C language files.
|
||||
Otherwise it is similar to the ObjC project type.
|
||||
|
||||
@node documentation.make, framework.make, ctool.make, Project Types
|
||||
@section Documentation (@file{documentation.make})
|
||||
@subsection Documentation (@file{documentation.make})
|
||||
|
||||
The Documentation project provides rules to use various types of
|
||||
documentation such as texi and LaTeX documentation, and convert them
|
||||
into finished documentation (info, PostScript, HTML, etc).
|
||||
|
||||
@node framework.make, java.make, documentation.make, Project Types
|
||||
@section Frameworks (@file{framework.make})
|
||||
@subsection Frameworks (@file{framework.make})
|
||||
|
||||
A Framework is a collection of resources and a library that provides
|
||||
common code that can be linked into a Tool or Application. In many
|
||||
respects it is similar to a Bundle.
|
||||
|
||||
@node java.make, library.make, framework.make, Project Types
|
||||
@section Java (@file{java.make})
|
||||
@subsection Java (@file{java.make})
|
||||
|
||||
This project provides rules for building java programs. It also makes it
|
||||
easy to make java projects that interact with the GNUstep libraries.
|
||||
|
||||
@subsection Project Variables
|
||||
@subsubsection Project Variables
|
||||
|
||||
@defvr {Java project} JAVA_PACKAGE_NAME
|
||||
@code{JAVA_PACKAGE_NAME} is the reverse DNS style Java package name that
|
||||
|
@ -320,7 +268,7 @@ specified in @code{JAVA_PACKAGE_NAME}.
|
|||
|
||||
@defvr {Java project} JAVA_JNI_FILES
|
||||
@code{xxx_JAVA_JNI_FILES} is the list of Java source code files for
|
||||
which @code{JAVAH} should produce header files for integration with
|
||||
which @code{javah} should produce header files for integration with
|
||||
Objective-C code.
|
||||
@strong{xxx} should be replaced with the name of the Java package
|
||||
specified in @code{JAVA_PACKAGE_NAME}.
|
||||
|
@ -347,7 +295,7 @@ with all dots replaced by hyphens.
|
|||
@end defvr
|
||||
|
||||
@node library.make, native-library.make, java.make, Project Types
|
||||
@section Libraries (@file{library.make})
|
||||
@subsection Libraries (@file{library.make})
|
||||
@menu
|
||||
* library.make variables::
|
||||
* Example Library Makefile::
|
||||
|
@ -360,7 +308,7 @@ Static libraries are supported on all platforms; while, shared libraries
|
|||
and DLLs are only supported on some platforms.
|
||||
|
||||
@node library.make variables, Example Library Makefile, library.make, library.make
|
||||
@subsection Project Variables
|
||||
@subsubsection Project Variables
|
||||
|
||||
@defvr {Library project} LIBRARY_NAME
|
||||
@code{LIBRARY_NAME} should be assigned the list of name of libraries to
|
||||
|
@ -498,7 +446,7 @@ Replace the @strong{xxx} with the name of the library as listed by the
|
|||
@end defvr
|
||||
|
||||
@node Example Library Makefile, , library.make variables, library.make
|
||||
@subsection Example Makefile
|
||||
@subsubsection Example Makefile
|
||||
|
||||
This example makefile illustrates two libraries, @file{libone} and
|
||||
@file{libtwo}, that are to be generated.
|
||||
|
@ -566,7 +514,7 @@ located, and the header files will be installed into the @file{two}
|
|||
subdirectory within @code{GNUSTEP_HEADERS}.
|
||||
|
||||
@node native-library.make, nsis.make, library.make, Project Types
|
||||
@section Native Library (@file{native-library.make})
|
||||
@subsection Native Library (@file{native-library.make})
|
||||
|
||||
A "native library" is a project which is to be built as a shared
|
||||
library on most targets and as a framework on Darwin. (Currently
|
||||
|
@ -593,7 +541,7 @@ This will be converted into -L../MyPath/$(GNUSTEP_OBJ_DIR) flag
|
|||
on for most targets and into -F../MyPath flag for apple-apple-apple.
|
||||
|
||||
@node nsis.make, objc.make, native-library.make, Project Types
|
||||
@section NSIS Installer (@file{nsis.make})
|
||||
@subsection NSIS Installer (@file{nsis.make})
|
||||
|
||||
The NSIS make project provides rules for automatically generating NSIS
|
||||
installers for Windows operating systems. In order to get this functionality,
|
||||
|
@ -644,7 +592,7 @@ If not set it defaults to @code{LOCAL}.
|
|||
@end defvr
|
||||
|
||||
@node objc.make, palette.make, nsis.make, Project Types
|
||||
@section Objective-C Programs (@file{objc.make})
|
||||
@subsection Objective-C Programs (@file{objc.make})
|
||||
@menu
|
||||
* objc.make variables::
|
||||
* Example ObjC Makefile::
|
||||
|
@ -656,7 +604,7 @@ Objective-C programs which only use the Objective-C Runtime Library and
|
|||
the classes it defines are candidates for this project type.
|
||||
|
||||
@node objc.make variables, Example ObjC Makefile, objc.make, objc.make
|
||||
@subsection Project Variables
|
||||
@subsubsection Project Variables
|
||||
|
||||
Most of the project variables work the same as in Library
|
||||
projects (see @ref{library.make}).
|
||||
|
@ -682,7 +630,7 @@ of the program as listed by the @code{OBJC_PROGRAM_NAME} variable.
|
|||
@end defvr
|
||||
|
||||
@node Example ObjC Makefile, , objc.make variables, objc.make
|
||||
@subsection Example Makefile
|
||||
@subsubsection Example Makefile
|
||||
|
||||
This makefile illustrates two Objective-C programs, @file{simple} and
|
||||
@file{list} that are to be generated.
|
||||
|
@ -729,13 +677,13 @@ Runtime library; presumably @file{simple.m} has code which is dependent
|
|||
upon the Objective-C Runtime.
|
||||
|
||||
@node palette.make, rpm.make, objc.make, Project Types
|
||||
@section Palettes (@file{palette.make})
|
||||
@subsection Palettes (@file{palette.make})
|
||||
|
||||
A palette is a Bundle that provides some kind of GUI functionality.
|
||||
Otherwise it is similar to the Bundle project.
|
||||
|
||||
@node rpm.make, service.make, palette.make, Project Types
|
||||
@section RPMs (@file{rpm.make})
|
||||
@subsection RPMs (@file{rpm.make})
|
||||
|
||||
The RPM project provides rules for automatically generating RPM spec
|
||||
files in order to make RPM distributions. Note that this project
|
||||
|
@ -792,25 +740,25 @@ Library containing the Objective-C runtime.
|
|||
@end example
|
||||
|
||||
@node service.make, subproject.make, rpm.make, Project Types
|
||||
@section Services (@file{service.make})
|
||||
@subsection Services (@file{service.make})
|
||||
|
||||
A Service is like a Tool that provides a service to a running GNUstep program.
|
||||
|
||||
@node subproject.make, tool.make, service.make, Project Types
|
||||
@section Subprojects (@file{subproject.make})
|
||||
@subsection Subprojects (@file{subproject.make})
|
||||
|
||||
A Subproject provides a way to organize code in a large application into
|
||||
subunits. The code in the subproject is merged in with the main tool
|
||||
or application.
|
||||
|
||||
@node tool.make, , subproject.make, Project Types
|
||||
@section Command Line Tools (@file{tool.make})
|
||||
@subsection Command Line Tools (@file{tool.make})
|
||||
|
||||
A tool is an ObjC project that by default links in the GNUstep base
|
||||
library. Otherwise it is similar to the ObjC project type.
|
||||
|
||||
@node GNUmakefile.preamble, GNUmakefile.postamble, Project Types, Top
|
||||
@chapter Global Variables (@file{GNUmakefile.preamble})
|
||||
@section Global Variables (@file{GNUmakefile.preamble})
|
||||
|
||||
@file{GNUmakefile.preamble} is an optional file that may be put within the
|
||||
package for declaring global makefile variables for the package. The
|
||||
|
@ -1029,7 +977,7 @@ LIBRARIES_DEPEND_UPON = -lsimple $(FND_LIBS) $(OBJC_LIBS) $(SYSTEM_LIBS)
|
|||
|
||||
|
||||
@node GNUmakefile.postamble, Common Variables, GNUmakefile.preamble, Top
|
||||
@chapter Global Rules (@file{GNUmakefile.postamble})
|
||||
@section Global Rules (@file{GNUmakefile.postamble})
|
||||
|
||||
The @file{GNUmakefile.postamble} file is an optional file you may
|
||||
include in your package to define additional rules that should be
|
||||
|
@ -1045,7 +993,7 @@ You can even define additional rules such as ones that a particular to
|
|||
your specific package or that are to be used by developers only.
|
||||
|
||||
@node Common Variables, Other Variables, GNUmakefile.postamble, Top
|
||||
@chapter Common Variables (@file{common.make})
|
||||
@section Common Variables (@file{common.make})
|
||||
@menu
|
||||
* Directory Paths::
|
||||
* Scripts::
|
||||
|
@ -1065,7 +1013,7 @@ defined variables as the resultant behaviour of the Makefile Package is
|
|||
undefined.
|
||||
|
||||
@node Directory Paths, Scripts, Common Variables, Common Variables
|
||||
@section Directory Paths
|
||||
@subsection Directory Paths
|
||||
|
||||
@defvar GNUSTEP_MAKEFILES
|
||||
@code{GNUSTEP_MAKEFILES} is the absolute path to the directory where the
|
||||
|
@ -1232,7 +1180,7 @@ where the binary file is located.
|
|||
@end defvar
|
||||
|
||||
@node Scripts, Platform Information, Directory Paths, Common Variables
|
||||
@section Scripts
|
||||
@subsection Scripts
|
||||
|
||||
@defvar CONFIG_GUESS_SCRIPT
|
||||
@code{CONFIG_GUESS_SCRIPT} is the absolute path to the
|
||||
|
@ -1315,7 +1263,7 @@ script; it is used internally by the Makefile Package.
|
|||
@end defvar
|
||||
|
||||
@node Platform Information, Library Combination, Scripts, Common Variables
|
||||
@section Host and Target Platform Information
|
||||
@subsection Host and Target Platform Information
|
||||
|
||||
@defvar GNUSTEP_HOST
|
||||
@code{GNUSTEP_HOST} is the canonical host platform name; i.e. the name
|
||||
|
@ -1392,7 +1340,7 @@ platform, see Cross Compiling.
|
|||
@end defvar
|
||||
|
||||
@node Library Combination, Overridable Flags, Platform Information, Common Variables
|
||||
@section Library Combination
|
||||
@subsection Library Combination
|
||||
|
||||
@defvar OBJC_RUNTIME_LIB
|
||||
@code{OBJC_RUNTIME_LIB} is assigned the code that indicates the
|
||||
|
@ -1541,7 +1489,7 @@ there is not backend library; i.e. @code{GUI_BACKEND_LIB} is
|
|||
@end defvar
|
||||
|
||||
@node Overridable Flags, , Library Combination, Common Variables
|
||||
@section Overridable Flags
|
||||
@subsection Overridable Flags
|
||||
|
||||
@defvar OBJCFLAGS
|
||||
@code{OBJCFLAGS} are flags that are passed to the compiler when
|
||||
|
@ -1628,7 +1576,7 @@ make documentation=no
|
|||
@end smallexample
|
||||
|
||||
@node Other Variables, , Common Variables, Top
|
||||
@chapter Other Variables
|
||||
@section Other Variables
|
||||
|
||||
Since gnustep-make is a system of scripts rather than compiled code,
|
||||
all the source is always present and available to read, so the main
|
||||
|
|
|
@ -17,7 +17,7 @@ option. With library combinations we mean the Objective-C runtime, the Foundatio
|
|||
.PP
|
||||
If you installed your
|
||||
.B GNUstep
|
||||
system in a non-flattened way all system dependent binaries are installed in subdirectories with
|
||||
system in a non-flattened way all system dependend binaries are installed in subdirectories with
|
||||
.I cpu/os/library-combo
|
||||
information. That means for instance that the
|
||||
.I gnustep-base
|
||||
|
|
|
@ -9,38 +9,6 @@
|
|||
The currently released version is @samp{@value{GNUSTEP-MAKE-VERSION}}.
|
||||
@end ifclear
|
||||
|
||||
@section Changes in version @samp{2.9.3}
|
||||
|
||||
@itemize
|
||||
|
||||
@item Added support for ASAN/LSAN builds
|
||||
|
||||
@item Various minor bugfixes.
|
||||
|
||||
@end itemize
|
||||
|
||||
@ifclear ANNOUNCE-ONLY
|
||||
|
||||
@section Changes in version @samp{2.9.2}
|
||||
|
||||
@itemize
|
||||
|
||||
@item Update for newer versions of Java
|
||||
|
||||
@item Various minor bugfixes.
|
||||
|
||||
@end itemize
|
||||
|
||||
@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
|
||||
|
||||
@section Changes in version @samp{2.9.0}
|
||||
|
||||
@itemize
|
||||
|
@ -70,6 +38,8 @@ Gorm.
|
|||
|
||||
@end itemize
|
||||
|
||||
@ifclear ANNOUNCE-ONLY
|
||||
|
||||
@section Changes in version @samp{2.8.0}
|
||||
|
||||
@itemize
|
||||
|
|
|
@ -4,34 +4,6 @@ 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.9.3
|
||||
|
||||
Addition of the 'asan=yes' option when GNUstep-make is invoked and support
|
||||
for the GNUSTEP_WITH_ASAN=1 environment setting to turn on address and leak
|
||||
sanitisation.
|
||||
|
||||
Various minor fixes
|
||||
|
||||
@section Version 2.9.2
|
||||
|
||||
Changes to work around the removal of the javah tool after java version 8.
|
||||
|
||||
Changes to have the test framework require/use bash for consistent behavior.
|
||||
|
||||
Changes to fix PDF generation with texinfo/7.1 and later.
|
||||
|
||||
Changes to implement .dist-ignore support for the git-dist: make target.
|
||||
|
||||
@section Version 2.9.1
|
||||
|
||||
Test framework has workaround for clang issues when building with MSCV.
|
||||
|
||||
A few minor test framework issues inroduced by the parallelisation rewrite are fixed.
|
||||
|
||||
A bug in the PASS_MATCH macro is fixed.
|
||||
|
||||
The test framework makefiles now automatically add the framework header directory to the compiler flags, so testcases can be more reliably built by invoking make directly (rather than via the gnustep-tests script).
|
||||
|
||||
@section Version 2.9.0
|
||||
|
||||
We have improved support for newer GCC versions (GCC9 and newer).
|
||||
|
|
|
@ -31,38 +31,38 @@ GNUSTEP_LOCAL_USERS_DIR=/home
|
|||
# paths.
|
||||
GNUSTEP_MAKEFILES=/share/GNUstep/Makefiles
|
||||
|
||||
GNUSTEP_SYSTEM_APPS=/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_WEB_APPS=/@libdir@/GNUstep/WebApplications
|
||||
GNUSTEP_SYSTEM_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_WEB_APPS=/lib/GNUstep/WebApplications
|
||||
GNUSTEP_SYSTEM_TOOLS=/bin
|
||||
GNUSTEP_SYSTEM_ADMIN_TOOLS=/sbin
|
||||
GNUSTEP_SYSTEM_LIBRARY=/@libdir@/GNUstep
|
||||
GNUSTEP_SYSTEM_LIBRARY=/lib/GNUstep
|
||||
GNUSTEP_SYSTEM_HEADERS=/include
|
||||
GNUSTEP_SYSTEM_LIBRARIES=/@libdir@
|
||||
GNUSTEP_SYSTEM_LIBRARIES=/lib
|
||||
GNUSTEP_SYSTEM_DOC=/share/GNUstep/Documentation
|
||||
GNUSTEP_SYSTEM_DOC_MAN=/share/man
|
||||
GNUSTEP_SYSTEM_DOC_INFO=/share/info
|
||||
|
||||
GNUSTEP_NETWORK_APPS=/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_WEB_APPS=/@libdir@/GNUstep/WebApplications
|
||||
GNUSTEP_NETWORK_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_WEB_APPS=/lib/GNUstep/WebApplications
|
||||
GNUSTEP_NETWORK_TOOLS=/bin
|
||||
GNUSTEP_NETWORK_ADMIN_TOOLS=/sbin
|
||||
GNUSTEP_NETWORK_LIBRARY=/@libdir@/GNUstep
|
||||
GNUSTEP_NETWORK_LIBRARY=/lib/GNUstep
|
||||
GNUSTEP_NETWORK_HEADERS=/include
|
||||
GNUSTEP_NETWORK_LIBRARIES=/@libdir@
|
||||
GNUSTEP_NETWORK_LIBRARIES=/lib
|
||||
GNUSTEP_NETWORK_DOC=/share/GNUstep/Documentation
|
||||
GNUSTEP_NETWORK_DOC_MAN=/share/man
|
||||
GNUSTEP_NETWORK_DOC_INFO=/share/info
|
||||
|
||||
GNUSTEP_LOCAL_APPS=/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_LOCAL_ADMIN_APPS=/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_LOCAL_WEB_APPS=/@libdir@/GNUstep/WebApplications
|
||||
GNUSTEP_LOCAL_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_LOCAL_ADMIN_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_LOCAL_WEB_APPS=/lib/GNUstep/WebApplications
|
||||
GNUSTEP_LOCAL_TOOLS=/bin
|
||||
GNUSTEP_LOCAL_ADMIN_TOOLS=/sbin
|
||||
GNUSTEP_LOCAL_LIBRARY=/@libdir@/GNUstep
|
||||
GNUSTEP_LOCAL_LIBRARY=/lib/GNUstep
|
||||
GNUSTEP_LOCAL_HEADERS=/include
|
||||
GNUSTEP_LOCAL_LIBRARIES=/@libdir@
|
||||
GNUSTEP_LOCAL_LIBRARIES=/lib
|
||||
GNUSTEP_LOCAL_DOC=/share/GNUstep/Documentation
|
||||
GNUSTEP_LOCAL_DOC_MAN=/share/man
|
||||
GNUSTEP_LOCAL_DOC_INFO=/share/info
|
||||
|
|
|
@ -40,38 +40,38 @@ GNUSTEP_LOCAL_USERS_DIR=/home
|
|||
# paths.
|
||||
GNUSTEP_MAKEFILES=/share/GNUstep/Makefiles
|
||||
|
||||
GNUSTEP_SYSTEM_APPS=/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_WEB_APPS=/@libdir@/GNUstep/WebApplications
|
||||
GNUSTEP_SYSTEM_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_WEB_APPS=/lib/GNUstep/WebApplications
|
||||
GNUSTEP_SYSTEM_TOOLS=/bin
|
||||
GNUSTEP_SYSTEM_ADMIN_TOOLS=/sbin
|
||||
GNUSTEP_SYSTEM_LIBRARY=/@libdir@/GNUstep
|
||||
GNUSTEP_SYSTEM_LIBRARY=/lib/GNUstep
|
||||
GNUSTEP_SYSTEM_HEADERS=/include
|
||||
GNUSTEP_SYSTEM_LIBRARIES=/@libdir@
|
||||
GNUSTEP_SYSTEM_LIBRARIES=/lib
|
||||
GNUSTEP_SYSTEM_DOC=/share/GNUstep/Documentation
|
||||
GNUSTEP_SYSTEM_DOC_MAN=/share/man
|
||||
GNUSTEP_SYSTEM_DOC_INFO=/share/info
|
||||
|
||||
GNUSTEP_NETWORK_APPS=/local/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=/local/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_WEB_APPS=/@libdir@/GNUstep/WebApplications
|
||||
GNUSTEP_NETWORK_APPS=/local/lib/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=/local/lib/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_WEB_APPS=/lib/GNUstep/WebApplications
|
||||
GNUSTEP_NETWORK_TOOLS=/local/bin
|
||||
GNUSTEP_NETWORK_ADMIN_TOOLS=/local/sbin
|
||||
GNUSTEP_NETWORK_LIBRARY=/local/@libdir@/GNUstep
|
||||
GNUSTEP_NETWORK_LIBRARY=/local/lib/GNUstep
|
||||
GNUSTEP_NETWORK_HEADERS=/local/include
|
||||
GNUSTEP_NETWORK_LIBRARIES=/local/@libdir@
|
||||
GNUSTEP_NETWORK_LIBRARIES=/local/lib
|
||||
GNUSTEP_NETWORK_DOC=/local/share/GNUstep/Documentation
|
||||
GNUSTEP_NETWORK_DOC_MAN=/local/share/man
|
||||
GNUSTEP_NETWORK_DOC_INFO=/local/share/info
|
||||
|
||||
GNUSTEP_LOCAL_APPS=/local/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_LOCAL_ADMIN_APPS=/local/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_LOCAL_WEB_APPS=/local/@libdir@/GNUstep/WebApplications
|
||||
GNUSTEP_LOCAL_APPS=/local/lib/GNUstep/Applications
|
||||
GNUSTEP_LOCAL_ADMIN_APPS=/local/lib/GNUstep/Applications
|
||||
GNUSTEP_LOCAL_WEB_APPS=/local/lib/GNUstep/WebApplications
|
||||
GNUSTEP_LOCAL_TOOLS=/local/bin
|
||||
GNUSTEP_LOCAL_ADMIN_TOOLS=/local/sbin
|
||||
GNUSTEP_LOCAL_LIBRARY=/local/@libdir@/GNUstep
|
||||
GNUSTEP_LOCAL_LIBRARY=/local/lib/GNUstep
|
||||
GNUSTEP_LOCAL_HEADERS=/local/include
|
||||
GNUSTEP_LOCAL_LIBRARIES=/local/@libdir@
|
||||
GNUSTEP_LOCAL_LIBRARIES=/local/lib
|
||||
GNUSTEP_LOCAL_DOC=/local/share/GNUstep/Documentation
|
||||
GNUSTEP_LOCAL_DOC_MAN=/local/share/man
|
||||
GNUSTEP_LOCAL_DOC_INFO=/local/share/info
|
||||
|
|
|
@ -216,7 +216,7 @@ install: generated-files
|
|||
$(INSTALL_DATA) GNUstep.csh "$(makedir)"; \
|
||||
$(INSTALL_DATA) filesystem.sh "$(makedir)"; \
|
||||
$(INSTALL_DATA) filesystem.csh "$(makedir)"; \
|
||||
$(INSTALL_DATA) GNUstep-reset.sh "$(makedir)"; \
|
||||
$(INSTALL_DATA) "$(srcdir)/GNUstep-reset.sh" "$(makedir)"; \
|
||||
$(INSTALL_PROGRAM) -m 755 fixpath.sh "$(makedir)"; \
|
||||
$(INSTALL_PROGRAM) -m 755 openapp "$(tooldir)"; \
|
||||
$(INSTALL_PROGRAM) -m 755 "$(srcdir)/debugapp" "$(tooldir)"; \
|
||||
|
|
1121
GNUstep-HOWTO
Normal file
1121
GNUstep-HOWTO
Normal file
File diff suppressed because it is too large
Load diff
|
@ -86,13 +86,13 @@ function reset_path
|
|||
fi
|
||||
}
|
||||
|
||||
reset_path INFOPATH @GNUSTEP_LOCAL_DOC_INFO@
|
||||
reset_path GUILE_LOAD_PATH @GNUSTEP_LOCAL_LIBRARIES@/Guile
|
||||
reset_path CLASSPATH @GNUSTEP_LOCAL_LIBRARIES@/Java
|
||||
reset_path LD_LIBRARY_PATH @GNUSTEP_LOCAL_LIBRARIES@
|
||||
reset_path DYLD_LIBRARY_PATH @GNUSTEP_LOCAL_LIBRARIES@
|
||||
reset_path DYLD_FRAMEWORK_PATH @GNUSTEP_LOCAL_LIBRARY@/Frameworks
|
||||
reset_path PATH @GNUSTEP_LOCAL_TOOLS@
|
||||
reset_path INFOPATH /Library/Documentation/info
|
||||
reset_path GUILE_LOAD_PATH /Library/Libraries/Guile
|
||||
reset_path CLASSPATH /Library/Libraries/Java
|
||||
reset_path LD_LIBRARY_PATH /Library/Libraries
|
||||
reset_path DYLD_LIBRARY_PATH /Library/Libraries
|
||||
reset_path DYLD_FRAMEWORK_PATH /Library/Frameworks
|
||||
reset_path PATH /Tools
|
||||
|
||||
# Make sure we destroy the reset_path function after using it - we don't
|
||||
# want to pollute the environment with it.
|
26
INSTALL
26
INSTALL
|
@ -20,10 +20,7 @@ particular operating system and CPU. These instructions come with the
|
|||
GNUstep-HOWTO and are also located at the GNUstep web site at
|
||||
<http://www.gnustep.org>.
|
||||
|
||||
1.1.1 Quick Installation Instructions
|
||||
---------------------
|
||||
|
||||
To build and install the GNUstep Makefiles, run the following commands:
|
||||
Quick installation instructions:
|
||||
|
||||
./configure
|
||||
make
|
||||
|
@ -47,27 +44,6 @@ filesystem layout).
|
|||
make
|
||||
make install
|
||||
|
||||
1.1.2 Enabling Modern Objective-C Features
|
||||
---------------------
|
||||
|
||||
GNUstep supports the legacy GCC runtime, and the modern libobjc2 runtime with
|
||||
Objective-C 2.0 Features such as ARC, Blocks (closures), Synthesised property
|
||||
accessors, Efficient support for @synchronized() and more.
|
||||
|
||||
libobjc2 requires building with clang. If you've installed both clang and libobjc2
|
||||
you can configure GNUstep Make to use the newer runtime and features.
|
||||
Here is an example with the runtime version set to 2.2.
|
||||
(Set it to the last libobjc2 version to benefit from possible changes in Clang CodeGen).
|
||||
Please note that we explicitly enable some features such as objc-arc that might
|
||||
be infered from the runtime version.
|
||||
|
||||
./configure \
|
||||
--enable-native-objc-exceptions \
|
||||
--enable-objc-arc \
|
||||
--with-runtime-abi=gnustep-2.2 \
|
||||
--with-library-combo=ng-gnu-gnu \
|
||||
CC="clang" CXX="clang++" CPP="clang -E" LDFLAGS="-fuse-ld=lld"
|
||||
|
||||
1.2 Configuration
|
||||
=================
|
||||
|
||||
|
|
|
@ -106,7 +106,7 @@ $(OUTFILE).pdf: $(TEXI_FILES)
|
|||
# so after running it we try to move any from the subdirectory to
|
||||
# where they are expected.
|
||||
$(OUTFILE)/index.html: $(TEXI_FILES)
|
||||
-$(GNUSTEP_TEXI2HTML) --output=$(OUTFILE) \
|
||||
-$(GNUSTEP_TEXI2HTML) \
|
||||
$(GNUSTEP_TEXI2HTML_FLAGS) $(ADDITIONAL_TEXI2HTML_FLAGS) \
|
||||
$(GNUSTEP_INSTANCE).texi; \
|
||||
if [ -f $(OUTFILE)/$(OUTFILE)_toc.html ]; \
|
||||
|
|
|
@ -299,11 +299,6 @@ SONAME_FRAMEWORK_FILE = $(FRAMEWORK_LIBRARY_FILE)
|
|||
# as under Unix.
|
||||
LIB_LINK_DLL_FILE = $(DLL_PREFIX)$(GNUSTEP_INSTANCE)-$(subst .,_,$(INTERFACE_VERSION))$(DLL_LIBEXT)
|
||||
|
||||
# LIB_LINK_PDB_FILE is the PDB symbol file. The program database (PDB)
|
||||
# includes instructions for formatting trace messages so that they
|
||||
# can be presented in a human-readable display.
|
||||
LIB_LINK_PDB_FILE = $(DLL_PREFIX)$(GNUSTEP_INSTANCE)-$(subst .,_,$(INTERFACE_VERSION))$(DLL_PDBEXT)
|
||||
|
||||
FRAMEWORK_OBJ_EXT = $(DLL_LIBEXT)
|
||||
endif # BUILD_DLL
|
||||
|
||||
|
|
|
@ -200,9 +200,15 @@ endif
|
|||
else # BUILD_DLL
|
||||
|
||||
# When you build a DLL, you have to install it in a directory which is
|
||||
# in your PATH.
|
||||
# in your PATH. On Windows MSVC we use the library directory that will
|
||||
# also contain other libraries like objc.dll. Otherwise (i.e. on MinGW)
|
||||
# we use the tools directory.
|
||||
ifeq ($(DLL_INSTALLATION_DIR),)
|
||||
DLL_INSTALLATION_DIR = $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)
|
||||
ifeq ($(GNUSTEP_TARGET_OS), windows)
|
||||
DLL_INSTALLATION_DIR = $(FINAL_LIBRARY_INSTALL_DIR)
|
||||
else
|
||||
DLL_INSTALLATION_DIR = $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)
|
||||
endif
|
||||
endif
|
||||
|
||||
# When we build a DLL, we also pass -DBUILD_lib{library_name}_DLL=1 to
|
||||
|
|
|
@ -447,13 +447,7 @@ endif
|
|||
git-dist:
|
||||
$(ECHO_NOTHING)echo "Exporting from branch or tag $(GIT_TAG_NAME)-$(VERTAG) on local Git repository..."; \
|
||||
if $(GIT) show $(GIT_TAG_NAME)-$(VERTAG):.dist-ignore 2>/dev/null >/dev/null; then \
|
||||
$(GIT) archive --format=tar.gz $(GIT_TAG_NAME)-$(VERTAG) -o $(ARCHIVE_FILE) --prefix=$(VERSION_NAME)/ ; \
|
||||
echo "Extracting $(ARCHIVE_FILE)"; \
|
||||
$(TAR) xzf $(ARCHIVE_FILE); \
|
||||
rm $(ARCHIVE_FILE); \
|
||||
$(TAR) cfX - $(VERSION_NAME)/.dist-ignore $(VERSION_NAME) \
|
||||
| $(COMPRESSION_PROGRAM) > $(ARCHIVE_FILE); \
|
||||
rm -rf $(VERSION_NAME); \
|
||||
echo "*Error* cannot export: dist-ignore is currently unused"; \
|
||||
else \
|
||||
$(GIT) archive --format=tar.gz $(GIT_TAG_NAME)-$(VERTAG) -o $(ARCHIVE_FILE) --prefix=$(VERSION_NAME)/ ; \
|
||||
fi ; \
|
||||
|
|
471
NEWS
471
NEWS
|
@ -1,77 +1,54 @@
|
|||
1 NEWS
|
||||
******
|
||||
|
||||
The currently released version is ‘2.9.3’.
|
||||
The currently released version is '2.9.0'.
|
||||
|
||||
1.1 Changes in version ‘2.9.3’
|
||||
1.1 Changes in version '2.9.0'
|
||||
==============================
|
||||
|
||||
• Added support for ASAN/LSAN builds
|
||||
* Better check for objc runtime on Windows.
|
||||
|
||||
• Various minor bugfixes.
|
||||
* Split linker flags to better support partial linking: 'ALL_LDFLAGS'
|
||||
is now a combination of 'FINAL_LDFLAGS' and 'ALL_LDFLAGS'.
|
||||
|
||||
1.2 Changes in version ‘2.9.2’
|
||||
==============================
|
||||
* Better support for newer gcc versions.
|
||||
|
||||
• Update for newer versions of Java
|
||||
* Add support for storyboard files.
|
||||
|
||||
• Various minor bugfixes.
|
||||
|
||||
1.3 Changes in version ‘2.9.1’
|
||||
==============================
|
||||
|
||||
• Add workaround for Clang bug on Windows MSVC when tests contain no
|
||||
Objective-C constructs.
|
||||
|
||||
• Various fixes for minor issues introduced in the test framework by
|
||||
parallelisation mof testcase execution.
|
||||
|
||||
1.4 Changes in version ‘2.9.0’
|
||||
==============================
|
||||
|
||||
• Better check for objc runtime on Windows.
|
||||
|
||||
• Split linker flags to better support partial linking: ‘ALL_LDFLAGS’
|
||||
is now a combination of ‘FINAL_LDFLAGS’ and ‘ALL_LDFLAGS’.
|
||||
|
||||
• Better support for newer gcc versions.
|
||||
|
||||
• Add support for storyboard files.
|
||||
|
||||
• Increase autoconf version to 2.65 and make autoconf handle
|
||||
* Increase autoconf version to 2.65 and make autoconf handle
|
||||
Objective-C++ and OBJCXX variables directly.
|
||||
|
||||
• Fix bug that prevented ARC from getting used.
|
||||
* Fix bug that prevented ARC from getting used.
|
||||
|
||||
• Link subproject object files directly instead of first merging them
|
||||
into ‘subproject.o’.
|
||||
* Link subproject object files directly instead of first merging them
|
||||
into 'subproject.o'.
|
||||
|
||||
• Support building on Windows with Clang MSVC target.
|
||||
* Support building on Windows with Clang MSVC target.
|
||||
|
||||
• Improve mingw64 support: for instance, adopt the triplet used by
|
||||
* 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.
|
||||
|
||||
1.5 Changes in version ‘2.8.0’
|
||||
1.2 Changes in version '2.8.0'
|
||||
==============================
|
||||
|
||||
• Better library combo and ABI detection: gnustep-make will now
|
||||
* 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
|
||||
‘--with-runtime-abi’ configure option.
|
||||
'--with-runtime-abi' configure option.
|
||||
|
||||
• Full support for the gnustep-2.0 Objective-C ABI.
|
||||
* Full support for the gnustep-2.0 Objective-C ABI.
|
||||
|
||||
• Support for creating a Git tag and creating a tarball from a git
|
||||
tag using the ‘git-tag’ and ‘git-dist’ targets.
|
||||
* Support for creating a Git tag and creating a tarball from a git
|
||||
tag using the 'git-tag' and 'git-dist' targets.
|
||||
|
||||
• Support for creating a Mercurial tag and creating a tarball from a
|
||||
hg tag using the ‘hg-tag’ and ‘hg-dist’ targets.
|
||||
* Support for creating a Mercurial tag and creating a tarball from a
|
||||
hg tag using the 'hg-tag' and 'hg-dist' targets.
|
||||
|
||||
• Dropped legacy Rhapsody and FreeBSD-out support.
|
||||
* Dropped legacy Rhapsody and FreeBSD-out support.
|
||||
|
||||
1.6 Changes in version ‘2.7.0’
|
||||
1.3 Changes in version '2.7.0'
|
||||
==============================
|
||||
|
||||
Garbage collection support removed
|
||||
|
@ -85,7 +62,7 @@ compatible
|
|||
|
||||
Various other minor bugfixes
|
||||
|
||||
1.7 Changes in version ‘2.6.8’
|
||||
1.4 Changes in version '2.6.8'
|
||||
==============================
|
||||
|
||||
Configure option '-with-library-combo=ng-gnu-gnu' to use the 'Next
|
||||
|
@ -113,7 +90,7 @@ you update any old gnustep-make version one makefiles.
|
|||
|
||||
Garbage collection support to be removed at the next release.
|
||||
|
||||
1.8 Changes in version ‘2.6.7’
|
||||
1.5 Changes in version '2.6.7'
|
||||
==============================
|
||||
|
||||
Improved package building support
|
||||
|
@ -124,15 +101,15 @@ Improved package building support
|
|||
|
||||
Various minor bugfixes, documentation spelling corrections etc.
|
||||
|
||||
1.9 Changes in version ‘2.6.6’
|
||||
1.6 Changes in version '2.6.6'
|
||||
==============================
|
||||
|
||||
Debian packaging support
|
||||
|
||||
Minor bugfixes.
|
||||
|
||||
1.10 Changes in version ‘2.6.5’
|
||||
===============================
|
||||
1.7 Changes in version '2.6.5'
|
||||
==============================
|
||||
|
||||
Bugfix for non-fragile ABI test
|
||||
|
||||
|
@ -142,124 +119,124 @@ Bugfix for non-fragile ABI test
|
|||
|
||||
Added minimal test support for .c and .cc files.
|
||||
|
||||
1.11 Changes in version ‘2.6.4’
|
||||
===============================
|
||||
1.8 Changes in version '2.6.4'
|
||||
==============================
|
||||
|
||||
Test framework extended equality tests.
|
||||
|
||||
Android build target
|
||||
|
||||
1.12 Changes in version ‘2.6.3’
|
||||
===============================
|
||||
1.9 Changes in version '2.6.3'
|
||||
==============================
|
||||
|
||||
Minor bugfix release.
|
||||
|
||||
1.13 Changes in version ‘2.6.2’
|
||||
1.10 Changes in version '2.6.2'
|
||||
===============================
|
||||
|
||||
Added standalone filesystem layout for putting everything in one
|
||||
directory for easy deployment of relocatable. Other bug fixes.
|
||||
|
||||
1.14 Changes in version ‘2.6.1’
|
||||
1.11 Changes in version '2.6.1'
|
||||
===============================
|
||||
|
||||
Bug fix release. Most notably to fix a problem compiling GNUstep with
|
||||
clang.
|
||||
|
||||
1.15 Changes in version ‘2.6.0’
|
||||
1.12 Changes in version '2.6.0'
|
||||
===============================
|
||||
|
||||
• The default filesystem layout is now the 'fhs' layout
|
||||
• The default location of the configuration file changed when not
|
||||
* The default filesystem layout is now the 'fhs' layout
|
||||
* The default location of the configuration file changed when not
|
||||
installing system-wide
|
||||
• Removed the -with-system-root, -with-local-root and
|
||||
* Removed the -with-system-root, -with-local-root and
|
||||
-with-network-root options
|
||||
• Removed obsolete variables (deprecated 4 years ago).
|
||||
• A new test framework is included in the pacakge
|
||||
• objc.make deprecated. Use tool.make instead
|
||||
• -enable-absolute-install-paths is now the default on Darwin
|
||||
* Removed obsolete variables (deprecated 4 years ago).
|
||||
* A new test framework is included in the pacakge
|
||||
* objc.make deprecated. Use tool.make instead
|
||||
* -enable-absolute-install-paths is now the default on Darwin
|
||||
|
||||
1.16 Changes in version ‘2.4.0’
|
||||
1.13 Changes in version '2.4.0'
|
||||
===============================
|
||||
|
||||
• Add -enable-objc-nonfragile-abi flag
|
||||
• New serial-subdirectories.make and parallel-subdirectories.make.
|
||||
• Support for parallel building of subdirectories.
|
||||
• Support for parallel building of different instances.
|
||||
• Support source files in subdirectories without using a subproject.
|
||||
• Support header files in sub-subdirectories.
|
||||
• Batch-compile Java files (much faster).
|
||||
• Changed default compilation flags to -O2 -g.
|
||||
• Fixes for building documentation.
|
||||
• Renamed info files to prevent conflicts.
|
||||
• Updated cygwin support.
|
||||
* Add -enable-objc-nonfragile-abi flag
|
||||
* New serial-subdirectories.make and parallel-subdirectories.make.
|
||||
* Support for parallel building of subdirectories.
|
||||
* Support for parallel building of different instances.
|
||||
* Support source files in subdirectories without using a subproject.
|
||||
* Support header files in sub-subdirectories.
|
||||
* Batch-compile Java files (much faster).
|
||||
* Changed default compilation flags to -O2 -g.
|
||||
* Fixes for building documentation.
|
||||
* Renamed info files to prevent conflicts.
|
||||
* Updated cygwin support.
|
||||
|
||||
1.17 Changes in version ‘2.2.0’
|
||||
1.14 Changes in version '2.2.0'
|
||||
===============================
|
||||
|
||||
• New -with-objc-lib-flag for specifying libobjc.
|
||||
• Automatically uses -lobjc_gc with configured with garbage
|
||||
* New -with-objc-lib-flag for specifying libobjc.
|
||||
* Automatically uses -lobjc_gc with configured with garbage
|
||||
collection
|
||||
• Parallel building supported using e.g. make -j 2
|
||||
• Use install -p if available.
|
||||
• make uninstall works better now.
|
||||
* Parallel building supported using e.g. make -j 2
|
||||
* Use install -p if available.
|
||||
* make uninstall works better now.
|
||||
|
||||
1.18 Changes in version ‘2.0.8’
|
||||
1.15 Changes in version '2.0.8'
|
||||
===============================
|
||||
|
||||
Minor bug fix to deal with installing in different domains
|
||||
|
||||
1.19 Changes in version ‘2.0.7’
|
||||
1.16 Changes in version '2.0.7'
|
||||
===============================
|
||||
|
||||
• New configuration file to set default installation
|
||||
• gnustep-make now uses the -no-print-directory flag when invoking
|
||||
* New configuration file to set default installation
|
||||
* gnustep-make now uses the -no-print-directory flag when invoking
|
||||
make
|
||||
• Files make have same name but different extensions (.c and .m)
|
||||
• Change in path checking algorithm in GNUstep.sh and GNUstep.csh
|
||||
• Test applications linked against gnustep-gui by default
|
||||
* Files make have same name but different extensions (.c and .m)
|
||||
* Change in path checking algorithm in GNUstep.sh and GNUstep.csh
|
||||
* Test applications linked against gnustep-gui by default
|
||||
|
||||
1.20 Changes in version ‘2.0.6’
|
||||
1.17 Changes in version '2.0.6'
|
||||
===============================
|
||||
|
||||
• Fixed some spurious rebuilds of plists, and framework headers.
|
||||
• Added the -enable-absolute-install-paths option for Darwin systems.
|
||||
• Install GNUstep.conf in /etc/GNUstep/GNUstep.conf on all systems.
|
||||
* Fixed some spurious rebuilds of plists, and framework headers.
|
||||
* Added the -enable-absolute-install-paths option for Darwin systems.
|
||||
* Install GNUstep.conf in /etc/GNUstep/GNUstep.conf on all systems.
|
||||
|
||||
1.21 Changes in version ‘2.0.5’
|
||||
1.18 Changes in version '2.0.5'
|
||||
===============================
|
||||
|
||||
• Update C++ and ObjC++ support so that g++ and proper flags are
|
||||
* Update C++ and ObjC++ support so that g++ and proper flags are
|
||||
automatically used.
|
||||
• Added a new filesystem layout for Apple Mac OS X and use this by
|
||||
* Added a new filesystem layout for Apple Mac OS X and use this by
|
||||
default on this system.
|
||||
• NEEDS_GUI variable added to determine linking behavior against gui
|
||||
* NEEDS_GUI variable added to determine linking behavior against gui
|
||||
library.
|
||||
• New option -enable-strict-v2-mode to test for obsolete variables.
|
||||
• ~/GNUstep/GNUstep.sh is no longer sourced.
|
||||
* New option -enable-strict-v2-mode to test for obsolete variables.
|
||||
* ~/GNUstep/GNUstep.sh is no longer sourced.
|
||||
|
||||
1.22 Changes in version ‘2.0.4’
|
||||
1.19 Changes in version '2.0.4'
|
||||
===============================
|
||||
|
||||
Fixed a bug finding relative paths on Windows (during configuration).
|
||||
|
||||
1.23 Changes in version ‘2.0.3’
|
||||
1.20 Changes in version '2.0.3'
|
||||
===============================
|
||||
|
||||
New man pages for tools. Better uninstallation of files Add Windows
|
||||
installer makefile for Applications.
|
||||
|
||||
1.24 Changes in version ‘2.0.2’
|
||||
1.21 Changes in version '2.0.2'
|
||||
===============================
|
||||
|
||||
Update license to GPLv3.
|
||||
|
||||
1.25 Changes in version ‘2.0.1’
|
||||
1.22 Changes in version '2.0.1'
|
||||
===============================
|
||||
|
||||
Bug fixes in filesystem layout and framework installation.
|
||||
|
||||
1.26 Changes in version ‘2.0.0’
|
||||
1.23 Changes in version '2.0.0'
|
||||
===============================
|
||||
|
||||
The Makefile package has had a major makover which befits a major
|
||||
|
@ -271,50 +248,50 @@ 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 ‘GNUSTEP_SYSTEM_ROOT’ no longer make any sense, as various
|
||||
as '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 ‘GNUstep-HOWTO’ and ‘INSTALL’ documents to find out new information
|
||||
the 'GNUstep-HOWTO' and 'INSTALL' documents to find out new information
|
||||
about configuring and installing make.
|
||||
|
||||
If you are a developer, read the files ‘filesystem’ and ‘make’ for
|
||||
information on new and changed variables. Read the ‘RELEASENOTES’ file
|
||||
If you are a developer, read the files 'filesystem' and 'make' for
|
||||
information on new and changed variables. Read the 'RELEASENOTES' file
|
||||
for specific changes in this release and updates you will need to make
|
||||
with this version of make.
|
||||
|
||||
Various changes include (See ‘RELEASENOTES’ for more information):
|
||||
Various changes include (See 'RELEASENOTES' for more information):
|
||||
|
||||
• New configure option ‘--with-layout’ to choose different filesystem
|
||||
* New configure option '--with-layout' to choose different filesystem
|
||||
layouts.
|
||||
• All applications use the ‘.app’ extension even when compiled with
|
||||
* All applications use the '.app' extension even when compiled with
|
||||
debugging or profiling.
|
||||
• Precompiled header support added using
|
||||
* Precompiled header support added using
|
||||
xxx_OBJC_PRECOMPILED_HEADERS.
|
||||
• gnustep-config is a program which prints out information on the
|
||||
* gnustep-config is a program which prints out information on the
|
||||
GNUstep filesystem and variables (Similar to programs like
|
||||
pkg-config).
|
||||
• Better inline messages/help, including printing the version of
|
||||
* Better inline messages/help, including printing the version of
|
||||
gnustep-make that is being used
|
||||
• Applications can be started now just using their name (by
|
||||
* Applications can be started now just using their name (by
|
||||
installing a wrapper in the tools directory).
|
||||
• Versioning of Microsoft Windows DLLs implemented.
|
||||
• Use of ‘GNUSTEP_SYSTEM_ROOT’ and similar variables deprecated.
|
||||
• Implement use of GNU standard ‘DESTDIR’ variable.
|
||||
• Object files are now placed in the ‘obj’ directory.
|
||||
• Static and profile libraries have the same name as normal
|
||||
* Versioning of Microsoft Windows DLLs implemented.
|
||||
* Use of 'GNUSTEP_SYSTEM_ROOT' and similar variables deprecated.
|
||||
* Implement use of GNU standard 'DESTDIR' variable.
|
||||
* Object files are now placed in the 'obj' directory.
|
||||
* Static and profile libraries have the same name as normal
|
||||
libraries.
|
||||
• Support for Admin Tools and Admin Apps directories
|
||||
• RPM support rewritten
|
||||
• Microsoft Windows support updated and extended
|
||||
• Easy consistent way to link non-installed frameworks by using
|
||||
* Support for Admin Tools and Admin Apps directories
|
||||
* RPM support rewritten
|
||||
* Microsoft Windows support updated and extended
|
||||
* Easy consistent way to link non-installed frameworks by using
|
||||
-Lpath_to_framework/xxx.framework/$GNUSTEP_TARGET_LDIR
|
||||
• Versioning of library resources
|
||||
• Fixed rebuilding .plist and .palette files
|
||||
* Versioning of library resources
|
||||
* Fixed rebuilding .plist and .palette files
|
||||
|
||||
1.27 Changes in version ‘1.13.0’
|
||||
1.24 Changes in version '1.13.0'
|
||||
================================
|
||||
|
||||
Debug libraries now have the same name as normal libraries (i.e. no
|
||||
|
@ -327,15 +304,15 @@ loaded into the same executable.
|
|||
make package (e.g. with Windows OS). The libraries can still use native
|
||||
paths.
|
||||
|
||||
1.28 Changes in version ‘1.12.0’
|
||||
1.25 Changes in version '1.12.0'
|
||||
================================
|
||||
|
||||
Minor fixes.
|
||||
|
||||
1.29 Changes in version ‘1.11.2’
|
||||
1.26 Changes in version '1.11.2'
|
||||
================================
|
||||
|
||||
The ‘GNUstep.conf’ file is now viewed as the essential determination of
|
||||
The '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
|
||||
|
@ -362,7 +339,7 @@ rules.
|
|||
files in the xxx_OBJCC_FILES variable, and put extra ObjC++ flags in
|
||||
xxx_OBJCCFLAGS or ADDITIONAL_OBJCCFLAGS.
|
||||
|
||||
1.30 Changes in version ‘1.11.1’
|
||||
1.27 Changes in version '1.11.1'
|
||||
================================
|
||||
|
||||
Part of the previous change was reversed. Now libobjc is still linked
|
||||
|
@ -373,7 +350,7 @@ 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.
|
||||
|
||||
1.31 Changes in version ‘1.11.0’
|
||||
1.28 Changes in version '1.11.0'
|
||||
================================
|
||||
|
||||
NOTE: The libobjc library is now linked in with the base library and NOT
|
||||
|
@ -381,57 +358,57 @@ 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.
|
||||
|
||||
• New rules for building and using DLLs were implemented. Now gcc
|
||||
* 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.
|
||||
|
||||
• The GNUsteprc file in $GNUSTEP_SYSTEM_ROOT is deprecated. See the
|
||||
* The GNUsteprc file in $GNUSTEP_SYSTEM_ROOT is deprecated. See the
|
||||
new GNUstep.conf file (which is not installed by default).
|
||||
|
||||
• Psuedo-framwork support was implemented on MingW. This essentially
|
||||
* 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.
|
||||
|
||||
• Support for xxx_WINDRES_FILES on MinGW was implemented.
|
||||
* Support for xxx_WINDRES_FILES on MinGW was implemented.
|
||||
|
||||
1.32 Changes in version ‘1.10.0’
|
||||
1.29 Changes in version '1.10.0'
|
||||
================================
|
||||
|
||||
• a GNUsteprc file is now automatically created and installed in
|
||||
* 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 ‘--with-user-root’ argument to configure, or by modifying
|
||||
the '--with-user-root' argument to configure, or by modifying
|
||||
GNUsteprc after configuration.)
|
||||
• make_services is not run by GNUstep.sh anymore. You must run this
|
||||
* make_services is not run by GNUstep.sh anymore. You must run this
|
||||
manually now (see the gnustep-gui documentation).
|
||||
• Palettes use a plist instead of a strings format file now for the
|
||||
* Palettes use a plist instead of a strings format file now for the
|
||||
palette.table file.
|
||||
• You can use the ‘--enable-native-objc-exceptions’ argument to
|
||||
* You can use the '--enable-native-objc-exceptions' argument to
|
||||
configure to enable use of built in objc exceptions with compilers
|
||||
that support it.
|
||||
|
||||
1.33 Changes in version ‘1.9.2’
|
||||
1.30 Changes in version '1.9.2'
|
||||
===============================
|
||||
|
||||
• Application and Bundles use the latest convention on Apple.
|
||||
• Improve/Simplify dependency checking when making docs
|
||||
* Application and Bundles use the latest convention on Apple.
|
||||
* Improve/Simplify dependency checking when making docs
|
||||
|
||||
1.34 Changes in version ‘1.9.1’
|
||||
1.31 Changes in version '1.9.1'
|
||||
===============================
|
||||
|
||||
• Remove ‘--disable-import’ option
|
||||
• README.Darwin for darwin/MacOSX install
|
||||
• Framework version and naming clarified.
|
||||
* Remove '--disable-import' option
|
||||
* README.Darwin for darwin/MacOSX install
|
||||
* Framework version and naming clarified.
|
||||
|
||||
1.35 Changes in version ‘1.9.0’
|
||||
1.32 Changes in version '1.9.0'
|
||||
===============================
|
||||
|
||||
• Support for building in a separate build dir.
|
||||
• Add ‘--enable-strip-makefiles’ option to configure
|
||||
• List of classes in a framework gets written to the plist file.
|
||||
* Support for building in a separate build dir.
|
||||
* Add '--enable-strip-makefiles' option to configure
|
||||
* List of classes in a framework gets written to the plist file.
|
||||
|
||||
1.36 Changes in version ‘1.8.0’
|
||||
1.33 Changes in version '1.8.0'
|
||||
===============================
|
||||
|
||||
Read the NEWS file for a complete list of changes since the last stable
|
||||
|
@ -440,35 +417,35 @@ 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.
|
||||
|
||||
1.37 Changes in version ‘1.7.4’
|
||||
1.34 Changes in version '1.7.4'
|
||||
===============================
|
||||
|
||||
Bug fixes.
|
||||
|
||||
1.38 Changes in version ‘1.7.3’
|
||||
1.35 Changes in version '1.7.3'
|
||||
===============================
|
||||
|
||||
• Adds library combo to Headers directory if not flattened.
|
||||
• Add Markup file (Renaissance) support.
|
||||
* Adds library combo to Headers directory if not flattened.
|
||||
* Add Markup file (Renaissance) support.
|
||||
|
||||
1.39 Changes in version ‘1.7.2’
|
||||
1.36 Changes in version '1.7.2'
|
||||
===============================
|
||||
|
||||
-enable-flattened (Flat directory structure) is on by default.
|
||||
|
||||
• On WIN32 use HOMEPATH in preference to USERPROFILE
|
||||
• netbsd and openbsd compile fixes.
|
||||
* On WIN32 use HOMEPATH in preference to USERPROFILE
|
||||
* netbsd and openbsd compile fixes.
|
||||
|
||||
1.40 Changes in version ‘1.7.1’
|
||||
1.37 Changes in version '1.7.1'
|
||||
===============================
|
||||
|
||||
Bug fixes.
|
||||
|
||||
1.41 Changes in version ‘1.7.0’
|
||||
1.38 Changes in version '1.7.0'
|
||||
===============================
|
||||
|
||||
This version contains a major change in the location of certain
|
||||
directories and installed files as detailed in the ‘filesystem.texi’
|
||||
directories and installed files as detailed in the '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
|
||||
|
@ -477,68 +454,68 @@ incompatibilities.
|
|||
|
||||
Other changes:
|
||||
|
||||
• Support for preprocessed Info.plists.
|
||||
* Support for preprocessed Info.plists.
|
||||
|
||||
1.42 Changes in version ‘1.6.0’
|
||||
1.39 Changes in version '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.
|
||||
|
||||
• Auto-build def file for DLLs
|
||||
• Work natively on MacOSX systems. Now use apple-apple-apple instead
|
||||
* Auto-build def file for DLLs
|
||||
* Work natively on MacOSX systems. Now use apple-apple-apple instead
|
||||
of nx-nx-nx on OSX systems.
|
||||
• More efficient checks for re-making a project.
|
||||
* More efficient checks for re-making a project.
|
||||
|
||||
1.43 Changes in version ‘1.5.1’
|
||||
1.40 Changes in version '1.5.1'
|
||||
===============================
|
||||
|
||||
• Framework support rewritten, also supports multiple names.
|
||||
• API change: Replace frameowork's xxx_TOOLS by xxx_COPY_INTO_DIR.
|
||||
• Unified link commands between libraries and frameworks
|
||||
* Framework support rewritten, also supports multiple names.
|
||||
* API change: Replace frameowork's xxx_TOOLS by xxx_COPY_INTO_DIR.
|
||||
* Unified link commands between libraries and frameworks
|
||||
(LIB_LINK_*).
|
||||
• New 'make strings' target for localization support.
|
||||
• Speed improvements.
|
||||
• Doesn't try to build OSX bundle on GNUstep and vice versa.
|
||||
• API change: Tools/Subproj can have resources.
|
||||
• API change: TOOL_INSTALL_DIR.
|
||||
* New 'make strings' target for localization support.
|
||||
* Speed improvements.
|
||||
* Doesn't try to build OSX bundle on GNUstep and vice versa.
|
||||
* API change: Tools/Subproj can have resources.
|
||||
* API change: TOOL_INSTALL_DIR.
|
||||
|
||||
1.44 Changes in version ‘1.5.0’
|
||||
1.41 Changes in version '1.5.0'
|
||||
===============================
|
||||
|
||||
• Add NetBSD Elf support
|
||||
* Add NetBSD Elf support
|
||||
|
||||
1.45 Changes in version ‘1.4.0’
|
||||
1.42 Changes in version '1.4.0'
|
||||
===============================
|
||||
|
||||
• Update Darwin/GNU gcc and Irix targets
|
||||
* Update Darwin/GNU gcc and Irix targets
|
||||
|
||||
1.46 Changes in version ‘1.3.4’
|
||||
1.43 Changes in version '1.3.4'
|
||||
===============================
|
||||
|
||||
This is a first prerelease version for 1.4.
|
||||
|
||||
• Use gnugc-gnu-gnu library combo for garbage collecting version.
|
||||
• Add support for -library-combo in opentool
|
||||
• Change GNUSTEP_PATHPREFIX_LIST to GNUSTEP_PATHLIST
|
||||
• Add verbosity levels. Use make messages=yes for full messages.
|
||||
* Use gnugc-gnu-gnu library combo for garbage collecting version.
|
||||
* Add support for -library-combo in opentool
|
||||
* Change GNUSTEP_PATHPREFIX_LIST to GNUSTEP_PATHLIST
|
||||
* Add verbosity levels. Use make messages=yes for full messages.
|
||||
|
||||
1.47 Changes in version ‘1.3.3’
|
||||
1.44 Changes in version '1.3.3'
|
||||
===============================
|
||||
|
||||
• Recognizes XXX_STANDARD_INSTALL=no to not do installation.
|
||||
• Updated instructions for MingW/MSYS installation.
|
||||
* Recognizes XXX_STANDARD_INSTALL=no to not do installation.
|
||||
* Updated instructions for MingW/MSYS installation.
|
||||
|
||||
1.48 Changes in version ‘1.3.2’
|
||||
1.45 Changes in version '1.3.2'
|
||||
===============================
|
||||
|
||||
• Instructions for building on Windows with MSYS
|
||||
• Resolve library dependencies better on Windows
|
||||
• Fix frameworks in RPMs and DEBs
|
||||
• Continued reorganization.
|
||||
* Instructions for building on Windows with MSYS
|
||||
* Resolve library dependencies better on Windows
|
||||
* Fix frameworks in RPMs and DEBs
|
||||
* Continued reorganization.
|
||||
|
||||
1.49 Changes in version ‘1.3.0’
|
||||
1.46 Changes in version '1.3.0'
|
||||
===============================
|
||||
|
||||
The package has gone through an extensive reorganization to break up
|
||||
|
@ -547,109 +524,109 @@ 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.
|
||||
|
||||
• Force shared=yes for cygwin and mingw
|
||||
• Bundles copy resources from subprojects.
|
||||
• Better resource management. Resources handled accross all project
|
||||
* Force shared=yes for cygwin and mingw
|
||||
* Bundles copy resources from subprojects.
|
||||
* Better resource management. Resources handled accross all project
|
||||
types.
|
||||
• Simplified and fixed user root location between make and base
|
||||
* Simplified and fixed user root location between make and base
|
||||
libraries.
|
||||
• Changed Apps directory to Applications
|
||||
• Fixes for MacOSX, MingW
|
||||
* Changed Apps directory to Applications
|
||||
* Fixes for MacOSX, MingW
|
||||
|
||||
1.50 Changes in version ‘1.2.1’
|
||||
1.47 Changes in version '1.2.1'
|
||||
===============================
|
||||
|
||||
• the source distribution code has been rewritten to be more general
|
||||
* 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.
|
||||
• implemented support for auto-dependencies, which means that any
|
||||
* 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.
|
||||
• implemented INSTALL_AS_USER and INSTALL_AS_GROUP.
|
||||
• implemented a strip=yes option.
|
||||
• various bug fixes and minor improvements.
|
||||
* implemented INSTALL_AS_USER and INSTALL_AS_GROUP.
|
||||
* implemented a strip=yes option.
|
||||
* various bug fixes and minor improvements.
|
||||
|
||||
1.51 Changes in version ‘1.2.0’
|
||||
1.48 Changes in version '1.2.0'
|
||||
===============================
|
||||
|
||||
• The core rules and internals of gnustep-make have been
|
||||
* 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.
|
||||
• The clean rules have been heavily optimized - they no longer use
|
||||
* The clean rules have been heavily optimized - they no longer use
|
||||
recursive sub-make invocations at all and so they are really fast.
|
||||
• Many improvements to java support. Optimized management of nested
|
||||
* Many improvements to java support. Optimized management of nested
|
||||
classes
|
||||
• Better conformance to make conventions.
|
||||
• File specific compilation flags
|
||||
• Fixed darwin support
|
||||
• Support for C++ files.
|
||||
• Made use of library installation dir consistent with other
|
||||
* Better conformance to make conventions.
|
||||
* File specific compilation flags
|
||||
* Fixed darwin support
|
||||
* Support for C++ files.
|
||||
* Made use of library installation dir consistent with other
|
||||
installation.
|
||||
• Much improved Windows path support
|
||||
* Much improved Windows path support
|
||||
|
||||
1.52 Changes in version ‘1.0.1’
|
||||
1.49 Changes in version '1.0.1'
|
||||
===============================
|
||||
|
||||
• Support for Java tools.
|
||||
• Build GUI backend as a bundle (default).
|
||||
• Remove backend part of LIBRARY_COMBO.
|
||||
• Fixes to run on FreeBSD, Solaris.
|
||||
* Support for Java tools.
|
||||
* Build GUI backend as a bundle (default).
|
||||
* Remove backend part of LIBRARY_COMBO.
|
||||
* Fixes to run on FreeBSD, Solaris.
|
||||
|
||||
1.53 Changes in version ‘1.0.0’
|
||||
1.50 Changes in version '1.0.0'
|
||||
===============================
|
||||
|
||||
• Optimizations that in many cases more than double the speed.
|
||||
• Added preliminary darwin support.
|
||||
• rpm packeing improvements.
|
||||
• Better checking for mingw and cygwin
|
||||
* Optimizations that in many cases more than double the speed.
|
||||
* Added preliminary darwin support.
|
||||
* rpm packeing improvements.
|
||||
* Better checking for mingw and cygwin
|
||||
|
||||
1.54 Changes in version ‘0.9.2’
|
||||
1.51 Changes in version '0.9.2'
|
||||
===============================
|
||||
|
||||
• HOWTO and faq files moved from core package to here
|
||||
• Configurable GNUSTEP_LOCAL_ROOT and GNUSTEP_NETWORK_ROOT
|
||||
* HOWTO and faq files moved from core package to here
|
||||
* Configurable GNUSTEP_LOCAL_ROOT and GNUSTEP_NETWORK_ROOT
|
||||
|
||||
1.55 Changes in version ‘0.9.1’
|
||||
1.52 Changes in version '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 ‘Additional’ directory. This greatly
|
||||
installing a make stub in the 'Additional' directory. This greatly
|
||||
simplifies compilation and packaging.
|
||||
|
||||
• Javadoc support added.
|
||||
• debian directory added for dpkg
|
||||
• RPM support rewritten from scratch.
|
||||
* Javadoc support added.
|
||||
* debian directory added for dpkg
|
||||
* RPM support rewritten from scratch.
|
||||
|
||||
1.56 Changes in version ‘0.9.0’
|
||||
1.53 Changes in version '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.
|
||||
|
||||
• Support for automatically generating RPM spec files.
|
||||
• Build suitable files for MacOS bundles
|
||||
• Add option for flattened directory structure.
|
||||
• LaText documentation support.
|
||||
• Added support for Frameworks
|
||||
* Support for automatically generating RPM spec files.
|
||||
* Build suitable files for MacOS bundles
|
||||
* Add option for flattened directory structure.
|
||||
* LaText documentation support.
|
||||
* Added support for Frameworks
|
||||
|
||||
1.57 Noteworthy changes in version ‘0.6.6’
|
||||
1.54 Noteworthy changes in version '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 ‘--without-system-root’. We also recommend
|
||||
using a configure option '--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.
|
||||
|
||||
• Support for Windows compilation (cygwin and mingw) and DLL creation
|
||||
* Support for Windows compilation (cygwin and mingw) and DLL creation
|
||||
and usage.
|
||||
• Java support rewritten and extended.
|
||||
* Java support rewritten and extended.
|
||||
|
||||
|
|
6
README
6
README
|
@ -17,9 +17,9 @@ the user to easily create cross-compiled binaries.
|
|||
|
||||
The file 'NEWS' has this packages feature history.
|
||||
|
||||
The file 'INSTALL' gives instructions for configuring and installing
|
||||
gnustep-make. Also see the 'machines' documentation
|
||||
and various machine specific READMEs in the Documentation directory.
|
||||
The files 'INSTALL' or 'GNUstep-HOWTO' give instructions for
|
||||
installing the packages. Also see the 'machines' documentation and
|
||||
various machine specific READMEs in the Documentation directory.
|
||||
|
||||
Files in the 'Documentation' directory have information on the design
|
||||
of the Makefile system and how to write your own makefiles that work
|
||||
|
|
214
RELEASENOTES
214
RELEASENOTES
|
@ -5,83 +5,45 @@ 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.9.3
|
||||
=================
|
||||
|
||||
Addition of the 'asan=yes' option when GNUstep-make is invoked and
|
||||
support for the GNUSTEP_WITH_ASAN=1 environment setting to turn on
|
||||
address and leak sanitisation.
|
||||
|
||||
Various minor fixes
|
||||
|
||||
1.2 Version 2.9.2
|
||||
=================
|
||||
|
||||
Changes to work around the removal of the javah tool after java version
|
||||
8.
|
||||
|
||||
Changes to have the test framework require/use bash for consistent
|
||||
behavior.
|
||||
|
||||
Changes to fix PDF generation with texinfo/7.1 and later.
|
||||
|
||||
Changes to implement .dist-ignore support for the git-dist: make
|
||||
target.
|
||||
|
||||
1.3 Version 2.9.1
|
||||
=================
|
||||
|
||||
Test framework has workaround for clang issues when building with MSCV.
|
||||
|
||||
A few minor test framework issues inroduced by the parallelisation
|
||||
rewrite are fixed.
|
||||
|
||||
A bug in the PASS_MATCH macro is fixed.
|
||||
|
||||
The test framework makefiles now automatically add the framework
|
||||
header directory to the compiler flags, so testcases can be more
|
||||
reliably built by invoking make directly (rather than via the
|
||||
gnustep-tests script).
|
||||
|
||||
1.4 Version 2.9.0
|
||||
1.1 Version 2.9.0
|
||||
=================
|
||||
|
||||
We have improved support for newer GCC versions (GCC9 and newer).
|
||||
|
||||
Building with ARC has been fixed.
|
||||
|
||||
We've added support for storyboard files in ‘GNUmakefile’s.
|
||||
We've added support for storyboard files in 'GNUmakefile's.
|
||||
|
||||
On Windows, we now support building with MSVC's Clang toolchain.
|
||||
|
||||
Subprojects' object files are now linked individually in their parent
|
||||
project, rather than being first linked into ‘subproject.o’.
|
||||
project, rather than being first linked into 'subproject.o'.
|
||||
|
||||
We have also changed the way ‘OBJCXX’ flags are handled, and
|
||||
We have also changed the way 'OBJCXX' flags are handled, and
|
||||
increased the minimum version of autoconf used to 2.65. (The
|
||||
regenerated ‘configure’ file will not handle runstatedir anymore.)
|
||||
regenerated 'configure' file will not handle runstatedir anymore.)
|
||||
|
||||
1.5 Version 2.8.0
|
||||
1.2 Version 2.8.0
|
||||
=================
|
||||
|
||||
We now include 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 ‘--with-runtime-abi’
|
||||
of the runtime ABI is now possible using the '--with-runtime-abi'
|
||||
configure option.
|
||||
|
||||
There's now full support for the gnustep-2.0 Objective-C ABI.
|
||||
|
||||
This release includes support for creating a Git tag and creating a
|
||||
tarball from a git tag using the ‘git-tag’ and ‘git-dist’ targets.
|
||||
tarball from a git tag using the 'git-tag' and 'git-dist' targets.
|
||||
|
||||
This release includes support for creating a Mercurial tag and
|
||||
creating a tarball from a hg tag using the ‘hg-tag’ and ‘hg-dist’
|
||||
creating a tarball from a hg tag using the 'hg-tag' and 'hg-dist'
|
||||
targets.
|
||||
|
||||
We have dropped legacy Rhapsody and FreeBSD-out support.
|
||||
|
||||
1.6 Version 2.7.0
|
||||
1.3 Version 2.7.0
|
||||
=================
|
||||
|
||||
When building non-flattened, the subdirectory name for
|
||||
|
@ -101,7 +63,7 @@ architecture specific subdirectory.
|
|||
|
||||
Various bugfixes and minor improvements.
|
||||
|
||||
1.7 Version 2.6.8
|
||||
1.4 Version 2.6.8
|
||||
=================
|
||||
|
||||
Configure option '-with-library-combo=ng-gnu-gnu' to use the 'Next
|
||||
|
@ -129,7 +91,7 @@ you update any old gnustep-make version one makefiles.
|
|||
|
||||
Garbage collection support to be removed at the next release.
|
||||
|
||||
1.8 Version 2.6.7
|
||||
1.5 Version 2.6.7
|
||||
=================
|
||||
|
||||
Improved package building support
|
||||
|
@ -140,15 +102,15 @@ Improved package building support
|
|||
|
||||
Various minor bugfixes, documentation spelling corrections etc.
|
||||
|
||||
1.9 Version 2.6.6
|
||||
1.6 Version 2.6.6
|
||||
=================
|
||||
|
||||
Debian packagge generation support added.
|
||||
|
||||
Bug fixes
|
||||
|
||||
1.10 Version 2.6.5
|
||||
==================
|
||||
1.7 Version 2.6.5
|
||||
=================
|
||||
|
||||
Bugfix for non-fragile ABI test
|
||||
|
||||
|
@ -158,35 +120,35 @@ Bugfix for non-fragile ABI test
|
|||
|
||||
Added minimal test support for .c and .cc files.
|
||||
|
||||
1.11 Version 2.6.4
|
||||
==================
|
||||
1.8 Version 2.6.4
|
||||
=================
|
||||
|
||||
Test framework enhancement (extended equality tests)
|
||||
|
||||
Android build target
|
||||
|
||||
1.12 Version 2.6.3
|
||||
==================
|
||||
1.9 Version 2.6.3
|
||||
=================
|
||||
|
||||
Bug fixes
|
||||
|
||||
1.13 Version 2.6.2
|
||||
1.10 Version 2.6.2
|
||||
==================
|
||||
|
||||
‘Added standalone filesystem layout for putting everything in’
|
||||
'Added standalone filesystem layout for putting everything in'
|
||||
one directory for easy deployment of relocatable
|
||||
|
||||
‘Other bug fixes’
|
||||
'Other bug fixes'
|
||||
|
||||
1.14 Version 2.6.1
|
||||
1.11 Version 2.6.1
|
||||
==================
|
||||
|
||||
Bug fixes
|
||||
|
||||
1.15 Version 2.6.0
|
||||
1.12 Version 2.6.0
|
||||
==================
|
||||
|
||||
‘The default filesystem layout is now the 'fhs' layout’
|
||||
'The default filesystem layout is now the 'fhs' layout'
|
||||
Before version 2.6.0, the default filesystem layout was the
|
||||
'gnustep' layout. Starting with 2.6.0, the default filesystem
|
||||
layout has changed and is now the 'fhs' layout. To get the old
|
||||
|
@ -208,7 +170,7 @@ Bug fixes
|
|||
|
||||
. /usr/local/share/GNUstep/Makefiles/GNUstep.sh
|
||||
|
||||
‘The default location of the configuration file changed’
|
||||
'The default location of the configuration file changed'
|
||||
Before version 2.6.0, the configuration file was always by default
|
||||
/etc/GNUstep/GNUstep.conf no matter what filesystem layout and
|
||||
prefix were used. Starting with version 2.6.0, that is the default
|
||||
|
@ -232,18 +194,18 @@ Bug fixes
|
|||
file on Darwin has not changed and is still
|
||||
/Library/GNUstep/GNUstep.conf regardless of the prefix selected.
|
||||
|
||||
‘Removed the --with-system-root, --with-local-root and --with-network-root options’
|
||||
'Removed the --with-system-root, --with-local-root and --with-network-root options'
|
||||
These configure options were obsolete and are ignored by all
|
||||
releases in the past 4 years and have now finally been removed.
|
||||
|
||||
‘Removed obsolete variables’
|
||||
'Removed obsolete variables'
|
||||
Some very old variables that were deprecated 4 years ago have now
|
||||
been removed. This includes xxx_RESOURCE_FILES_INSTALL_DIR in
|
||||
resource-set.make (you should use xxx_INSTALL_DIR instead) and
|
||||
GNUSTEP_GSWAPPS in gswapp.make (you should use GNUSTEP_WEB_APPS
|
||||
instead).
|
||||
|
||||
‘New Test Framework’
|
||||
'New Test Framework'
|
||||
GNUstep-make now includes a test framework that can be used to
|
||||
easily write testcases for Objective-C software. The new releases
|
||||
of GNUstep-base and GNUstep-gui include regression test suites that
|
||||
|
@ -251,23 +213,23 @@ Bug fixes
|
|||
TestFramework directory for more information on how it works or how
|
||||
to use it.
|
||||
|
||||
‘objc.make is deprecated’
|
||||
'objc.make is deprecated'
|
||||
The file objc.make, which is used to compile Objective-C
|
||||
command-line tools without a Foundation library such as GNUstep
|
||||
base, is now deprecated. Please use tool.make instead.
|
||||
|
||||
‘--enable-absolute-install-paths is now the default on Darwin’
|
||||
'--enable-absolute-install-paths is now the default on Darwin'
|
||||
This makes it easier to use GNUstep with the gnu-gnu-gnu library
|
||||
combo on Apple Mac OS X.
|
||||
|
||||
1.16 Version 2.4.0
|
||||
1.13 Version 2.4.0
|
||||
==================
|
||||
|
||||
‘You can enable the use of the non-fragile ivar ABI’
|
||||
'You can enable the use of the non-fragile ivar ABI'
|
||||
The -enable-objc-nonfragile-abi flag can be used to enable the
|
||||
non-fragile ivar ABI for compilers (such as clang) that support it.
|
||||
|
||||
‘-Wall is now used by default unless 'make warn=no' is specified’
|
||||
'-Wall is now used by default unless 'make warn=no' is specified'
|
||||
Before version 2.4.0, 'make debug=yes' would not only build object
|
||||
files particularly suited for debugging, but would also add the
|
||||
-Wall flag on the compiler command line when compiling
|
||||
|
@ -284,7 +246,7 @@ Bug fixes
|
|||
default with the -deprecation flag. You can turn it off by
|
||||
compiling with 'make warn=no'.
|
||||
|
||||
‘PACKAGE_NEEDS_CONFIGURE and JAVADOC_BUILD_ALWAYS now support 'yes' and 'no'’
|
||||
'PACKAGE_NEEDS_CONFIGURE and JAVADOC_BUILD_ALWAYS now support 'yes' and 'no''
|
||||
gnustep-make boolean variables traditionally use the values 'yes'
|
||||
and 'no', with the unfortunate exception of PACKAGE_NEEDS_CONFIGURE
|
||||
and JAVADOC_BUILD_ALWAYS which used to only recognize the values
|
||||
|
@ -292,7 +254,7 @@ Bug fixes
|
|||
gnustep-make 2.4.0 these two variables recognize the values 'yes'
|
||||
and 'no' too.
|
||||
|
||||
‘Versions of GNU make older then 3.79.1 (June 2000) are no longer supported’
|
||||
'Versions of GNU make older then 3.79.1 (June 2000) are no longer supported'
|
||||
The .NOTPARALLEL pseudo-target is only available in GNU make 3.79
|
||||
and is essential for parallel builds to work. Starting with
|
||||
version 2.4.0, gnustep-make recommends using GNU make 3.79.1 or
|
||||
|
@ -302,19 +264,19 @@ Bug fixes
|
|||
3.79.1 was released about 10 years ago, this should not be a
|
||||
particular problem.
|
||||
|
||||
‘new internalmessages=yes option’
|
||||
'new internalmessages=yes option'
|
||||
Starting with version 2.4.0, gnustep-make recognized the new
|
||||
internalmessages=yes option (separate from messages=yes) which
|
||||
prints all the recursive make invocations that are used. This is
|
||||
mostly useful to understand how gnustep-make internally works and
|
||||
is not meant for end-users.
|
||||
|
||||
‘javadoc is run in quiet mode’
|
||||
'javadoc is run in quiet mode'
|
||||
Starting with version 2.4.0, javadoc is by default executed with
|
||||
the -quiet option (unless messages=yes is specified), and a
|
||||
"Generating javadoc documentation..." is printed instead.
|
||||
|
||||
‘new API to build subdirectories’
|
||||
'new API to build subdirectories'
|
||||
Before version 2.4.0, aggregate.make was used to step into
|
||||
subdirectories and build them. It did not support parallel
|
||||
building. Starting with version 2.4.0, two new makefile fragments
|
||||
|
@ -343,7 +305,7 @@ Bug fixes
|
|||
for the next couple of years it might be a good solution while you
|
||||
wait for your users to upgrade their gnustep-make installations.
|
||||
|
||||
‘each instance stores object files in its own subdirectory’
|
||||
'each instance stores object files in its own subdirectory'
|
||||
Before version 2.4.0, there was a single object directory where all
|
||||
object files where stored. In the most common case, this directory
|
||||
was simply ./obj, so if you compiled file source.m, you'd end up
|
||||
|
@ -370,7 +332,7 @@ Bug fixes
|
|||
their own private gnustep-make forks or advanced extensions might
|
||||
be affected.
|
||||
|
||||
‘the order in which instances are built is no longer guaranteed’
|
||||
'the order in which instances are built is no longer guaranteed'
|
||||
If you build more than one tool in the same GNUmakefile by listing
|
||||
them all in TOOL_NAME as in "TOOL_NAME = ToolA ToolB', you need to
|
||||
be aware that the way the instances are built changed in version
|
||||
|
@ -412,7 +374,7 @@ Bug fixes
|
|||
built before the tool (or tools). It is the order in which the
|
||||
libraries (or tools) are built that is no longer guaranteed.
|
||||
|
||||
‘support for having source files in subdirectories’
|
||||
'support for having source files in subdirectories'
|
||||
Starting with version 2.4.0, it is possible to put source files in
|
||||
subdirectories by specifiying them as in xxx_OBJC_FILES =
|
||||
Source/Beauty.m. This syntax does not work on versions before
|
||||
|
@ -422,7 +384,7 @@ Bug fixes
|
|||
You can now spread your source files in multiple subdirectories
|
||||
without using subprojects.
|
||||
|
||||
‘support for having header files in subdirectories’
|
||||
'support for having header files in subdirectories'
|
||||
Starting with version 2.4.0, it is possible to put header files in
|
||||
subdirectories by specifiying them as in xxx_HEADER_FILES =
|
||||
Beauty/Beauty.h. This syntax does not work on versions before
|
||||
|
@ -435,7 +397,7 @@ Bug fixes
|
|||
the same result in versions before 2.4.0 you would have had to
|
||||
manually create the header installation subdirectories.
|
||||
|
||||
‘support for HEADER_FILES_DIR in framework subproject’
|
||||
'support for HEADER_FILES_DIR in framework subproject'
|
||||
Before version 2.4.0, specifying xxx_HEADER_FILES_DIR in a
|
||||
framework subproject would have no effect. Starting with version
|
||||
2.4.0, the variable is now recognized and can be used to have the
|
||||
|
@ -443,7 +405,7 @@ Bug fixes
|
|||
framework subprojects if you want to support older versions of
|
||||
gnustep-make.
|
||||
|
||||
‘info files renamed adding a gnustep- prefix’
|
||||
'info files renamed adding a gnustep- prefix'
|
||||
To prevent conflicts with other documentation, all the gnustep-make
|
||||
info files have been renamed adding a gnustep- prefix. For
|
||||
example, to access the GNUstep faq using info, you now need to type
|
||||
|
@ -452,13 +414,13 @@ Bug fixes
|
|||
and at the moment is not automatically installed unless you
|
||||
explicitly go in that subdirectory and install it.
|
||||
|
||||
‘better cleaning for texinfo documentation’
|
||||
'better cleaning for texinfo documentation'
|
||||
When you build html documentation from texinfo files, the local
|
||||
directory containing the html files was not being removed when
|
||||
doing a 'make clean'. Starting with version 2.4.0, 'make clean'
|
||||
removes the directory too.
|
||||
|
||||
‘debug=no made the default’
|
||||
'debug=no made the default'
|
||||
gnustep-make now builds using debug=no by default. As a
|
||||
consequence, on most platforms C/Objective-C/C++ code is now built
|
||||
by default using -g -O2 instead of just -g. If you do not want the
|
||||
|
@ -470,7 +432,7 @@ Bug fixes
|
|||
option to have them stripped out from all object files when they
|
||||
are installed.
|
||||
|
||||
‘batch-compilation of Java files’
|
||||
'batch-compilation of Java files'
|
||||
gnustep-make used to compile Java files one by one. In most Java
|
||||
compilers this is very suboptimal. Starting from release 2.4.0,
|
||||
gnustep-make will compile all Java files in a Java project with a
|
||||
|
@ -485,7 +447,7 @@ Bug fixes
|
|||
then batch compilation is automatically disabled and all files are
|
||||
compiled separately.
|
||||
|
||||
‘library resources always installed in directory without 'lib'’
|
||||
'library resources always installed in directory without 'lib''
|
||||
This change only applies to libraries where LIBRARY_NAME starts
|
||||
with 'lib' and that install resources. Due to a bug, versions of
|
||||
gnustep-make before 2.4.0 would in this case install the resources
|
||||
|
@ -506,19 +468,19 @@ Bug fixes
|
|||
on all gnustep-make versions that support library resources (ie,
|
||||
gnustep-make >= 2.0.x).
|
||||
|
||||
1.17 Version 2.2.0
|
||||
1.14 Version 2.2.0
|
||||
==================
|
||||
|
||||
‘libobjc library’
|
||||
'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'
|
||||
Parallel building is supported now. You can build using the normal
|
||||
make mechanism, e.g. 'make -j 2'.
|
||||
|
||||
‘install -p’
|
||||
'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
|
||||
|
@ -526,15 +488,15 @@ Bug fixes
|
|||
gnustep-make configure option -disable-install-p to disable this
|
||||
behaviour and go back to always using a standard 'install'.
|
||||
|
||||
‘uninstallation of resources’
|
||||
'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.18 Version 2.0.7
|
||||
1.15 Version 2.0.7
|
||||
==================
|
||||
|
||||
‘default installation’
|
||||
'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
|
||||
|
@ -542,19 +504,19 @@ Bug fixes
|
|||
GNUstep.conf file, and edit it to customize the default
|
||||
installation domain (Thanks to Richard for the idea).
|
||||
|
||||
‘--no-print-directory’
|
||||
'--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’
|
||||
'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’
|
||||
'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
|
||||
|
@ -567,15 +529,15 @@ Bug fixes
|
|||
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 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.19 Version 2.0.6
|
||||
1.16 Version 2.0.6
|
||||
==================
|
||||
|
||||
‘GNUSTEP_ABSOLUTE_INSTALL_PATHS’
|
||||
'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
|
||||
|
@ -583,14 +545,14 @@ Bug fixes
|
|||
be placed in non-standard locations, but may not be moved from
|
||||
their designated location.
|
||||
|
||||
‘default location of GNUstep.conf on BSD systems’
|
||||
'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.
|
||||
|
||||
‘make.info renamed to gnustep-make.info’
|
||||
'make.info renamed to gnustep-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',
|
||||
|
@ -599,10 +561,10 @@ Bug fixes
|
|||
the moment is not automatically installed unless you explicitly go
|
||||
in that subdirectory and install it.
|
||||
|
||||
1.20 Version 2.0.5
|
||||
1.17 Version 2.0.5
|
||||
==================
|
||||
|
||||
‘default filesystem layout on apple-apple-apple’
|
||||
'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
|
||||
|
@ -614,7 +576,7 @@ Bug fixes
|
|||
layout to compile and install Apple native frameworks and
|
||||
applications.
|
||||
|
||||
‘~/GNUstep/GNUstep.sh’
|
||||
'~/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
|
||||
|
@ -623,7 +585,7 @@ Bug fixes
|
|||
shell init script before or after sourcing GNUstep.sh. The same
|
||||
applies to ~/GNUstep/GNUstep.csh.
|
||||
|
||||
‘xxx_NEEDS_GUI’
|
||||
'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
|
||||
|
@ -635,7 +597,7 @@ Bug fixes
|
|||
xxx_NEEDS_GUI for all bundles, frameworks and libraries to clarify
|
||||
how the linking should be done.
|
||||
|
||||
‘NEEDS_GUI’
|
||||
'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,
|
||||
|
@ -643,7 +605,7 @@ Bug fixes
|
|||
overridden for specific project targets by using the xxx_NEEDS_GUI
|
||||
variable (see above).
|
||||
|
||||
1.21 Version 2.0.0
|
||||
1.18 Version 2.0.0
|
||||
==================
|
||||
|
||||
Version 2.0.0 is a new major release of gnustep-make which includes a
|
||||
|
@ -654,7 +616,7 @@ work with gnustep-make version 1 or 2 when used in the same conditions
|
|||
updating to work with the new filesystem layout configurations that are
|
||||
allowed by gnustep-make version 2.
|
||||
|
||||
‘GNUSTEP_INSTALLATION_DIR’
|
||||
'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
|
||||
|
@ -678,10 +640,10 @@ allowed by gnustep-make version 2.
|
|||
/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
|
||||
GNUSTEP_LIBRARIES for you. Please check the file 'filesystem' for
|
||||
more information on the available variables.
|
||||
|
||||
‘GNUSTEP_xxx_ROOT’
|
||||
'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.
|
||||
|
@ -694,10 +656,10 @@ allowed by gnustep-make version 2.
|
|||
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’
|
||||
with GNUSTEP_SYSTEM_LIBRARIES. Please check the file 'filesystem'
|
||||
for more information on the available variables.
|
||||
|
||||
‘gnustep-make ./configure and install options’
|
||||
'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
|
||||
|
@ -710,34 +672,34 @@ allowed by gnustep-make version 2.
|
|||
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’
|
||||
'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’
|
||||
'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’
|
||||
'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’
|
||||
'Framework default version'
|
||||
The default framework resource version changed from 'A' to
|
||||
INTERFACE_VERSION (which is set, by default, to '0').
|
||||
|
||||
‘Microsoft Windows updates’
|
||||
'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 location changed'
|
||||
Java tools are now installed into GNUSTEP_JAVA rather than in a
|
||||
subdirectory of GNUSTEP_TOOLS.
|
||||
|
||||
‘resource-set.make install directory’
|
||||
'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:
|
||||
|
@ -746,26 +708,26 @@ allowed by gnustep-make version 2.
|
|||
|
||||
xxx_RESOURCE_FILES_INSTALL_DIR = /Library/Libraries/Resources/xxx
|
||||
|
||||
‘INSTALL_ROOT_DIR’
|
||||
'INSTALL_ROOT_DIR'
|
||||
All instances of INSTALL_ROOT_DIR in user's makefiles should be
|
||||
replaced with DESTDIR.
|
||||
|
||||
‘GNUSTEP_FLATTENED’
|
||||
'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’
|
||||
'./shared_obj'
|
||||
The ./shared_obj, ./shared_debug_obj directories and similar are no
|
||||
longer created. You can use ./obj instead.
|
||||
|
||||
‘library names’
|
||||
'library names'
|
||||
All libraries now have the same name.
|
||||
|
||||
‘application names’
|
||||
'application names'
|
||||
All applications now have the same name.
|
||||
|
||||
Copyright © 2007 Free Software Foundation
|
||||
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
|
||||
|
|
|
@ -8,8 +8,6 @@ include $(GNUSTEP_MAKEFILES)/common.make
|
|||
|
||||
TEST_TOOL_NAME = @TESTNAMES@
|
||||
|
||||
ADDITIONAL_CPPFLAGS += -I$(GNUSTEP_MAKEFILES)/TestFramework
|
||||
|
||||
ifeq ($(gcov),yes)
|
||||
ADDITIONAL_OBJCFLAGS += -ftest-coverage -fprofile-arcs
|
||||
ADDITIONAL_OBJCCFLAGS += -ftest-coverage -fprofile-arcs
|
||||
|
@ -26,6 +24,5 @@ include $(GNUSTEP_MAKEFILES)/test-tool.make
|
|||
|
||||
after-clean::
|
||||
rm -f core core.* *.core \
|
||||
test_*.out test_*.err \
|
||||
tests.log tests.sum oldtests.log oldtests.sum
|
||||
|
||||
|
|
|
@ -51,22 +51,14 @@
|
|||
PASS(obj0 != nil, "%s has working alloc", prefix); \
|
||||
PASS([obj0 isKindOfClass: theClass], \
|
||||
"%s alloc gives the correct class", prefix); \
|
||||
DESTROY(obj0); \
|
||||
\
|
||||
obj0 = [[theClass alloc] init]; \
|
||||
PASS([obj0 isKindOfClass: theClass], "%s has working init", prefix); \
|
||||
DESTROY(obj0); \
|
||||
\
|
||||
obj0 = [theClass new]; \
|
||||
PASS([obj0 isKindOfClass: theClass], "%s has working new", prefix); \
|
||||
DESTROY(obj0); \
|
||||
\
|
||||
obj1 = [theClass allocWithZone: testZone]; \
|
||||
PASS([obj1 isKindOfClass: theClass],"%s has working allocWithZone",prefix); \
|
||||
PASS([obj1 isKindOfClass: theClass], \
|
||||
"%s allocWithZone: gives the correct class", prefix); \
|
||||
DESTROY(obj1); \
|
||||
NSRecycleZone(testZone); \
|
||||
}
|
||||
static void test_alloc(NSString *CN) __attribute__ ((unused));
|
||||
static void test_alloc(NSString *CN)
|
||||
|
@ -94,18 +86,16 @@ static void test_alloc(NSString *CN)
|
|||
PASS_EXCEPTION([obj0 description], NSInvalidArgumentException, \
|
||||
"raises NSInvalidArgumentException in description") \
|
||||
\
|
||||
PASS_EXCEPTION(if((obj0=[obj0 init])==nil)[NSException raise: NSInvalidArgumentException format: @""], \
|
||||
PASS_EXCEPTION(if([obj0 init]==nil)[NSException raise: NSInvalidArgumentException format: @""], \
|
||||
NSInvalidArgumentException, \
|
||||
"returns nil or raises NSInvalidArgumentException in init") \
|
||||
\
|
||||
PASS_EXCEPTION(if((obj0=[theClass new])==nil)[NSException raise: NSInvalidArgumentException format: @""], \
|
||||
PASS_EXCEPTION(if([theClass new]==nil)[NSException raise: NSInvalidArgumentException format: @""], \
|
||||
NSInvalidArgumentException, \
|
||||
"returns nil or raises NSInvalidArgumentException in new") \
|
||||
\
|
||||
obj1 = [theClass allocWithZone: testZone]; \
|
||||
PASS([obj1 isKindOfClass: theClass],"%s has working allocWithZone",prefix); \
|
||||
DESTROY(obj1); \
|
||||
NSRecycleZone(testZone); \
|
||||
}
|
||||
static void test_alloc_only(NSString *CN) __attribute__ ((unused));
|
||||
static void test_alloc_only(NSString *CN)
|
||||
|
@ -221,7 +211,6 @@ static void test_NSObject(NSString *CN, NSArray *OJS)
|
|||
decoded = [NSUnarchiver unarchiveObjectWithData: data]; \
|
||||
PASS(decoded != nil, "can be decoded"); \
|
||||
PASS_EQUAL(decoded, obj, "decoded object equals the original"); \
|
||||
DESTROY(archiver); \
|
||||
END_SET(buf) \
|
||||
} \
|
||||
}
|
||||
|
@ -358,7 +347,6 @@ static void test_keyed_NSCoding(NSArray *OJS)
|
|||
"%s result of copy is not immutable", prefix); \
|
||||
} \
|
||||
\
|
||||
DESTROY(theCopy); \
|
||||
theCopy = [theObj copyWithZone: testZone]; \
|
||||
PASS(theCopy != nil, "%s understands -copyWithZone", prefix); \
|
||||
PASS([theCopy isKindOfClass: iClass], \
|
||||
|
@ -381,7 +369,6 @@ static void test_keyed_NSCoding(NSArray *OJS)
|
|||
if (theClass != iClass) \
|
||||
PASS(![theCopy isKindOfClass: theClass], \
|
||||
"%s result of copyWithZone: is not immutable", prefix); \
|
||||
DESTROY(theCopy); \
|
||||
END_SET(buf) \
|
||||
} \
|
||||
}
|
||||
|
@ -460,7 +447,6 @@ static void test_NSCopying(
|
|||
PASS(theCopy != theObj, \
|
||||
"%s not retained by mutable copy in the same zone", \
|
||||
[mClassName UTF8String]); \
|
||||
DESTROY(theCopy); \
|
||||
\
|
||||
theCopy = [theObj mutableCopyWithZone: testZone]; \
|
||||
PASS(theCopy != nil, \
|
||||
|
@ -468,7 +454,6 @@ static void test_NSCopying(
|
|||
PASS(theCopy != theObj, \
|
||||
"%s not retained by mutable copy in other zone", \
|
||||
[mClassName UTF8String]); \
|
||||
DESTROY(theCopy); \
|
||||
END_SET(buf) \
|
||||
} \
|
||||
}
|
||||
|
|
|
@ -288,11 +288,6 @@ that by setting the MAKEFLAGS environment variable to '-j N' where N is the
|
|||
number of simultaneous builds you want to be permitted (or you can simply
|
||||
use 'gnustep-tests --sequential' to force building of one test at a time).
|
||||
|
||||
Running of the tests is, by default, done sequentially in alphabetical order,
|
||||
but this may be overridden to change the order of sequential tests and to run
|
||||
tests concurrently. The mechanism for this is to set values in the TestInfo
|
||||
file.
|
||||
|
||||
For total control, the framework checks to see if a 'GNUmakefile.tests' file
|
||||
exists in the directory, and if it does it uses that file as a template to
|
||||
create the GNUmakefile rather than using its own make file.
|
||||
|
|
|
@ -2,15 +2,3 @@
|
|||
# regression testing framework should attempt to find and run testcases.
|
||||
# This is sourced by the shell script running the tests and may be used
|
||||
# to set up the environment variables for the test etc.
|
||||
# Special variable declarations are used by the regression testing:
|
||||
# PARALLEL may be used to specify a space separated list of tests to be
|
||||
# executed concurrently.
|
||||
# SEQUENCE may be used to specify a space separated list of tests to be
|
||||
# executed sequentially.
|
||||
# The SEQUENCE tests are executed before the PARALLEL tests.
|
||||
# Any occurrence of an asterisk in either variable is expanded to a space
|
||||
# delimited list of all the available tests in the directory.
|
||||
# If neither variable is specified the system assumes SEQUENCE="*" so that
|
||||
# all available tests are executed sequentially.
|
||||
# Test names may occur more than once, in which case those tests will be
|
||||
# executed more than once.
|
||||
|
|
|
@ -25,22 +25,13 @@
|
|||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#if defined(__OBJC__) && defined(__clang__) && defined(_MSC_VER)
|
||||
/* Work around Clang bug on Windows MSVC when tests contain no
|
||||
* Objective-C constructs: https://bugs.llvm.org/show_bug.cgi?id=49681
|
||||
*/
|
||||
id __work_around_clang_bug = @"__unused__";
|
||||
#endif
|
||||
|
||||
/* strncpy is deprecated on Windows MSVC. Use strncpy_s instead.
|
||||
*/
|
||||
#if defined(_MSC_VER)
|
||||
#define STRNCPY(dest, size_dest, src, size_src) strncpy_s(dest, size_dest, src, size_src);
|
||||
#else
|
||||
#define STRNCPY(dest, size_dest, src, size_src) strncpy(dest, src, size_dest);
|
||||
#endif
|
||||
#import <Foundation/NSAutoreleasePool.h>
|
||||
#import <Foundation/NSCalendarDate.h>
|
||||
#import <Foundation/NSException.h>
|
||||
#import <Foundation/NSObjCRuntime.h>
|
||||
#import <Foundation/NSObject.h>
|
||||
#import <Foundation/NSRegularExpression.h>
|
||||
#import <Foundation/NSString.h>
|
||||
|
||||
/* A flag indicating that the testsuite is currently processing tests
|
||||
* which are actually not expected to pass, but where we hope someone
|
||||
|
@ -91,9 +82,7 @@ static inline void testIndent(void)
|
|||
|
||||
/* A variable set whenever a test macro is executed. This contains
|
||||
* the exception which terminated the test macro, or nil if no exception
|
||||
* was raised. This is destroyed at the end of a set (to avoid leaking)
|
||||
* but if you run tests outside sets you should explicitly destroy it
|
||||
* when finished.
|
||||
* was raised.
|
||||
*/
|
||||
static NSException *testRaised __attribute__((unused)) = nil;
|
||||
|
||||
|
@ -152,12 +141,10 @@ static void pass(int passed, const char *format, ...)
|
|||
|
||||
if (testTimestamps)
|
||||
{
|
||||
NSDateFormatter *f = [[NSDateFormatter alloc] init];
|
||||
[f setLocale: [NSLocale localeWithLocaleIdentifier: @"en_US_POSIX"]];
|
||||
[f setDateFormat: @"(yyyy-MM-dd HH:mm:ss.SSS z) "];
|
||||
[f setTimeZone: [NSTimeZone systemTimeZone]];
|
||||
ts = [[f stringFromDate: [NSDate date]] UTF8String];
|
||||
[f release];
|
||||
NSCalendarDate *d = [NSCalendarDate date];
|
||||
|
||||
[d setCalendarFormat: @"(%Y-%m-%d %H:%M:%S.%F %z) "];
|
||||
ts = [[d description] cString];
|
||||
}
|
||||
if (passed)
|
||||
{
|
||||
|
@ -338,16 +325,19 @@ static void testStart()
|
|||
_pat = (id)(testExpect__);\
|
||||
_exp = [[[NSRegularExpression alloc] initWithPattern: _pat \
|
||||
options: 0 error: 0] autorelease];\
|
||||
_cond = 0; \
|
||||
if (nil != _dsc && nil != _exp) \
|
||||
{ \
|
||||
NSRange r = NSMakeRange(0, [_dsc length]);\
|
||||
r = [_exp rangeOfFirstMatchInString: _dsc options: 0 range: r];\
|
||||
if (r.length > 0)\
|
||||
{ \
|
||||
_cond = 1; \
|
||||
_cond = YES; \
|
||||
} \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
_cond = NO; \
|
||||
} \
|
||||
pass(_cond, "%s:%d ... " testFormat__, __FILE__, \
|
||||
__LINE__, ## __VA_ARGS__); \
|
||||
if (0 == _cond) \
|
||||
|
@ -476,9 +466,8 @@ static void testStart()
|
|||
BOOL _save_hopeful = testHopeful; \
|
||||
unsigned _save_indentation = testIndentation; \
|
||||
int _save_line = __LINE__; \
|
||||
size_t _save_set_size = strlen(setName) + 1; \
|
||||
char *_save_set = (char*)malloc(_save_set_size); \
|
||||
STRNCPY(_save_set, _save_set_size, setName, _save_set_size); \
|
||||
char *_save_set = (char*)malloc(strlen(setName) + 1); \
|
||||
strncpy(_save_set, setName, strlen(setName) + 1); \
|
||||
fprintf(stderr, "Start set: "); \
|
||||
testIndent(); \
|
||||
fprintf(stderr, "%s:%d ... %s\n", __FILE__, __LINE__, _save_set); \
|
||||
|
@ -554,7 +543,6 @@ static void testStart()
|
|||
fprintf(stderr, "%s:%d ... %s\n", __FILE__, __LINE__, _save_set); \
|
||||
free(_save_set); \
|
||||
testHopeful = _save_hopeful; \
|
||||
DESTROY(testRaised); \
|
||||
}
|
||||
|
||||
/* The NEED macro takes a test macro as an argument and breaks out of a set
|
||||
|
@ -665,7 +653,5 @@ if (__value != __object) \
|
|||
#define RECREATE_AUTORELEASE_POOL(X) \
|
||||
if (X == nil) \
|
||||
(X) = [NSAutoreleasePool new]
|
||||
#define ENTER_POOL @autoreleasepool{
|
||||
#define LEAVE_POOL }
|
||||
#endif
|
||||
|
||||
|
|
|
@ -29,13 +29,6 @@
|
|||
# oldtests.log and oldtests.sum, available for comparison.
|
||||
# The exit value of the script is 0 if there are no failures, 1 otherwise.
|
||||
|
||||
if test "@MISSINGBASH@" = "YES"; then
|
||||
echo "gnustep-make was unable to find bash at configure time."
|
||||
echo "The test framework cannot run without bash installed."
|
||||
echo "Please install bash and reconfigure/reinstall gnustep-make."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if test -z "$GNUSTEP_MAKEFILES"; then
|
||||
GNUSTEP_MAKEFILES=`gnustep-config --variable=GNUSTEP_MAKEFILES 2>/dev/null`
|
||||
if test -z "$GNUSTEP_MAKEFILES"; then
|
||||
|
@ -54,45 +47,19 @@ export GSTESTTOP
|
|||
GSTESTDIR=`pwd`
|
||||
export GSTESTDIR
|
||||
|
||||
if test x"$GSTESTMODE" = x
|
||||
then
|
||||
GSTESTMODE=normal
|
||||
fi
|
||||
if test x"$GSTESTTIMEOUT" = x
|
||||
then
|
||||
GSTESTTIMEOUT="300"
|
||||
fi
|
||||
if test x"$GSMAKEOPTIONS" = x
|
||||
then
|
||||
GSMAKEOPTIONS="debug=yes"
|
||||
fi
|
||||
GSVERBOSECFLAG=
|
||||
GSTESTMODE=normal
|
||||
|
||||
# Argument checking
|
||||
while test $# != 0
|
||||
do
|
||||
gs_option=
|
||||
case $1 in
|
||||
--asan)
|
||||
GNUSTEP_WITH_ASAN=1
|
||||
export GNUSTEP_WITH_ASAN
|
||||
;;
|
||||
--clean)
|
||||
GSTESTMODE=clean
|
||||
;;
|
||||
--timeout)
|
||||
GSTESTTIMEOUT=$2
|
||||
shift
|
||||
;;
|
||||
--debug)
|
||||
GSTESTDBG="$GSTESTDIR/gdb.cmds"
|
||||
;;
|
||||
--make-debug)
|
||||
GSMAKEOPTIONS+=" --debug"
|
||||
;;
|
||||
--make-no-silent)
|
||||
GSMAKEOPTIONS+=" --no-silent"
|
||||
;;
|
||||
--developer)
|
||||
GSTESTDEV=yes
|
||||
;;
|
||||
|
@ -115,8 +82,6 @@ do
|
|||
;;
|
||||
--verbose)
|
||||
GSVERBOSE=yes
|
||||
GSMAKEOPTIONS+=" messages=yes"
|
||||
GSVERBOSECFLAG="-v"
|
||||
;;
|
||||
--failfast)
|
||||
GSTESTMODE=failfast
|
||||
|
@ -128,13 +93,9 @@ do
|
|||
echo "Runs the specified tests, or any in subdirectories of the"
|
||||
echo "current directory if no arguments are given."
|
||||
echo "Use 'gnustep-tests --documentation' for full details."
|
||||
echo "Use 'gnustep-tests --asan' to build using GNUSTEP_WITH_ASAN=1 set."
|
||||
echo "Use 'gnustep-tests --clean' to remove old logs and leftover files."
|
||||
echo "Use 'gnustep-tests --timeout <VAL>' to change the default timeout ($GSTESTTIMEOUT)."
|
||||
echo "Use 'gnustep-tests --failfast' to stop after the first failure."
|
||||
echo "Use 'gnustep-tests --debug' to run gdb/lldb for any failed tests."
|
||||
echo "Use 'gnustep-tests --make-debug' to enable make debug output."
|
||||
echo "Use 'gnustep-tests --make-no-silent' to disable silent make output."
|
||||
echo "Use 'gnustep-tests --debug' to run gdb for any failed tests."
|
||||
echo "Use 'gnustep-tests --developer' to treat hopes as real tests."
|
||||
echo "Use 'gnustep-tests --verbose' for full/detailed log output."
|
||||
echo "Use 'gnustep-tests --sequential' to disable parallel building."
|
||||
|
@ -163,21 +124,6 @@ export GSTESTLOG
|
|||
GSTESTSUM=$GSTESTDIR/tests.sum
|
||||
export GSTESTSUM
|
||||
|
||||
if test x"$GNUSTEP_WITH_ASAN" = x1
|
||||
then
|
||||
# When testing with address sanitizer (and leak sanitizer) we normally
|
||||
# want the option to have memory leaks be signalled by the test ending
|
||||
# with a well known exit code.
|
||||
if test x"$LSAN_OPTIONS" = x
|
||||
then
|
||||
LSAN_OPTIONS=exitcode=23
|
||||
export LSAN_OPTIONS
|
||||
fi
|
||||
else
|
||||
GNUSTEP_WITH_ASAN=0
|
||||
fi
|
||||
export GNUSTEP_WITH_ASAN
|
||||
|
||||
# We assume that the C compiler supports ObjC
|
||||
if test x"$CC" = x
|
||||
then
|
||||
|
@ -341,17 +287,11 @@ extract()
|
|||
shift
|
||||
while test $# != 0
|
||||
do
|
||||
grep -a "$1" "$f"
|
||||
grep "$1" "$f"
|
||||
shift
|
||||
done
|
||||
}
|
||||
|
||||
# Get the name of a test from its file name
|
||||
getname()
|
||||
{
|
||||
TESTNAME=`echo $1 | sed -e"s/^\(test^.]*\)$/\1.obj./;s/\.[^.]*//g"`
|
||||
}
|
||||
|
||||
# Function for platforms where grep can't search for multiple patterns.
|
||||
present()
|
||||
{
|
||||
|
@ -359,7 +299,7 @@ present()
|
|||
shift
|
||||
while test $# != 0
|
||||
do
|
||||
grep -a "$1" "$f" >/dev/null
|
||||
grep "$1" "$f" >/dev/null
|
||||
if test $? = "0"
|
||||
then
|
||||
return 0
|
||||
|
@ -369,25 +309,20 @@ present()
|
|||
return 1
|
||||
}
|
||||
|
||||
# Low level function to build the Objective-C program $TESTFILE
|
||||
# in the current directory. The TEMPLATE variable must already
|
||||
# be set to the name of the make file template if gnustep-make
|
||||
# is to do the building.
|
||||
# Low level function to build and run the Objective-C program $TESTFILE
|
||||
# in the current directory. The TEMPLATE variable must already be set
|
||||
# to the name of the make file template if gnustep-make is to do the
|
||||
# building.
|
||||
#
|
||||
build_test ()
|
||||
build_and_run ()
|
||||
{
|
||||
# The argument to this function is the name of a test file.
|
||||
# Remove the extension, if there is one. If there is no extension, add
|
||||
# .obj .
|
||||
local TESTFILE=$1
|
||||
local TESTNAME=`echo $TESTFILE | sed -e"s/^\(test^.]*\)$/\1.obj./;s/\.[^.]*//g"`
|
||||
local BUILD_STATUS
|
||||
local BUILD_CMD
|
||||
local tmp
|
||||
TESTNAME=`echo $TESTFILE | sed -e"s/^\(test^.]*\)$/\1.obj./;s/\.[^.]*//g"`
|
||||
|
||||
# Build the test.
|
||||
echo "Building $TESTNAME"
|
||||
# Run the test.
|
||||
|
||||
RUN_CMD="./obj/$TESTNAME"
|
||||
if test x"$TEMPLATE" = x
|
||||
then
|
||||
# The very simple case, we just need to compile a single file
|
||||
|
@ -404,101 +339,62 @@ build_test ()
|
|||
tmp=`basename $TESTFILE .c`
|
||||
if test x"$tmp" = x"$TESTFILE"
|
||||
then
|
||||
BUILD_CMD="$CXX -o $GSVERBOSECFLAG ./obj/$TESTNAME $TESTFILE $ADDITIONAL_CXXFLAGS $ADDITIONAL_LDFLAGS"
|
||||
BUILD_CMD="$CXX -o ./obj/$TESTNAME $TESTFILE $ADDITIONAL_CXXFLAGS $ADDITIONAL_LDFLAGS"
|
||||
else
|
||||
BUILD_CMD="$CC -o $GSVERBOSECFLAG ./obj/$TESTNAME $TESTFILE $ADDITIONAL_CFLAGS $ADDITIONAL_LDFLAGS"
|
||||
BUILD_CMD="$CC -o ./obj/$TESTNAME $TESTFILE $ADDITIONAL_CFLAGS $ADDITIONAL_LDFLAGS"
|
||||
fi
|
||||
else
|
||||
BUILD_CMD="$OBJCXX -o $GSVERBOSECFLAG ./obj/$TESTNAME $TESTFILE $GSTESTFLAGS $GSTESTLIBS"
|
||||
BUILD_CMD="$OBJCXX -o ./obj/$TESTNAME $TESTFILE $GSTESTFLAGS $GSTESTLIBS"
|
||||
fi
|
||||
else
|
||||
BUILD_CMD="$CC -o $GSVERBOSECFLAG ./obj/$TESTNAME $TESTFILE $GSTESTFLAGS $GSTESTLIBS"
|
||||
BUILD_CMD="$CC -o ./obj/$TESTNAME $TESTFILE $GSTESTFLAGS $GSTESTLIBS"
|
||||
fi
|
||||
else
|
||||
echo $GSMAKEOPTIONS
|
||||
BUILD_CMD="$MAKE_CMD $GSMAKEOPTIONS $TESTNAME"
|
||||
if test x"$GSVERBOSE" = xyes
|
||||
then
|
||||
BUILD_CMD="$MAKE_CMD messages=yes debug=yes $TESTNAME"
|
||||
else
|
||||
BUILD_CMD="$MAKE_CMD debug=yes $TESTNAME"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Compile it if necessary.
|
||||
# Redirect errors to stdout so it shows up in the log,
|
||||
# but not in the summary.
|
||||
echo "Building $dir/$TESTFILE"
|
||||
echo "$BUILD_CMD"
|
||||
if test -r ./make-check.env
|
||||
if test "$NEEDBUILD" = "yes"
|
||||
then
|
||||
( . ./make-check.env; . ./TestInfo > /dev/null 2>&1; $BUILD_CMD) 2>&1
|
||||
echo "Building $dir/$TESTFILE"
|
||||
echo "$BUILD_CMD"
|
||||
if test -r ./make-check.env
|
||||
then
|
||||
( . ./make-check.env; . ./TestInfo; $BUILD_CMD) 2>&1
|
||||
else
|
||||
( . ./TestInfo; $BUILD_CMD) 2>&1
|
||||
fi
|
||||
BUILDSTATUS=$?
|
||||
else
|
||||
( . ./TestInfo > /dev/null 2>&1; $BUILD_CMD) 2>&1
|
||||
BUILDSTATUS=0
|
||||
fi
|
||||
|
||||
if test $? != 0
|
||||
if test $BUILDSTATUS != 0
|
||||
then
|
||||
rm -f ./obj/$TESTNAME
|
||||
echo "Failed build: $1" | tee -a $GSTESTSUM >> $GSTESTLOG
|
||||
echo "Failed build: $1" >&2
|
||||
if test "$GSTESTMODE" = "failfast"
|
||||
then
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
else
|
||||
# We want aggressive memory checking.
|
||||
|
||||
# Function to run a test case with a timeout by starting it in the background
|
||||
# and having a subshell monitor it and kill it if it runs too long.
|
||||
# If the test completes before the timeout, the waiting subshell is killed.
|
||||
# The result of the function is the exit status of the test case.
|
||||
# To avoid dependency on the external command 'sleep' we use coproc with
|
||||
# 'read -t' and 'wait' to implement a sleep for $timeout seconds.
|
||||
with_timeout()
|
||||
{
|
||||
timeout="$1"; cmd="$2";
|
||||
|
||||
(
|
||||
eval "$cmd" &
|
||||
child=$!
|
||||
trap -- "" SIGTERM
|
||||
(
|
||||
coproc read -t $timeout && wait "$!" || true
|
||||
kill $child 2> /dev/null
|
||||
) &
|
||||
waiter=$!
|
||||
wait $child
|
||||
result=$?
|
||||
kill -9 $waiter
|
||||
(exit $result)
|
||||
)
|
||||
}
|
||||
|
||||
run_test ()
|
||||
{
|
||||
# Remove the extension, if there is one. If there is no extension, add
|
||||
# .obj .
|
||||
local TESTFILE=$1
|
||||
local TESTNAME=$2
|
||||
|
||||
# Run the test.
|
||||
|
||||
local RUN_CMD="./obj/$TESTNAME"
|
||||
|
||||
if test -x $RUN_CMD
|
||||
then
|
||||
|
||||
# Tell glibc to check for malloc errors, and to crash if it detects any.
|
||||
# Tell glibc to check for malloc errors, and to crash if it detects
|
||||
# any.
|
||||
MALLOC_CHECK_=2
|
||||
export MALLOC_CHECK_
|
||||
|
||||
if test x"$GNUSTEP_WITH_ASAN" = x1
|
||||
then
|
||||
# With ASAN/LSAN keeping objects in existence as zombies may give us
|
||||
# false negatives when looking for leaks.
|
||||
# When running without ASAN leak checking we want basic memory checking.
|
||||
NSZombieEnabled=NO
|
||||
CRASH_ON_ZOMBIE=NO
|
||||
else
|
||||
# Tell GNUstep-base to check for messages sent to deallocated objects
|
||||
# and crash if it happens.
|
||||
NSZombieEnabled=YES
|
||||
CRASH_ON_ZOMBIE=YES
|
||||
fi
|
||||
# Tell GNUstep-base to check for messages sent to deallocated objects
|
||||
# and crash if it happens.
|
||||
NSZombieEnabled=YES
|
||||
CRASH_ON_ZOMBIE=YES
|
||||
export NSZombieEnabled CRASH_ON_ZOMBIE
|
||||
|
||||
echo Running $dir/$TESTFILE...
|
||||
|
@ -508,123 +404,87 @@ run_test ()
|
|||
# Env.sh is deprecated ... we should only use TestInfo to setup for a test
|
||||
if test -r ./Env.sh
|
||||
then
|
||||
( . ./Env.sh; time with_timeout $GSTESTTIMEOUT $RUN_CMD )
|
||||
( . ./Env.sh; $RUN_CMD )
|
||||
else
|
||||
if test -r ./make-check.env
|
||||
then
|
||||
( . ./make-check.env; . ./TestInfo > /dev/null 2>&1; time with_timeout $GSTESTTIMEOUT $RUN_CMD )
|
||||
( . ./make-check.env; . ./TestInfo; $RUN_CMD )
|
||||
else
|
||||
( . ./TestInfo > /dev/null 2>&1; time with_timeout $GSTESTTIMEOUT $RUN_CMD )
|
||||
( . ./TestInfo; $RUN_CMD )
|
||||
fi
|
||||
fi
|
||||
|
||||
result=$?
|
||||
if test $result -eq 0; then
|
||||
echo "Completed file: $TESTFILE" >&2
|
||||
elif test $result -eq 23; then
|
||||
# https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer
|
||||
echo "Failed file: $TESTFILE leaked memory!" >&2
|
||||
if test "$GSTESTMODE" = "failfast"; then
|
||||
return 1
|
||||
fi
|
||||
elif test $result -eq 124; then
|
||||
now=`date`
|
||||
echo "Failed file: $TESTFILE timed out at $now!" >&2
|
||||
if test "$GSTESTMODE" = "failfast"; then
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
if test -r $TESTFILE.abort; then
|
||||
if test $? != 0
|
||||
then
|
||||
if test -r $TESTFILE.abort
|
||||
then
|
||||
echo "Completed file: $TESTFILE" >&2
|
||||
else
|
||||
echo "Failed file: $TESTFILE aborted without running all tests!" >&2
|
||||
if test "$GSTESTMODE" = "failfast"; then
|
||||
echo "Failed file: $TESTFILE aborted without running all tests!" >&2
|
||||
if test "$GSTESTMODE" = "failfast"
|
||||
then
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "Completed file: $TESTFILE" >&2
|
||||
fi
|
||||
else
|
||||
echo "Skipped (not built) file: $TESTFILE" >&2
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
run_test_log ()
|
||||
# Function to build and run $TESTFILE in the current directory.
|
||||
# This actually manages the logging process and calls build_and_run
|
||||
# to perform the work.
|
||||
#
|
||||
run_test_file ()
|
||||
{
|
||||
local TESTFILE=$1
|
||||
local TESTNAME=$2
|
||||
local TESTLOG=$3
|
||||
local TESTVRB=$4
|
||||
RUNEXIT=0
|
||||
|
||||
# Create temporary files
|
||||
touch $TESTVRB
|
||||
echo Testing $TESTFILE... > $TESTLOG
|
||||
echo >> $GSTESTLOG
|
||||
echo Testing $TESTFILE... >> $GSTESTLOG
|
||||
echo >> $GSTESTSUM
|
||||
|
||||
if test x"$GSVERBOSE" = xyes
|
||||
then
|
||||
run_test $TESTFILE $TESTNAME 2>&1 | tee -a $TESTLOG >> $TESTVRB
|
||||
build_and_run 2>&1 | tee $GSTESTLOG.tmp
|
||||
else
|
||||
run_test $TESTFILE $TESTNAME >> $TESTLOG 2>&1
|
||||
build_and_run > $GSTESTLOG.tmp 2>&1
|
||||
fi
|
||||
result=$?
|
||||
if test "$result" != "0"
|
||||
then
|
||||
if test "$GSTESTMODE" = "failfast"
|
||||
then
|
||||
RUNEXIT=1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
RUNEXIT=$?
|
||||
|
||||
proc_test_log ()
|
||||
{
|
||||
local TESTFILE=$1
|
||||
local TESTNAME=$2
|
||||
local TESTLOG=$3
|
||||
local TESTVRB=$4
|
||||
# Add the information to the detailed log.
|
||||
cat $GSTESTLOG.tmp >> $GSTESTLOG
|
||||
|
||||
# Extract the summary information and add it to the summary file.
|
||||
extract $TESTLOG "^Passed test:" "^Failed test:" "^Failed build:" "^Completed file:" "^Failed file:" "^Dashed hope:" "^Failed set:" "^Skipped set:" > $GSTESTSUM.tmp
|
||||
extract $GSTESTLOG.tmp "^Passed test:" "^Failed test:" "^Failed build:" "^Completed file:" "^Failed file:" "^Dashed hope:" "^Failed set:" "^Skipped set:" > $GSTESTSUM.tmp
|
||||
cat $GSTESTSUM.tmp >> $GSTESTSUM
|
||||
|
||||
cat $TESTLOG >> $GSTESTLOG
|
||||
rm -f $TESTLOG
|
||||
cat $TESTVRB
|
||||
rm -f $TESTVRB
|
||||
|
||||
# If there were failures or skipped tests then report them...
|
||||
if present $GSTESTSUM.tmp "^Failed build:" "^Failed file:" "^Failed set:" "^Failed test:" "^Skipped set:"
|
||||
then
|
||||
echo
|
||||
echo $dir/$TESTFILE:
|
||||
extract $GSTESTSUM.tmp "^Failed build:" "^Failed file:" "^Failed set:" "^Failed test:" "^Skipped set:"
|
||||
if test "$GSTESTMODE" = "failfast"
|
||||
then
|
||||
RUNEXIT=1
|
||||
fi
|
||||
else
|
||||
RUNEXIT=0
|
||||
fi
|
||||
|
||||
if test x"$GSTESTDBG" != x
|
||||
then
|
||||
DEBUGGER=`gnustep-config --variable=DEBUGGER`
|
||||
EXT=`gnustep-config --variable=EXEEXT`
|
||||
if present "$GSTESTSUM.tmp" "^Failed test:"
|
||||
then
|
||||
grep -a '^Failed test:' "$GSTESTLOG.tmp" | sed -e 's/^Failed test:[^:]*:\([0-9][0-9]*\).*/break testStart if testLineNumber==\1/' > "$GSTESTDBG"
|
||||
$DEBUGGER "./obj/$TESTNAME"$EXT -x "$GSTESTDBG"
|
||||
grep '^Failed test:' "$GSTESTLOG.tmp" | sed -e 's/^Failed test:[^:]*:\([0-9][0-9]*\).*/break testStart if testLineNumber==\1/' > "$GSTESTDBG"
|
||||
gdb "./obj/$TESTNAME" -x "$GSTESTDBG"
|
||||
rm -f "$GSTESTDBG"
|
||||
elif present "$GSTESTSUM.tmp" "^Failed file:"
|
||||
then
|
||||
$DEBUGGER "./obj/$TESTNAME"$EXT
|
||||
gdb "./obj/$TESTNAME"
|
||||
fi
|
||||
fi
|
||||
|
||||
return 0
|
||||
return $RUNEXIT
|
||||
}
|
||||
|
||||
|
||||
# Replace the old files.
|
||||
if test -f tests.log
|
||||
then
|
||||
|
@ -647,10 +507,10 @@ do
|
|||
if test x"$OBJCXX" = x
|
||||
then
|
||||
# Only Objective-C (and C)
|
||||
SRCDIRS=`find $TESTDIR -type f \( -name "*.m" -o -name "*.c" \) | sed -e 's;/[^/]*$;;' | sort -u | sed -e 's/\(^\| \)X[^ ]*//g'`
|
||||
SRCDIRS=`find $TESTDIR -name "*.m" -o -name "*.c" | sed -e 's;/[^/]*$;;' | sort -u | sed -e 's/\(^\| \)X[^ ]*//g'`
|
||||
else
|
||||
# Objective-C and Objective-C++ (implicitly C and C++ too)
|
||||
SRCDIRS=`find $TESTDIR -type f \( -name "*.m" -o -name "*.mm" -o -name "*.c" -o -name "*.cc" \) | sed -e 's;/[^/]*$;;' | sort -u | sed -e 's/\(^\| \)X[^ ]*//g'`
|
||||
SRCDIRS=`find $TESTDIR \( -name "*.m" -o -name "*.mm" -o -name "*.c" -o -name "*.cc" \) | sed -e 's;/[^/]*$;;' | sort -u | sed -e 's/\(^\| \)X[^ ]*//g'`
|
||||
fi
|
||||
else
|
||||
SRCDIRS="$TESTDIRS"
|
||||
|
@ -700,7 +560,7 @@ do
|
|||
then
|
||||
$MAKE_CMD clean >/dev/null 2>&1
|
||||
fi
|
||||
rm -rf core core.* *.core obj GNUmakefile gdb.cmds test_*.err test_*.out tests.log tests.sum oldtests.log oldtests.sum tests.tmp tests.sum.tmp tests.log.tmp make-check.mak make-check.env
|
||||
rm -rf core core.* *.core obj GNUmakefile gdb.cmds tests.log tests.sum oldtests.log oldtests.sum tests.tmp tests.sum.tmp tests.log.tmp make-check.mak make-check.env
|
||||
|
||||
else
|
||||
echo "--- Running tests in $dir ---"
|
||||
|
@ -719,10 +579,10 @@ do
|
|||
if test x"$OBJCXX" = x
|
||||
then
|
||||
# Only Objective-C (and C)
|
||||
TESTS=`find . \( -name . -o -prune \) -type f \( -name "*.m" -o -name "*.c" \) | sed -e 's;^.*/;;' | sort -u | sed -e 's/\(^\| \)X[^ ]*//g'`
|
||||
TESTS=`find . \( -name . -o -prune \) \( -name "*.m" -o -name "*.c" \) | sed -e 's;^.*/;;' | sort -u | sed -e 's/\(^\| \)X[^ ]*//g'`
|
||||
else
|
||||
# Objective-C and Objective-C++ (implicitly C and C++ too)
|
||||
TESTS=`find . \( -name . -o -prune \) -type f \( -name "*.m" -o -name "*.mm" -name "*.c" -o -name "*.cc" \) | sed -e 's;^.*/;;' | sort -u | sed -e 's/\(^\| \)X[^ ]*//g'`
|
||||
TESTS=`find . \( -name . -o -prune \) \( -name "*.m" -o -name "*.mm" -name "*.c" -o -name "*.cc" \) | sed -e 's;^.*/;;' | sort -u | sed -e 's/\(^\| \)X[^ ]*//g'`
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -762,6 +622,7 @@ do
|
|||
TEMPLATE=$GSTESTTOP/GNUmakefile.in
|
||||
fi
|
||||
|
||||
NEEDBUILD=yes
|
||||
if test x"$TEMPLATE" = x
|
||||
then
|
||||
rm -rf core core.* *.core obj GNUmakefile gdb.cmds
|
||||
|
@ -798,121 +659,33 @@ ${tmp}_OBJC_FILES=$TESTFILE"
|
|||
sed -e "s/@TESTNAMES@/$TESTNAMES/;s^@TESTOPTS@^$GSTESTOPTS^;s/@TESTRULES@/$TESTRULES/" < "$TEMPLATE" > GNUmakefile
|
||||
$MAKE_CMD clean >/dev/null 2>&1
|
||||
|
||||
if test x"$GSSEQUENTIAL" = xyes
|
||||
# Try building all the test files in the directory in parallel.
|
||||
# If that works, set NEEDBUILD to 'no' so that we do not build
|
||||
# each individual test file later.
|
||||
echo "" >>$GSTESTLOG
|
||||
echo "Building in $dir" >>$GSTESTLOG
|
||||
if test -r ./make-check.env
|
||||
then
|
||||
build_state=1
|
||||
( . ./make-check.env; . ./TestInfo; $MAKE_CMD -j 4 debug=yes) >>$GSTESTLOG 2>&1
|
||||
else
|
||||
# Try building all the test files in the directory in parallel.
|
||||
# If that fails, try building them individually.
|
||||
echo "" >>$GSTESTLOG
|
||||
echo "Building in $dir" >>$GSTESTLOG
|
||||
if test -r ./make-check.env
|
||||
then
|
||||
( . ./make-check.env; . ./TestInfo > /dev/null 2>&1; $MAKE_CMD -j 4 $GSMAKEOPTIONS) >>$GSTESTLOG 2>&1
|
||||
else
|
||||
( . ./TestInfo > /dev/null 2>&1; $MAKE_CMD -j 4 $GSMAKEOPTIONS) >>$GSTESTLOG 2>&1
|
||||
fi
|
||||
build_state=$?
|
||||
( . ./TestInfo; $MAKE_CMD -j 4 debug=yes) >>$GSTESTLOG 2>&1
|
||||
fi
|
||||
if test $build_state != 0
|
||||
if test $? = 0
|
||||
then
|
||||
for TESTFILE in $TESTS
|
||||
do
|
||||
build_test "$TESTFILE"
|
||||
done
|
||||
NEEDBUILD=no
|
||||
fi
|
||||
fi
|
||||
|
||||
# Build up a list of the names of all the tests available.
|
||||
declare -A TESTMAP
|
||||
ALLTESTS=""
|
||||
# Now we process each test file in turn.
|
||||
# When cleaning, we only need to do one clean per directory.
|
||||
for TESTFILE in $TESTS
|
||||
do
|
||||
getname $TESTFILE
|
||||
TESTMAP["$TESTNAME"]="$TESTFILE"
|
||||
if test "$ALLTESTS" = ""
|
||||
run_test_file
|
||||
if test "$RUNEXIT" != "0"
|
||||
then
|
||||
ALLTESTS="$TESTNAME"
|
||||
else
|
||||
ALLTESTS="$ALLTESTS $TESTNAME"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Get the values defined for PARALLEL and PARALLEL in TestInfo
|
||||
# These variables should specify the names of sets of tests to
|
||||
# be executed in parallel or sequentially respectively.
|
||||
GSPAR=`( . ./TestInfo > /dev/null 2>&1; echo "$PARALLEL") 2>&1`
|
||||
GSSEQ=`( . ./TestInfo > /dev/null 2>&1; echo "$SEQUENCE") 2>&1`
|
||||
|
||||
# When PARALLEL and SEQUENCE are both missing or empty, we treat
|
||||
# it as if SEQUENCE had been set to contain an asterisk so that
|
||||
# all the tests are executed in order.
|
||||
if test "$GSPAR" = "" -a "$GSSEQ" = ""
|
||||
then
|
||||
GSSEQ="*"
|
||||
fi
|
||||
|
||||
# Any occurrence of an asterisk in PARALLEL or SEQUENCE is replaced
|
||||
# by the names of all the tests separated by white space.
|
||||
GSPAR=`echo "$GSPAR" | sed -e "s/\*/ $ALLTESTS /g"`
|
||||
GSSEQ=`echo "$GSSEQ" | sed -e "s/\*/ $ALLTESTS /g"`
|
||||
|
||||
# NB. we check the map to see that a file exists for each test name
|
||||
# because the names we have been given may not exist in the set of
|
||||
# tests being run (ie specified at the cvommand line).
|
||||
|
||||
# Now we process sequence test file in turn.
|
||||
i=0
|
||||
for TESTNAME in $GSSEQ
|
||||
do
|
||||
TESTFILE=${TESTMAP[$TESTNAME]}
|
||||
if test "$TESTFILE" != ""
|
||||
then
|
||||
if test x"$GSVERBOSE" = xyes
|
||||
then
|
||||
echo "Sequence perform $TESTNAME"
|
||||
fi
|
||||
run_test_log $TESTFILE $TESTNAME test_$i.out test_$i.err
|
||||
proc_test_log $TESTFILE $TESTNAME test_$i.out test_$i.err
|
||||
if test "$RUNEXIT" != "0"
|
||||
then
|
||||
break
|
||||
fi
|
||||
((i+=1))
|
||||
fi
|
||||
done
|
||||
|
||||
# And process all parallel test files together
|
||||
i=0
|
||||
for TESTNAME in $GSPAR
|
||||
do
|
||||
TESTFILE=${TESTMAP[$TESTNAME]}
|
||||
if test "$TESTFILE" != ""
|
||||
then
|
||||
if test x"$GSVERBOSE" = xyes
|
||||
then
|
||||
echo "Parallel startup $TESTNAME"
|
||||
fi
|
||||
run_test_log $TESTFILE $TESTNAME test_$i.out test_$i.err &
|
||||
((i+=1))
|
||||
fi
|
||||
done
|
||||
wait
|
||||
i=0
|
||||
for TESTNAME in $GSPAR
|
||||
do
|
||||
TESTFILE=${TESTMAP[$TESTNAME]}
|
||||
if test "$TESTFILE" != ""
|
||||
then
|
||||
proc_test_log $TESTFILE $TESTNAME test_$i.out test_$i.err
|
||||
if test "$RUNEXIT" != "0"
|
||||
then
|
||||
break
|
||||
fi
|
||||
((i+=1))
|
||||
fi
|
||||
done
|
||||
|
||||
else
|
||||
echo "Start.sh failed in '$TESTDIR' ... tests abandoned."
|
||||
for TESTFILE in $TESTS
|
||||
|
@ -971,7 +744,7 @@ fi
|
|||
|
||||
if test "$GSTESTMODE" = "clean"
|
||||
then
|
||||
rm -rf core core.* *.core obj GNUmakefile.tmp gdb.cmds test_*.err test_*.out tests.tmp tests.sum.tmp tests.log.tmp tests.log tests.sum oldtests.log oldtests.sum
|
||||
rm -rf core core.* *.core obj GNUmakefile.tmp gdb.cmds tests.tmp tests.sum.tmp tests.log.tmp tests.log tests.sum oldtests.log oldtests.sum
|
||||
else
|
||||
# Make some stats.
|
||||
if test -r tests.sum
|
||||
|
@ -1010,7 +783,7 @@ $RUNCMD
|
|||
FAILS=$?
|
||||
|
||||
# Delete the temporary file.
|
||||
rm -f test_*.err test_*.out tests.tmp tests.sum.tmp tests.log.tmp
|
||||
rm -f tests.tmp tests.sum.tmp tests.log.tmp
|
||||
|
||||
# Our exit status is 0 unless some test failed.
|
||||
if test -r "$GSTESTSUM"
|
||||
|
|
2
Version
2
Version
|
@ -4,6 +4,6 @@
|
|||
# The version number of this release.
|
||||
GNUSTEP_MAKE_MAJOR_VERSION=2
|
||||
GNUSTEP_MAKE_MINOR_VERSION=9
|
||||
GNUSTEP_MAKE_SUBMINOR_VERSION=3
|
||||
GNUSTEP_MAKE_SUBMINOR_VERSION=0
|
||||
GNUSTEP_MAKE_VERSION=${GNUSTEP_MAKE_MAJOR_VERSION}.${GNUSTEP_MAKE_MINOR_VERSION}.${GNUSTEP_MAKE_SUBMINOR_VERSION}
|
||||
|
||||
|
|
20
aclocal.m4
vendored
20
aclocal.m4
vendored
|
@ -1,6 +1,6 @@
|
|||
# generated automatically by aclocal 1.16.5 -*- Autoconf -*-
|
||||
# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996-2021 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996-2017 Free Software Foundation, Inc.
|
||||
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
|
@ -12,9 +12,9 @@
|
|||
# PARTICULAR PURPOSE.
|
||||
|
||||
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
|
||||
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
|
||||
# serial 12 (pkg-config-0.29.2)
|
||||
|
||||
dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
|
||||
dnl serial 11 (pkg-config-0.29.1)
|
||||
dnl
|
||||
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
|
||||
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
|
||||
dnl
|
||||
|
@ -55,7 +55,7 @@ dnl
|
|||
dnl See the "Since" comment for each macro you use to see what version
|
||||
dnl of the macros you require.
|
||||
m4_defun([PKG_PREREQ],
|
||||
[m4_define([PKG_MACROS_VERSION], [0.29.2])
|
||||
[m4_define([PKG_MACROS_VERSION], [0.29.1])
|
||||
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
|
||||
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
|
||||
])dnl PKG_PREREQ
|
||||
|
@ -156,7 +156,7 @@ AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
|
|||
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
|
||||
|
||||
pkg_failed=no
|
||||
AC_MSG_CHECKING([for $2])
|
||||
AC_MSG_CHECKING([for $1])
|
||||
|
||||
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
|
||||
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
|
||||
|
@ -166,11 +166,11 @@ and $1[]_LIBS to avoid the need to call pkg-config.
|
|||
See the pkg-config man page for more details.])
|
||||
|
||||
if test $pkg_failed = yes; then
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_RESULT([no])
|
||||
_PKG_SHORT_ERRORS_SUPPORTED
|
||||
if test $_pkg_short_errors_supported = yes; then
|
||||
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
|
||||
else
|
||||
else
|
||||
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
|
||||
fi
|
||||
# Put the nasty error message in config.log where it belongs
|
||||
|
@ -187,7 +187,7 @@ installed software in a non-standard prefix.
|
|||
_PKG_TEXT])[]dnl
|
||||
])
|
||||
elif test $pkg_failed = untried; then
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_RESULT([no])
|
||||
m4_default([$4], [AC_MSG_FAILURE(
|
||||
[The pkg-config script could not be found or is too old. Make sure it
|
||||
is in your PATH or set the PKG_CONFIG environment variable to the full
|
||||
|
|
39
common.make
39
common.make
|
@ -745,7 +745,7 @@ ifeq ($(debug), yes)
|
|||
ADDITIONAL_FLAGS := $(filter-out -O%, $(ADDITIONAL_FLAGS))
|
||||
# If OPTFLAG does not already include -g, add it here.
|
||||
ifneq ($(filter -g, $(OPTFLAG)), -g)
|
||||
OPTFLAG += -g
|
||||
ADDITIONAL_FLAGS += -g
|
||||
endif
|
||||
# Add standard debug compiler flags.
|
||||
ADDITIONAL_FLAGS += -DDEBUG -fno-omit-frame-pointer
|
||||
|
@ -759,41 +759,6 @@ else
|
|||
INTERNAL_JAVACFLAGS += -O
|
||||
endif
|
||||
|
||||
# On Windows MSVC we also need -gcodeview to generate debug symbols, and since
|
||||
# Autoconf does not add it we add it here.
|
||||
ifeq ($(GNUSTEP_TARGET_OS), windows)
|
||||
ifeq ($(filter -g, $(OPTFLAG)), -g)
|
||||
ifneq ($(filter -gcodeview, $(OPTFLAG)), -gcodeview)
|
||||
OPTFLAG += -gcodeview
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# Sanitization must be enabled explicitly and shall _not_ be used in
|
||||
# production, as it may leak sensitive info or result in privilege
|
||||
# escalation due to unchecked use of variables
|
||||
# (https://www.openwall.com/lists/oss-security/2016/02/17/9).
|
||||
|
||||
# Enable using '-asan yes' in command line or GNUSTEP_WITH_ASAN=1 in
|
||||
# in the environment.
|
||||
|
||||
ifeq ($(GNUSTEP_WITH_ASAN), 1)
|
||||
asan = yes
|
||||
endif
|
||||
ifeq ($(asan), yes)
|
||||
# We tell the complier to build with the sanitiser and define a preprocessor
|
||||
# flag so that the compuked code can conditionally handle that specially.
|
||||
ADDITIONAL_FLAGS += -fsanitize=address -DGNUSTEP_WITH_ASAN=1
|
||||
# We use the clang or gcc to drive the linking process. The driver will
|
||||
# add the required runtime libraries for address sanitizer.
|
||||
INTERNAL_LDFLAGS += -fsanitize=address
|
||||
|
||||
# Not omitting the frame pointer results in more readable stack traces
|
||||
ifneq ($(filter -fno-omit-frame-pointer, $(ADDITIONAL_FLAGS)), -fno-omit-frame-pointer)
|
||||
ADDITIONAL_FLAGS += -fno-omit-frame-pointer
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(warn), no)
|
||||
ADDITIONAL_FLAGS += -UGSWARN
|
||||
else
|
||||
|
@ -879,7 +844,7 @@ ifeq ($(JAVAC),)
|
|||
endif
|
||||
|
||||
#
|
||||
# The java header compiler (if any). We need to check later.
|
||||
# The java header compiler.
|
||||
#
|
||||
ifeq ($(JAVAH),)
|
||||
JAVAH = $(JAVA_HOME)/bin/javah
|
||||
|
|
1641
config.guess
vendored
Normal file → Executable file
1641
config.guess
vendored
Normal file → Executable file
File diff suppressed because it is too large
Load diff
2905
config.sub
vendored
Normal file → Executable file
2905
config.sub
vendored
Normal file → Executable file
File diff suppressed because it is too large
Load diff
169
configure.ac
169
configure.ac
|
@ -21,7 +21,7 @@
|
|||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
AC_INIT
|
||||
AC_PREREQ([2.71])
|
||||
AC_PREREQ(2.65)
|
||||
AC_CONFIG_SRCDIR([application.make])
|
||||
AC_CONFIG_MACRO_DIRS([m4])
|
||||
|
||||
|
@ -85,15 +85,6 @@ AC_PROG_OBJCXX
|
|||
# We may use egrep for some tests further down below
|
||||
AC_PROG_EGREP
|
||||
|
||||
# Search for a debugger. We try 'gdb' then 'lldb'. If
|
||||
# we can't find it, we set it to 'gdb', even if that will fail later
|
||||
# on.
|
||||
AC_CHECK_PROGS(DEBUGGER, [gdb lldb], gdb)
|
||||
|
||||
# Used by gnustep-config to output the debugger variable and
|
||||
# gnustep-tests.
|
||||
AC_SUBST(DEBUGGER)
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
# Check if we are using Apple cc
|
||||
#--------------------------------------------------------------------
|
||||
|
@ -393,16 +384,6 @@ if test ! -f "$srcdir/FilesystemLayouts/$GNUSTEP_FILESYSTEM_LAYOUT_FILE" >&5 2>&
|
|||
exit 1
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([for architecture-specific lib path])
|
||||
AC_ARG_WITH(libdir,[
|
||||
--with-libdir=FILE
|
||||
Set the variant of the /lib directory to use. This is useful on systems
|
||||
which support more than one binary format requiring separate libraries.
|
||||
The default is lib.
|
||||
Example: --with-libdir=lib64
|
||||
],
|
||||
LIBDIR="$withval",LIBDIR="lib")
|
||||
|
||||
# Need to do some checks related to building dylibs on darwin.
|
||||
GNUSTEP_ABSOLUTE_INSTALL_PATHS=;
|
||||
|
||||
|
@ -519,38 +500,38 @@ AC_SUBST(GNUSTEP_PREFIX)
|
|||
# '/home' - we never install anything in there).
|
||||
GNUSTEP_MAKEFILES="$GNUSTEP_PREFIX$GNUSTEP_MAKEFILES"
|
||||
|
||||
GNUSTEP_SYSTEM_APPS=$(echo "$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_APPS" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=$(echo "$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_ADMIN_APPS" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_SYSTEM_WEB_APPS=$(echo "$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_WEB_APPS" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_SYSTEM_APPS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_APPS"
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_ADMIN_APPS"
|
||||
GNUSTEP_SYSTEM_WEB_APPS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_WEB_APPS"
|
||||
GNUSTEP_SYSTEM_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_TOOLS"
|
||||
GNUSTEP_SYSTEM_ADMIN_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_ADMIN_TOOLS"
|
||||
GNUSTEP_SYSTEM_LIBRARY=$(echo "$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_LIBRARY" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_SYSTEM_LIBRARY="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_LIBRARY"
|
||||
GNUSTEP_SYSTEM_HEADERS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_HEADERS"
|
||||
GNUSTEP_SYSTEM_LIBRARIES=$(echo "$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_LIBRARIES" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_SYSTEM_LIBRARIES="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_LIBRARIES"
|
||||
GNUSTEP_SYSTEM_DOC="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_DOC"
|
||||
GNUSTEP_SYSTEM_DOC_MAN="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_DOC_MAN"
|
||||
GNUSTEP_SYSTEM_DOC_INFO="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_DOC_INFO"
|
||||
|
||||
GNUSTEP_NETWORK_APPS=$(echo "$GNUSTEP_PREFIX$GNUSTEP_NETWORK_APPS" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=$(echo "$GNUSTEP_PREFIX$GNUSTEP_NETWORK_ADMIN_APPS" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_NETWORK_WEB_APPS=$(echo "$GNUSTEP_PREFIX$GNUSTEP_NETWORK_WEB_APPS" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_NETWORK_APPS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_APPS"
|
||||
GNUSTEP_NETWORK_ADMIN_APPS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_ADMIN_APPS"
|
||||
GNUSTEP_NETWORK_WEB_APPS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_WEB_APPS"
|
||||
GNUSTEP_NETWORK_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_TOOLS"
|
||||
GNUSTEP_NETWORK_ADMIN_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_ADMIN_TOOLS"
|
||||
GNUSTEP_NETWORK_LIBRARY=$(echo "$GNUSTEP_PREFIX$GNUSTEP_NETWORK_LIBRARY" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_NETWORK_LIBRARY="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_LIBRARY"
|
||||
GNUSTEP_NETWORK_HEADERS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_HEADERS"
|
||||
GNUSTEP_NETWORK_LIBRARIES=$(echo "$GNUSTEP_PREFIX$GNUSTEP_NETWORK_LIBRARIES" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_NETWORK_LIBRARIES="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_LIBRARIES"
|
||||
GNUSTEP_NETWORK_DOC="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_DOC"
|
||||
GNUSTEP_NETWORK_DOC_MAN="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_DOC_MAN"
|
||||
GNUSTEP_NETWORK_DOC_INFO="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_DOC_INFO"
|
||||
|
||||
GNUSTEP_LOCAL_APPS=$(echo "$GNUSTEP_PREFIX$GNUSTEP_LOCAL_APPS" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_LOCAL_ADMIN_APPS=$(echo "$GNUSTEP_PREFIX$GNUSTEP_LOCAL_ADMIN_APPS" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_LOCAL_WEB_APPS=$(echo "$GNUSTEP_PREFIX$GNUSTEP_LOCAL_WEB_APPS" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_LOCAL_APPS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_APPS"
|
||||
GNUSTEP_LOCAL_ADMIN_APPS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_ADMIN_APPS"
|
||||
GNUSTEP_LOCAL_WEB_APPS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_WEB_APPS"
|
||||
GNUSTEP_LOCAL_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_TOOLS"
|
||||
GNUSTEP_LOCAL_ADMIN_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_ADMIN_TOOLS"
|
||||
GNUSTEP_LOCAL_LIBRARY=$(echo "$GNUSTEP_PREFIX$GNUSTEP_LOCAL_LIBRARY" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_LOCAL_LIBRARY="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_LIBRARY"
|
||||
GNUSTEP_LOCAL_HEADERS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_HEADERS"
|
||||
GNUSTEP_LOCAL_LIBRARIES=$(echo "$GNUSTEP_PREFIX$GNUSTEP_LOCAL_LIBRARIES" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_LOCAL_LIBRARIES="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_LIBRARIES"
|
||||
GNUSTEP_LOCAL_DOC="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_DOC"
|
||||
GNUSTEP_LOCAL_DOC_MAN="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_DOC_MAN"
|
||||
GNUSTEP_LOCAL_DOC_INFO="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_DOC_INFO"
|
||||
|
@ -1171,67 +1152,86 @@ fi
|
|||
AC_MSG_CHECKING(whether objc has thread support)
|
||||
if test "$OBJC_THREAD" != ""; then
|
||||
LIBS="$OBJCRT $LIBS $OBJC_THREAD"
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="$OBJC_THREAD"],[objc_threaded=""],[objc_threaded=""])
|
||||
AC_TRY_RUN([#include "config_thread.m"],
|
||||
objc_threaded="$OBJC_THREAD",
|
||||
objc_threaded="", objc_threaded="")
|
||||
elif test "$host_os" = linux-gnu; then
|
||||
LIBS="$OBJCRT -lpthread"
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="-lpthread"],[objc_threaded=""],[objc_threaded="-lpthread"])
|
||||
AC_TRY_RUN([#include "config_thread.m"], objc_threaded="-lpthread",
|
||||
objc_threaded="", objc_threaded="-lpthread")
|
||||
if test x"$objc_threaded" = x""; then
|
||||
LIBS="$OBJCRT"
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="works"],[objc_threaded=""],[objc_threaded="works"])
|
||||
fi
|
||||
elif test "$host_os" = linux-musl; then
|
||||
LIBS="$OBJCRT -lpthread"
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="-lpthread"],[objc_threaded=""],[objc_threaded="-lpthread"])
|
||||
if test x"$objc_threaded" = x""; then
|
||||
LIBS="$OBJCRT"
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="works"],[objc_threaded=""],[objc_threaded="works"])
|
||||
AC_TRY_RUN([#include "config_thread.m"],
|
||||
objc_threaded="works",
|
||||
objc_threaded="", objc_threaded="works")
|
||||
fi
|
||||
elif test "`echo $host_os|sed 's/[[0-9]].*//'|sed s/elf//`" = freebsd; then
|
||||
LIBS="-pthread $OBJCRT"
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="-pthread"],[objc_threaded=""],[objc_threaded="-pthread"])
|
||||
AC_TRY_RUN([#include "config_thread.m"], objc_threaded="-pthread",
|
||||
objc_threaded="", objc_threaded="-pthread")
|
||||
if test x"$objc_threaded" = x""; then
|
||||
LIBS="-lpthread $OBJCRT"
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="-lpthread"],[objc_threaded=""],[objc_threaded="-lpthread"])
|
||||
AC_TRY_RUN([#include "config_thread.m"], objc_threaded="-lpthread",
|
||||
objc_threaded="", objc_threaded="-lpthread")
|
||||
fi
|
||||
if test x"$objc_threaded" = x""; then
|
||||
LIBS="$OBJCRT -lpcthread"
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="-lpcthread"],[objc_threaded=""],[objc_threaded="-lpcthread"])
|
||||
AC_TRY_RUN([#include "config_thread.m"], objc_threaded="-lpcthread",
|
||||
objc_threaded="", objc_threaded="-lpcthread")
|
||||
fi
|
||||
if test x"$objc_threaded" = x""; then
|
||||
LIBS="$OBJCRT"
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="works"],[objc_threaded=""],[objc_threaded="works"])
|
||||
AC_TRY_RUN([#include "config_thread.m"],
|
||||
objc_threaded="works",
|
||||
objc_threaded="", objc_threaded="works")
|
||||
fi
|
||||
elif test "$MINGW32" = yes; then
|
||||
# Mingw doesn't need anything extra for threads
|
||||
LIBS="$OBJCRT $LIBS"
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="works"],[objc_threaded=""],[objc_threaded="works"])
|
||||
AC_TRY_RUN([#include "config_thread.m"],
|
||||
objc_threaded="works",
|
||||
objc_threaded="", objc_threaded="works")
|
||||
elif test "$MINGW64" = yes; then
|
||||
# Mingw doesn't need anything extra for threads
|
||||
LIBS="$OBJCRT $LIBS"
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="works"],[objc_threaded=""],[objc_threaded="works"])
|
||||
AC_TRY_RUN([#include "config_thread.m"],
|
||||
objc_threaded="works",
|
||||
objc_threaded="", objc_threaded="works")
|
||||
elif test "$OBJC_RUNTIME_LIB" = "apple"; then
|
||||
# Apple doesn't need anything extra for threads
|
||||
LIBS="$OBJCRT $LIBS"
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="works"],[objc_threaded=""],[objc_threaded="works"])
|
||||
AC_TRY_RUN([#include "config_thread.m"],
|
||||
objc_threaded="works",
|
||||
objc_threaded="", objc_threaded="works")
|
||||
else
|
||||
LIBS="$OBJCRT $LIBS"
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="works"],[objc_threaded=""],[objc_threaded=""])
|
||||
AC_TRY_RUN([#include "config_thread.m"],
|
||||
objc_threaded="works",
|
||||
objc_threaded="", objc_threaded="")
|
||||
if test x"$objc_threaded" = x""; then
|
||||
LIBS="$OBJCRT $saved_LIBS -lpthread "
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="-lpthread"],[objc_threaded=""],[objc_threaded=""])
|
||||
AC_TRY_RUN([#include "config_thread.m"],
|
||||
objc_threaded="-lpthread",
|
||||
objc_threaded="", objc_threaded="")
|
||||
fi
|
||||
if test x"$objc_threaded" = x""; then
|
||||
# Solaris, OpenBSD/sparc
|
||||
LIBS="$OBJCRT $saved_LIBS -lpthread -lposix4"
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="-lpthread -lposix4"],[objc_threaded=""],[objc_threaded=""])
|
||||
AC_TRY_RUN([#include "config_thread.m"],
|
||||
objc_threaded="-lpthread -lposix4",
|
||||
objc_threaded="", objc_threaded="")
|
||||
fi
|
||||
if test x"$objc_threaded" = x""; then
|
||||
LIBS="$OBJCRT $saved_LIBS -lthread "
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="-lthread"],[objc_threaded=""],[objc_threaded=""])
|
||||
AC_TRY_RUN([#include "config_thread.m"],
|
||||
objc_threaded="-lthread",
|
||||
objc_threaded="", objc_threaded="")
|
||||
fi
|
||||
if test x"$objc_threaded" = x""; then
|
||||
LIBS="$OBJCRT"
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "config_thread.m"]])],[objc_threaded="works"],[objc_threaded=""],[objc_threaded="works"])
|
||||
AC_TRY_RUN([#include "config_thread.m"],
|
||||
objc_threaded="works",
|
||||
objc_threaded="", objc_threaded="works")
|
||||
fi
|
||||
fi
|
||||
if test x"$objc_threaded" = x""; then
|
||||
|
@ -1299,7 +1299,7 @@ if test x"$USE_ARC" = x"yes"; then
|
|||
# What we want to do: set USE_ARC to yes if we can compile
|
||||
# something with -fobjc-arc.
|
||||
CFLAGS_no_arc="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -fobjc-runtime=gnustep-2.2 -fobjc-arc"
|
||||
CFLAGS="$CFLAGS -fobjc-runtime=gnustep-1.8 -fobjc-arc"
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
|
||||
/* Note that we never execute this code so it does not really matter
|
||||
what it is. We are testing that the compiler accepts the
|
||||
|
@ -1381,7 +1381,7 @@ GS_CHECK_GCC_VERSION()
|
|||
|
||||
GS_RUNTIME_ABI()
|
||||
# If we determined that the user wants the gnustep-2.0 ABI, check for potential linker problems.
|
||||
if test "$gs_cv_runtime_abi" = "gnustep-2.0"; then
|
||||
if test $gs_cv_runtime_abi = 'gnustep-2.0'; then
|
||||
GS_CHECK_ABI20_LINKER()
|
||||
fi
|
||||
# Do not restore LIBS and CFLAGS yet as we need to test if the
|
||||
|
@ -1779,64 +1779,15 @@ AC_CHECK_PROGS(LATEX2HTML, latex2html)
|
|||
#--------------------------------------------------------------------
|
||||
# For test framework
|
||||
#--------------------------------------------------------------------
|
||||
AC_PATH_PROG(SHELLPROG,bash,/bin/sh)
|
||||
AC_PATH_PROG(TESTPROG, test)
|
||||
|
||||
AC_ARG_WITH(bash-path,[
|
||||
--with-bash-path=PATH
|
||||
Set the path to the bash executable to use. This is useful on systems
|
||||
which do not have a reasonably recent version of bash in their path.
|
||||
Example: --with-bash-path=/opt/homebrew/bin/bash
|
||||
],
|
||||
SHELLPROG="$withval",SHELLPROG=)
|
||||
if test x"$SHELLPROG" = x""; then
|
||||
AC_PATH_PROG(SHELLPROG, bash)
|
||||
else
|
||||
if test ! -x $SHELLPROG
|
||||
then
|
||||
echo "Unable to find executable bash program at $SHELLPROG."
|
||||
SHELLPROG=
|
||||
fi
|
||||
fi
|
||||
if test x"$SHELLPROG" = x""; then
|
||||
echo "Unable to find the bash program (needed for testsuite)."
|
||||
SHELLPROG=/bin/sh
|
||||
MISSINGBASH=YES
|
||||
else
|
||||
MISSINGBASH=NO
|
||||
BVER=`$SHELLPROG -c 'echo $BASH_VERSION'`
|
||||
BMAJ=`echo $BVER | sed -e 's/\..*//'`
|
||||
BMIN=`echo $BVER | sed -e 's/^[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\).*/\1/'`
|
||||
if test ${BMAJ} -lt 4
|
||||
then
|
||||
MISSINGBASH=YES
|
||||
else
|
||||
if test ${BMAJ} -eq 4 -a ${BMIN} -lt 3
|
||||
then
|
||||
MISSINGBASH=YES
|
||||
fi
|
||||
fi
|
||||
if test ${MISSINGBASH} = "YES"
|
||||
then
|
||||
echo "The bash progrem version is too old (needed for testsuite)."
|
||||
SHELLPROG=/bin/sh
|
||||
fi
|
||||
fi
|
||||
if test ${MISSINGBASH} = "YES"
|
||||
then
|
||||
echo "Please configure using --with-bash-path= to specify a modernish"
|
||||
echo "bash program (version 4.3 or later)."
|
||||
SHELLPROG=/bin/sh
|
||||
fi
|
||||
AC_SUBST(MISSINGBASH)
|
||||
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
# Produce the output files
|
||||
#--------------------------------------------------------------------
|
||||
AC_CONFIG_FILES([config-noarch.make config.make openapp opentool
|
||||
executable.template GNUmakefile GNUstep.conf GNUstep-strict-v2.conf
|
||||
GNUstep.sh GNUstep.csh fixpath.sh
|
||||
GNUstep-reset.sh
|
||||
gnustep-make.spec gnustep-config TestFramework/gnustep-tests
|
||||
filesystem.make filesystem.sh filesystem.csh gnustep-make-ld.so.conf])
|
||||
AC_CONFIG_FILES([runtime/$OBJC_RUNTIME_LIB.make:config.make.in])
|
||||
|
|
|
@ -70,8 +70,6 @@ if [ "$1" = "--help" ]; then
|
|||
echo " --variable=CXX"
|
||||
echo " --variable=OBJCXX"
|
||||
echo " --variable=LDFLAGS"
|
||||
echo " --variable=EXEEXT"
|
||||
echo " --variable=DEBUGGER"
|
||||
echo " --variable=GNUMAKE"
|
||||
echo " --variable=GNUSTEP_MAKEFILES"
|
||||
echo " --variable=GNUSTEP_USER_DEFAULTS_DIR"
|
||||
|
@ -186,10 +184,6 @@ case "$1" in
|
|||
exit 0;;
|
||||
--variable=LDFLAGS) echo "@LDFLAGS@"
|
||||
exit 0;;
|
||||
--variable=EXEEXT) echo "@EXEEXT@"
|
||||
exit 0;;
|
||||
--variable=DEBUGGER) echo "@DEBUGGER@"
|
||||
exit 0;;
|
||||
--variable=GNUSTEP_MAKEFILES) echo "$GNUSTEP_MAKEFILES"
|
||||
exit 0;;
|
||||
--variable=GNUMAKE) echo "@GNUMAKE@"
|
||||
|
|
|
@ -47,7 +47,7 @@ ifeq ($(OBJC_RUNTIME_LIB), ng)
|
|||
ifneq ($(DEFAULT_OBJC_RUNTIME_ABI),)
|
||||
RUNTIME_VERSION=$(DEFAULT_OBJC_RUNTIME_ABI)
|
||||
else
|
||||
RUNTIME_VERSION=gnustep-2.2
|
||||
RUNTIME_VERSION=gnustep-1.8
|
||||
endif
|
||||
endif
|
||||
RUNTIME_FLAG = -fobjc-runtime=$(RUNTIME_VERSION) -fblocks
|
||||
|
|
|
@ -7,35 +7,27 @@
|
|||
# This macro checks whether we are using a linker that has known problems with the gnustep-2.0 ABI.
|
||||
# If so, we currently just print a warning because we don't have a 100% accurate way of checking yet.
|
||||
#
|
||||
AC_DEFUN([GS_CHECK_ABI20_LINKER], [
|
||||
AC_MSG_CHECKING([which linker is being used])
|
||||
|
||||
echo 'int main() { return 0; }' > conftest.c
|
||||
|
||||
# Try compiling with verbose output to capture linker information.
|
||||
$CC $CFLAGS $LDFLAGS -o conftest conftest.c -Wl,--verbose > compile.log 2>&1
|
||||
|
||||
# Determine which linker is being used based on the log.
|
||||
linker="unknown" # Default to unknown.
|
||||
if grep -q "GNU ld" compile.log; then
|
||||
linker="GNU ld"
|
||||
# GNU gold does not print a header line, so we just check for "gold".
|
||||
elif grep -q "gold" compile.log; then
|
||||
linker="GNU gold"
|
||||
# LLD does not print a header line, so we just check for "lld".
|
||||
elif grep -q "lld" compile.log; then
|
||||
linker="lld"
|
||||
fi
|
||||
|
||||
AC_MSG_RESULT([$linker])
|
||||
|
||||
# Clean up the test artifacts.
|
||||
rm -f conftest.c conftest
|
||||
|
||||
# Based on the identified linker, we may want to display a warning or take other actions.
|
||||
if test "x$linker" = "xGNU ld"; then
|
||||
AC_MSG_WARN([The detected linker (GNU ld) might not produce working Objective-C binaries using the gnustep-2.0 ABI. Consider using GNU gold or LLD.])
|
||||
elif test "x$linker" = "xunknown" && test -n "$explicit_linker_flag"; then
|
||||
AC_MSG_WARN([Unable to confirm if the explicitly specified linker '$explicit_linker_flag' is compatible with the gnustep-2.0 ABI.])
|
||||
fi
|
||||
])
|
||||
AC_DEFUN([GS_CHECK_ABI20_LINKER], [dnl
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([AC_PROG_GREP])
|
||||
AC_CACHE_CHECK([for an gnustep-2.0 ABI compatible linker],[gs_cv_abi20_linker], [dnl
|
||||
gs_cv_abi20_linker="unkown"
|
||||
AS_VAR_PUSHDEF([LD], [gs_cv_abi20_linker_prog])
|
||||
LD=$($CC --print-prog-name=ld)
|
||||
if $LD --version | $GREP -q 'GNU ld'; then
|
||||
gs_cv_abi20_linker="unlikely (GNU ld)"
|
||||
elif $LD --version | $GREP -q 'GNU gold'; then
|
||||
gs_cv_abi20_linker="yes (GNU gold)"
|
||||
elif $LD --version | $GREP -q 'LLD'; then
|
||||
gs_cv_abi20_linker="yes (LLD)"
|
||||
fi
|
||||
AS_VAR_POPDEF([LD])
|
||||
])
|
||||
if echo "$gs_cv_abi20_linker" | $GREP -q '^yes'; then
|
||||
_gs_abi20_linker=yes
|
||||
else
|
||||
_gs_abi20_linker=no
|
||||
AC_MSG_WARN([The detected linker might not produce working Objective-C binaries using the gnustep-2.0 ABI. Consider using gold or LLD.])
|
||||
fi
|
||||
AS_VAR_IF([_gs_abi20_linker], ["yes"], [$1], [$2])
|
||||
])
|
|
@ -37,7 +37,7 @@ AC_DEFUN([GS_LIBRARY_COMBO],dnl
|
|||
])
|
||||
|
||||
AC_ARG_WITH([library-combo],
|
||||
[AS_HELP_STRING([--with-library-combo], [
|
||||
[AS_HELP_STRING([--with-libray-combo], [
|
||||
Define the default "library combo". The library combo is a string
|
||||
of the form aaa-bbb-ccc where 'aaa' is the Objective-C runtime
|
||||
library to use (examples are 'gnu' and 'apple'),
|
||||
|
|
|
@ -254,7 +254,7 @@ AC_DEFUN([GS_CHECK_OBJC_RUNTIME], [
|
|||
])
|
||||
|
||||
|
||||
# Helper macro for checking gnustep-2.x ABI support in libobjc via the __objc_load macro
|
||||
# Helper macro for checking gnustep-2.0 ABI support in libobjc via the __objc_load macro
|
||||
AC_DEFUN([_GS_HAVE_OBJC_LOAD], [
|
||||
AC_REQUIRE([GS_CHECK_OBJC_RUNTIME])
|
||||
AC_CHECK_FUNC([__objc_load])
|
||||
|
@ -266,11 +266,11 @@ AC_DEFUN([_GS_HAVE_OBJC_LOAD], [
|
|||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Checks for support for the gnustep-2.x ABI in the runtime library. Sets the `libobjc_SUPPORTS_ABI20' variable.
|
||||
# Checks for support for the gnustep-2.0 ABI in the runtime library. Sets the `libobjc_SUPPORTS_ABI20' variable.
|
||||
AC_DEFUN([GS_CHECK_RUNTIME_ABI20_SUPPORT], [
|
||||
AC_REQUIRE([GS_CHECK_OBJC_RUNTIME])
|
||||
AC_REQUIRE([_GS_HAVE_OBJC_LOAD])
|
||||
AC_CACHE_CHECK([whether runtime library supports the gnustep-2.x ABI],
|
||||
AC_CACHE_CHECK([whether runtime library supports the gnustep-2.0 ABI],
|
||||
[gs_cv_libobjc_abi_20], [
|
||||
if test x"$libobjc_SUPPORTS_ABI20" = x""; then
|
||||
gs_cv_libobjc_abi_20=$ac_cv_func___objc_load
|
||||
|
|
|
@ -13,13 +13,13 @@ AC_DEFUN([GS_RUNTIME_ABI],dnl
|
|||
AC_REQUIRE([GS_CHECK_GCC_VERSION])
|
||||
case "$OBJC_RUNTIME_LIB" in
|
||||
gnu) default_runtime_abi=gcc ;;
|
||||
ng) default_runtime_abi=gnustep-2.2 ;;
|
||||
ng) default_runtime_abi=gnustep-1.8 ;;
|
||||
*) default_runtime_abi="(unknown)" ;;
|
||||
esac
|
||||
if test ! x"$1" = x""; then
|
||||
default_runtime_abi="$1"
|
||||
elif test x"$OBJC_RUNTIME_LIB" = x"ng" -a x"$libobjc_SUPPORTS_ABI20" = x"yes" -a x"$CLANG_CC" = x"yes" -a "${gs_cv_gcc_major_version}" -ge "8"; then
|
||||
default_runtime_abi=gnustep-2.2
|
||||
default_runtime_abi=gnustep-2.0
|
||||
fi
|
||||
AC_ARG_WITH([runtime-abi],
|
||||
[AS_HELP_STRING([--with-runtime-abi], [
|
||||
|
@ -31,4 +31,4 @@ AC_DEFUN([GS_RUNTIME_ABI],dnl
|
|||
])
|
||||
AS_VAR_IF([_gs_cv_runtime_abi], ["(unknown)"], [AS_UNSET(gs_cv_runtime_abi)], [AS_VAR_SET([gs_cv_runtime_abi], [${_gs_cv_runtime_abi}])])
|
||||
AC_SUBST([gs_cv_runtime_abi])
|
||||
])
|
||||
])
|
|
@ -44,7 +44,7 @@ ifneq ($(messages),yes)
|
|||
INSIDE_ECHO_JAVA_COMPILING = echo "Compiling file $< ...";
|
||||
INSIDE_ECHO_JAVA_BATCH_COMPILING = echo " Compiling Java files for $(GNUSTEP_INSTANCE) ...";
|
||||
ECHO_LINKING = @(echo " Linking $(GNUSTEP_TYPE) $(GNUSTEP_INSTANCE) ...";
|
||||
ECHO_JAVAHING = @(echo " Running java header command on $< ...";
|
||||
ECHO_JAVAHING = @(echo " Running javah on $< ...";
|
||||
ECHO_INSTALLING = @(echo " Installing $(GNUSTEP_TYPE) $(GNUSTEP_INSTANCE)...";
|
||||
ECHO_UNINSTALLING = @(echo " Uninstalling $(GNUSTEP_TYPE) $(GNUSTEP_INSTANCE)...";
|
||||
ECHO_COPYING_INTO_DIR = @(echo " Copying $(GNUSTEP_TYPE) $(GNUSTEP_INSTANCE) into $(COPY_INTO_DIR)...";
|
||||
|
|
37
rules.make
37
rules.make
|
@ -204,20 +204,7 @@ ifeq ($(AUTO_DEPENDENCIES_FLAGS),)
|
|||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# Detect ARC support
|
||||
ifeq ($(OBJC_RUNTIME_LIB), ng)
|
||||
GS_RUNTIME_HAS_ARC = 1
|
||||
endif
|
||||
ifeq ($(OBJC_RUNTIME_LIB), apple)
|
||||
DARWIN_VERSION = $(patsubst darwin%,%,$(filter darwin%, $(GNUSTEP_TARGET_OS)))
|
||||
# Initial release of ARC in darwin10
|
||||
ifeq ($(shell echo "$(DARWIN_VERSION) >= 10" | bc), 1)
|
||||
GS_RUNTIME_HAS_ARC = 1
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(GS_RUNTIME_HAS_ARC),)
|
||||
# Projects may control the use of ARC by defining GS_WITH_ARC=1
|
||||
# or GS_WITH_ARC=0 in their GNUmakefile, or in the environment,
|
||||
# or as an argument to the 'make' command.
|
||||
|
@ -672,28 +659,10 @@ endif
|
|||
# Example of how this rule will be applied:
|
||||
# gnu/gnustep/base/NSObject.h : gnu/gnustep/base/NSObject.java
|
||||
# javah -o gnu/gnustep/base/NSObject.h gnu.gnustep.base.NSObject
|
||||
# or, on more recent releases than 8, we have to use javac and move the
|
||||
# resulting header file around t the correct location as javac does not
|
||||
# provide command line options to control the output file name.
|
||||
# NB. javac also fails to produce a header file when a java file does
|
||||
# not produce class information, so we catch that and generate an empty
|
||||
# header where necessary.
|
||||
%.h : %.java
|
||||
$(ECHO_NOTHING)if [ -x $(JAVAH) ]; then \
|
||||
$(JAVAH) \
|
||||
$(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_JAVAHFLAGS)) \
|
||||
$($<_FILE_FLAGS) -o $@ $(subst /,.,$*); \
|
||||
else \
|
||||
JAVA_DST_DIR=`dirname $@`; \
|
||||
$(JAVAC) -h $$JAVA_DST_DIR -sourcepath `dirname $*` \
|
||||
$(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_JAVAHFLAGS)) \
|
||||
$($<_FILE_FLAGS) $*.java; \
|
||||
if [ -e $$JAVA_DST_DIR/$(subst /,_,$@) ]; then \
|
||||
mv $$JAVA_DST_DIR/$(subst /,_,$@) $$JAVA_DST_DIR/`basename $@`; \
|
||||
else \
|
||||
touch $$JAVA_DST_DIR/`basename $@`; \
|
||||
fi \
|
||||
fi$(END_ECHO)
|
||||
$(ECHO_JAVAHING)$(JAVAH) \
|
||||
$(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_JAVAHFLAGS)) \
|
||||
$($<_FILE_FLAGS) -o $@ $(subst /,.,$*)$(END_ECHO)
|
||||
|
||||
%.c : %.psw
|
||||
pswrap -h $*.h -o $@ $<
|
||||
|
|
|
@ -1,4 +1,2 @@
|
|||
CVS
|
||||
*.svn
|
||||
*.git
|
||||
*.hg
|
||||
|
|
32
target.make
32
target.make
|
@ -24,9 +24,6 @@
|
|||
# the 'shared' variable, because we have not set it up yet when this
|
||||
# file is processed!
|
||||
|
||||
# variable to for all OSs treated as Linux and Linux-like
|
||||
IS_LINUX = no
|
||||
|
||||
#
|
||||
# Host and target specific settings
|
||||
#
|
||||
|
@ -46,14 +43,6 @@ endif
|
|||
INTERNAL_CFLAGS = -pthread
|
||||
INTERNAL_OBJCFLAGS = -pthread
|
||||
INTERNAL_LDFLAGS =
|
||||
|
||||
ifeq ($(debug), yes)
|
||||
# Embed PDB Debug Info on Windows MSVC
|
||||
ifeq ($(findstring windows, $(GNUSTEP_TARGET_OS)), windows)
|
||||
INTERNAL_LDFLAGS += -Wl,-debug
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(findstring android, $(GNUSTEP_TARGET_OS)), android)
|
||||
ifneq ($(GNUSTEP_TARGET_OS), windows)
|
||||
INTERNAL_LDFLAGS = -pthread
|
||||
|
@ -508,23 +497,12 @@ endif
|
|||
|
||||
####################################################
|
||||
#
|
||||
# Linux ELF with GNU or GNU/HURD
|
||||
# Linux ELF or GNU/Hurd
|
||||
#
|
||||
# The following ifeq matches both 'linux-gnu' (which is GNU/Linux ELF)
|
||||
# and 'gnu0.3' (I've been told GNUSTEP_TARGET_OS is 'gnu0.3' on
|
||||
# GNU/Hurd at the moment).
|
||||
# We treat GNU/HURD as GNU/Linux for now
|
||||
# GNU/Hurd at the moment). We want the same code in both cases.
|
||||
ifeq ($(findstring gnu, $(GNUSTEP_TARGET_OS)), gnu)
|
||||
IS_LINUX = yes
|
||||
endif
|
||||
|
||||
# The following ifeq matches 'linux-musl' but does not re-match 'linux-gnu'
|
||||
# We treat is as GNU/Linux
|
||||
ifeq ($(findstring linux-musl, $(GNUSTEP_TARGET_OS)), linux-musl)
|
||||
IS_LINUX = yes
|
||||
endif
|
||||
|
||||
ifeq ($(IS_LINUX), yes)
|
||||
HAVE_SHARED_LIBS = yes
|
||||
SHARED_LIB_LINK_CMD = \
|
||||
$(LD) $(SHARED_LD_PREFLAGS) -shared -Wl,-soname,$(LIB_LINK_SONAME_FILE) \
|
||||
|
@ -1031,10 +1009,6 @@ BUNDLE_LINK_CMD = \
|
|||
# On Windows MSVC, class name symbols start with '__'
|
||||
EXTRACT_CLASS_NAMES_COMMAND = $(NM) -Pg $$object_file | sed -n -e '/^._OBJC_CLASS_[A-Za-z0-9_.]* [^U]/ {s/^._OBJC_CLASS_\([A-Za-z0-9_.]*\) [^U].*/\1/p;}' -e '/^__objc_class_name_[A-Za-z0-9_.]* [^U]/ {s/^__objc_class_name_\([A-Za-z0-9_.]*\) [^U].*/\1/p;}'
|
||||
|
||||
# Suppress Clang warning in Base when including "GNUstepBase/GSConfig.h":
|
||||
# #include resolved using non-portable Microsoft search rules as: ././GNUstepBase/GSConfig.h
|
||||
ADDITIONAL_FLAGS += -Wno-microsoft-include
|
||||
|
||||
endif
|
||||
|
||||
# end Windows MSVC
|
||||
|
@ -1117,7 +1091,7 @@ SHARED_LIBEXT = .so
|
|||
HAVE_BUNDLES = yes
|
||||
BUNDLE_LD = $(LD)
|
||||
#BUNDLE_LDFLAGS += -shared -mimpure-text
|
||||
BUNDLE_LDFLAGS += -nodefaultlibs -Xlinker -Wl,-r -no-pie
|
||||
BUNDLE_LDFLAGS += -nodefaultlibs -Xlinker -Wl,-r
|
||||
endif
|
||||
|
||||
# end Unixware
|
||||
|
|
Loading…
Reference in a new issue