mirror of
https://github.com/gnustep/tools-make.git
synced 2025-04-20 12:50:48 +00:00
Compare commits
55 commits
keysight_s
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
c7b5fa3a19 | ||
|
0bda6500e8 | ||
|
de77a9693f | ||
|
199b1eb071 | ||
|
96febdc8eb | ||
|
8a2bc0b214 | ||
|
9eb9eba0d6 | ||
|
0cf679c1b6 | ||
|
e3bbdd276b | ||
|
4602023a70 | ||
|
214a57eb7a | ||
|
a613c2668c | ||
|
16148bc3d8 | ||
|
1493a378c7 | ||
|
d739198f1d | ||
|
2b67e39517 | ||
|
80c7154cd0 | ||
|
4074b9f8d3 | ||
|
da6b90528e | ||
|
06496f69ac | ||
|
2ee48ebe21 | ||
|
27cbcbf6ca | ||
|
23485f8592 | ||
|
c6a561d713 | ||
|
1d48b14ff3 | ||
|
95d706bdb8 | ||
|
1fa879082c | ||
|
d0fae65d78 | ||
|
ffe5f324e1 | ||
|
554d207704 | ||
|
7cfd293ad8 | ||
|
c2a7753ffc | ||
|
e480e8b3bc | ||
|
0cf140efc0 | ||
|
adbab30895 | ||
|
dc8387f6f9 | ||
|
77c46a1f0e | ||
|
6d6548bef9 | ||
|
fa9df0b6fd | ||
|
9de817126c | ||
|
76a1df3b61 | ||
|
d5002f8405 | ||
|
2e99da71ef | ||
|
a95eb8e724 | ||
|
6d6d77ce93 | ||
|
ca20ad3cfd | ||
|
cd8d5259ee | ||
|
d1f1f672c7 | ||
|
209af1c9e9 | ||
|
e5c3acf855 | ||
|
c1703a066a | ||
|
30e6966ae5 | ||
|
ee5dc99e07 | ||
|
25ad1abc3e | ||
|
8c45f895ee |
33 changed files with 1264 additions and 1853 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -4,6 +4,7 @@ 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.0 is now available.
|
||||
The GNUstep Makefile Package version 2.9.3 is now available.
|
||||
|
||||
1.1 What is the GNUstep Makefile Package?
|
||||
=========================================
|
||||
|
@ -12,43 +12,24 @@ 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.0'
|
||||
1.2 Changes in version ‘2.9.3’
|
||||
==============================
|
||||
|
||||
* Better check for objc runtime on Windows.
|
||||
• Added support for ASAN/LSAN builds
|
||||
|
||||
* 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.
|
||||
• Various minor bugfixes.
|
||||
|
||||
1.3 Obtaining gnustep-make
|
||||
==========================
|
||||
|
||||
You can get the gnustep-make-2.9.0.tar.gz distribution file at
|
||||
You can get the gnustep-make-2.9.3.tar.gz distribution file at
|
||||
<ftp://ftp.gnustep.org/pub/gnustep/core>
|
||||
|
||||
It is accompanied by gnustep-make-2.9.0.tar.gz.sig, a PGP signature
|
||||
It is accompanied by gnustep-make-2.9.3.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.0.tar.gz.sig
|
||||
gpg --verify gnustep-make-2.9.3.tar.gz.sig
|
||||
|
||||
Signature has been created using the key with the following
|
||||
fingerprint:
|
||||
|
|
75
ChangeLog
75
ChangeLog
|
@ -1,3 +1,78 @@
|
|||
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
|
||||
|
|
|
@ -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
|
||||
Objective-C runtime: NeXT, GNU, GNUstep/Apple
|
||||
Foundation library: NeXT, PDO, gnustep-base, libFoundation
|
||||
GUI library: NeXT, gnustep-gui
|
||||
|
||||
Objective-C runtime: nx (for NeXT), gnu (for GNU)
|
||||
Objective-C runtime: nx (for NeXT), gnu (for GNU), ng (for Next Generation (GNUstep or Apple for ObjC-2)
|
||||
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,6 +80,7 @@ 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
|
||||
|
@ -339,15 +340,20 @@ 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
|
||||
enabled but no profile information, the command line would be:
|
||||
and sanitization enabled but no profile information, the command line would be:
|
||||
|
||||
$ make shared=yes debug=yes profile=no
|
||||
$ make shared=yes debug=yes asan=yes profile=no
|
||||
|
||||
The last argument is not necessary because the default is to build a version
|
||||
without profile information.
|
||||
|
@ -358,62 +364,6 @@ 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
|
||||
=====================
|
||||
|
||||
|
@ -428,15 +378,7 @@ 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 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.
|
||||
with the .app extension.
|
||||
|
||||
The structure of makefiles
|
||||
==========================
|
||||
|
@ -483,4 +425,4 @@ The makefile package is installed under $(GNUSTEP_SYSTEM_ROOT)/Library/Makefiles
|
|||
|
||||
Ovidiu Predescu
|
||||
|
||||
Last updated: April, 2001
|
||||
Last updated: Jan, 2025
|
||||
|
|
|
@ -26,10 +26,11 @@ any later version published by the Free Software Foundation.
|
|||
@contents
|
||||
|
||||
|
||||
@node Top, The System Domain, (dir), (dir)
|
||||
@chapter GNUstep Filesystem Hierarchy
|
||||
@node Top
|
||||
@top GNUstep Filesystem Hierarchy
|
||||
|
||||
@menu
|
||||
* Introduction::
|
||||
* The System Domain::
|
||||
* The Local Domain::
|
||||
* The Network Domain::
|
||||
|
@ -38,6 +39,9 @@ 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,
|
||||
|
@ -83,7 +87,7 @@ filesystem layout is now the FHS (Unix) layout rooted in
|
|||
@file{/usr/local}.
|
||||
|
||||
@node The System Domain, The Local Domain, Top, Top
|
||||
@section The System Domain
|
||||
@chapter The System Domain
|
||||
|
||||
The System domain contains all files which were included in the
|
||||
default GNUstep installation or distribution. These files are
|
||||
|
@ -105,7 +109,7 @@ the @file{System} folder of the GNUstep installation.
|
|||
|
||||
|
||||
@node The Local Domain, The Network Domain, The System Domain, Top
|
||||
@section The Local Domain
|
||||
@chapter 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
|
||||
|
@ -125,7 +129,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
|
||||
@section The Network Domain
|
||||
@chapter The Network Domain
|
||||
|
||||
The @file{Network} domain is optional and is usually coalesced with
|
||||
the @file{Local} domain by default; this is particularly appropriate
|
||||
|
@ -151,7 +155,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
|
||||
@section The Users Domain
|
||||
@chapter 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
|
||||
|
@ -167,7 +171,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
|
||||
@section Structure of a Domain
|
||||
@chapter 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
|
||||
|
@ -192,7 +196,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
|
||||
@subsection The GNUstep Filesystem Layout
|
||||
@section 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
|
||||
|
@ -234,7 +238,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
|
||||
@subsection Accessing Domain Locations
|
||||
@section 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,
|
||||
|
@ -277,7 +281,7 @@ that can be used to access them.
|
|||
|
||||
|
||||
@node Applications, Admin Applications , Accessing Domain Locations, Structure of a Domain
|
||||
@subsection Applications
|
||||
@section Applications
|
||||
|
||||
The @file{Applications} location contains applications. Applications
|
||||
are programs that typically have a GUI interface and contain
|
||||
|
@ -306,7 +310,7 @@ using the @code{NSApplicationDirectory} directory key for
|
|||
|
||||
|
||||
@node Admin Applications, Web Applications, Applications, Structure of a Domain
|
||||
@subsection Admin Applications
|
||||
@section Admin Applications
|
||||
|
||||
The @file{Admin Applications} location contains applications that are
|
||||
only useful to the system administrator. A normal user wouldn't have
|
||||
|
@ -326,7 +330,7 @@ by using the @code{NSAdminApplicationDirectory} directory key for
|
|||
|
||||
|
||||
@node Web Applications, Tools, Admin Applications, Structure of a Domain
|
||||
@subsection Web Applications
|
||||
@section Web Applications
|
||||
|
||||
The @file{Web Applications} location contains web applications that
|
||||
were created using GSWeb or SOPE. These are programs contained with
|
||||
|
@ -347,7 +351,7 @@ by using the @code{GSWebApplicationDirectory} directory key for
|
|||
|
||||
|
||||
@node Tools, Admin Tools, Web Applications, Structure of a Domain
|
||||
@subsection Tools
|
||||
@section Tools
|
||||
|
||||
The @file{Tools} location contains tools and executable scripts. Tools
|
||||
are programs which generally have a command-line interface. Most are
|
||||
|
@ -376,7 +380,7 @@ In gnustep-base, the @file{Tools} locations are available by using the
|
|||
|
||||
|
||||
@node Admin Tools, Library, Tools, Structure of a Domain
|
||||
@subsection Admin Tools
|
||||
@section Admin Tools
|
||||
|
||||
The @file{Admin Tools} location contains tools and executable scripts
|
||||
that are only useful to the system administrator. A normal user
|
||||
|
@ -397,7 +401,7 @@ using the @code{GSAdminToolsDirectory} directory key for
|
|||
|
||||
|
||||
@node Library, Headers, Admin Tools, Structure of a Domain
|
||||
@subsection Library
|
||||
@section Library
|
||||
|
||||
The @file{Library} location contains most of the resources that are
|
||||
located and loaded at runtime. These resources are organized in
|
||||
|
@ -435,7 +439,7 @@ using the @code{NSLibraryDirectory} directory key for
|
|||
|
||||
|
||||
@node Headers, Libraries, Library, Structure of a Domain
|
||||
@subsection Headers
|
||||
@section Headers
|
||||
|
||||
The @code{Headers} location contains header files associated with a
|
||||
library located in @code{Libraries}.
|
||||
|
@ -453,7 +457,7 @@ available.
|
|||
|
||||
|
||||
@node Libraries, Documentation, Headers, Structure of a Domain
|
||||
@subsection Libraries
|
||||
@section Libraries
|
||||
|
||||
The @code{Libraries} location contains libraries (shared/static object
|
||||
files that are linked into programs). (NOTE: In the GNUstep
|
||||
|
@ -481,7 +485,7 @@ the @code{GSLibrariesDirectory} directory key for
|
|||
|
||||
|
||||
@node Documentation, Documentation (Info), Libraries, Structure of a Domain
|
||||
@subsection Documentation
|
||||
@section Documentation
|
||||
|
||||
The @code{Documentation} location contains documentation for
|
||||
libraries, applications, etc.
|
||||
|
@ -499,7 +503,7 @@ using the @code{NSDocumentationDirectory} directory key for
|
|||
|
||||
|
||||
@node Documentation (Info), Documentation (Man Pages), Documentation, Structure of a Domain
|
||||
@subsection Documentation (Info)
|
||||
@section Documentation (Info)
|
||||
|
||||
The @code{Documentation (Info)} location contains documentation in
|
||||
info format.
|
||||
|
@ -517,7 +521,7 @@ currently available.
|
|||
|
||||
|
||||
@node Documentation (Man Pages), Folders inside Library, Documentation (Info), Structure of a Domain
|
||||
@subsection Documentation (Man Pages)
|
||||
@section Documentation (Man Pages)
|
||||
|
||||
|
||||
The @code{Documentation (Man Pages)} location contains Unix man pages.
|
||||
|
@ -535,7 +539,7 @@ currently available.
|
|||
|
||||
|
||||
@node Folders inside Library, , Documentation (Man Pages), Structure of a Domain
|
||||
@subsection Folders inside Library
|
||||
@section 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,
|
||||
|
@ -570,7 +574,7 @@ All such cases should be documented here.
|
|||
@end menu
|
||||
|
||||
@node ApplicationSupport, Bundles, Folders inside Library, Folders inside Library
|
||||
@subsubsection ApplicationSupport
|
||||
@subsection ApplicationSupport
|
||||
|
||||
This directory contains bundles and other resources that are provided
|
||||
for an application, but that are not specifically distributed with
|
||||
|
@ -595,7 +599,7 @@ by using the @code{NSApplicationSupportDirectory} directory key for
|
|||
@code{NSSearchPathForDirectoriesInDomains()}.
|
||||
|
||||
@node Bundles, ColorPickers, ApplicationSupport, Folders inside Library
|
||||
@subsubsection Bundles
|
||||
@subsection Bundles
|
||||
|
||||
This directory contains bundles. Bundles are collections of executable
|
||||
code and associated resources that may be loaded at runtime by an
|
||||
|
@ -615,7 +619,7 @@ folder inside the @code{Library} location.
|
|||
|
||||
|
||||
@node ColorPickers, Colors, Bundles, Folders inside Library
|
||||
@subsubsection ColorPickers
|
||||
@subsection ColorPickers
|
||||
|
||||
This directory contains bundles that are used by the color picking
|
||||
system. They may include code that implements picking colors from a
|
||||
|
@ -625,7 +629,7 @@ This folder is accessed as the @code{ColorPickers} folder inside
|
|||
@code{Library}.
|
||||
|
||||
@node Colors, DTDs, ColorPickers, Folders inside Library
|
||||
@subsubsection Colors
|
||||
@subsection Colors
|
||||
|
||||
This directory contains files that define specific color mappings for
|
||||
use within libraries or applications that require color definitions.
|
||||
|
@ -634,7 +638,7 @@ This folder is accessed as the @code{Colors} folder inside
|
|||
@code{Library}.
|
||||
|
||||
@node DTDs, DocTemplates, Colors, Folders inside Library
|
||||
@subsubsection DTDs
|
||||
@subsection DTDs
|
||||
|
||||
This directory contains any Document Type Definitions
|
||||
required for document parsing.
|
||||
|
@ -643,7 +647,7 @@ This folder is accessed as the @code{DTDs} folder inside
|
|||
@code{Library}.
|
||||
|
||||
@node DocTemplates, Fonts, DTDs, Folders inside Library
|
||||
@subsubsection DocTemplates
|
||||
@subsection DocTemplates
|
||||
|
||||
This directory contains text templates for automatic documentation, as
|
||||
generated by autodoc. Any additional documentation template types
|
||||
|
@ -657,7 +661,7 @@ This folder is accessed as the @code{DocTemplates} folder inside
|
|||
@code{Library}.
|
||||
|
||||
@node Fonts, Frameworks, DocTemplates, Folders inside Library
|
||||
@subsubsection Fonts
|
||||
@subsection Fonts
|
||||
|
||||
This directory contains fonts and files for organizing font information.
|
||||
|
||||
|
@ -665,7 +669,7 @@ This folder is accessed as the @code{Fonts} folder inside
|
|||
@code{Library}.
|
||||
|
||||
@node Frameworks, Images, Fonts, Folders inside Library
|
||||
@subsubsection Frameworks
|
||||
@subsection Frameworks
|
||||
|
||||
This directory contains frameworks. Frameworks are a type of bundle,
|
||||
which include, within their directory structure, a shared library
|
||||
|
@ -692,10 +696,10 @@ using the @code{GSFrameworksDirectory} directory key for
|
|||
@code{NSSearchPathForDirectoriesInDomains()}.
|
||||
|
||||
@node Images, Libraries/Java, Frameworks, Folders inside Library
|
||||
@subsubsection Images
|
||||
@subsection Images
|
||||
|
||||
@node Libraries/Java, Libraries/Resources, Images, Folders inside Library
|
||||
@subsubsection Libraries/Java
|
||||
@subsection 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
|
||||
|
@ -712,7 +716,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
|
||||
@subsubsection Libraries/Resources
|
||||
@subsection Libraries/Resources
|
||||
|
||||
This directory contains resources used by shared libraries. In
|
||||
GNUstep a shared library can have an associated resource bundle (a
|
||||
|
@ -736,10 +740,10 @@ library by using the @code{[NSBundle +bundleForLibrary:]} method (it
|
|||
is a GNUstep extension).
|
||||
|
||||
@node KeyBindings, PostScript, Libraries/Resources, Folders inside Library
|
||||
@subsubsection KeyBindings
|
||||
@subsection KeyBindings
|
||||
|
||||
@node PostScript, Services, KeyBindings, Folders inside Library
|
||||
@subsubsection PostScript
|
||||
@subsection PostScript
|
||||
|
||||
This directory contains directories for specific PostScript document
|
||||
types and definitions, allowing applications written using the GNUstep
|
||||
|
@ -750,7 +754,7 @@ This folder is accessed as the @code{PostScript} folder inside
|
|||
@code{Library}.
|
||||
|
||||
@node Services, Sounds, PostScript, Folders inside Library
|
||||
@subsubsection Services
|
||||
@subsection Services
|
||||
|
||||
This directory contains bundles that are specifically built to provide
|
||||
functionality between different programs (for example, spell checking,
|
||||
|
@ -768,12 +772,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
|
||||
@subsubsection Sounds
|
||||
@subsection Sounds
|
||||
|
||||
This directory contains sound files.
|
||||
|
||||
@node Tools/Resources, , Sounds, Folders inside Library
|
||||
@subsubsection Tools/Resources
|
||||
@subsection Tools/Resources
|
||||
|
||||
This directory contains resources used by tools. In GNUstep a tool
|
||||
can have an associated resource bundle (a bundle only composed of
|
||||
|
@ -796,7 +800,7 @@ semantic is a GNUstep extension).
|
|||
|
||||
|
||||
@node Configuration, , Structure of a Domain, Top
|
||||
@section Configuration
|
||||
@chapter Configuration
|
||||
|
||||
GNUstep supports arbitrary filesystem layouts to map the locations in
|
||||
the various domains to directories on the filesystem.
|
||||
|
@ -841,7 +845,7 @@ them.
|
|||
@end menu
|
||||
|
||||
@node File Format, Windows (MINGW), Configuration, Configuration
|
||||
@subsection File Format
|
||||
@section File Format
|
||||
|
||||
By default, the configuration file is called GNUstep.conf; it
|
||||
typically exists in /etc/GNUstep or /usr/local/etc/GNUstep (depending
|
||||
|
@ -865,7 +869,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
|
||||
@subsection Windows (MINGW)
|
||||
@section 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)
|
||||
@chapter Makefile Package
|
||||
@top 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
|
||||
@section Introduction
|
||||
@chapter 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
|
||||
@section Structure of a Makefile
|
||||
@chapter 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,10 +98,11 @@ This is all that is necessary to define the project.
|
|||
|
||||
|
||||
@node Running Make, Project Types, Makefile Structure, Top
|
||||
@section Running Make
|
||||
@chapter Running Make
|
||||
@menu
|
||||
* Debug Information::
|
||||
* Profile Information::
|
||||
* Memory Sanitisation::
|
||||
* Library Types::
|
||||
@end menu
|
||||
|
||||
|
@ -111,7 +112,7 @@ the package, and the package is compiled without any additional
|
|||
interaction.
|
||||
|
||||
@node Debug Information, Profile Information, Running Make, Running Make
|
||||
@subsection Debug Information
|
||||
@section Debug Information
|
||||
|
||||
By default the Makefile Package tells the compiler to generate
|
||||
debugging information when compiling Objective-C and C files. The
|
||||
|
@ -123,8 +124,8 @@ not put into the binary files.
|
|||
make debug=no
|
||||
@end smallexample
|
||||
|
||||
@node Profile Information, Library Types, Debug Information, Running Make
|
||||
@subsection Profile Information
|
||||
@node Profile Information, Memory Sanitisation, Debug Information, Running Make
|
||||
@section Profile Information
|
||||
|
||||
By default the Makefile Package does not tell the compiler to generate
|
||||
profiling information when compiling Objective-C and C files. The
|
||||
|
@ -136,8 +137,59 @@ 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
|
||||
@subsection Static, Shared, and Dynamic Link Libraries
|
||||
@section 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
|
||||
|
@ -157,7 +209,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
|
||||
@section Project Types
|
||||
@chapter Project Types
|
||||
@menu
|
||||
* aggregate.make::
|
||||
* application.make::
|
||||
|
@ -200,7 +252,7 @@ types) is in resource-set.make.
|
|||
|
||||
|
||||
@node aggregate.make, application.make, Project Types, Project Types
|
||||
@subsection Aggregate (@file{aggregate.make})
|
||||
@section 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
|
||||
|
@ -213,46 +265,46 @@ that the Aggregate project should build.
|
|||
@end defvr
|
||||
|
||||
@node application.make, bundle.make, aggregate.make, Project Types
|
||||
@subsection Graphical Applications (@file{application.make})
|
||||
@section 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
|
||||
@subsection Bundles (@file{bundle.make})
|
||||
@section 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
|
||||
@subsection Command Line C Tools (@file{ctool.make})
|
||||
@section 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
|
||||
@subsection Documentation (@file{documentation.make})
|
||||
@section 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
|
||||
@subsection Frameworks (@file{framework.make})
|
||||
@section 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
|
||||
@subsection Java (@file{java.make})
|
||||
@section 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.
|
||||
|
||||
@subsubsection Project Variables
|
||||
@subsection Project Variables
|
||||
|
||||
@defvr {Java project} JAVA_PACKAGE_NAME
|
||||
@code{JAVA_PACKAGE_NAME} is the reverse DNS style Java package name that
|
||||
|
@ -268,7 +320,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}.
|
||||
|
@ -295,7 +347,7 @@ with all dots replaced by hyphens.
|
|||
@end defvr
|
||||
|
||||
@node library.make, native-library.make, java.make, Project Types
|
||||
@subsection Libraries (@file{library.make})
|
||||
@section Libraries (@file{library.make})
|
||||
@menu
|
||||
* library.make variables::
|
||||
* Example Library Makefile::
|
||||
|
@ -308,7 +360,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
|
||||
@subsubsection Project Variables
|
||||
@subsection Project Variables
|
||||
|
||||
@defvr {Library project} LIBRARY_NAME
|
||||
@code{LIBRARY_NAME} should be assigned the list of name of libraries to
|
||||
|
@ -446,7 +498,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
|
||||
@subsubsection Example Makefile
|
||||
@subsection Example Makefile
|
||||
|
||||
This example makefile illustrates two libraries, @file{libone} and
|
||||
@file{libtwo}, that are to be generated.
|
||||
|
@ -514,7 +566,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
|
||||
@subsection Native Library (@file{native-library.make})
|
||||
@section 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
|
||||
|
@ -541,7 +593,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
|
||||
@subsection NSIS Installer (@file{nsis.make})
|
||||
@section 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,
|
||||
|
@ -592,7 +644,7 @@ If not set it defaults to @code{LOCAL}.
|
|||
@end defvr
|
||||
|
||||
@node objc.make, palette.make, nsis.make, Project Types
|
||||
@subsection Objective-C Programs (@file{objc.make})
|
||||
@section Objective-C Programs (@file{objc.make})
|
||||
@menu
|
||||
* objc.make variables::
|
||||
* Example ObjC Makefile::
|
||||
|
@ -604,7 +656,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
|
||||
@subsubsection Project Variables
|
||||
@subsection Project Variables
|
||||
|
||||
Most of the project variables work the same as in Library
|
||||
projects (see @ref{library.make}).
|
||||
|
@ -630,7 +682,7 @@ of the program as listed by the @code{OBJC_PROGRAM_NAME} variable.
|
|||
@end defvr
|
||||
|
||||
@node Example ObjC Makefile, , objc.make variables, objc.make
|
||||
@subsubsection Example Makefile
|
||||
@subsection Example Makefile
|
||||
|
||||
This makefile illustrates two Objective-C programs, @file{simple} and
|
||||
@file{list} that are to be generated.
|
||||
|
@ -677,13 +729,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
|
||||
@subsection Palettes (@file{palette.make})
|
||||
@section 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
|
||||
@subsection RPMs (@file{rpm.make})
|
||||
@section 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
|
||||
|
@ -740,25 +792,25 @@ Library containing the Objective-C runtime.
|
|||
@end example
|
||||
|
||||
@node service.make, subproject.make, rpm.make, Project Types
|
||||
@subsection Services (@file{service.make})
|
||||
@section 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
|
||||
@subsection Subprojects (@file{subproject.make})
|
||||
@section 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
|
||||
@subsection Command Line Tools (@file{tool.make})
|
||||
@section 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
|
||||
@section Global Variables (@file{GNUmakefile.preamble})
|
||||
@chapter 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
|
||||
|
@ -977,7 +1029,7 @@ LIBRARIES_DEPEND_UPON = -lsimple $(FND_LIBS) $(OBJC_LIBS) $(SYSTEM_LIBS)
|
|||
|
||||
|
||||
@node GNUmakefile.postamble, Common Variables, GNUmakefile.preamble, Top
|
||||
@section Global Rules (@file{GNUmakefile.postamble})
|
||||
@chapter 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
|
||||
|
@ -993,7 +1045,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
|
||||
@section Common Variables (@file{common.make})
|
||||
@chapter Common Variables (@file{common.make})
|
||||
@menu
|
||||
* Directory Paths::
|
||||
* Scripts::
|
||||
|
@ -1013,7 +1065,7 @@ defined variables as the resultant behaviour of the Makefile Package is
|
|||
undefined.
|
||||
|
||||
@node Directory Paths, Scripts, Common Variables, Common Variables
|
||||
@subsection Directory Paths
|
||||
@section Directory Paths
|
||||
|
||||
@defvar GNUSTEP_MAKEFILES
|
||||
@code{GNUSTEP_MAKEFILES} is the absolute path to the directory where the
|
||||
|
@ -1180,7 +1232,7 @@ where the binary file is located.
|
|||
@end defvar
|
||||
|
||||
@node Scripts, Platform Information, Directory Paths, Common Variables
|
||||
@subsection Scripts
|
||||
@section Scripts
|
||||
|
||||
@defvar CONFIG_GUESS_SCRIPT
|
||||
@code{CONFIG_GUESS_SCRIPT} is the absolute path to the
|
||||
|
@ -1263,7 +1315,7 @@ script; it is used internally by the Makefile Package.
|
|||
@end defvar
|
||||
|
||||
@node Platform Information, Library Combination, Scripts, Common Variables
|
||||
@subsection Host and Target Platform Information
|
||||
@section Host and Target Platform Information
|
||||
|
||||
@defvar GNUSTEP_HOST
|
||||
@code{GNUSTEP_HOST} is the canonical host platform name; i.e. the name
|
||||
|
@ -1340,7 +1392,7 @@ platform, see Cross Compiling.
|
|||
@end defvar
|
||||
|
||||
@node Library Combination, Overridable Flags, Platform Information, Common Variables
|
||||
@subsection Library Combination
|
||||
@section Library Combination
|
||||
|
||||
@defvar OBJC_RUNTIME_LIB
|
||||
@code{OBJC_RUNTIME_LIB} is assigned the code that indicates the
|
||||
|
@ -1489,7 +1541,7 @@ there is not backend library; i.e. @code{GUI_BACKEND_LIB} is
|
|||
@end defvar
|
||||
|
||||
@node Overridable Flags, , Library Combination, Common Variables
|
||||
@subsection Overridable Flags
|
||||
@section Overridable Flags
|
||||
|
||||
@defvar OBJCFLAGS
|
||||
@code{OBJCFLAGS} are flags that are passed to the compiler when
|
||||
|
@ -1576,7 +1628,7 @@ make documentation=no
|
|||
@end smallexample
|
||||
|
||||
@node Other Variables, , Common Variables, Top
|
||||
@section Other Variables
|
||||
@chapter 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
|
||||
|
|
|
@ -9,6 +9,28 @@
|
|||
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
|
||||
|
@ -19,8 +41,6 @@ The currently released version is @samp{@value{GNUSTEP-MAKE-VERSION}}.
|
|||
|
||||
@end itemize
|
||||
|
||||
@ifclear ANNOUNCE-ONLY
|
||||
|
||||
@section Changes in version @samp{2.9.0}
|
||||
|
||||
@itemize
|
||||
|
|
|
@ -4,6 +4,24 @@ 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.
|
||||
|
|
|
@ -31,38 +31,38 @@ GNUSTEP_LOCAL_USERS_DIR=/home
|
|||
# paths.
|
||||
GNUSTEP_MAKEFILES=/share/GNUstep/Makefiles
|
||||
|
||||
GNUSTEP_SYSTEM_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_WEB_APPS=/lib/GNUstep/WebApplications
|
||||
GNUSTEP_SYSTEM_APPS=/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_WEB_APPS=/@libdir@/GNUstep/WebApplications
|
||||
GNUSTEP_SYSTEM_TOOLS=/bin
|
||||
GNUSTEP_SYSTEM_ADMIN_TOOLS=/sbin
|
||||
GNUSTEP_SYSTEM_LIBRARY=/lib/GNUstep
|
||||
GNUSTEP_SYSTEM_LIBRARY=/@libdir@/GNUstep
|
||||
GNUSTEP_SYSTEM_HEADERS=/include
|
||||
GNUSTEP_SYSTEM_LIBRARIES=/lib
|
||||
GNUSTEP_SYSTEM_LIBRARIES=/@libdir@
|
||||
GNUSTEP_SYSTEM_DOC=/share/GNUstep/Documentation
|
||||
GNUSTEP_SYSTEM_DOC_MAN=/share/man
|
||||
GNUSTEP_SYSTEM_DOC_INFO=/share/info
|
||||
|
||||
GNUSTEP_NETWORK_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_WEB_APPS=/lib/GNUstep/WebApplications
|
||||
GNUSTEP_NETWORK_APPS=/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_WEB_APPS=/@libdir@/GNUstep/WebApplications
|
||||
GNUSTEP_NETWORK_TOOLS=/bin
|
||||
GNUSTEP_NETWORK_ADMIN_TOOLS=/sbin
|
||||
GNUSTEP_NETWORK_LIBRARY=/lib/GNUstep
|
||||
GNUSTEP_NETWORK_LIBRARY=/@libdir@/GNUstep
|
||||
GNUSTEP_NETWORK_HEADERS=/include
|
||||
GNUSTEP_NETWORK_LIBRARIES=/lib
|
||||
GNUSTEP_NETWORK_LIBRARIES=/@libdir@
|
||||
GNUSTEP_NETWORK_DOC=/share/GNUstep/Documentation
|
||||
GNUSTEP_NETWORK_DOC_MAN=/share/man
|
||||
GNUSTEP_NETWORK_DOC_INFO=/share/info
|
||||
|
||||
GNUSTEP_LOCAL_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_LOCAL_ADMIN_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_LOCAL_WEB_APPS=/lib/GNUstep/WebApplications
|
||||
GNUSTEP_LOCAL_APPS=/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_LOCAL_ADMIN_APPS=/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_LOCAL_WEB_APPS=/@libdir@/GNUstep/WebApplications
|
||||
GNUSTEP_LOCAL_TOOLS=/bin
|
||||
GNUSTEP_LOCAL_ADMIN_TOOLS=/sbin
|
||||
GNUSTEP_LOCAL_LIBRARY=/lib/GNUstep
|
||||
GNUSTEP_LOCAL_LIBRARY=/@libdir@/GNUstep
|
||||
GNUSTEP_LOCAL_HEADERS=/include
|
||||
GNUSTEP_LOCAL_LIBRARIES=/lib
|
||||
GNUSTEP_LOCAL_LIBRARIES=/@libdir@
|
||||
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=/lib/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_WEB_APPS=/lib/GNUstep/WebApplications
|
||||
GNUSTEP_SYSTEM_APPS=/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_WEB_APPS=/@libdir@/GNUstep/WebApplications
|
||||
GNUSTEP_SYSTEM_TOOLS=/bin
|
||||
GNUSTEP_SYSTEM_ADMIN_TOOLS=/sbin
|
||||
GNUSTEP_SYSTEM_LIBRARY=/lib/GNUstep
|
||||
GNUSTEP_SYSTEM_LIBRARY=/@libdir@/GNUstep
|
||||
GNUSTEP_SYSTEM_HEADERS=/include
|
||||
GNUSTEP_SYSTEM_LIBRARIES=/lib
|
||||
GNUSTEP_SYSTEM_LIBRARIES=/@libdir@
|
||||
GNUSTEP_SYSTEM_DOC=/share/GNUstep/Documentation
|
||||
GNUSTEP_SYSTEM_DOC_MAN=/share/man
|
||||
GNUSTEP_SYSTEM_DOC_INFO=/share/info
|
||||
|
||||
GNUSTEP_NETWORK_APPS=/local/lib/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=/local/lib/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_WEB_APPS=/lib/GNUstep/WebApplications
|
||||
GNUSTEP_NETWORK_APPS=/local/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=/local/@libdir@/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_WEB_APPS=/@libdir@/GNUstep/WebApplications
|
||||
GNUSTEP_NETWORK_TOOLS=/local/bin
|
||||
GNUSTEP_NETWORK_ADMIN_TOOLS=/local/sbin
|
||||
GNUSTEP_NETWORK_LIBRARY=/local/lib/GNUstep
|
||||
GNUSTEP_NETWORK_LIBRARY=/local/@libdir@/GNUstep
|
||||
GNUSTEP_NETWORK_HEADERS=/local/include
|
||||
GNUSTEP_NETWORK_LIBRARIES=/local/lib
|
||||
GNUSTEP_NETWORK_LIBRARIES=/local/@libdir@
|
||||
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/lib/GNUstep/Applications
|
||||
GNUSTEP_LOCAL_ADMIN_APPS=/local/lib/GNUstep/Applications
|
||||
GNUSTEP_LOCAL_WEB_APPS=/local/lib/GNUstep/WebApplications
|
||||
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_TOOLS=/local/bin
|
||||
GNUSTEP_LOCAL_ADMIN_TOOLS=/local/sbin
|
||||
GNUSTEP_LOCAL_LIBRARY=/local/lib/GNUstep
|
||||
GNUSTEP_LOCAL_LIBRARY=/local/@libdir@/GNUstep
|
||||
GNUSTEP_LOCAL_HEADERS=/local/include
|
||||
GNUSTEP_LOCAL_LIBRARIES=/local/lib
|
||||
GNUSTEP_LOCAL_LIBRARIES=/local/@libdir@
|
||||
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) "$(srcdir)/GNUstep-reset.sh" "$(makedir)"; \
|
||||
$(INSTALL_DATA) 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
1121
GNUstep-HOWTO
File diff suppressed because it is too large
Load diff
|
@ -86,13 +86,13 @@ function reset_path
|
|||
fi
|
||||
}
|
||||
|
||||
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
|
||||
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@
|
||||
|
||||
# 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,7 +20,10 @@ 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>.
|
||||
|
||||
Quick installation instructions:
|
||||
1.1.1 Quick Installation Instructions
|
||||
---------------------
|
||||
|
||||
To build and install the GNUstep Makefiles, run the following commands:
|
||||
|
||||
./configure
|
||||
make
|
||||
|
@ -44,6 +47,27 @@ 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
|
||||
=================
|
||||
|
||||
|
|
471
NEWS
471
NEWS
|
@ -1,54 +1,77 @@
|
|||
1 NEWS
|
||||
******
|
||||
|
||||
The currently released version is '2.9.0'.
|
||||
The currently released version is ‘2.9.3’.
|
||||
|
||||
1.1 Changes in version '2.9.0'
|
||||
1.1 Changes in version ‘2.9.3’
|
||||
==============================
|
||||
|
||||
* Better check for objc runtime on Windows.
|
||||
• Added support for ASAN/LSAN builds
|
||||
|
||||
* Split linker flags to better support partial linking: 'ALL_LDFLAGS'
|
||||
is now a combination of 'FINAL_LDFLAGS' and 'ALL_LDFLAGS'.
|
||||
• Various minor bugfixes.
|
||||
|
||||
* Better support for newer gcc versions.
|
||||
1.2 Changes in version ‘2.9.2’
|
||||
==============================
|
||||
|
||||
* Add support for storyboard files.
|
||||
• Update for newer versions of Java
|
||||
|
||||
* Increase autoconf version to 2.65 and make autoconf handle
|
||||
• 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
|
||||
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.2 Changes in version '2.8.0'
|
||||
1.5 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.3 Changes in version '2.7.0'
|
||||
1.6 Changes in version ‘2.7.0’
|
||||
==============================
|
||||
|
||||
Garbage collection support removed
|
||||
|
@ -62,7 +85,7 @@ compatible
|
|||
|
||||
Various other minor bugfixes
|
||||
|
||||
1.4 Changes in version '2.6.8'
|
||||
1.7 Changes in version ‘2.6.8’
|
||||
==============================
|
||||
|
||||
Configure option '-with-library-combo=ng-gnu-gnu' to use the 'Next
|
||||
|
@ -90,7 +113,7 @@ you update any old gnustep-make version one makefiles.
|
|||
|
||||
Garbage collection support to be removed at the next release.
|
||||
|
||||
1.5 Changes in version '2.6.7'
|
||||
1.8 Changes in version ‘2.6.7’
|
||||
==============================
|
||||
|
||||
Improved package building support
|
||||
|
@ -101,15 +124,15 @@ Improved package building support
|
|||
|
||||
Various minor bugfixes, documentation spelling corrections etc.
|
||||
|
||||
1.6 Changes in version '2.6.6'
|
||||
1.9 Changes in version ‘2.6.6’
|
||||
==============================
|
||||
|
||||
Debian packaging support
|
||||
|
||||
Minor bugfixes.
|
||||
|
||||
1.7 Changes in version '2.6.5'
|
||||
==============================
|
||||
1.10 Changes in version ‘2.6.5’
|
||||
===============================
|
||||
|
||||
Bugfix for non-fragile ABI test
|
||||
|
||||
|
@ -119,124 +142,124 @@ Bugfix for non-fragile ABI test
|
|||
|
||||
Added minimal test support for .c and .cc files.
|
||||
|
||||
1.8 Changes in version '2.6.4'
|
||||
==============================
|
||||
1.11 Changes in version ‘2.6.4’
|
||||
===============================
|
||||
|
||||
Test framework extended equality tests.
|
||||
|
||||
Android build target
|
||||
|
||||
1.9 Changes in version '2.6.3'
|
||||
==============================
|
||||
1.12 Changes in version ‘2.6.3’
|
||||
===============================
|
||||
|
||||
Minor bugfix release.
|
||||
|
||||
1.10 Changes in version '2.6.2'
|
||||
1.13 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.11 Changes in version '2.6.1'
|
||||
1.14 Changes in version ‘2.6.1’
|
||||
===============================
|
||||
|
||||
Bug fix release. Most notably to fix a problem compiling GNUstep with
|
||||
clang.
|
||||
|
||||
1.12 Changes in version '2.6.0'
|
||||
1.15 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.13 Changes in version '2.4.0'
|
||||
1.16 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.14 Changes in version '2.2.0'
|
||||
1.17 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.15 Changes in version '2.0.8'
|
||||
1.18 Changes in version ‘2.0.8’
|
||||
===============================
|
||||
|
||||
Minor bug fix to deal with installing in different domains
|
||||
|
||||
1.16 Changes in version '2.0.7'
|
||||
1.19 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.17 Changes in version '2.0.6'
|
||||
1.20 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.18 Changes in version '2.0.5'
|
||||
1.21 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.19 Changes in version '2.0.4'
|
||||
1.22 Changes in version ‘2.0.4’
|
||||
===============================
|
||||
|
||||
Fixed a bug finding relative paths on Windows (during configuration).
|
||||
|
||||
1.20 Changes in version '2.0.3'
|
||||
1.23 Changes in version ‘2.0.3’
|
||||
===============================
|
||||
|
||||
New man pages for tools. Better uninstallation of files Add Windows
|
||||
installer makefile for Applications.
|
||||
|
||||
1.21 Changes in version '2.0.2'
|
||||
1.24 Changes in version ‘2.0.2’
|
||||
===============================
|
||||
|
||||
Update license to GPLv3.
|
||||
|
||||
1.22 Changes in version '2.0.1'
|
||||
1.25 Changes in version ‘2.0.1’
|
||||
===============================
|
||||
|
||||
Bug fixes in filesystem layout and framework installation.
|
||||
|
||||
1.23 Changes in version '2.0.0'
|
||||
1.26 Changes in version ‘2.0.0’
|
||||
===============================
|
||||
|
||||
The Makefile package has had a major makover which befits a major
|
||||
|
@ -248,50 +271,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.24 Changes in version '1.13.0'
|
||||
1.27 Changes in version ‘1.13.0’
|
||||
================================
|
||||
|
||||
Debug libraries now have the same name as normal libraries (i.e. no
|
||||
|
@ -304,15 +327,15 @@ loaded into the same executable.
|
|||
make package (e.g. with Windows OS). The libraries can still use native
|
||||
paths.
|
||||
|
||||
1.25 Changes in version '1.12.0'
|
||||
1.28 Changes in version ‘1.12.0’
|
||||
================================
|
||||
|
||||
Minor fixes.
|
||||
|
||||
1.26 Changes in version '1.11.2'
|
||||
1.29 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
|
||||
|
@ -339,7 +362,7 @@ rules.
|
|||
files in the xxx_OBJCC_FILES variable, and put extra ObjC++ flags in
|
||||
xxx_OBJCCFLAGS or ADDITIONAL_OBJCCFLAGS.
|
||||
|
||||
1.27 Changes in version '1.11.1'
|
||||
1.30 Changes in version ‘1.11.1’
|
||||
================================
|
||||
|
||||
Part of the previous change was reversed. Now libobjc is still linked
|
||||
|
@ -350,7 +373,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.28 Changes in version '1.11.0'
|
||||
1.31 Changes in version ‘1.11.0’
|
||||
================================
|
||||
|
||||
NOTE: The libobjc library is now linked in with the base library and NOT
|
||||
|
@ -358,57 +381,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.29 Changes in version '1.10.0'
|
||||
1.32 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.30 Changes in version '1.9.2'
|
||||
1.33 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.31 Changes in version '1.9.1'
|
||||
1.34 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.32 Changes in version '1.9.0'
|
||||
1.35 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.33 Changes in version '1.8.0'
|
||||
1.36 Changes in version ‘1.8.0’
|
||||
===============================
|
||||
|
||||
Read the NEWS file for a complete list of changes since the last stable
|
||||
|
@ -417,35 +440,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.34 Changes in version '1.7.4'
|
||||
1.37 Changes in version ‘1.7.4’
|
||||
===============================
|
||||
|
||||
Bug fixes.
|
||||
|
||||
1.35 Changes in version '1.7.3'
|
||||
1.38 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.36 Changes in version '1.7.2'
|
||||
1.39 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.37 Changes in version '1.7.1'
|
||||
1.40 Changes in version ‘1.7.1’
|
||||
===============================
|
||||
|
||||
Bug fixes.
|
||||
|
||||
1.38 Changes in version '1.7.0'
|
||||
1.41 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
|
||||
|
@ -454,68 +477,68 @@ incompatibilities.
|
|||
|
||||
Other changes:
|
||||
|
||||
* Support for preprocessed Info.plists.
|
||||
• Support for preprocessed Info.plists.
|
||||
|
||||
1.39 Changes in version '1.6.0'
|
||||
1.42 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.40 Changes in version '1.5.1'
|
||||
1.43 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.41 Changes in version '1.5.0'
|
||||
1.44 Changes in version ‘1.5.0’
|
||||
===============================
|
||||
|
||||
* Add NetBSD Elf support
|
||||
• Add NetBSD Elf support
|
||||
|
||||
1.42 Changes in version '1.4.0'
|
||||
1.45 Changes in version ‘1.4.0’
|
||||
===============================
|
||||
|
||||
* Update Darwin/GNU gcc and Irix targets
|
||||
• Update Darwin/GNU gcc and Irix targets
|
||||
|
||||
1.43 Changes in version '1.3.4'
|
||||
1.46 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.44 Changes in version '1.3.3'
|
||||
1.47 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.45 Changes in version '1.3.2'
|
||||
1.48 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.46 Changes in version '1.3.0'
|
||||
1.49 Changes in version ‘1.3.0’
|
||||
===============================
|
||||
|
||||
The package has gone through an extensive reorganization to break up
|
||||
|
@ -524,109 +547,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.47 Changes in version '1.2.1'
|
||||
1.50 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.48 Changes in version '1.2.0'
|
||||
1.51 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.49 Changes in version '1.0.1'
|
||||
1.52 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.50 Changes in version '1.0.0'
|
||||
1.53 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.51 Changes in version '0.9.2'
|
||||
1.54 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.52 Changes in version '0.9.1'
|
||||
1.55 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.53 Changes in version '0.9.0'
|
||||
1.56 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.54 Noteworthy changes in version '0.6.6'
|
||||
1.57 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 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.
|
||||
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.
|
||||
|
||||
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,45 +5,83 @@ 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.0
|
||||
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
|
||||
=================
|
||||
|
||||
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.2 Version 2.8.0
|
||||
1.5 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.3 Version 2.7.0
|
||||
1.6 Version 2.7.0
|
||||
=================
|
||||
|
||||
When building non-flattened, the subdirectory name for
|
||||
|
@ -63,7 +101,7 @@ architecture specific subdirectory.
|
|||
|
||||
Various bugfixes and minor improvements.
|
||||
|
||||
1.4 Version 2.6.8
|
||||
1.7 Version 2.6.8
|
||||
=================
|
||||
|
||||
Configure option '-with-library-combo=ng-gnu-gnu' to use the 'Next
|
||||
|
@ -91,7 +129,7 @@ you update any old gnustep-make version one makefiles.
|
|||
|
||||
Garbage collection support to be removed at the next release.
|
||||
|
||||
1.5 Version 2.6.7
|
||||
1.8 Version 2.6.7
|
||||
=================
|
||||
|
||||
Improved package building support
|
||||
|
@ -102,15 +140,15 @@ Improved package building support
|
|||
|
||||
Various minor bugfixes, documentation spelling corrections etc.
|
||||
|
||||
1.6 Version 2.6.6
|
||||
1.9 Version 2.6.6
|
||||
=================
|
||||
|
||||
Debian packagge generation support added.
|
||||
|
||||
Bug fixes
|
||||
|
||||
1.7 Version 2.6.5
|
||||
=================
|
||||
1.10 Version 2.6.5
|
||||
==================
|
||||
|
||||
Bugfix for non-fragile ABI test
|
||||
|
||||
|
@ -120,35 +158,35 @@ Bugfix for non-fragile ABI test
|
|||
|
||||
Added minimal test support for .c and .cc files.
|
||||
|
||||
1.8 Version 2.6.4
|
||||
=================
|
||||
1.11 Version 2.6.4
|
||||
==================
|
||||
|
||||
Test framework enhancement (extended equality tests)
|
||||
|
||||
Android build target
|
||||
|
||||
1.9 Version 2.6.3
|
||||
=================
|
||||
1.12 Version 2.6.3
|
||||
==================
|
||||
|
||||
Bug fixes
|
||||
|
||||
1.10 Version 2.6.2
|
||||
1.13 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.11 Version 2.6.1
|
||||
1.14 Version 2.6.1
|
||||
==================
|
||||
|
||||
Bug fixes
|
||||
|
||||
1.12 Version 2.6.0
|
||||
1.15 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
|
||||
|
@ -170,7 +208,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
|
||||
|
@ -194,18 +232,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
|
||||
|
@ -213,23 +251,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.13 Version 2.4.0
|
||||
1.16 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
|
||||
|
@ -246,7 +284,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
|
||||
|
@ -254,7 +292,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
|
||||
|
@ -264,19 +302,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
|
||||
|
@ -305,7 +343,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
|
||||
|
@ -332,7 +370,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
|
||||
|
@ -374,7 +412,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
|
||||
|
@ -384,7 +422,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
|
||||
|
@ -397,7 +435,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
|
||||
|
@ -405,7 +443,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
|
||||
|
@ -414,13 +452,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
|
||||
|
@ -432,7 +470,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
|
||||
|
@ -447,7 +485,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
|
||||
|
@ -468,19 +506,19 @@ Bug fixes
|
|||
on all gnustep-make versions that support library resources (ie,
|
||||
gnustep-make >= 2.0.x).
|
||||
|
||||
1.14 Version 2.2.0
|
||||
1.17 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
|
||||
|
@ -488,15 +526,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.15 Version 2.0.7
|
||||
1.18 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
|
||||
|
@ -504,19 +542,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
|
||||
|
@ -529,15 +567,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.16 Version 2.0.6
|
||||
1.19 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
|
||||
|
@ -545,14 +583,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',
|
||||
|
@ -561,10 +599,10 @@ Bug fixes
|
|||
the moment is not automatically installed unless you explicitly go
|
||||
in that subdirectory and install it.
|
||||
|
||||
1.17 Version 2.0.5
|
||||
1.20 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
|
||||
|
@ -576,7 +614,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
|
||||
|
@ -585,7 +623,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
|
||||
|
@ -597,7 +635,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,
|
||||
|
@ -605,7 +643,7 @@ Bug fixes
|
|||
overridden for specific project targets by using the xxx_NEEDS_GUI
|
||||
variable (see above).
|
||||
|
||||
1.18 Version 2.0.0
|
||||
1.21 Version 2.0.0
|
||||
==================
|
||||
|
||||
Version 2.0.0 is a new major release of gnustep-make which includes a
|
||||
|
@ -616,7 +654,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
|
||||
|
@ -640,10 +678,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.
|
||||
|
@ -656,10 +694,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
|
||||
|
@ -672,34 +710,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:
|
||||
|
@ -708,26 +746,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 (C) 2007 Free Software Foundation
|
||||
Copyright © 2007 Free Software Foundation
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
|
|
|
@ -51,14 +51,22 @@
|
|||
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)
|
||||
|
@ -86,16 +94,18 @@ static void test_alloc(NSString *CN)
|
|||
PASS_EXCEPTION([obj0 description], NSInvalidArgumentException, \
|
||||
"raises NSInvalidArgumentException in description") \
|
||||
\
|
||||
PASS_EXCEPTION(if([obj0 init]==nil)[NSException raise: NSInvalidArgumentException format: @""], \
|
||||
PASS_EXCEPTION(if((obj0=[obj0 init])==nil)[NSException raise: NSInvalidArgumentException format: @""], \
|
||||
NSInvalidArgumentException, \
|
||||
"returns nil or raises NSInvalidArgumentException in init") \
|
||||
\
|
||||
PASS_EXCEPTION(if([theClass new]==nil)[NSException raise: NSInvalidArgumentException format: @""], \
|
||||
PASS_EXCEPTION(if((obj0=[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)
|
||||
|
@ -211,6 +221,7 @@ 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) \
|
||||
} \
|
||||
}
|
||||
|
@ -347,6 +358,7 @@ 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], \
|
||||
|
@ -369,6 +381,7 @@ 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) \
|
||||
} \
|
||||
}
|
||||
|
@ -447,6 +460,7 @@ 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, \
|
||||
|
@ -454,6 +468,7 @@ static void test_NSCopying(
|
|||
PASS(theCopy != theObj, \
|
||||
"%s not retained by mutable copy in other zone", \
|
||||
[mClassName UTF8String]); \
|
||||
DESTROY(theCopy); \
|
||||
END_SET(buf) \
|
||||
} \
|
||||
}
|
||||
|
|
|
@ -25,13 +25,7 @@
|
|||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
|
||||
#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>
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#if defined(__OBJC__) && defined(__clang__) && defined(_MSC_VER)
|
||||
/* Work around Clang bug on Windows MSVC when tests contain no
|
||||
|
@ -97,7 +91,9 @@ 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.
|
||||
* 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.
|
||||
*/
|
||||
static NSException *testRaised __attribute__((unused)) = nil;
|
||||
|
||||
|
@ -156,10 +152,12 @@ static void pass(int passed, const char *format, ...)
|
|||
|
||||
if (testTimestamps)
|
||||
{
|
||||
NSCalendarDate *d = [NSCalendarDate date];
|
||||
|
||||
[d setCalendarFormat: @"(%Y-%m-%d %H:%M:%S.%F %z) "];
|
||||
ts = [[d description] cString];
|
||||
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];
|
||||
}
|
||||
if (passed)
|
||||
{
|
||||
|
@ -556,6 +554,7 @@ 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
|
||||
|
@ -666,5 +665,7 @@ if (__value != __object) \
|
|||
#define RECREATE_AUTORELEASE_POOL(X) \
|
||||
if (X == nil) \
|
||||
(X) = [NSAutoreleasePool new]
|
||||
#define ENTER_POOL @autoreleasepool{
|
||||
#define LEAVE_POOL }
|
||||
#endif
|
||||
|
||||
|
|
|
@ -29,6 +29,13 @@
|
|||
# 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
|
||||
|
@ -47,9 +54,18 @@ export GSTESTTOP
|
|||
GSTESTDIR=`pwd`
|
||||
export GSTESTDIR
|
||||
|
||||
GSTESTMODE=normal
|
||||
|
||||
GSMAKEOPTIONS="debug=yes"
|
||||
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=
|
||||
|
||||
# Argument checking
|
||||
|
@ -57,9 +73,17 @@ 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"
|
||||
;;
|
||||
|
@ -104,7 +128,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."
|
||||
|
@ -137,6 +163,21 @@ 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
|
||||
|
@ -392,7 +433,7 @@ build_test ()
|
|||
if test $? != 0
|
||||
then
|
||||
rm -f ./obj/$TESTNAME
|
||||
echo "Failed build: $1" >&2
|
||||
echo "Failed build: $1" | tee -a $GSTESTSUM >> $GSTESTLOG
|
||||
if test "$GSTESTMODE" = "failfast"
|
||||
then
|
||||
return 1
|
||||
|
@ -401,6 +442,32 @@ build_test ()
|
|||
return 0
|
||||
}
|
||||
|
||||
# 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
|
||||
|
@ -414,17 +481,24 @@ run_test ()
|
|||
|
||||
if test -x $RUN_CMD
|
||||
then
|
||||
# We want aggressive memory checking.
|
||||
|
||||
# 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_
|
||||
|
||||
# Tell GNUstep-base to check for messages sent to deallocated objects
|
||||
# and crash if it happens.
|
||||
NSZombieEnabled=YES
|
||||
CRASH_ON_ZOMBIE=YES
|
||||
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
|
||||
export NSZombieEnabled CRASH_ON_ZOMBIE
|
||||
|
||||
echo Running $dir/$TESTFILE...
|
||||
|
@ -434,31 +508,40 @@ run_test ()
|
|||
# Env.sh is deprecated ... we should only use TestInfo to setup for a test
|
||||
if test -r ./Env.sh
|
||||
then
|
||||
( . ./Env.sh; $RUN_CMD )
|
||||
( . ./Env.sh; time with_timeout $GSTESTTIMEOUT $RUN_CMD )
|
||||
else
|
||||
if test -r ./make-check.env
|
||||
then
|
||||
( . ./make-check.env; . ./TestInfo > /dev/null 2>&1; $RUN_CMD )
|
||||
( . ./make-check.env; . ./TestInfo > /dev/null 2>&1; time with_timeout $GSTESTTIMEOUT $RUN_CMD )
|
||||
else
|
||||
( . ./TestInfo > /dev/null 2>&1; $RUN_CMD )
|
||||
( . ./TestInfo > /dev/null 2>&1; time with_timeout $GSTESTTIMEOUT $RUN_CMD )
|
||||
fi
|
||||
fi
|
||||
|
||||
result=$?
|
||||
if test $result != 0
|
||||
then
|
||||
if test -r $TESTFILE.abort
|
||||
then
|
||||
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
|
||||
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
|
||||
|
@ -564,10 +647,10 @@ do
|
|||
if test x"$OBJCXX" = x
|
||||
then
|
||||
# Only Objective-C (and C)
|
||||
SRCDIRS=`find $TESTDIR -name "*.m" -o -name "*.c" | sed -e 's;/[^/]*$;;' | sort -u | sed -e 's/\(^\| \)X[^ ]*//g'`
|
||||
SRCDIRS=`find $TESTDIR -type f \( -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 \( -name "*.m" -o -name "*.mm" -o -name "*.c" -o -name "*.cc" \) | sed -e 's;/[^/]*$;;' | sort -u | sed -e 's/\(^\| \)X[^ ]*//g'`
|
||||
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'`
|
||||
fi
|
||||
else
|
||||
SRCDIRS="$TESTDIRS"
|
||||
|
@ -636,10 +719,10 @@ do
|
|||
if test x"$OBJCXX" = x
|
||||
then
|
||||
# Only Objective-C (and C)
|
||||
TESTS=`find . \( -name . -o -prune \) \( -name "*.m" -o -name "*.c" \) | sed -e 's;^.*/;;' | sort -u | sed -e 's/\(^\| \)X[^ ]*//g'`
|
||||
TESTS=`find . \( -name . -o -prune \) -type f \( -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 \) \( -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 \) -type f \( -name "*.m" -o -name "*.mm" -name "*.c" -o -name "*.cc" \) | sed -e 's;^.*/;;' | sort -u | sed -e 's/\(^\| \)X[^ ]*//g'`
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
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=1
|
||||
GNUSTEP_MAKE_SUBMINOR_VERSION=3
|
||||
GNUSTEP_MAKE_VERSION=${GNUSTEP_MAKE_MAJOR_VERSION}.${GNUSTEP_MAKE_MINOR_VERSION}.${GNUSTEP_MAKE_SUBMINOR_VERSION}
|
||||
|
||||
|
|
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)
|
||||
ADDITIONAL_FLAGS += -g
|
||||
OPTFLAG += -g
|
||||
endif
|
||||
# Add standard debug compiler flags.
|
||||
ADDITIONAL_FLAGS += -DDEBUG -fno-omit-frame-pointer
|
||||
|
@ -759,6 +759,41 @@ 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
|
||||
|
@ -844,7 +879,7 @@ ifeq ($(JAVAC),)
|
|||
endif
|
||||
|
||||
#
|
||||
# The java header compiler.
|
||||
# The java header compiler (if any). We need to check later.
|
||||
#
|
||||
ifeq ($(JAVAH),)
|
||||
JAVAH = $(JAVA_HOME)/bin/javah
|
||||
|
|
324
configure
vendored
324
configure
vendored
|
@ -617,8 +617,9 @@ ac_unique_file="application.make"
|
|||
ac_default_prefix=NONE
|
||||
ac_subst_vars='LTLIBOBJS
|
||||
LIBOBJS
|
||||
TESTPROG
|
||||
MISSINGBASH
|
||||
SHELLPROG
|
||||
TESTPROG
|
||||
LATEX2HTML
|
||||
clean_target_vendor
|
||||
clean_target_cpu
|
||||
|
@ -810,6 +811,7 @@ enable_install_p
|
|||
with_tar
|
||||
enable_strict_v2_mode
|
||||
with_layout
|
||||
with_libdir
|
||||
enable_absolute_install_paths
|
||||
with_config_file
|
||||
enable_importing_config_file
|
||||
|
@ -828,6 +830,7 @@ enable_native_objc_exceptions
|
|||
enable_debug_by_default
|
||||
enable_strip_makefiles
|
||||
enable_parallel_building
|
||||
with_bash_path
|
||||
'
|
||||
ac_precious_vars='build_alias
|
||||
host_alias
|
||||
|
@ -1612,7 +1615,7 @@ Optional Features:
|
|||
Optional Packages:
|
||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
||||
--with-libray-combo Define the default "library combo". The library
|
||||
--with-library-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'), 'bbb' is the
|
||||
|
@ -1654,6 +1657,13 @@ Optional Packages:
|
|||
Example: --with-layout=fhs
|
||||
|
||||
|
||||
--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
|
||||
|
||||
|
||||
--with-config-file=PATH
|
||||
Set the path of the system GNUstep config file. Use this option
|
||||
if you want to have the GNUstep config file in a non-standard
|
||||
|
@ -1710,6 +1720,12 @@ Optional Packages:
|
|||
--with-runtime-abi When using the ng runtime library, allows control
|
||||
over the -fobjc-runtime= flag passed to clang.
|
||||
|
||||
--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
|
||||
|
||||
|
||||
Some influential environment variables:
|
||||
CC C compiler command
|
||||
CFLAGS C compiler flags
|
||||
|
@ -4878,11 +4894,11 @@ if test x$ac_prog_cxx_stdcxx = xno
|
|||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5
|
||||
printf %s "checking for $CXX option to enable C++11 features... " >&6; }
|
||||
if test ${ac_cv_prog_cxx_11+y}
|
||||
if test ${ac_cv_prog_cxx_cxx11+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
ac_cv_prog_cxx_11=no
|
||||
ac_cv_prog_cxx_cxx11=no
|
||||
ac_save_CXX=$CXX
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
@ -4924,11 +4940,11 @@ if test x$ac_prog_cxx_stdcxx = xno
|
|||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5
|
||||
printf %s "checking for $CXX option to enable C++98 features... " >&6; }
|
||||
if test ${ac_cv_prog_cxx_98+y}
|
||||
if test ${ac_cv_prog_cxx_cxx98+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
ac_cv_prog_cxx_98=no
|
||||
ac_cv_prog_cxx_cxx98=no
|
||||
ac_save_CXX=$CXX
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
@ -6434,6 +6450,18 @@ if test ! -f "$srcdir/FilesystemLayouts/$GNUSTEP_FILESYSTEM_LAYOUT_FILE" >&5 2>&
|
|||
exit 1
|
||||
fi
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for architecture-specific lib path" >&5
|
||||
printf %s "checking for architecture-specific lib path... " >&6; }
|
||||
|
||||
# Check whether --with-libdir was given.
|
||||
if test ${with_libdir+y}
|
||||
then :
|
||||
withval=$with_libdir; LIBDIR="$withval"
|
||||
else $as_nop
|
||||
LIBDIR="lib"
|
||||
fi
|
||||
|
||||
|
||||
# Need to do some checks related to building dylibs on darwin.
|
||||
GNUSTEP_ABSOLUTE_INSTALL_PATHS=;
|
||||
|
||||
|
@ -6552,38 +6580,38 @@ printf "%s\n" "$GNUSTEP_PREFIX" >&6; }
|
|||
# '/home' - we never install anything in there).
|
||||
GNUSTEP_MAKEFILES="$GNUSTEP_PREFIX$GNUSTEP_MAKEFILES"
|
||||
|
||||
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_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_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_TOOLS"
|
||||
GNUSTEP_SYSTEM_ADMIN_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_ADMIN_TOOLS"
|
||||
GNUSTEP_SYSTEM_LIBRARY="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_LIBRARY"
|
||||
GNUSTEP_SYSTEM_LIBRARY=$(echo "$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_LIBRARY" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_SYSTEM_HEADERS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_HEADERS"
|
||||
GNUSTEP_SYSTEM_LIBRARIES="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_LIBRARIES"
|
||||
GNUSTEP_SYSTEM_LIBRARIES=$(echo "$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_LIBRARIES" | sed "s/@libdir@/$LIBDIR/g")
|
||||
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="$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_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_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_TOOLS"
|
||||
GNUSTEP_NETWORK_ADMIN_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_ADMIN_TOOLS"
|
||||
GNUSTEP_NETWORK_LIBRARY="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_LIBRARY"
|
||||
GNUSTEP_NETWORK_LIBRARY=$(echo "$GNUSTEP_PREFIX$GNUSTEP_NETWORK_LIBRARY" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_NETWORK_HEADERS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_HEADERS"
|
||||
GNUSTEP_NETWORK_LIBRARIES="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_LIBRARIES"
|
||||
GNUSTEP_NETWORK_LIBRARIES=$(echo "$GNUSTEP_PREFIX$GNUSTEP_NETWORK_LIBRARIES" | sed "s/@libdir@/$LIBDIR/g")
|
||||
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="$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_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_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_TOOLS"
|
||||
GNUSTEP_LOCAL_ADMIN_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_ADMIN_TOOLS"
|
||||
GNUSTEP_LOCAL_LIBRARY="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_LIBRARY"
|
||||
GNUSTEP_LOCAL_LIBRARY=$(echo "$GNUSTEP_PREFIX$GNUSTEP_LOCAL_LIBRARY" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_LOCAL_HEADERS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_HEADERS"
|
||||
GNUSTEP_LOCAL_LIBRARIES="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_LIBRARIES"
|
||||
GNUSTEP_LOCAL_LIBRARIES=$(echo "$GNUSTEP_PREFIX$GNUSTEP_LOCAL_LIBRARIES" | sed "s/@libdir@/$LIBDIR/g")
|
||||
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"
|
||||
|
@ -8782,6 +8810,47 @@ then :
|
|||
else $as_nop
|
||||
objc_threaded=""
|
||||
fi
|
||||
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
|
||||
conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
fi
|
||||
|
||||
fi
|
||||
elif test "$host_os" = linux-musl; then
|
||||
LIBS="$OBJCRT -lpthread"
|
||||
if test "$cross_compiling" = yes
|
||||
then :
|
||||
objc_threaded="-lpthread"
|
||||
else $as_nop
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include "config_thread.m"
|
||||
_ACEOF
|
||||
if ac_fn_c_try_run "$LINENO"
|
||||
then :
|
||||
objc_threaded="-lpthread"
|
||||
else $as_nop
|
||||
objc_threaded=""
|
||||
fi
|
||||
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
|
||||
conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
fi
|
||||
|
||||
if test x"$objc_threaded" = x""; then
|
||||
LIBS="$OBJCRT"
|
||||
if test "$cross_compiling" = yes
|
||||
then :
|
||||
objc_threaded="works"
|
||||
else $as_nop
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include "config_thread.m"
|
||||
_ACEOF
|
||||
if ac_fn_c_try_run "$LINENO"
|
||||
then :
|
||||
objc_threaded="works"
|
||||
else $as_nop
|
||||
objc_threaded=""
|
||||
fi
|
||||
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
|
||||
conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
fi
|
||||
|
@ -9131,7 +9200,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-1.8 -fobjc-arc"
|
||||
CFLAGS="$CFLAGS -fobjc-runtime=gnustep-2.2 -fobjc-arc"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
|
@ -9302,8 +9371,8 @@ fi
|
|||
|
||||
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether runtime library supports the gnustep-2.0 ABI" >&5
|
||||
printf %s "checking whether runtime library supports the gnustep-2.0 ABI... " >&6; }
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether runtime library supports the gnustep-2.x ABI" >&5
|
||||
printf %s "checking whether runtime library supports the gnustep-2.x ABI... " >&6; }
|
||||
if test ${gs_cv_libobjc_abi_20+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
|
@ -9326,13 +9395,13 @@ printf "%s\n" "$gs_cv_libobjc_abi_20" >&6; }
|
|||
|
||||
case "$OBJC_RUNTIME_LIB" in
|
||||
gnu) default_runtime_abi=gcc ;;
|
||||
ng) default_runtime_abi=gnustep-1.8 ;;
|
||||
ng) default_runtime_abi=gnustep-2.2 ;;
|
||||
*) default_runtime_abi="(unknown)" ;;
|
||||
esac
|
||||
if test ! x"" = x""; then
|
||||
default_runtime_abi=""
|
||||
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.0
|
||||
default_runtime_abi=gnustep-2.2
|
||||
fi
|
||||
|
||||
# Check whether --with-runtime-abi was given.
|
||||
|
@ -9364,41 +9433,42 @@ fi
|
|||
|
||||
|
||||
# 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
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which linker is being used" >&5
|
||||
printf %s "checking which linker is being used... " >&6; }
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an gnustep-2.0 ABI compatible linker" >&5
|
||||
printf %s "checking for an gnustep-2.0 ABI compatible linker... " >&6; }
|
||||
if test ${gs_cv_abi20_linker+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
gs_cv_abi20_linker="unkown"
|
||||
echo 'int main() { return 0; }' > conftest.c
|
||||
|
||||
gs_cv_abi20_linker_prog=$($CC --print-prog-name=ld)
|
||||
if $gs_cv_abi20_linker_prog --version | $GREP -q 'GNU ld'; then
|
||||
gs_cv_abi20_linker="unlikely (GNU ld)"
|
||||
elif $gs_cv_abi20_linker_prog --version | $GREP -q 'GNU gold'; then
|
||||
gs_cv_abi20_linker="yes (GNU gold)"
|
||||
elif $gs_cv_abi20_linker_prog --version | $GREP -q 'LLD'; then
|
||||
gs_cv_abi20_linker="yes (LLD)"
|
||||
fi
|
||||
# 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
|
||||
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gs_cv_abi20_linker" >&5
|
||||
printf "%s\n" "$gs_cv_abi20_linker" >&6; }
|
||||
if echo "$gs_cv_abi20_linker" | $GREP -q '^yes'; then
|
||||
_gs_abi20_linker=yes
|
||||
else
|
||||
_gs_abi20_linker=no
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: The detected linker might not produce working Objective-C binaries using the gnustep-2.0 ABI. Consider using gold or LLD." >&5
|
||||
printf "%s\n" "$as_me: WARNING: The detected linker might not produce working Objective-C binaries using the gnustep-2.0 ABI. Consider using gold or LLD." >&2;}
|
||||
fi
|
||||
if test "x$_gs_abi20_linker" = x"yes"
|
||||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $linker" >&5
|
||||
printf "%s\n" "$linker" >&6; }
|
||||
|
||||
fi
|
||||
# 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
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: The detected linker (GNU ld) might not produce working Objective-C binaries using the gnustep-2.0 ABI. Consider using GNU gold or LLD." >&5
|
||||
printf "%s\n" "$as_me: WARNING: The detected linker (GNU ld) might not produce working Objective-C binaries using the gnustep-2.0 ABI. Consider using GNU gold or LLD." >&2;}
|
||||
elif test "x$linker" = "xunknown" && test -n "$explicit_linker_flag"; then
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unable to confirm if the explicitly specified linker '$explicit_linker_flag' is compatible with the gnustep-2.0 ABI." >&5
|
||||
printf "%s\n" "$as_me: WARNING: Unable to confirm if the explicitly specified linker '$explicit_linker_flag' is compatible with the gnustep-2.0 ABI." >&2;}
|
||||
fi
|
||||
|
||||
fi
|
||||
# Do not restore LIBS and CFLAGS yet as we need to test if the
|
||||
|
@ -9912,52 +9982,6 @@ done
|
|||
#--------------------------------------------------------------------
|
||||
# For test framework
|
||||
#--------------------------------------------------------------------
|
||||
# Extract the first word of "bash", so it can be a program name with args.
|
||||
set dummy bash; ac_word=$2
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||
printf %s "checking for $ac_word... " >&6; }
|
||||
if test ${ac_cv_path_SHELLPROG+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
case $SHELLPROG in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_SHELLPROG="$SHELLPROG" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
case $as_dir in #(((
|
||||
'') as_dir=./ ;;
|
||||
*/) ;;
|
||||
*) as_dir=$as_dir/ ;;
|
||||
esac
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
|
||||
ac_cv_path_SHELLPROG="$as_dir$ac_word$ac_exec_ext"
|
||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
test -z "$ac_cv_path_SHELLPROG" && ac_cv_path_SHELLPROG="/bin/sh"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
SHELLPROG=$ac_cv_path_SHELLPROG
|
||||
if test -n "$SHELLPROG"; then
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SHELLPROG" >&5
|
||||
printf "%s\n" "$SHELLPROG" >&6; }
|
||||
else
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
# Extract the first word of "test", so it can be a program name with args.
|
||||
set dummy test; ac_word=$2
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||
|
@ -10004,10 +10028,105 @@ fi
|
|||
|
||||
|
||||
|
||||
|
||||
# Check whether --with-bash-path was given.
|
||||
if test ${with_bash_path+y}
|
||||
then :
|
||||
withval=$with_bash_path; SHELLPROG="$withval"
|
||||
else $as_nop
|
||||
SHELLPROG=
|
||||
fi
|
||||
|
||||
if test x"$SHELLPROG" = x""; then
|
||||
# Extract the first word of "bash", so it can be a program name with args.
|
||||
set dummy bash; ac_word=$2
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||
printf %s "checking for $ac_word... " >&6; }
|
||||
if test ${ac_cv_path_SHELLPROG+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
case $SHELLPROG in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_SHELLPROG="$SHELLPROG" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
case $as_dir in #(((
|
||||
'') as_dir=./ ;;
|
||||
*/) ;;
|
||||
*) as_dir=$as_dir/ ;;
|
||||
esac
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
|
||||
ac_cv_path_SHELLPROG="$as_dir$ac_word$ac_exec_ext"
|
||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
SHELLPROG=$ac_cv_path_SHELLPROG
|
||||
if test -n "$SHELLPROG"; then
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SHELLPROG" >&5
|
||||
printf "%s\n" "$SHELLPROG" >&6; }
|
||||
else
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
# Produce the output files
|
||||
#--------------------------------------------------------------------
|
||||
ac_config_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-make.spec gnustep-config TestFramework/gnustep-tests filesystem.make filesystem.sh filesystem.csh gnustep-make-ld.so.conf"
|
||||
ac_config_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="$ac_config_files runtime/$OBJC_RUNTIME_LIB.make:config.make.in"
|
||||
|
||||
|
@ -10735,6 +10854,7 @@ do
|
|||
"GNUstep.sh") CONFIG_FILES="$CONFIG_FILES GNUstep.sh" ;;
|
||||
"GNUstep.csh") CONFIG_FILES="$CONFIG_FILES GNUstep.csh" ;;
|
||||
"fixpath.sh") CONFIG_FILES="$CONFIG_FILES fixpath.sh" ;;
|
||||
"GNUstep-reset.sh") CONFIG_FILES="$CONFIG_FILES GNUstep-reset.sh" ;;
|
||||
"gnustep-make.spec") CONFIG_FILES="$CONFIG_FILES gnustep-make.spec" ;;
|
||||
"gnustep-config") CONFIG_FILES="$CONFIG_FILES gnustep-config" ;;
|
||||
"TestFramework/gnustep-tests") CONFIG_FILES="$CONFIG_FILES TestFramework/gnustep-tests" ;;
|
||||
|
|
95
configure.ac
95
configure.ac
|
@ -393,6 +393,16 @@ 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=;
|
||||
|
||||
|
@ -509,38 +519,38 @@ AC_SUBST(GNUSTEP_PREFIX)
|
|||
# '/home' - we never install anything in there).
|
||||
GNUSTEP_MAKEFILES="$GNUSTEP_PREFIX$GNUSTEP_MAKEFILES"
|
||||
|
||||
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_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_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_TOOLS"
|
||||
GNUSTEP_SYSTEM_ADMIN_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_ADMIN_TOOLS"
|
||||
GNUSTEP_SYSTEM_LIBRARY="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_LIBRARY"
|
||||
GNUSTEP_SYSTEM_LIBRARY=$(echo "$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_LIBRARY" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_SYSTEM_HEADERS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_HEADERS"
|
||||
GNUSTEP_SYSTEM_LIBRARIES="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_LIBRARIES"
|
||||
GNUSTEP_SYSTEM_LIBRARIES=$(echo "$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_LIBRARIES" | sed "s/@libdir@/$LIBDIR/g")
|
||||
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="$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_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_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_TOOLS"
|
||||
GNUSTEP_NETWORK_ADMIN_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_ADMIN_TOOLS"
|
||||
GNUSTEP_NETWORK_LIBRARY="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_LIBRARY"
|
||||
GNUSTEP_NETWORK_LIBRARY=$(echo "$GNUSTEP_PREFIX$GNUSTEP_NETWORK_LIBRARY" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_NETWORK_HEADERS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_HEADERS"
|
||||
GNUSTEP_NETWORK_LIBRARIES="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_LIBRARIES"
|
||||
GNUSTEP_NETWORK_LIBRARIES=$(echo "$GNUSTEP_PREFIX$GNUSTEP_NETWORK_LIBRARIES" | sed "s/@libdir@/$LIBDIR/g")
|
||||
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="$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_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_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_TOOLS"
|
||||
GNUSTEP_LOCAL_ADMIN_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_ADMIN_TOOLS"
|
||||
GNUSTEP_LOCAL_LIBRARY="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_LIBRARY"
|
||||
GNUSTEP_LOCAL_LIBRARY=$(echo "$GNUSTEP_PREFIX$GNUSTEP_LOCAL_LIBRARY" | sed "s/@libdir@/$LIBDIR/g")
|
||||
GNUSTEP_LOCAL_HEADERS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_HEADERS"
|
||||
GNUSTEP_LOCAL_LIBRARIES="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_LIBRARIES"
|
||||
GNUSTEP_LOCAL_LIBRARIES=$(echo "$GNUSTEP_PREFIX$GNUSTEP_LOCAL_LIBRARIES" | sed "s/@libdir@/$LIBDIR/g")
|
||||
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"
|
||||
|
@ -1289,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-1.8 -fobjc-arc"
|
||||
CFLAGS="$CFLAGS -fobjc-runtime=gnustep-2.2 -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
|
||||
|
@ -1371,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
|
||||
|
@ -1769,15 +1779,64 @@ 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])
|
||||
|
|
|
@ -47,7 +47,7 @@ ifeq ($(OBJC_RUNTIME_LIB), ng)
|
|||
ifneq ($(DEFAULT_OBJC_RUNTIME_ABI),)
|
||||
RUNTIME_VERSION=$(DEFAULT_OBJC_RUNTIME_ABI)
|
||||
else
|
||||
RUNTIME_VERSION=gnustep-1.8
|
||||
RUNTIME_VERSION=gnustep-2.2
|
||||
endif
|
||||
endif
|
||||
RUNTIME_FLAG = -fobjc-runtime=$(RUNTIME_VERSION) -fblocks
|
||||
|
|
|
@ -7,27 +7,35 @@
|
|||
# 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], [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="unknown"
|
||||
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])
|
||||
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
|
||||
])
|
||||
|
|
|
@ -37,7 +37,7 @@ AC_DEFUN([GS_LIBRARY_COMBO],dnl
|
|||
])
|
||||
|
||||
AC_ARG_WITH([library-combo],
|
||||
[AS_HELP_STRING([--with-libray-combo], [
|
||||
[AS_HELP_STRING([--with-library-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.0 ABI support in libobjc via the __objc_load macro
|
||||
# Helper macro for checking gnustep-2.x 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.0 ABI in the runtime library. Sets the `libobjc_SUPPORTS_ABI20' variable.
|
||||
# Checks for support for the gnustep-2.x 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.0 ABI],
|
||||
AC_CACHE_CHECK([whether runtime library supports the gnustep-2.x 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-1.8 ;;
|
||||
ng) default_runtime_abi=gnustep-2.2 ;;
|
||||
*) 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.0
|
||||
default_runtime_abi=gnustep-2.2
|
||||
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 javah on $< ...";
|
||||
ECHO_JAVAHING = @(echo " Running java header command 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,7 +204,20 @@ 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.
|
||||
|
@ -659,10 +672,28 @@ 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_JAVAHING)$(JAVAH) \
|
||||
$(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_JAVAHFLAGS)) \
|
||||
$($<_FILE_FLAGS) -o $@ $(subst /,.,$*)$(END_ECHO)
|
||||
$(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)
|
||||
|
||||
%.c : %.psw
|
||||
pswrap -h $*.h -o $@ $<
|
||||
|
|
|
@ -1,2 +1,4 @@
|
|||
CVS
|
||||
*.svn
|
||||
*.git
|
||||
*.hg
|
||||
|
|
|
@ -1117,7 +1117,7 @@ SHARED_LIBEXT = .so
|
|||
HAVE_BUNDLES = yes
|
||||
BUNDLE_LD = $(LD)
|
||||
#BUNDLE_LDFLAGS += -shared -mimpure-text
|
||||
BUNDLE_LDFLAGS += -nodefaultlibs -Xlinker -Wl,-r
|
||||
BUNDLE_LDFLAGS += -nodefaultlibs -Xlinker -Wl,-r -no-pie
|
||||
endif
|
||||
|
||||
# end Unixware
|
||||
|
|
Loading…
Reference in a new issue