opentool
gnustep-make.spec
fixpath.sh
+GNUsteprc
Announcement
************
-The GNUstep Makefile Package version 1.10.0 is now available.
+The GNUstep Makefile Package version 1.11.0 is now available.
What is the GNUstep makefile package?
=====================================
configuration, building, installation, and packaging. It also allows
the user to easily create cross-compiled binaries.
-Changes in version `1.10.0'
+Changes in version `1.11.0'
===========================
- * 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
- GNUsteprc after configuration.)
+NOTE: The libobjc library is now linked in with the base library and
+NOT with individual applications or tools (except on MingW). This
+requires that you do a complete rebuild of all libraries, tools and
+apps when switching to this new version.
- * make_services is not run by GNUstep.sh anymore. You must run this
- manually now (see the gnustep-gui documentation).
+ * 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.
- * Palettes use a plist instead of a strings format file now for the
- palette.table file.
+ * 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
+ 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.
- * You can use the `--enable-native-objc-exceptions' argument to
- configure to enable use of built in objc exceptions with compilers
- that support it.
Obtaining gnustep-make
======================
-You can get the gstep-make-1.10.0.tar.gz distribution file at
+You can get the gstep-make-1.11.0.tar.gz distribution file at
<ftp://ftp.gnustep.org/pub/gnustep/core>
Please log bug reports on the GNUstep project page
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
-2005-08-10 Helge Hess <helge.hess@opengroupware.org>
+2005-07-21 Adam Fedor <fedor@gnu.org>
- * Instance/framework.make: fixed header lookup
+ * Version 1.11.0
+
+2005-07-20 Jeremy Bettis <jeremy@deadbeef.com>,
+ Nicola Pero <n.pero@mi.flashnet.it>
+
+ * config.make.in: Set FRAMEWORK_VERSION_SUPPORT here.
+ * Instance/framework.make: And do not set it here.
+ * Master/rules.make (%.variables, %.subprojects): if
+ FRAMEWORK_VERSION_SUPPORT is not set to yes, use
+ non-Versions directories for frameworks.
+ * config.make.in (HAS_LN_S): Make sure it's set to no
+ when it's not set to yes.
+
+2005-07-14 Jeremy Bettis <jeremy@deadbeef.com>,
+ Nicola Pero <n.pero@mi.flashnet.it>
+
+ Implemented support for xxx_WINDRES_FILES on mingw32.
+ * rules.make ($(GNUSTEP_OBJ_DIR)/%${OEXT}): New mingw32 rule to
+ compile a .rc (windres) file into an object file.
+ (.SUFFIXES): On mingw32, add .rc.
+ * Instance/rules.make (WINDRES_OBJS, WINDRES_OBJ_FILES): New
+ variables for mingw32; generate them from xxx_WINDRES_FILES.
+ (OBJ_FILES_TO_LINK): Add WINDRES_OBJ_FILES to the list of files to
+ link.
+
+2005-07-14 Jeremy Bettis <jeremy@deadbeef.com>,
+ Nicola Pero <n.pero@mi.flashnet.it>
+
+ Implemented pseudo-framework support for mingw32 (Windows).
+ * Instance/framework.make: disable versioning on Windows, switch
+ to use the new DLL building system already used by libraries, and
+ clean up all the small details of pseudo-frameworks on mingw32.
+
+2005-07-13 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * target.make (EXTRACT_CLASS_NAMES_COMMAND): New define for
+ mingw32 where class name symbols start with '___' rather than
+ '__'.
+
+2005-07-12 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * target.make (FreeBSD ELF): if -pthread is being used for
+ threads, add -pthread to INTERNAL_CFLAGS, INTERNAL_OBJCFLAGS,
+ INTERNAL_LDFLAGS.
+
+2005-07-12 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * Instance/framework.make (DUMMY_FRAMEWORK): Mangle
+ framework names into valid ObjC class names.
+
+2005-07-12 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * Documentation/README.MinGW: Updated.
+
+2005-07-08 Adam Fedor <fedor@gnu.org>
+
+ * Documentation/news.texi: Update for next version.
+
+2005-07-06 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * Instance/bundle.make: Removed usage of :: rules for all but the
+ internal- rules. Can't see a reason why we were using :: rules in
+ the other cases, probably a tradition that was followed without
+ really understanding why.
+ * Instance/gswbundle.make: Same change.
+ * Instance/framework.make: Same change.
+ * Instance/subproject.make: Same change.
+
+2005-06-17 Adam Fedor <fedor@gnu.org>
+
+ * Documentation/GNUmakefile: Don't try to install README.NetBSD
+ * Documentation/machines.texi: Updates.
+
+2005-06-10 Adam Fedor <fedor@gnu.org>
+
+ * Instance/test-library.make: Remove dejagnu code and replace
+ with rules to inherit from library.make
+
+2005-06-10 Adam Fedor <fedor@gnu.org>
+
+ * Master/source-distribution.make (dist): Tar/copy the directory
+ instead of moving it to make the distribution. Fixes bug #13305
+
+ * Documentation/machines.texi: Update Suse.
+
+2005-06-06 Adam Fedor <fedor@gnu.org>
+
+ * Instance/application.make (ALL_GUI_LIBS): Remove OBJC_LIBS,
+ AUXILIARY_OBJC_LIBS, and TARGET_SYSTEM_LIBS
+ * Instance/gswapp.make (ALL_GSW_LIBS): Idem.
+ * Instance/service.make (ALL_SERVICE_LIBS): Idem.
+ * Instance/test-library.make (ALL_TEST_LIBRARY_LIBS): Idem.
+ * Instance/tool.make (ALL_TOOL_LIBS): Idem.
+ Fixes bug #9920.
+
+2005-05-31 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * Documentation/README.MinGW: Rewritten with updated instructions.
+
+2005-05-23 David Lazaro Saz <dlazaro@acm.org>
+
+ * Documentation/userfaq.texi: Updated style, trademark usage and some
+ spelling mistakes.
+
+2005-05-21 Adam Fedor <fedor@gnu.org>
+
+ * Update FSF Address.
+ * Documentation/gnustep-howto.texi: Update required libs.
+
+2005-04-19 Adam Fedor <fedor@gnu.org>
+
+ * GNUmakefile.in (install): Don't make Makefiles link
+ * target.make (darwin/GNU): Use $(CC) to link library.
+ * Instance/framework.make: More comments.
+
+2005-04-15 Adam Fedor <fedor@gnu.org>
+
+ * Instance/framework.make: Add top-level symlink for all darwin
+ * ld_lib_path.[c]sh: Clarify framework comment.
+
+ * Documentation/machines.texi: Update
+ * Documentation/README.NetBSD: Remove, obsolete.
+
+2005-04-06 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * GNUstep.conf (USER_GNUSTEP_RC): Fixed typo, it was spelt
+ as .GNusteprc instead of .GNUsteprc.
+
+2005-04-06 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * Instance/framework.make: Create header directories and copy them
+ even if HEADER_FILES is empty. This fixes problems when
+ subprojects have headers, but the top-level framework does not.
+ * Instance/Shared/headers.make (HEADER_FILES_DIR,
+ HEADER_FILES_INSTALL_DIR): Always compute those two variables
+ even if HEADER_FILES is empty.
+
+2005-04-06 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * Instance/framework.make ($(FRAMEWORK_HEADER_FILES)): Fixed
+ depending on HEADER_FILES, which wasn't taking HEADER_FILES_DIR
+ into account (Fix suggested by Matt Rice <ratmice@yahoo.com>).
+
+2005-03-22 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * Instance/application.make (ALL_LDFLAGS): When on a platform
+ where DLLs are built (such as Mingw), automatically generate a
+ .exe.a library for the application. Required by Gorm.
+
+2005-03-21 Adam Fedor <fedor@gnu.org>
+
+ * GNUmakefile.in: Don't install .GNUsteprc file
+ * GNUstep.conf: New file.
+ * Documentation/README.Darwin, Documentation/README.MinGW,
+ Documentation/faq.texi, Documentation/machines.texi: Updates.
+
+2005-03-21 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * Instance/palette.make (internal-palette-all_): Use the old dll
+ rules only if OLD_DLL_SUPPORT is YES. In all other cases,
+ including Mingw, use the standard ones.
+ (Info-gnustep.plist): Include PALETTE_OBJ_EXT in NSExecutable.
+
+2005-03-21 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * Instance/bundle.make: Use make quotes, not shell quotes, for
+ BUNDLE_OBJ_EXT when used in rules.
+
+2005-03-21 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * target.make (SHARED_LIBEXT): Set to .dll.a for Mingw so that
+ which_lib manages to find the libs and building with debug=yes now
+ works on Mingw.
+
+2005-03-10 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * Instance/library.make: On Windows, try to link against all
+ libraries, except the one we are compiling.
+ * Instance/bundle.make: Replaced all occurrences of WITH_DLL with
+ BUILD_DLL.
+ * Instance/framework.make: Same change.
+ * Instance/palette.make: Same change.
+ * Instance/bundle.make (build-bundle): Use the old DLL rules to
+ build bundles only if OLD_DLL_SUPPORT is defined. Else, use the
+ rules specified in target.make for that platform.
+ * target.make (BUNDLE_LD): Just use -shared on Mingw.
+
+2005-03-10 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * user_home.c (main): Fixed missing case for Windows ... if
+ HOMEPATH was already a full path, the code would forget to copy
+ the path into home.
+
+2005-03-09 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * configure.ac: Detect libobjc.dll.a as a custom ObjC library.
+ * configure: Regenerated.
+
+2005-03-01 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * target.make (WITH_DLL): Variable removed.
+ (OLD_DLL_SUPPORT): New variable which is set to yes for cygwin,
+ but to no for mingw.
+ (DLLTOOL): Do not define for mingw.
+ (DLLWRAP): Do not define for mingw.
+ (SHARED_LIB_LINK_CMD): New variable for mingw.
+ (AFTER_INSTALL_SHARED_LIB_CMD): The same.
+ (AFTER_INSTALL_SHARED_LIB_CHOWN): The same.
+ (SHARED_LIBEXT): Do not define to be .a on mingw; that is only
+ confusing; use LIBEXT instead.
+ (LIBEXT): Define to be .a on mingw.
+ (TARGET_SYSTEM_LIBS): Define using =, not :=.
+
+ * rules.make (ALL_CPPFLAGS): Check BUILD_DLL instead of WITH_DLL
+ when adding -DGNUSTEP_WITH_DLL.
+
+ * Instance/library.make (LIBRARY_NAME_WITHOUT_LIB): New variable.
+ (LIBRARY_FILE_EXT): Unused variable removed.
+ (CLEAN_library_NAME): Generate using make functions rather than
+ firing external shell scripts to increase building speed.
+ Execute existing DLL code when OLD_DLL_SUPPORT is set to yes. For
+ BUILD_DLL but not OLD_DLL_SUPPORT, added brand new code which uses
+ the new target.make mingw variables and takes advantage of the new
+ DLL support in GCC and mingw.
+
+2005-02-19 Adam Fedor <fedor@gnu.org>
+
+ * Documentation/README.MinGW: Minor edit.
+ * Documentation/faq.texi: Add question.
+ * Documentation/gnustep-howto.texi: Add service
+ * Documentation/machines.texi: Edit FreeBSD 5.x
+
+2005-02-18 Richard Frith-Macdonald <rfm@gnu.org>
+
+ * Documentation/README.MinGW: Update with my latest experiences.
+
+2005-01-31 Adam Fedor <fedor@gnu.org>
+
+ * Documentation/GNUmakefile: Install README.* docs
+ * Documentation/machines.texi: Typo.
+
+2005-01-14 Armando Di Cianno <fafhrd@gentoo.org>
+
+ * GNUstep-reset.sh (reset-path): Add new argument with a path
+ fragment to make the path removal more accurate. Use it with
+ appropriate arguments for each variable. (with small changes by
+ Nicola).
+
+2005-01-05 Sergii Stoian <stoian255@ukr.net>
+
+ * Instance/Shared/bundle.make (shared-instance-bundle-all): Fixed
+ copying resource files and localized resource files into the
+ bundle when they are in subdirs.
+
+2004-12-27 Quentin Mathe <qmathe@club-internet.fr>
+
+ * Documentation/README.Darwin: Rewritten the base library install
+ instructions (libxslt support with Fink explained) and other minor
+ updates.
+ * Documentation/machines.texi: Made the GNUstep on MacOSX section a bit
+ more clear.
+ * GNUstep-HOWTO: Synchronized with Documentation/machines.texi and made
+ the spacing more consistent.
+
+2004-12-26 Quentin Mathe <qmathe@club-internet.fr>
+
+ * Documentation/README.Darwin: Updated to take in account the latest
+ feedback by Uli Kusterer.
+ * Documentation/machines.texi:
+ * GNUstep-HOWTO:
+ Updated the current GCC state for GNUstep on Darwin.
+
+2004-12-26 Quentin Mathe <qmathe@club-internet.fr>
+
+ * Documentation/README.Darwin: Improved indentation and presentation.
+
+2004-12-19 Richard Frith-Macdonald <rfm@gnu.org>
+
+ * target.make: For gnu compiler on darwin, use flat namespace and
+ undefined warning for executables as well as libraries/bundles so
+ that we can link with libraries/bundles without havint to explictly
+ name all the libraries that thay depend upon.
+
+2004-12-06 Adam Fedor <fedor@gnu.org>
+
+ * Documentation/machines.texi (MacOSX): Update (info from Markus
+ Hitter).
+
+ * Documentation/README.Darwin: Clean up, simplify.
+
+Sun Nov 7 04:18:39 2004 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * tar-exclude-list: Use *.svn instead of .svn to have
+ .svn dirs excluded.
+
+Sun Nov 7 04:07:50 2004 David Wetzel <dave@turbocat.de>
+
+ * Instance/Shared/bundle.make: Everywhere use the '-f' flag to 'cp
+ -r' so that read-only files such as subversions dirs can be
+ written and overwritten.
+
+Thu Nov 4 08:39:29 2004 Nicola Pero <n.pero@mi.flashnet.it>
+
+ * common.make (RM_LN_S): New variable.
+ * target.make: Replaced 'rm -f', when used before creating a
+ symlink, with $(RM_LN_S).
+ * rules.make ($(GNUSTEP_OBJ_DIR)): Same change.
+ * Instance/framework.make: Same change.
+ * Instance/gswbundle.make: Same change.
+
+2004-10-29 Adam Fedor <fedor@gnu.org>
+
+ * Documentation/README.Cygwin: Updated
+ * Documentation/README.Darwin: Minor update
+ * Documentation/gnustep.init: Add navigation tags back
+
+2004-10-18 Adam Fedor <fedor@gnu.org>
+
+ * Documentation/README.MinGW: Mention Windows installer. Update links
+ * Documentation/gnustep-howto.texi: Some setup no longer needed.
+ * Documentation/gnustep.init: Don't add links - currently not
+ referenced correctly.
+ * Documentation/machines.texi: Add compilers section.
+
+ * Instance/tool.make: Fix a typo.
2004-09-07 Adam Fedor <fedor@gnu.org>
DOCUMENT_TEXT_NAME = FAQ INSTALL README NEWS GNUstep-HOWTO ANNOUNCE
TOP_DOC_FILES = FAQ INSTALL README NEWS GNUstep-HOWTO ANNOUNCE
+README_FILES = README.Darwin README.MinGWOnCygwin README.Cygwin \
+ README.MinGW
+
GNUstep-HOWTO_TEXI_FILES = version.texi
GNUstep-HOWTO_TEXT_MAIN = gnustep-howto.texi
> version.texi
# Install manually man pages
-after-install:: $(GNUSTEP_DOCUMENTATION)/Developer/Make/Manual
+after-install:: $(GNUSTEP_DOCUMENTATION)/Developer/Make/Manual $(GNUSTEP_DOCUMENTATION)/User/GNUstep
$(INSTALL_DATA) DESIGN $(GNUSTEP_DOCUMENTATION)/Developer/Make/Manual
+ for file in $(README_FILES); do \
+ $(INSTALL_DATA) $$file $(GNUSTEP_DOCUMENTATION)/User/GNUstep/$$file; \
+ done;
if [ ! -f $(GNUSTEP_DOCUMENTATION_MAN) ]; then \
$(MKDIRS) $(GNUSTEP_DOCUMENTATION_MAN); \
fi; \
Date: 17-Sep-2002 (tested under windows-xp)
Author: Ildar Mulyukov <ildar@users.sourceforge.net>
+Update: 23-Oct-2004 (tested under windows-2000)
+Author: Adam Fedor <fedor@gnu.org>
+
PURPOSE
-------
Several people have reported that GNUstep installation on Cygwin works
fine, but as always, a slightly different Window's setup can cause
-unforseen problems. Yo should be relatively confident at working with
+unforseen problems. You should be relatively confident at working with
Cygwin before attempting to install GNUstep.
ADDITIONAL COMMENTS
configuration (full configuration is OK but it's VERY big
now). Installation instructions are on Cygwin site.
-In fact Cygwin already contains every package needed for GNUstep.
-
-Building GCC and GDB
---------------------
-
-Cygwin contains it's own GCC and GDB packages that work very good in Cygwin
-environment. But they lack Objective-C language support so for us these are
-completely unusable. See http://cygwin.com/faq/faq_4.html#SEC90
-
-So you have to build these two from sources.
-
-Please note that generally GDB is optional! It's up to you whether to
-use it or not. If you don't use it you don't need to build it.
-
-1. GCC. Get sources from http://gcc.gnu.org.
-Get sources (including languages you need),
-unpack, build. Before installing uninstall previous version of GCC via
-setup.exe program.
+Cygwin already contains every package needed for GNUstep. The default
+installation, however, does not include every package needed. See the
+GNUstep-HOWTO lists all the packages you might need. A probably incomplete
+list is given below:
-Note: GCC provided in Cygwin was patched to behave better in
-Windows/Cygwin environment. Cygwin team has done some changes that
-were not committed to GCC CVS tree and they lost Objective-C
-support. That's why you can't use even Cygwin GCC source. But don't
-worry: newly built GCC works fine and I believe can do all those
-"-mno-cygwin" and "-shared" things by fixing specs file.
+For base (non-GUI):
+gcc-objc
+libxml2
+libxslt
-Note2: You can make packages from programs you built with utility
-provided in APPENDIX A. These packages can be installed with setup.exe
+For GUI:
+X11 installation
+libtiff
+libtiff-devel
+libjpg
+libpng
-2. GDB. Sources are here: http://www.gnu.org/software/gdb/ . See
-http://mail.gnu.org/pipermail/discuss-gnustep/2002-August/017238.html
-Adam Fedor has made wonderful patch for current CVS GDB. It's probable
-that you may use Cygwin GDB sources but I don't know really. Unpack,
-apply patch, make, install. This may be non-trivial. Good luck.
Obtaining GNUstep
-----------------
The main GNUstep project pages tell you how to get hold of this. You
-can get the latest release of the following libraries. However, since
-Cygwin support is currently evolving, I recommend that you get the
-latest snapshot or code from CVS.
+can get the latest release of the following libraries.
-You need things in the following order:
-
-GNUstep-make (release, snapshot, or cvs core module)
-libffcall (http://ftp.gnustep.org/pub/gnustep/lib)
-GNUstep-libobjc (release, snapshot, or cvs dev-apps module)
-GNUstep-base (snapshot, or cvs core module)
-
-For gui ... GNUstep-gui and GNUstep-back (snapshot, or cvs core module)
+You need these packages:
+GNUstep-make
+ffcall
+GNUstep-objc
+GNUstep-base
+GNUstep-gui
+GNUstep-back
Building and installing libraries
FFCALL: Unpack, configure, make, make install. See GNUstep-HOWTO for details.
Note again: you can make package. See APPENDIX A
-libiconv, libtiff, libjpeg, zlib, libxml2 and openssl are all in
-Cygwin distro. Don't forget to install respective *-devel packages.
-
Building and installing gnustep-make
------------------------------------
-As ususal. E.g. I use ../clear.cvs/gnustep/core/make/configure
---prefix=/usr/GNUstep --with-thread-lib=-lkernel32 && make && make
-install
+As ususal. e.g.
+
+./configure
+make
+make install
+
Building and installing libobjc
-------------------------------
You need to install gnustep-objc as it properly exports symbols for
-DLLs and it's DLL (I don't know whether it works OK in static form)
+DLLs and it's DLL.
-Go to gnustep-objc (or from CVS, into dev-apps/libobjc), and type
+Unpack gnustep-objc, and type:
make install
-This should build and install the ObjectiveC runtime and headers for you.
-Note: I strongly suggest removing gcc's own objc/*.h and libobjc.a files.
+Note: do not use configure.
Building and installing GNUstep-base
------------------------------------
-Go to gnustep-base (or from CVS into the core/base directory), and type
+Unpack gnustep-base, and type:
make install
This should automatically run the configure script for you, build the
-base library and some tools, and install the whole lot (along with some
-system resources).
-
+base library and some tools, and install the whole lot.
Building and installing GNUstep-gui
-----------------------------------
-To build the gui, you need to have libtiff installed ...
-
-Go to gnustep-gui (or from CVS into the core/gui directory), and type
+Unpack to gnustep-gui, and type:
make install
-
-
Building and installing GNUstep-back
------------------------------------
-This software is PRE-ALPHA ... it is present in CVS for people who which to
-help porting the GNUstep backend to windows!
-
In the back directory, type
make install
-
Troubleshooting
---------------
-Pre-Compiled Binaries
----------------------
-
-I don't currently know about any resource. I have ones but don't have
-a place to put them.
-
-ACKNOWLEDGMENTS
----------------
-
-Thanks to all the GNUstep hackers for this wonderful project. Thanks
-to Richard Frith-Macdonald <rfm@gnu.org> for his README.MinGW as I
-have copy-pasted structure of this document from his README.MinGW
-
-
APPENDIX A
----------
Date : 15-Jan-2004
-Last update: 20040727 (tested under Mac OS X 10.3 / Darwin 7)
+Last update: 20041227 (tested under Mac OS X 10.3 / Darwin 7)
--> must be verified on x86-darwin-7, powerpc-apple-darwin-6
Authors: Adam Fedor <fedor@gnu.org>
Quentin Mathé <qmathe@club-internet.fr>
PURPOSE
-------
-This document is intended to provide a step by step instruction on how to get
+This document is intended to provide a step by step instruction on how to get
the GNUstep installed on Mac OS X and Darwin.
Note: GNUstep seems to install on Mac OS X 10.2 / Darwin 6, but the bundles
---------------------
<> denotes a variable depending on your preferences. To be replaced with the
-actual values from your system. For instance, if you installed gcc in /opt/local
+actual values from your system. For instance, if you installed GCC in /opt/local
- ./configure CC='<gcc install dir>/bin/gcc'
+ ./configure CC=<gcc install dir>/bin/gcc
- will become
+will become:
- ./configure CC='/opt/local/bin/gcc'
+ ./configure CC=/opt/local/bin/gcc
[] denotes an optional parameter. For instance:
- ./configure [--enable-graphics=art]
+ ./configure [--enable-graphics=art]
- can be either:
+can be either:
- ./configure
+ ./configure
- or:
-
- ./configure --enable-graphics=art
-
-POTENTIAL ERRORS WHEN RUNNING MAKE ESPECIALLY WITH BACK AND GUI
----------------------------------------------------------------
-
-If you get errors like below, just do:
-
- make clean
- make
-
-The second or the third time, the errors should disappear. It's probably due to
-some potential issues between FSF GCC and the libtool/ld Mac OS X / Darwin
-versions.
-
-Linking subproject x11 ...
-/usr/bin/ld: shared_obj/xdnd.o bad magic number (not a Mach-O file)
-collect2: ld returned 1 exit status
-make[3]: *** [shared_obj/subproject.o] Error 1
-make[2]: *** [x11.all.subproject.variables] Error 2
-make[1]: *** [libgnustep-back.all.bundle.variables] Error 2
-make: *** [internal-all] Error 2
+or:
+ ./configure --enable-graphics=art
PRELIMINAIRES
-------------
-For all targets, get the following software:
+For all targets, get the following software. I'd recommend installing Fink (and
+FinkCommander on Mac OS X) to get all this software. If you use Fink, you
+probably need to add the two lines below to your .bashrc or .profile (or similar
+startup) file:
+
+ test -r /sw/bin/init.sh && . /sw/bin/init.sh
+ export DYLD_LIBRARY_PATH=/sw/lib:$DYLD_LIBRARY_PATH
-libxml2 (Optional, highly recommended, already in Mac OS X 10.3 / Darwin 7)
-libtiff (Required)
-libjpeg (Optional, highly recommended)
-libpng (Optional, highly recommended)
+Remember you usually need root access to install software. That means when you
+see an instruction like 'make install', you usually need to use sudo
+('sudo make install') or be logged in as root (not recommended).
-libffi (Required, only contained in the gcc distributions and pyobjc)
-ffcall (On Darwin x86 - use instead of libffi)
+ libxml2 (Optional, highly recommended, already in
+ Mac OS X 10.3 / Darwin 7)
+ libxslt (Optional)
+ libtiff (Required)
+ libjpeg (Optional, highly recommended)
+ libpng (Optional, highly recommended)
+
+ libffi (Required, only contained in the GCC distributions and pyobjc)
+ ffcall (On Darwin x86 - use instead of libffi)
-Xfree86 (Required, already in Mac OS X 10.3/Darwin 7, to know more read below,
-needed for 10.2 / Darwin 6 and earlier)
+ Xfree86 (Required, already in Mac OS X 10.3/Darwin 7)
-libart2 (Optional, but required in the case you choose to use the art backend)
-freetype2 (Optional, but required in the case you choose to use the art backend)
+ libart2 (Optional, but required for art backend)
+ freetype2 (Optional, but required for art backend)
-dlcompat (Required, to be able to load bundles, included with Fink installation)
+ dlcompat (Required, already in Mac OS X 10.3 or later)
Obtaining GNUstep
-----------------
-The main GNUstep project pages tell you how to get hold of this. You can get the
-latest release of the following libraries. However, since Mac OS X support is
-currently evolving, we recommend that you get the latest snapshot or code from
-CVS.
-
+The main GNUstep project pages tell you how to get hold of this. You can get the
+latest release of the following libraries.
You need these gnustep packages:
-GNUstep-make
-GNUstep-base
-GNUstep-gui
-GNUstep-back
+ GNUstep-make
+ GNUstep-base
+ GNUstep-gui
+ GNUstep-back
Targets
-------
For GNUstep, there are several combinations of Objective-C runtime, Foundation
-library and Application Kit library possible, called library combos. The usual
+library and Application Kit library possible, called library combos. The usual
notation is:
-objcruntime-foundation-applicationkit
+ objcruntime-foundation-applicationkit
Theoretically possible are:
-gnu-gnu-gnu # gnu-objc runtime with gnustep-base and gnustep-gui. Most
- # widely tested.
-apple-gnu-gnu # apple-objc runtime with gnustep libraries. Does currently
- # not work
-apple-apple-gnu # Apple Foundation with gnustep-gui on the top. Only of
- # academically interest.
-apple-apple-apple # Cocoa with GNUstep additions. For porting GNUstep apps to
- # Cocoa.
+ gnu-gnu-gnu # gnu-objc runtime with gnustep-base and gnustep-gui.
+ # Most widely tested.
+ apple-gnu-gnu # apple-objc runtime with gnustep libraries. Does
+ # currently not work.
+ apple-apple-gnu # Apple Foundation with gnustep-gui on the top. Only of
+ # academic interest.
+ apple-apple-apple # Cocoa with GNUstep additions. For porting GNUstep apps
+ # to Cocoa.
All gnu-*-apple library combos are purely theoretical and only available to the
folks inside Apple since no mortal person ever saw the Cocoa source code. ;-)
-
-You can use either the Apple compiler or compile your own FSF compiler. This
+You can use either the Apple compiler or compile your own FSF compiler. This
potentially gives two different targets:
-Apple GCC, gnu-gnu-gnu
-FSF GCC, gnu-gnu-gnu
+ Apple GCC, gnu-gnu-gnu
+ FSF GCC, gnu-gnu-gnu
-Unfortunately, using Apple GCC with gnu-gnu-gnu doesn't appear to work currently
-(see below for more info), so this option really isn't open now.
+Unfortunately, using Apple GCC with gnu-gnu-gnu doesn't appear to work currently
+(see below for more info), so this option really isn't open now. In addition,
+if you are on Mac OS X, you can also use the Apple Foundation and AppKit
+frameworks to do GNUstep development with Cocoa, but this only works with the
+Apple compiler:
-In addition, if you are on Mac OS X, you can also use the Apple Foundation and
-AppKit frameworks to do GNUstep development with Cocoa, but this only works with
-the Apple compiler:
-
-Apple GCC, apple-apple-apple
+ Apple GCC, apple-apple-apple
GNUstep on Darwin x86
---------------------
-For GNUstep on Darwin x86, Apple GCC compiles GNUstep-base, but causes strange
+For GNUstep on Darwin x86, Apple GCC compiles GNUstep-base, but causes strange
problems when running programs (e.g. the program hangs while allocating memory
-or executes methods multiple times). So we have to use FSF GCC.
-
-Additionally, libffi has not been ported to Darwin x86, so you will need to
-install ffcall instead.
-
-ffcall (ftp://ftp.gnustep.org/pub/gnustep/libs or
-ftp://ftp.santafe.edu/pub/gnu/ffcall-1.9.tar.gz)
-
-See instructions below for building ffcall.
+or executes methods multiple times). So we have to use FSF GCC. Additionally,
+libffi has not been ported to Darwin x86, so you will need to install ffcall
+instead.
GNUstep on Darwin PowerPC
-------------------------
-Haven't been able to get Apple GCC on Mac OS X 10.2 / Darwin 6 to compile
-GNUstep-base. The compiler crashes with various errors. You need the FSF GCC
-compiler here. You need at least version 3.3.2. (While version 3.3.2 works, it
-will not install libffi)
+Haven't been able to get Apple GCC on Mac OS X 10.2 / Darwin 6 to compile
+GNUstep-base. The compiler crashes with various errors. You need the FSF GCC
+compiler here. You need at least version 3.3.2.
+Version 3.3.5 seems to cause the fewest headaches, but later versions 3.4.x
+don't work on Mac OS X / Darwin (because libobjc cannot be compiled, the
+related GCC bug report is http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11572).
Building FSF-GCC
----------------
FSF GCC is difficult to compile here. The only way I could do it was like this:
-ln -s /usr/bin/c++filt /usr/bin/c++filt3 # missing on Darwin 7.0.1 x86
- # not necessary on OpenDarwin 7.2.1
-
-and then configure gcc with:
+ ln -s /usr/bin/c++filt /usr/bin/c++filt3 # Missing on Darwin 7.0.1
+ # x86 but not necessary
+ # on OpenDarwin 7.2.1
+
+and then configure GCC with:
-mkdir build # create a sibling to the
+ mkdir build # Create a sibling to the
# toplevel source dir
-cd build
-<dir>/gcc-X.X.X/configure --enable-languages=c,objc # don't try to build c++
-make bootstrap
-make install
-cd /usr/local/lib
-ln -s libobjc.a libobjc.dylib # So the linker sees us
+ cd build
+ <dir>/gcc-X.X.X/configure \ # Don't try to build c++
+ --enable-languages=c,objc
+
+ make bootstrap
+ make install
+ cd /usr/local/lib
+ ln -s libobjc.a libobjc.dylib # So the linker sees us
(Replace X.X.X with the actual distribution you have).
-gcc on Darwin doesn't appear to support threads.
+GCC on Darwin doesn't appear to support threads.
Darwin PowerPC:
-configure and build as follows (tested using gcc-3.3.2 on Mac OS X 10.2 and
+Configure and build as follows (tested using gcc-3.3.2 on Mac OS X 10.2 and
10.3):
-mkdir build
-cd build
-<dir>/gcc-x.x.x/configure [ --prefix=<gcc install dir>] # by default gcc
- # installs in /usr/local
-make bootstrap
-make install
-cd <gcc install dir>/lib
-ln -s libobjc.a libobjc.dylib # So the linker sees us
+ mkdir build
+ cd build
+ <dir>/gcc-x.x.x/configure \ # The first option
+ [--prefix=<gcc install dir>] \ # permits to change the
+ [--enable-languages=c,objc] # fact GCC installs by
+ # default in /usr/local
+ # The second option
+ # permits to speed the
+ # GCC compilation in the
+ # case you will not use
+ # languages other than c
+ # and objc
+
+ make bootstrap
+ make install
+ cd <gcc install dir>/lib
+ ln -s libobjc.a libobjc.dylib # So the linker sees us
Setting up the GNUstep make environment
---------------------------------------
-In the GNUstep-make (core/make) package, do
-
-with bourne shell like bash (Mac OS X 10.3):
+In the GNUstep-make (core/make) package, do with bourne shell like bash
+(Mac OS X 10.3):
-echo 'export CC=<gcc install dir>/bin/gcc' >> ~/.profile
+ echo 'export CC=<gcc install dir>/bin/gcc' >> ~/.profile
with c shell like tcsh (Mac OS X 10.2):
-echo 'setenv CC <gcc install dir>/bin/gcc' >> ~/.tcshrc
+ echo 'setenv CC <gcc install dir>/bin/gcc' >> ~/.tcshrc
-else use [CC='<gcc install dir>/bin/gcc'] option when running configure.
+else use [CC=<gcc install dir>/bin/gcc] option when running configure.
then:
-./configure --with-library-combo=gnu-gnu-gnu [--prefix=<GNUstep install dir>] \
-[CC='<gcc install dir>/bin/gcc']
+ ./configure --with-library-combo=gnu-gnu-gnu \
+ [--prefix=<GNUstep install dir>] [CC=<gcc install dir>/bin/gcc]
-(apple-apple-apple is the default if you don't specify gnu-gnu-gnu). If you want
+(apple-apple-apple is the default if you don't specify gnu-gnu-gnu). If you want
to be able to compile for different targets/platforms together. Do this:
-./configure --with-library-combo=gnu-gnu-gnu --disable-flattened \
---enable-multi-platform [--prefix=<GNUstep install dir>] \
-[CC='<gcc install dir>/bin/gcc']
+ ./configure --with-library-combo=gnu-gnu-gnu --disable-flattened \
+ --enable-multi-platform [--prefix=<GNUstep install dir>] \
+ [CC=<gcc install dir>/bin/gcc]
Now:
-make
-make install
+ make
+ make install
Building and installing libobjc (target Apple GCC, gnu-gnu-gnu only !!!)
-------------------------------
-Warning ! Don't compile libobjc if you are using FSF GCC.
-
-Go to gnustep-objc (or from CVS, into dev-libs/libobjc), and type:
-
- make install
+Warning ! Don't compile libobjc if you are using FSF GCC. Go to gnustep-objc
+(or from CVS, into dev-libs/libobjc), and type:
+ make install
+
This should build and install the GNU Objective-C runtime and headers for you.
Building and installing libffi (on Darwin PowerPC only !!!)
------------------------------
-Untar the GNU gcc distribution, at least a version 3.4 series snapshot (even if
-you are not compiling the compiler) and:
+Untar the GNU GCC distribution, at least a version 3.4.x (even if you are not
+compiling the compiler) and:
-mkdir libffi-build
-cd libffi-build
-<gcc-3.4 install dir>/libffi/configure [CC='<gcc install dir>/bin/gcc']
-make
-make install
+ mkdir libffi-build
+ cd libffi-build
+ <gcc-3.4.x install dir>/libffi/configure [CC=<gcc install dir>/bin/gcc]
+ make
+ make install
-Note: the lastest 3.4 snapshot doesn't seem to have a working libffi on Mac OS X
-/ Darwin.
+Note: some 3.4.x versions doesn't have a working libffi on Mac OS X / Darwin.
+Use PyObjC libffi from http://pyobjc.sourceforge.net, in the case libffi
+install doesn't work with the 3.4.x version.
+(This libffi issue needs to be tested with the various GCC 3.4.x versions)
-Use PyObjC libffi from http://pyobjc.sourceforge.net, in the case GNUstep-base
-install doesn't work with the 3.4 snapshot.
-
-mkdir libffi-build
-cd libffi-build
-<pyobjc dir>/libffi-src/configure [CC='<gcc install dir>/bin/gcc']
-make
-make install
+ mkdir libffi-build
+ cd libffi-build
+ <pyobjc dir>/libffi-src/configure [CC=<gcc install dir>/bin/gcc]
+ make
+ make install
Warning ! Don't install libffi in <gcc install dir>, let it just install in
/usr/local
Building and installing ffcall (on Darwin x86 only !!!)
------------------------------
-./configure --prefix=$GNUSTEP_SYSTEM_ROOT \
- --libdir=$GNUSTEP_SYSTEM_ROOT/Library/Libraries \
- --includedir=$GNUSTEP_SYSTEM_ROOT/Library/Headers
+ ./configure --prefix=$GNUSTEP_SYSTEM_ROOT \
+ --libdir=$GNUSTEP_SYSTEM_ROOT/Library/Libraries \
+ --includedir=$GNUSTEP_SYSTEM_ROOT/Library/Headers
Now you can now build and install it simply by typing:
- make
- make install
-
-Additional libraries
---------------------
-
-Build and install and additional libraries listed above. You can also get them
-via Fink (http://fink.sourceforge.net) or DarwinPorts
-(http://darwinports.opendarwin.org/) and sometimes they are already present on
-Mac OS X.
-
-And to have the additional libraries taken in account by the Mac OS X / Darwin
-linker with bourne shell like bash (Mac OS X 10.3), here is an example with Fink
-obtained libraries:
-
-echo 'export DYLD_LIBRARY_PATH=<gcc install dir>/lib:/sw/lib:$DYLD_LIBRARY_PATH'
->> ~/.profile
-
-with c shell like tcsh (Mac OS X 10.2):
-
-echo 'setenv DYLD_LIBRARY_PATH <gcc install dir>/lib:/sw/lib:$DYLD_LIBRARY_PATH'
->> ~/.tcshrc
+ make
+ make install
Source GNUstep.sh
-----------------
If you are using bourne shell like bash, type:
-. <GNUstep install dir>/System/Makefiles/GNUstep.sh
+ . <GNUstep install dir>/System/Makefiles/GNUstep.sh
If you are using c shell like tcsh, type:
-source <GNUstep install dir>/System/Makefiles/GNUstep.csh
+ source <GNUstep install dir>/System/Makefiles/GNUstep.csh
Building and installing GNUstep-base
------------------------------------
-Go to GNUstep-base (or from CVS into the core/base directory)
-
-If you are using the default gcc (Apple GCC) type:
+Go to GNUstep-base (or from CVS into the core/base directory).
+
+Note: If you are using .
+
+If you are using the FSF GCC (with the Apple GCC which only works currently
+with the apple-apple-apple library combo, you don't need to run the configure
+yourself unless you need special options), type:
+
+ ./configure [--with-xml-prefix=/usr] [--disable-xmltest] [--disable-do] \
+ [LDFLAGS=-L/sw/lib] [CPPFLAGS=-I/sw/include] [CC=<gcc install dir>/bin/gcc]
+
+To know which options you need to use with your environment:
+
+ --disable-xmltest is needed with the latest Mac OS X 10.3 / Darwin 7
+ versions xml2-config tool and libxml2 headers reports differents versions,
+ because of this versions conflict the GNUstep xmltest fails.
+
+ --with-xml-prefix=/usr is needed with Mac OS X 10.3 / Darwin 7 when you
+ want to build the base library with xslt support and you have installed
+ libxslt with Fink (because Fink installs lixml2 without the headers when
+ you install lixslt, and by default the base library tries to link Fink
+ libxml2 first, then the configuration fails because configure looks for
+ the libxml2 headers).
+
+ --disable-do is needed when you decide to not build libffi or ffcall.
+
+ LDFLAGS=-L/sw/lib is needed when you installed libxslt with Fink and you
+ want to compile the base library with libxslt support.
+
+ CPPFLAGS=-I/sw/include is needed when you installed libxslt with Fink and
+ you want to compile the base library with libxslt support.
- make install
-
-This should automatically run the configure script for you, build the base
-library and some tools, and install the whole lot (along with some system
-resources).
-
-Otherwise (if you installed FSF GCC) type:
-
- ./configure [CC='<gcc install dir>/bin/gcc']
+
+followed when you are using the Apple GCC by:
-or if you decided not to build libffi or ffcall:
+ make install
+
+Note: this should automatically run the configure script for you (in the case
+you haven't done it).
- ./configure --disable-do [CC='<gcc install dir>/bin/gcc']
-
-followed by
+otherwise (with the FSF GCC) followed by:
- make
- make install
+ make
+ make install
-On the apple-apple-apple target, it will only build the GNUstep additions
+On the apple-apple-apple target, it will only build the GNUstep additions
library that adds extra stuff to Foundation. If you are using the
apple-apple-apple target, there currently is no reason to go on and compile
GNUstep-gui.
Building and installing GNUstep-gui
-----------------------------------
-Go to GNUstep-gui (or from CVS into the core/gui directory), and type
+Go to GNUstep-gui (or from CVS into the core/gui directory).
-If you are using the Apple GCC or the FSF GCC type:
+If you are using the Apple GCC (doesn't work currently) or the FSF GCC type:
- ./configure --disable-gsnd [CC='<gcc install dir>/bin/gcc']
+ ./configure --disable-gsnd [CC=<gcc install dir>/bin/gcc]
-followed by
+followed by:
- make
- make install
+ make
+ make install
Note: The gsnd server hasn't been ported to Mac OS X / Darwin yet.
-In the case configure didn't found libjpeg, use --with-jpeg-library=<jpeg lib
-dir> --with-jpeg-include=<jpeg include dir> to have the libjpeg detected.
+In the case configure didn't found libjpeg, use
+--with-jpeg-library=<jpeg libdir> --with-jpeg-include=<jpeg include dir> to have
+the libjpeg detected.
Example with Fink:
-./configure --disable-gsnd --with-jpeg-library=/sw/lib
---with-jpeg-include=/sw/include
+ ./configure --disable-gsnd --with-jpeg-library=/sw/lib
+ --with-jpeg-include=/sw/include
Building and installing GNUstep-back
------------------------------------
Warning ! You must have installed X11User.pkg from the Panther install disc and
-also X11SDK.pkg from the xCode Tools install disc to be able to compile
+also X11SDK.pkg from the xCode Tools install disc to be able to compile
GNUstep-back under Mac OS X 10.3.
If you aren't installing GNUstep under Mac OS X 10.3 / Darwin 7, you can use
In the back directory, type:
- ./configure [CC='<gcc install dir>/bin/gcc']
- make
- make install
+ ./configure [CC=<gcc install dir>/bin/gcc]
+ make
+ make install
In the case, you choose to use the art backend, you will need to have the
freetype2 and libart2 libraries installed, first be sure to have libart2 in your
path, for example, with Fink installation type:
- export DYLD_LIBRARY_PATH=/sw/lib:$DYLD_LIBRARY_PATH
+ export DYLD_LIBRARY_PATH=/sw/lib:$DYLD_LIBRARY_PATH
-Then you should be able to configure back and install it.
+NOTE: I found also that even though the X11SDK.pkg package has freetype2,
+it is missing a crucial include file and also has some undefined symbols. I
+had to install the freetype2-dev package from fink and add this to my path
+so that it could be found:
+PATH=/sw/lib/freetype/bin:$PATH
+make sure in config.make that -L/sw/lib/freetype2/lib is included before -L/usr/X11R6/lib (Adam Fedor <fedor@gnu.org>)
- ./configure --enable-graphics=art [CC='<gcc install dir>/bin/gcc']
- make
- make install
+Then you should be able to configure back and install it:
-You also need to have /sw/lib in your library path before running GNUstep apps
-with the art backend, as it needs to find libart2, so put the above export
-DYLD_LIBRARY_PATH somewhere in your .profile (or do the export before launching
-an application) [see the above "Additional Libraries" section].
+ ./configure --enable-graphics=art [CC='<gcc install dir>/bin/gcc']
+ make
+ make install
-The backend architecture which GNUstep-gui is built upon, has been written to be
-used within X Windows, then you need to start up an X Server (like Apple X11) to
-run the GNUstep-gui applications.
+You also need to have /sw/lib in your library path before running GNUstep apps
+with the art backend, as it needs to find libart2, so put the above export
+DYLD_LIBRARY_PATH somewhere in your .profile (or do the export before launching
+an application). The backend architecture which GNUstep-gui is built upon, has
+been written to be used within X Windows, then you need to start up an X Server
+(like Apple X11) to run the GNUstep-gui applications.
-Warning ! With the art backend, before to launch applications based on
+Warning ! With the art backend, before to launch applications based on
GNUstep-gui, in the shell, don't forget to edit the defaults (no need it to redo
-it later) :
+it later):
- defaults write NSGlobalDomain XWindowBufferUseXShm NO
+ defaults write NSGlobalDomain XWindowBufferUseXShm NO
-because Apple X11 doesn't support well shared memory for buffering (wich libart2
-uses by default).
+because Apple X11 doesn't support well shared memory for buffering (which
+libart2 uses by default).
+
+POTENTIAL ERRORS WHEN RUNNING MAKE ESPECIALLY WITH BACK AND GUI
+---------------------------------------------------------------
+
+If you get errors like below, just do:
+
+ make clean
+ make
+
+The second or the third time, the errors should disappear. It's probably due to
+some potential issues between FSF GCC and the libtool/ld Mac OS X / Darwin
+versions.
+
+ Linking subproject x11 ...
+ /usr/bin/ld: shared_obj/xdnd.o bad magic number (not a Mach-O file)
+ collect2: ld returned 1 exit status
+ make[3]: *** [shared_obj/subproject.o] Error 1
+ make[2]: *** [x11.all.subproject.variables] Error 2
+ make[1]: *** [libgnustep-back.all.bundle.variables] Error 2
+ make: *** [internal-all] Error 2
More informations on the art backend
------------------------------------
-To have a working art backend... You will also need to download and install
+To have a working art backend... You will also need to download and install
fonts, as it uses a specific font format. Use for example the file
http://w1.423.telia.com/~u42308495/alex/backart/ArtResources-0.1.2.tar.bz2 and
put the .nfont directories somewhere in $(GNUSTEP_SYSTEM_ROOT)/Library/Fonts
Window Maker will crash with signal 10.
Example with Fink, do:
-/sw/bin/wmaker.inst
+
+ /sw/bin/wmaker.inst
GNUstep daemons
---------------
Note: If you try to start GNUstep daemons by hand with 'sudo opentool dameon',
it won't work, because when you become root on Mac OS X / Darwin with sudo or
-su, DYLD_LIBRARY_PATH environment variable is erased, then to start them in the
-shell, do:
+su, the DYLD_LIBRARY_PATH environment variable of your user isn't used, then to
+start them in the shell, do:
-sudo opentool gdomap (gdomap doesn't rely on the GNUstep libraries or other
-special librairies)
-su root
+ sudo opentool gdomap # gdomap doesn't rely on
+ # the GNUstep libraries
+ # or other special
+ # librairies.
+ su root
then with bourne shell like bash (Mac OS X 10.3):
-. /GNUSTEP_SYSTEM_ROOT/Library/Makesfiles/GNUstep.sh
+ . $GNUSTEP_SYSTEM_ROOT/Library/Makesfiles/GNUstep.sh
or with c shell like tcsh (Mac OS X 10.2):
-source /GNUSTEP_SYSTEM_ROOT/Library/Makesfiles/GNUstep.csh
+ source $GNUSTEP_SYSTEM_ROOT/Library/Makesfiles/GNUstep.csh
and just do:
-opentool gdnc
-opentool gpbs
+ opentool gdnc
+ opentool gpbs
+
+GNUstep applications
+--------------------
+
+Now you can install GNUstep applications like Gorm, ProjectCenter etc.
+Remember the fact that when you do 'sudo make install', the $DYLD_LIBRARY_PATH
+variable of your user is not used by root. In that case, GNUstep-make could
+complain for the undefined library path, the solution is identical to the one we
+used to launch the GNUstep daemons above:
+
+ su root
+
+then with bourne shell like bash (Mac OS X 10.3):
+
+ . $GNUSTEP_SYSTEM_ROOT/Library/MakeFiles/GNUstep.sh
+
+or with c shell like tcsh (Mac OS X 10.2):
+
+ . $GNUSTEP_SYSTEM_ROOT/Library/MakeFiles/GNUstep.sh
+
+and just do:
+
+ make install
+
+Note: upon launching applications like Project Center which links a framework,
+you will probably get an error message about the library
+<Framework name>.framework/<Framework name> which cannot be found, to fix that,
+just create a symbolic link to the actual library file, which is installed
+deeper in the hierarchy:
+
+ cd $GNUSTEP_SYSTEM_ROOT/Library/Frameworks/<Framework name>.framework
+ sudo ln -s Versions/<Current version>/lib<Framework name>.dylib <Framework name>
+
+Example with the ProjectCenter framework (0.4.0 version):
+
+ cd $GNUSTEP_SYSTEM_ROOT/Library/Frameworks/ProjectCenter.framework
+ sudo ln -s Versions/0.4.0/libProjectCenter.dylib.0.4.0 ProjectCenter
---
-Date: 09-Jan-2003 (tested under Windows XP)
-Update: 23-Feb-2003 (also tested under Windows 2000)
-Author: Richard Frith-Macdonald <rfm@gnu.org>
+Date: 31-May-2005 (tested under Windows XP)
+Author: Nicola Pero <n.pero@mi.flashnet.it>,
+ after Richard Frith-Macdonald <rfm@gnu.org> and others
PURPOSE
-------
MSYS is a very much cut down version of the Cygwin environment ...
providing a minimal set of tools needed to build programs using MingGW.
If you wish to build for MinGW by cross-compiling from a Cygwin
-environment, please read README.cygwin instead.
-
-The base library is only recently ported to run on MinGW. While most
-stuff works, including networking/distributed objects, there are probably
-bits that have been overlooked or are untested as yet. The only *known*
-areas of code not yet ported are the zlib, SSL and XML extensions.
-
-The gui library is only partially ported to run under MinGW ... you can
-play with it, but expect to have to work on porting the library rather
-than developing user applications.
+environment, please read README.Cygwin instead.
+The gui library is only partially ported to run under MinGW. The look
+and behavior may not be consistant.
PRELIMINARIES
-------------
-Before we start, we need to get some preliminary Windows software -
-a tool for fetching source code via CVS.
+One way to vastly simplify installing GNUstep, is to use the Windows-based
+GNUstep installer. Currently, this installer only installs the non-gui
+portion of GNUstep. Get it from
+
+http://www.gnustep.org/resources/sources.html#windows
+
+If you have already installed this, you can skip to the section
+'Additional gui libraries '. Although you may want to read the rest of
+the instructions for other helpful information.
+
+
+STEP BY STEP INSTALLATION INSTRUCTIONS
+--------------------------------------
+
+1. Install MinGW
+================
+
+Download MinGW-4.1.0 or later from
+http://sourceforge.net/projects/mingw Install it into
+
+C:/xxx/msys/1.0/mingw
+
+(where /xxx/ is the top-level path you want to use, I use Nicola/GNUstep so
+I install it into C:/Nicola/GNUstep/msys/1.0/mingw) (earlier versions of
+MinGW might not work)
+
+PS: Download MinGW-4.1.0.exe, then start it up. Select the
+installation path C:\xxx\msys\1.0\mingw; then install all the Current
+versions of everything (but not the sources).
-If you don't want to use Windows tools for this, you can get the
-latest cygwin distribution and use the cvs client in that. The following is
-for people who don't want to download all that cygwin stuff.
-To get stuff from CVS you can download and install WinCVS ... which
-you can find at http://sourceforge.net/projects/cvsgui You will need
-to be a system administrator on your machine to install this software.
-You should be able to use it without changing/setting any special
-configuration options. The one thing to remember is that the checkbox
-to select whether to use UNIX line terminators instead of Windows/DOS
-line terminators should be set to the unix option.
+2. Install msys
+===============
+Download MSYS-1.0.10 or later from the same site. Install it into
+C:/xxx/msys/1.0
-Installing and setting up MINGW and MSYS
-----------------------------------------
+The postinstall script should ask you for the mingw location, then
+detect it and be happy that it's there and all is setup properly.
-Next, download msys-1.08 or later from
-http://sourceforge.net/projects/mingw
-and install it.
-Next, download MinGW-2.0.0-3 or later from
-http://sourceforge.net/projects/mingw
-and install it inside the msys installation
-(usually in c:/msys/1.0/mingw)
+3. Install msys developer toolkit
+=================================
-If you didn't install mingw in the standard location within the msys
-installation, then after installing mingw, create a file called fstab in
-c:/msys/<version-number>/etc, or wherever you installed msys, and make
-sure it contains the line
-c:/mingw /mingw
-which also should be changed accordingly if you installed MinGW
-somewhere else.
+Download msysDTK-1.0.1 or later from the same site. Install it into
+C:/xxx/msys/1.0
+
+
+Now your MSYS/MinGW system should be setup! There should be an icon
+on your desktop called 'MSYS'. Double-clicking on it will launch a
+Unix-like shell. Go around and make sure you know how to use it. Log
+into it and work in it.
+
+
+4. Additional Windows steps
+===========================
You may need to edit /mingw/include/winsock2.h to change the size of the
sa_data field in the sockaddr structure from 14 to 22 ... this is because
-newer versions of Windows have changed the layout of this structure.
-This modification is needed to be able to correctly determine the
+some versions of Windows have changed the layout of this structure.
+This modification may be needed to be able to correctly determine the
network interface details for your machine.
-It's a good idea to remove the libobjc.a and include/objc header that come
-with gcc (gcc -v for location) so that they are not accidentally found
-instead of the libobjc DLL that you will compile below.
+It's a good idea to remove the libobjc.a and libobjc.la and
+include/objc headers that come with gcc (gcc -v for location) so that
+they are not accidentally found instead of the libobjc DLL that you
+will compile below.
Now you can open a window containg a shell by choosing MSYS from the
start menu.
-At this point you may want to set the HOMEDRIVE and HOMEPATH environment
-variables to point to the home directory you wish to work from (though
-the defaults may be ok for you).
-NB. This home directory for building software must *not* contain spaces.
-(aside - MSYS uses the UNIX-style HOME environment variable, but Windows
-programs, including GNUstep programs under Windows, use the HOMEDRIVE and
-HOMEPATH environment variables to build a windows-style path for the home
-directory. eg. if HOMEDRIVE is C: and HOMEPATH is \MyHome then the path
-to the home directory is C:\MyHome).
-
From this window we can now start building things.
-IMPORTANT NOTE
-The msys make program sometimes crashes and core-dumps (usually while
-installing software). If this happens, repeat the make command a few
-times until it works ... the crash in make is not reliably repeatable
-(which is probably why it has not been tracked down and fixed yet),
-which means that a retry will usually work.
-
-Obtaining GNUstep
------------------
+5. Obtaining GNUstep
+====================
The main GNUstep project pages tell you how to get hold of this. You can get
the latest release of the following libraries. However, since MinGW support
is currently evolving, we recommend that you get the latest snapshot
or code from CVS.
-You need things in the following order:
+export CVS_RSH=ssh
+cvs -z3 -d:ext:anoncvs@savannah.gnu.org:/cvsroot/gnustep co core
-GNUstep-make (release, snapshot, or cvs core module)
-libffcall (http://ftp.gnustep.org/pub/gnustep/lib)
-GNUstep-objc (release, snapshot, or cvs dev-apps module)
-GNUstep-base (snapshot, or cvs core module)
-For gui ... GNUstep-back (snapshot, or cvs core module)
+6. Installing gnustep-make
+==========================
-NB. Ensure that the GNUstep code you are attempting to use has a date
-later than the date at the top of this document! The instructions do
-not apply to earlier code.
+go in core/make and do
+./configure --prefix=/C/xxx/GNUstep
+make
+make install
-Setting up the GNUstep make environment
----------------------------------------
-In the GNUstep-make (core/make) package, do './configure
---prefix=/C/GNUstep' You can of course use a different prefix to
-install the GNUstep system in an alternative location.
-The leading '/C' is the MSYS way of specifying that the 'C' drive is
-to be used. Older versions of the tools required a windows style
-path (eg. C:/GNUstep), but using the MSYS style path is important as
-it will avoid problems later!
+7. setup your GNUstep environment
+=================================
-Note: There was a comment that '--prefix=/C/GNUstep' did not work
-with a bash shell as it got converted to C:\GNUstep (which is bad because
-the shell treats a \G as something entirely different. If you have this
-problem, try '--prefix=C:/GNUstep' (It's probably better to use the
-native Msys shell though).
+NB: you will need to do the same every time you start up your MSYS
+shell to do development
-Now you can type 'make install' to build and install the make package.
+. /C/xxx/GNUstep/System/Library/Makefiles/GNUstep.sh
-Once this is done, type '. GNUstep.sh' to set up your GNUstep
-environment. The environment for building software is now completely
-set up, but for ease of use later, you might set up a script to be
-used to set up any new shell windows you create. Something like this
-in your ~/.profile would do nicely:
+Also, set HOMEPATH, HOMEDRIVE and HOME ... add the following lines to
+your ~/.profile:
export HOMEDRIVE=C:
-export HOMEPATH=/home/myname
-export HOME=/C/home/myname
-export GNUSTEP_SYSTEM_ROOT=/C/GNUstep/System
-. $GNUSTEP_SYSTEM_ROOT/Library/Makefiles/GNUstep.sh
+export HOMEPATH=/home/Nicola
+export HOME=/C/xxx/msys/1.0/home/Nicola
+. /C/xxx/GNUstep/System/Library/Makefiles/GNUstep.sh
+
+(obviously replacing 'Nicola' with your Login name) (not sure if this
+setting of HOMEDRIVE etc is really required, will investigate)
NOTE: Sometimes the HOME variable may already be set by Windows to be
%USERPROFILE% (which is the Windows variable that contains the path of
no compatibility symlink to $GNUSTEP_SYSTEM_ROOT/Library/Makefiles
+8. Installing gnustep-objc
+==========================
-Building and installing libobjc
--------------------------------
+Download gnustep-objc, and compile it:
-Despite the statement in the GNUstep-HOWTO, even if you have a 3.x
-compiler, you still need to install gnustep-objc as it properly
-exports symbols for DLLs.
+make
+make install
-Go to gnustep-objc (or from CVS, into dev-libs/libobjc), and type
- make install
+9. Reinstalling gnustep-make
+============================
-This should build and install the ObjectiveC runtime and headers for you.
+Go in core/make and reconfigure/recompile again so that gnustep-objc
+is detected:
+make distclean
+./configure
+make
+make install
+gnustep-make should have detected your custom libobjc.
-Building and installing FFCALL
-------------------------------
-The next priority is to get the ffcall library built and installed.
-You should get the latest ffcall archive from
-http://ftp.gnustep.org/pub/gnustep/libs. Currently this is
-ffcall-1.8d.tar.gz
+10. Installing ffcall
+=====================
-Ignore any other instructions for building this ...
+Download ffcall from the GNUstep website, and type:
-First, in the shell window in which you have set up your GNUstep
-environment, type
+./configure --prefix=$GNUSTEP_SYSTEM_ROOT
+make
+make install
-./configure --prefix=$GNUSTEP_SYSTEM_ROOT \
- --libdir=$GNUSTEP_SYSTEM_ROOT/Library/Libraries \
- --includedir=$GNUSTEP_SYSTEM_ROOT/Library/Headers
+(if you get a popup about contest.exe failing, just ignore it)
-Now you can now build and install it simply by typing:
+11. Installing additional packages
+=======================
- make
- make install
+Download the following packages:
+ libintl-0.11.5-2.bin.zip
+ libintl-0.11.5-2.lib.zip
+ (important: libintl-0.14.4 is untested, use 0.11.5 to be safe)
+ libiconv-1.8.1-bin.zip
+ libiconv-1.8.1-lib.zip
-Additional libraries
---------------------
-
-There are some optional (but very strongly recommended) libraries you
-can install to make GNUstep work better. For full multilingual support
-you need libiconv, and for gui applications you need libtiff, libjpeg,
-and zlib.
-
-libiconv
- Needed for multilingual character support (unicode etc)
-
- Get the binary package from
- http://www.zlatkovic.com/projects/libxml/index.html
- Unpack this and
- cp include/iconv.h $GNUSTEP_SYSTEM_ROOT/Library/Headers
- cp lib/iconv.lib $GNUSTEP_SYSTEM_ROOT/Library/Libraries/libiconv.a
- cp lib/iconv.dll $GNUSTEP_SYSTEM_ROOT/Tools/iconv.dll
-
-libtiff, libjpeg, and zlib
- Needed for image handling support in the GNUstep gui libary
- (not required for GNUstep-base, though zlib can be used by the base library).
-
- Get the binary packages from -
- http://prdownloads.sourceforge.net/gnuwin32/tiff-3.5.7-lib.zip
- http://prdownloads.sourceforge.net/gnuwin32/tiff-3.5.7-bin.zip
- http://prdownloads.sourceforge.net/gnuwin32/libjpeg-6b-lib.zip
- http://prdownloads.sourceforge.net/gnuwin32/libjpeg-6b-bin.zip
- http://prdownloads.sourceforge.net/gnuwin32/zlib-1.1.4-lib.zip
- http://prdownloads.sourceforge.net/gnuwin32/zlib-1.1.4-bin.zip
-
- Unpack and install
- the header (.h) files in $GNUSTEP_SYSTEM_ROOT/Library/Headers
- the library (.lib) files in $GNUSTEP_SYSTEM_ROOT/Library/Libraries
- the dll files in $GNUSTEP_SYSTEM_ROOT/Tools
-
- Be sure to rename the .lib files to .a!
-
-libxml2
- Needed for XML parsing support, for MacOS-X compatible
- property lists, and for documentation processing.
- NB. at the time of writing, XML support in GNUstep base has *not*
- been ported to Windows - but when it is, you will need this package.
-
- Get the binary package from
- http://www.zlatkovic.com/projects/libxml/binaries.html
- Unpack this and
- cd include
- tar -cf - libxml | (cd $GNUSTEP_SYSTEM_ROOT/Library/Headers; tar -xvf -)
- cd ../lib
- cp libxml2.lib $GNUSTEP_SYSTEM_ROOT/Library/Libraries/libxml2.a
- cp libxml2.dll $GNUSTEP_SYSTEM_ROOT/Tools
-
-The following are libraries which are not currently used, but which will
-be required at some point in the future -
-
-openssl
- Needed for the SSL bundle, providing HTTPS support for NSURL.
- NB. at the time of writing, SSL support in GNUstep base has *not*
- been ported to Windows - but when it is, you will need this package.
- Get the binary package from
- http://www.kix.or.jp/~fujino/openssl
- Unpack this and
- tar -cf - openssl | (cd $GNUSTEP_SYSTEM_ROOT/Library/Headers; tar -xvf -)
- cp *.lib $GNUSTEP_SYSTEM_ROOT/Library/Libraries
- cp *.dll *.exe $GNUSTEP_SYSTEM_ROOT/Tools
-
-
-
-Building and installing GNUstep-base
-------------------------------------
-
-Go to gnustep-base (or from CVS into the core/base directory), and type
+ zlib-1.2.2-bin.zip
+ zlib-1.2.2-lib.zip
- make install
+from http://gnuwin32.sourceforge.net, and install them. To
+install them, simply unzip them into /C/xxx/msys/1.0/mingw.
-This should automatically run the configure script for you, build the
-base library and some tools, and install the whole lot (along with some
-system resources).
+12. XML support
+===============
+Not working yet.
-Building and installing GNUstep-gui
------------------------------------
-To build the gui, you need to have libtiff installed ...
+13. Installing gnustep-base
+===========================
-Go to gnustep-gui (or from CVS into the core/gui directory), and type
+Go in gnustep-base, and type
- make install
+./configure --disable-xml
+make
+make install
+At this point, you should be able to compile and run any non-gui tool
+and library. The next steps are only required for gui applications.
+14. Installing gui additional packages
+======================================
-Building and installing GNUstep-back
-------------------------------------
+For the gui, download and install the following packages:
-This software is PRE-ALPHA ... it is present in CVS for people who wish to
-help porting the GNUstep backend to Windows!
+ jpeg-6b-4-bin.zip
+ jpeg-6b-4-dep.zip
+ jpeg-6b-4-lib.zip
-In the back directory, type
+ tiff-3.7.2-bin.zip
+ tiff-3.7.2-dep.zip
+ tiff-3.7.2-lib.zip
- make install
+ libpng-1.2.8-bin.zip
+ libpng-1.2.8-lib.zip
+The process is always the same: download the zip file from the
+gnuwin32 website, then unzip them into /C/xxx/msys/1.0/mingw.
+15. Installing gnustep-gui
+==========================
+Go in the gui, and type:
-Troubleshooting
----------------
+ ./configure
+ make
+ make install
-Issues with updating:
-Before attempting to update your GNUstep installation, be sure to stop/kill
-all running GNUstep programs or services (i.e. gdomap, gdnc, gpbs) since
-Windows cannot overwrite files that are currently in use.
+16. Installing gnustep-back
+===========================
+Go in back, and type:
+
+ ./configure
+ make
+ make install
-Good Sites for Pre-Compiled Binaries
-------------------------------------
-Many libraries, etc from:
+17. Testing your gui installation
+=================================
-<http://gnuwin32.sf.net> (libtiff, libxml2)
+Go in a simple gui application (examples/gui a very good starting
+point), compile and run it. :-)
-MingW guile from
+Additionally, you might want to compile and run Gorm or other GNUstep
+applications. Gorm (and hopefully other GNUstep applications too)
+should compile and run out of the box.
-<http://www.textsure.net/~ela/devel.html>.
-also need guile from
-<http://sourceforge.net/project/showfiles.php?group_id=7382>
+Troubleshooting
+---------------
+
+Issues with updating:
+Before attempting to update your GNUstep installation, be sure to stop/kill
+all running GNUstep programs or services (i.e. gdomap, gdnc, gpbs) since
+Windows cannot overwrite files that are currently in use.
-for guile-config file.
+If you pass any include (-Ixxx) paths to GCC, make sure they do *not*
+end with a slash. The current GCC/MinGW releases have a bug where
+such paths would be ignored.
Cocoa:
@itemize @bullet
-@item Be careful with Cocoa.h includes (Use #ifndef GNUSTEP, for instance)
+@item Use #ifndef GNUSTEP for Apple only code.
@item Do not use CoreFoundation
@item Do not use Objective-C++
@item Do not use Quicktime or other proprietary extension
@item You need to convert .nib files (see next question @pxref{Tools for porting})
-@item Some unfinished classes include Drawers.
@end itemize
+See also @url{http://mediawiki.gnustep.org/index.php/Writing_portable_code}
+for more information.
+
@node Tools for porting, Can I transfer archived data from GNUstep to Cocoa?, How about porting between Cocoa and GNUstep?, Compatibility
@subsection Tools for porting
portability, open standard, easy localization, themeability, and
intelligent autolayout.
+@item Gorm
+The equivalent of the Interface Builder in GNUstep. It might be easier to
+just recreate the interface using Gorm rather than dealing with
+translations.
+
@item OpenStep2GNUConverter and nfmake
Two programs that allow you to convert PB files to GNUstep makefiles or
compile a program on GNUstep directly from PB files. They probably work
* How can I help with GNUstep?::
* Helping develop GNUstep::
* Helping document GNUstep::
+* How do I assign my contribution?::
* How do I update the task list?::
* How do I start writing tests?::
* How do I start writing applications?::
Do remember that any changes beyond a few lines of code (or
documentation) require a disclaimer or copyright assignment to the
Free Software Foundation before they can be incorporated into the
-project. Get in touch with the maintainer of the library you are
-working on about this.
+project. Get in touch with the GNUstep maintainer about this.
Don't start with large-scale reorganization of anything - instead,
get a general idea in mind of what you want to do, and proceed as
Once you have coded something, you could always write a testcase
and documentation for it :-)
-@node Helping document GNUstep, How do I update the task list?, Helping develop GNUstep, Compiling and Developing
+@node Helping document GNUstep, How do I assign my contribution?, Helping develop GNUstep, Compiling and Developing
@subsection Helping document GNUstep
All class documentation is written directly in the source code itself
GNUstep documentation should have copyright assigned to the Free
Software Foundation.
-@node How do I update the task list?, How do I start writing tests?, Helping document GNUstep, Compiling and Developing
+@node How do I assign my contribution?, How do I update the task list?, Helping document GNUstep, Compiling and Developing
+@subsection How do I assign my contribution?
+
+Everyone who contributes more than 20 lines of code or so needs to
+sign a copyright assignment so that the FSF can have legal control of
+the copyright. This makes it easier to defend against any copyright
+infringement suits. Contact the GNUstep maintainer for instructions
+on how to do this or download and fill out the form
+@url{http://www.gnustep.org/resources/request-assign.future}
+(instructions are included).
+
+
+@node How do I update the task list?, How do I start writing tests?, How do I assign my contribution?, Compiling and Developing
@subsection How do I update the task list?
The task list (@url{http://savannah.gnu.org/pm/?group_id=99}) is
@item libxml2 (RECOMMENDED)
The libxml library (Version 2) is used to translate some of the
documentation for GNUstep and to provide suport for MacOS-X compatible
-XML-based property-lists. It is recommended but not currently required.
+XML-based property-lists. It is not required, but you have to explicitly
+disable use of XML when compiling GNUstep base if you do not have it.
@item libxslt (OPTIONAL)
Stylesheet support for use with XML.
@item The PNG library (libpng) (RECOMMENDED)
The GUI library uses this to handle loading PNG images.
-@item libaudiofile (RECOMMENDED)
+@item gif or ungif (OPTIONAL)
+The GUI library uses either one of these libraries to load GIF images.
+
+@item aspell (OPTIONAL)
+The GUI library uses this to handle spell checking.
+
+@item cups (OPTIONAL)
+The GUI library uses this to handle interface to the CUPS print servers.
+
+@item audiofile (OPTIONAL)
+The GUI library uses this for playing sound files.
+
+@item portaudio (OPTIONAL)
The GUI library uses this for the sound server
@item freetype2 (RECOMMENDED, REQUIRED for art backend)
with the WindowMaker window manager.
Get WindowMaker from @url{http://www.windowmaker.org}.
-@item gnustep-objc package (for gcc version < 3.0 ONLY) (RECOMMENDED)
+@item gnustep-objc package (for gcc version < 3.0 ONLY or MINGW/Cygwin) (RECOMMENDED)
Note: Do not install this library unless you are sure you need it.
-You probably don't need it except on MinGW.
+You probably don't need it except on MinGW and Cygwin (regardless of the
+gcc version you have).
This is a special version of the Objective-C runtime that include several
bug fixes and features that were not in gcc versions previous to 3.0.
It is available at @url{ftp://ftp.gnustep.org/pub/gnustep/libs} which
@node GNUstep Home, Time Zone, Environment Setup, Additional Installation
@section GNUstep Home
-Set up your home GNUstep directory. This should be done automatically
-if you don't do it. This is where user defaults are kept as well as
+Your home GNUstep directory should be created automatically the first
+time you use a GNUstep tool or application.
+This is where user defaults are kept as well as
other user configuration files. User installed apps, libraries, etc
-are also here (if the default user directory is used).
-
-@example
-cd
-mkdir GNUstep
-@end example
+are also here (if the default user directory is used). By default this
+is the directory @file{GNUstep} under your home directory, but you can change
+this (see the gnustep-make installation documentation).
@node Time Zone, GNUstep deamons, GNUstep Home, Additional Installation
@section Time Zone
-Next, set your local time zone. There are four ways to do this, pick
-one (see
-@file{$GNUSTEP_SYSTEM_ROOT/Library/Libraries/Resources/gnustep-bsae/NSTimeZones/zones} for
-typical time zones):
-
-@enumerate
-@item Use the defaults utility to set ``Local Time Zone'' to your local
-time zone (defaults is installed with GNUstep in the Tools directory). Type
-something like ``defaults write NSGlobalDomain "Local Time Zone" GB''.
-
-@item Set the @var{GNUSTEP_TZ} environment variable.
-
-@item Create the file @file{$GNUSTEP_SYSTEM_ROOT/Library/Libraries/Resources/gnustep-base/NSTimeZones/localtime} with the name of the local time zone in it.
+In most cases, GNUstep should be able to determine your time zone, if
+you have already set it up correctly when setting up your
+computer. However, in some cases this might fail or the correct
+information may not be available. You can set it manually using the
+GNUstep defaults utility to set @kbd{Local Time Zone} to your local time
+zone. Type something like @kbd{defaults write NSGlobalDomain "Local
+Time Zone" GB}. Where @kbd{GB} is a time zone abbreviation.
-@item Set the @var{TZ} environment variable (this may conflict with other
-software on your system though).
-@end enumerate
+See @file{$GNUSTEP_SYSTEM_ROOT/Library/Libraries/Resources/gnustep-bsae/NSTimeZones/zones} for typical time zones):
@node GNUstep deamons, , Time Zone, Additional Installation
@section GNUstep deamons
@end example
@item gdnc - Start after sourcing @file{GNUstep.sh} (e.g. in .profile)
@item gpbs - Same as with gdnc, make sure X-Windows is running.
+@item make_services - Not a deamon, but a tool that needs to be run everytime
+you install a new Application or service. This is NOT run automatically.
@end itemize
@example
gdnc
gpbs
fi
+make_services
@end example
@node Tools and Applications, Machine Specific, Additional Installation, Top
@chapter Test Tools and Applications
-Test programs for the base library are in @file{base/Testing}. Example
-applications are located in the gstep-examples package. To make these,
+Example applications are located in the gstep-examples package. To make these,
just uncompress and untar this package, cd to the appropriate
directory, and type make. You will need to install the GNUstep core libraries
first before doing this.
open(TMPL,"<$ENV{'GNUSTEP_WEB_ROOT'}/secondary.html.template");
$tmpl=join("",<TMPL>);
close(TMPL);
- ($T2H_EXTRA_HEAD,$T2H_AFTER_BODY_OPEN,$T2H_PRE_BODY_CLOSE) =
+ ($T2H_EXTRA_HEAD,$T2H_AFTER_BODY_OPEN,$T2H_PRE_BODY_CLOSE_BAD) =
($tmpl=~/<\/title>(.*)<\/head>.*<body>(.*<div id="main">).*(<\/div><\/div>.*)<\/body>/sm);
}
else {
$T2H_print_About = \¬hing;
$T2H_SECTION_NAVIGATION = 0;
-$T2H_print_navigation = \¬hing;
+#$T2H_print_navigation = \¬hing;
@settitle Platform Compatibility
@ifclear HOWTO
-@c Machine Specific, Darwin/ix86, , (DIR)
-@node Machine Specific, Darwin/ix86, , (DIR)
+@c Machine Specific, Compilers, , (DIR)
+@node Machine Specific, Compilers, , (DIR)
@chapter Machines
@end ifclear
Platforms marked @emph{Obsolete} are very old distributions. No one really
knows if GNUstep works on these although they may.
+If you have compiled GNUstep on a specific machine, please send information
+about what you needed and any special instructions needed to
+GNUstep @email{bug-gnustep@@gnu.org}.
+
@menu
+* Compilers::
* Darwin/ix86::
* Darwin/PowerPC::
* Debian/DEC-Alpha::
* Irix 6.5/MIPS::
* MacOSX/PowerPC::
* MkLinux/PowerPC::
-* NetBSD::
+* NetBSD/i386::
+* NetBSD/Sparc64::
* Netwinder::
* OpenBSD 3.x::
* OSF/Alpha::
* RedHat/Intel::
* Slackware/Intel::
+* Slackware/Sparc::
* Solaris 2.5.1/Sparc::
* Solaris/Sparc::
* Solaris 2.7/Intel::
* Yellowdog/PowerPC::
@end menu
+@c -----------------------------------------
+@node Compilers, Darwin/ix86, Machine Specific, Machine Specific
+@section Compilers
+
A recommended compiler is listed for each machine, if known. You should try
to use the recommended compiler for compiling GNUstep, as GNUstep is quite
complex and tends provoke a lot of errors in some compilers. Even versions
Compiler notes: If a recommended compiler is not listed, take note of the
following information before choosing the compiler you use.
-@table @samp
+@table @var
@item egcs or gcc < 2.95
Might work, but few people use these now.
@item gcc 2.95.x
@item gcc 3.3.x
Recommended. Fixes some bugs relating to protocols as well as other
improvements.
-@item gcc 3.4
-No info yet.
+@item gcc 3.4.x
+Recommended. The #import directive is no longer deprecated as of this
+version of the compiler.
@end table
-If you have compiled GNUstep on a specific machine, please send information
-about what you needed and any special instructions needed to
-GNUstep @email{bug-gnustep@@gnu.org}.
-
If your having mysterious trouble with a machine, try compiling GNUstep
without optimization. Particularly in the newer GCC compilers,
optimization can break some code. The easiest way to do this is when
-configuring, @samp{CFLAGS="" ./configure}. Or when building,
-@samp{make OPTFLAG=""}.
+configuring, @kbd{CFLAGS="" ./configure}. Or when building,
+@kbd{make OPTFLAG=""}.
Also if you manually upgraded gcc and/or make, we recommend reading the
documentation at @url{http://www.LinuxFromScratch.org} for tips on compiling
you completely remove all of it, including installed init scripts.
@c -----------------------------------------
-@node Darwin/ix86, Darwin/PowerPC, Machine Specific, Machine Specific
+@node Darwin/ix86, Darwin/PowerPC, Compilers, Machine Specific
@section Darwin/ix86
Currently tested on Darwin 7.x
-@table @samp
+@table @var
@item Recommended compiler
-gcc 3.3.2. Older versions will not compile on Darwin.
-
-Default compiler has unknown problems.
-Use the GNU runtime. Download the gcc compiler and configure it with
---enable-threads=posix. You don't need binutils or anything else.
+gcc 3.3.2 or greater 3.3.* versions.
+Older versions will not compile on Darwin and 3.4.* versions don't
+support GNU runtime compilation on Darwin currently (The GCC bug report
+is http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11572).
+
+Default compiler (Apple GCC) has unknown problems.
+Download the FSF GCC compiler and configure it with
+-enable-threads=posix. You don't need binutils or anything else.
+Use the GNU runtime. Make sure to add
+@example
+export CC=/usr/local/bin/gcc (use the correct path to FSF gcc)
+@end example
+so that the correct compiler is found
@item Extra libs needed
+Use ffcall because libffi hasn't been ported to Darwin x86.
+
@item Special Instructions
Read the @url{README.Darwin} file in the gnustep-make/Documentation
@node Darwin/PowerPC, Debian/DEC-Alpha, Darwin/ix86, Machine Specific
@section Darwin/PowerPC
+This section is for building the complete GNUstep system.
+This system will not interact at all with Mac OS X/Cocoa. It uses different
+complilers, different display systems, etc. For building GNUstep extensions
+to be used with Mac OS X (for instance, if you want to build something based
+on GNUstep, such as GSWeb or GNUMail), see the MacOSX/PowerPC section.
+
Currently tested on Darwin 6.x, 7.x
-@table @samp
+@table @var
@item Recommended compiler
-gcc 3.3.2. Older versions will not compile on Darwin.
-
-Default compiler has unknown problems.
-Use the GNU runtime. Download the gcc compiler and configure it with
---enable-threads=posix. You don't need binutils or anything else.
+gcc 3.3.2 or greater 3.3.* versions.
+Older versions will not compile on Darwin and 3.4.* versions don't
+support GNU runtime compilation on Darwin currently (The GCC bug report
+is http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11572).
+
+Default compiler (Apple GCC) has unknown problems.
+Download the FSF GCC compiler and configure it with
+-enable-threads=posix. You don't need binutils or anything else.
+Use the GNU runtime. Make sure to add
+@example
+export CC=/usr/local/bin/gcc (use the correct path to FSF gcc)
+@end example
+so that the correct compiler is found
@item Extra libs needed
Use libffi (not ffcall). This should be enabled by default in gnustep-base
@node Debian/DEC-Alpha, Debian/i386, Darwin/PowerPC, Machine Specific
@section Debian/DEC-Alpha
-@table @samp
+@table @var
@item Recommended compiler
-Unknown
+Standard
@item Extra libs needed
Unknown
@section Debian/i386
Tested on sid.
-@table @samp
+@table @var
@item Recommended compiler
-Unknown
+Standard
@item Extra libs needed
Unknown
@section Debian/PowerPC
Tested on sid.
-@table @samp
+@table @var
@item Recommended compiler
-Unknown
+Standard
@item Extra libs needed
Unknown
@section Debian/SPARC
Tested on sid.
-@table @samp
+@table @var
@item Recommended compiler
-Unknown
+Standard
@item Extra libs needed
-Unknown
@item Special Instructions
None
@node FreeBSD 5.x, FreeBSD 4.x, Debian/SPARC, Machine Specific
@section FreeBSD 5.x
-Tested on 5.0 and 5.1
-@table @samp
+Tested on 5.0, 5.1, 5.3
+@table @var
@item Recommended compiler
@item Extra libs needed
Can install via /usr/ports/devel/gnustep, but not all required dependancies
are installed. See the GNUstep-HOWTO for list of libraries.
+For 5.3, there is a bug in libkvm that requires that /proc be mounted. Use
+'mount_procfs proc /proc' or see the procfs man page.
+
@end table
@node FreeBSD 4.x, FreeBSD 3.x, FreeBSD 5.x, Machine Specific
@section FreeBSD 4.x
-@table @samp
+@table @var
@item Recommended compiler
@item Extra libs needed
@c -----------------------------------------
@node FreeBSD 3.x, FreeBSD 2.x, FreeBSD 4.x, Machine Specific
-@section FreeBSD 3.x
+@section FreeBSD 3.x (@emph{Obsolete})
Compiles "out of the box" on FreeBSD 3.4.
-@table @samp
+@table @var
@item Recommended compiler
gcc 2.95.2
@node FreeBSD 2.x, Irix 6.5/MIPS, FreeBSD 3.x, Machine Specific
@section FreeBSD 2.x (@emph{Obsolete,Unstable})
-@table @samp
+@table @var
@item Recommended compiler
gcc 2.8.x
@c -----------------------------------------
@node Irix 6.5/MIPS, MacOSX/PowerPC, FreeBSD 2.x, Machine Specific
-@section Irix 6.5/MIPS
+@section Irix 6.5/MIPS (@emph{Needs a maintainer})
-@table @samp
+@table @var
@item Recommended compiler
gcc 3.2.1
@node MacOSX/PowerPC, MkLinux/PowerPC, Irix 6.5/MIPS, Machine Specific
@section MacOSX/PowerPC
-Currently tested on MacOSX 10.2, 10.3
+This section is for building the GNUstep extensions only.
+Use this if, for instance, if you want to build something based
+on GNUstep, such as GSWeb or GNUMail. If you want to build the complete
+GNUstep system independant of Mac OS X, see the Darwin/PowerPC section.
+
+Currently tested on MacOSX 10.1.5, 10.2, 10.3
-@table @samp
+@table @var
@item Recommended compiler
-Default.
+Default. For 10.1.5, you need to add -no-cpp-precomp to CFLAGS
+(For instance, ./configure CFLAGS="-no-cpp-precomp" ...)
@item Extra libs needed
None.
-@item Special Instructions
-By default, on Mac OS X, only the GNUstep extensions are built. This
-is if you want to build gdl2, etc on Mac OS X. Xcode project files
-exist, but they may not be up-to-date. Try:
+@item Special Instructions
+Warning ! To know how to install a complete GNUstep system on Mac OS X,
+read the Darwin/PowerPC section.
+By default, on Mac OS X, only the GNUstep extensions are built. Read the @url{README.Darwin} file in the gnustep-make/Documentation directory for
+complete instructions.
+
+To build the GNUstep extensions only is useful, when you want to build
+on Mac OS X, GNUstep related projects like gdl2, etc linked to Cocoa.
+Xcode project files exist, but they may not be up-to-date. Make sure
+/usr/sbin is in your path:
+
+@example
+PATH=$PATH:/usr/sbin
+@end example
+
+Then type:
@example
cd make
./configure --with-library-combo=apple-apple-apple
make install
-
+. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
cd ../base
./configure --with-xml-prefix=/usr --disable-xmltest
make debug=yes install
@end example
+On Mac OS X 10.1.5, there is no libxml. Either install libxml2
+or configure base with --disable-xml.
@end table
See also the Darwin/PowerPC section.
@c -----------------------------------------
-@node MkLinux/PowerPC, NetBSD, MacOSX/PowerPC, Machine Specific
+@node MkLinux/PowerPC, NetBSD/i386, MacOSX/PowerPC, Machine Specific
@section MkLinux/PowerPC
Tested with R2 RC2 (2004/03/04).
-@table @samp
+@table @var
@item Recommended compiler
gcc 3.x allthough earlier ones should work if you also install gnustep-objc
@end table
@c -----------------------------------------
-@node NetBSD, Netwinder, MkLinux/PowerPC, Machine Specific
-@section NetBSD
+@node NetBSD/i386, NetBSD/Sparc64, MkLinux/PowerPC, Machine Specific
+@section NetBSD/i386
-@table @samp
+Tested on NetBSD 2.0.2 (2005/04/15)
+
+@table @var
@item Recommended compiler
-Unknown
+Standard
+
+@item Extra libs needed
+libiconv(?), libffi
+
+@item Special Instructions
+Use NetBSD packages to install needed libraries. libffi either comes
+automatically with gcc or can be installed separately and works fine
+(over ffcall).
+
+@end table
+
+@c -----------------------------------------
+@node NetBSD/Sparc64, Netwinder, NetBSD/i386, Machine Specific
+@section NetBSD/Sparc64 (@emph{Unstable})
+
+Tested on NetBSD 2.0.2 (2005/04/15)
+
+@table @var
+@item Recommended compiler
+Standard
@item Extra libs needed
-libiconv
+libiconv(?), libffi
@item Special Instructions
-See the @url{README.NetBSD} file located in the gnustep-make package.
+Use NetBSD packages to install needed libraries. libffi either comes
+automatically with gcc or can be installed separately and is prefered
+over ffcall which does not work on Sparc64 machines.
@end table
+gdomap crashes. Perhaps other things do not work as well.
+
@c -----------------------------------------
-@node Netwinder, OpenBSD 3.x, NetBSD, Machine Specific
+@node Netwinder, OpenBSD 3.x, NetBSD/Sparc64, Machine Specific
@section Netwinder (@emph{Unstable})
-@table @samp
+@table @var
@item Recommended compiler
Build #12 of the system.
@node OpenBSD 3.x, OSF/Alpha, Netwinder, Machine Specific
@section OpenBSD 3.x (@emph{Needs Testing})
-@table @samp
+@table @var
@item Recommended compiler
Unknown
Information is for Version 3.2C
-@table @samp
+@table @var
@item Recommended compiler
egcs-1.1.1/1.1.2, gcc-2.95
@node RedHat/Intel, Slackware/Intel, OSF/Alpha, Machine Specific
@section RedHat/Intel
-@table @samp
+@table @var
@item Recommended compiler
Standard
@end table
@c -----------------------------------------
-@node Slackware/Intel, Solaris 2.5.1/Sparc, RedHat/Intel, Machine Specific
+@node Slackware/Intel, Slackware/Sparc, RedHat/Intel, Machine Specific
@section Slackware/Intel
-@table @samp
+@table @var
@item Recommended compiler
Unknown.
@end table
@c -----------------------------------------
-@node Solaris 2.5.1/Sparc, Solaris/Sparc, Slackware/Intel, Machine Specific
+@node Slackware/Sparc, Solaris 2.5.1/Sparc, Slackware/Intel, Machine Specific
+@section Slackware/Sparc (Splack)
+
+Tested with Spalck 8.0
+
+@table @var
+@item Recommended compiler
+gcc 3.2, no extra options.
+
+@item Extra libs needed
+Unknown.
+
+@item Special Instructions
+Tested on an ultra sparc server, kernel 2.4.27, XF86-4.0.3
+
+@end table
+
+@c -----------------------------------------
+@node Solaris 2.5.1/Sparc, Solaris/Sparc, Slackware/Sparc, Machine Specific
@section Solaris 2.5.1/Sparc (@emph{Obsolete})
This configuration is no longer being tested, but it may still work.
-@table @samp
+@table @var
@item Recommended compiler
Unknown
Tested on Solaris version 6, 7, and 8
-@table @samp
+@table @var
@item Recommended compiler
gcc 3.2.1 or greater
gcc 2.95.3. Version 2.95.2 has several bugs that GNUstep tickles.
@section Solaris 2.7/Intel
@c Contact?: Sebastian Niesen <sniesen@niesen.net>
-@table @samp
+@table @var
@item Recommended compiler
Unknown.
Make sure there are no -g compiler flags (i.e. compiling with debug=yes
might be a problem). Unsure of correct bundle flags - You might need
to use the alternate flags listed in target.make, line 989. Also,
-configuring gnustep-make with @samp{--disable-backend-bundle} might be
+configuring gnustep-make with @option{--disable-backend-bundle} might be
necessary if you can't get bundles to work.
You will probable get a lot of text relocation
warnings, which probably can be ignored. See the other Solaris
GNUstep has been tested on version 6.2-6.4 of Suse
-@table @samp
+@table @var
@item Recommended compiler
Standard
@node Suse/Intel, Suse 7.x/PPC, Suse 6.x/Intel, Machine Specific
@section Suse/Intel
-GNUstep has been tested on version 7.0, 8.0, 8.1, 8.2, 9.0, and 9.1 of Suse
+GNUstep has been tested on version 7.0, 8.0, 8.1, 8.2, 9.0, 9.1, and 9.3 of Suse
-@table @samp
+@table @var
@item Recommended compiler
The default compiler that comes with Susu is fine. Also
gcc2.95.x, gcc3.0.x, 3.1 and 3.2 work, but 2.95 is faster.
GNUstep has been tested on version 7.0 of Suse/PPC
-@table @samp
+@table @var
@item Recommended compiler
Standard. gcc2.95.x, gcc3.0.x and gc3.1 work, but 2.95 is faster.
Compile with --threads-enabled (non-standard).
@section Unixware-2.1.3/Intel
@c Contact?: Richard Frith-Macdonald <richard@brainstorm.co.uk>
-@table @samp
+@table @var
@item Recommended compiler
Unknown
@c -----------------------------------------
@node Windows with CYGWIN, Windows with MinGW, Unixware-2.1.3/Intel, Machine Specific
-@section Windows with CYGWIN (@emph{Needs Testing})
+@section Windows with CYGWIN (@emph{Needs a maintainer})
-@table @samp
+@table @var
@item Recommended compiler
gcc 3.3.1 or later (with libobjc and libjava (if using libffi))
@node Windows with MinGW, Yellowdog/PowerPC, Windows with CYGWIN, Machine Specific
@section Windows with MinGW
-@table @samp
+@table @var
@item Recommended compiler
See below.
@node Yellowdog/PowerPC, , Windows with MinGW, Machine Specific
@section Yellowdog/PowerPC
-@table @samp
+@table @var
@item Recommended compiler
Standard
The currently released version is @samp{@value{GNUSTEP-MAKE-VERSION}}.
@end ifclear
+@section Changes in version @samp{1.11.0}
+
+NOTE: The libobjc library is now linked in with the base library and NOT with
+individual applications or tools (except on MingW). This requires that
+you do a complete rebuild of all libraries, tools and apps when switching
+to this new version.
+
+@itemize @bullet
+
+@item New rules for building and using DLLs were implemented. Now gcc
+and other tricks are used to properly export symbols, so no .def file
+should be needed.
+
+@item The GNUsteprc file in $GNUSTEP_SYSTEM_ROOT is deprecated. See the
+new GNUstep.conf file (which is not installed by default).
+
+@item Psuedo-framwork support was implemented on MingW. This essentially
+involves copying the framework to several places so it can be used without
+links, which Windows does not really support. There's no other
+clean way to do it.
+
+@item Support for xxx_WINDRES_FILES on MinGW was implemented.
+
+@end itemize
+
+@ifclear ANNOUNCE-ONLY
+
@section Changes in version @samp{1.10.0}
@itemize @bullet
support it.
@end itemize
-@ifclear ANNOUNCE-ONLY
-
@section Changes in version @samp{1.9.2}
@itemize @bullet
requires that all the released improved versions be free software as
well. You should read the COPYING file for more information.
-With GNUstep-Base, we strongly recommend the use of the ffcall
-libraries, which provides stack frame handling for NSInvocation and
-NSConnection. "Ffcall is under GNU GPL. As a special exception, if used
-in GNUstep or in derivate works of GNUstep, the included parts of ffcall
-are under GNU LGPL" (Text in quotes provided by the author of ffcall).
+The GNUstep make package is licensed under the GNU GPL.
@section History
The GNUstep makefile package was designed by Scott Christley
-@email{scottc@@net-community.com} and Ovidiu Predescu
-@email{ovidiu@@net-community.com}.
+and Ovidiu Predescu.
Flags for building shared libraries and bundles on several systems were
originally identified by Mircea Oancea @email{mircea@@pathcom.com}.
@subsection What is GNUstep?
GNUstep is the Free Software Foundation's effort to implement NeXT
-Software Inc.'s (now Apple Inc.) OpenStep Standard. The project is not
-finished, so some parts are not as polished as they could be.
+Software, Inc.'s (now Apple Computer, Inc.) OpenStep Standard. The project is
+not finished, so some parts are not as polished as they could be.
@node What is the OpenStep standard?, What platforms does GNUstep run on?, What is GNUstep?, GNUstep General Information
@subsection What is the OpenStep standard?
OpenStep is an Application Programming Interface (API) for creating
-applications using the Objective C language. It was published by NeXT
-Computer Inc. in 1994.
+applications using the Objective-C language. It was published by NeXT
+Computer, Inc. in 1994.
-OpenStep consists of three parts: the @samp{FoundationKit}, a library of
-non-graphical objects; the @samp{AppKit}, a library of objects useful in
-creating graphical applications; and @samp{Display Postscript}, an
+OpenStep consists of three parts: the @samp{Foundation Kit}, a library of
+non-graphical objects; the @samp{Application Kit}, a library of objects useful
+in creating graphical applications; and the @samp{Display PostScript System}, an
interface for drawing to the screen using the PostScript graphics
language.
See the list of supported platforms at
@url{http://www.gnustep.org/information/machines_toc.html} for
information on what machines GNUstep builds on and what the status of
-the ports is. Probably a few days porting to any other Unix system where
+the ports is. Probably a few days porting to any other UNIX system where
current gcc compilers and gdb debugger work.
@node Does GNUstep run on Windows?, What is GNUstep's position towards KDE and the GNOME project?, What platforms does GNUstep run on?, GNUstep General Information
@subsection Does GNUstep run on Windows?
- The primary targets for GNUstep are free 'Unix' platforms such
-as GNU/Linux.
+ The primary targets for GNUstep are free UNIX system-based platforms such
+as GNU/Linux and FreeBSD.
-That being said, the base library should run on Windows-NT,98,2000 with the
-Cygwin unix emulation library from Cygnus
-(http://sourceware.cygnus.com/cygwin/) or the MinGW libraries. At
-present there are a few problems with networking (Distributed Objects)
-support, but the library is believed to work.
+That being said, the base library should run on Windows NT, 98, 2000, and XP
+with the Cygwin UNIX system-emulation environment from Cygnus
+(@url{http://www.cygwin.com/}), or the MinGW environment
+(@url{http://www.mingw.org}). At present there are a few problems with
+networking (distributed objects) support, but the library is believed to work.
-The gui library uses the win32 backend library to work under
+The GUI library uses the win32 backend library to work under
Windows. The backend library is a thin layer that converts the
GNUstep methods to handle drawing of GUI elements to calls to the
-win32 API. This project is in beta.
+Windows API. This project is currently in beta.
The application-wrapper used for GNUstep already allows for multiple
binaries to be stored for different systems, so you should be able
You can use GNUstep with GNOME and/or KDE. GNUstep displays
on top of X11. You can still do programming in C (since Objective-C
-is just a super-set of C), and when (if?) GCC gets around to it,
-you'll be able to mix C++ and Objective-C code in the SAME file.
+is just a super-set of C), and when GCC gets around to it,
+you'll be able to mix C++ and Objective-C code in the same file.
GNUstep, is much more than a window manager or desktop environment.
It frees you to develop cross-platform applications without the
work of developing an OS independent framework from scratch. It
-gives you lots of basic functionality, from Font Panels to Unicode
-strings to Distributed Objects.
+gives you lots of basic functionality, from font panels to Unicode
+strings to distributed objects.
@node How can I get GNUstep?, How do you run GNUstep?, What is GNUstep's position towards KDE and the GNOME project?, GNUstep General Information
@subsection How can I get GNUstep?
It isn't.
-GNUstep is a whole load of things - primarily a set of libraries
+GNUstep is a whole load of things --- primarily a set of libraries
for developing software.
At present, it's those libraries, plus various command-line based
support tools and service providing daemons, plus various GUI
development tools, a GUI desktop/workspace application, etc.
-At no stage will you ever 'run' GNUstep - you will run applications
+At no stage will you ever 'run' GNUstep --- you will run applications
and tools and will make use of it's services. At some point
you may well find packages distributed as 'GNUstep' systems in the
way that you get 'GNU/Linux' systems packaged today. Look at
package. Build 'Finger' or 'Ink' and start it with 'openapp Finger.app'
or 'openapp Ink.app'
-To look best - use WindowMaker (the currently preferred GNUstep
+To look best, use WindowMaker (the currently preferred GNUstep
window manager) as your window manager.
@node Is there a web site?, When is GNUstep intended to be available?, How do you run GNUstep?, GNUstep General Information
@subsection What is usable?
@itemize @bullet
-@item gnustep-make does pretty much what the makefiles in NeXTstep do.
+@item gnustep-make does pretty much what the makefiles in NEXTSTEP do.
@item gnustep-base (Foundation) works well and is used in production evironments.
@item gnustep-gdl2 works well and is used in production evironments.
-@item gnustep-gui (AppKit) has a lot working but there is still stuff missing.
+@item gnustep-gui (Application Kit) has a lot working but there is still stuff missing.
@end itemize
What does this mean for users? Many applications will run quite well.
@subsection Are there any precompiled packages available?
Check @url{http://www.gnustep.org/resources/sources.html} for links to
-RPMS, Debain packages, and BSD ports. Also Windows installers, MacOSX biniaries
-and others.
+RPMs, Debian packages, and BSD ports. There's also Windows installers, Mac OS X
+binaries and others.
@node What are these type and size warnings?, What are these import warnings?, Are there any precompiled packages available?, Compiling and Installing
@subsection What are these type and size warnings?
@node What are these import warnings?, , What are these type and size warnings?, Compiling and Installing
@subsection What are these import warnings?
-Do you get these obnoxious warning whenever you compile an application, tool,
+Do you get this obnoxious warning whenever you compile an application, tool,
or Objective-C program:
@example
@section Compatibility and Layout
@menu
-* Can I run NeXT OPENSTEP or MacOSX programs on GNUstep?::
-* Is GNUstep following Changes to OpenStep and MacOSX?::
-* Do we have to have the NeXTstep look and feel?::
+* Can I run NeXT OPENSTEP or Mac OS X programs on GNUstep?::
+* Is GNUstep following changes to OpenStep and Mac OS X?::
+* Do we have to have the NEXTSTEP look and feel?::
* What's up with the directory structure?::
-* Why not use Frameworks?::
+* Why not use framework bundles?::
@end menu
-@node Can I run NeXT OPENSTEP or MacOSX programs on GNUstep?, Is GNUstep following Changes to OpenStep and MacOSX?, Compatibility and Layout, Compatibility and Layout
-@subsection Can I run NeXT OPENSTEP or MacOSX programs on GNUstep?
+@node Can I run NeXT OPENSTEP or Mac OS X programs on GNUstep?, Is GNUstep following changes to OpenStep and Mac OS X?, Compatibility and Layout, Compatibility and Layout
+@subsection Can I run NeXT OPENSTEP or Mac OS X programs on GNUstep?
You can't run these programs on GNUstep, but if you have the source
code for the programs, you should be able to port them to GNUstep and
compile them. Whether or not you will be able to run them depends on how
complete GNUstep is at the time.
-@node Is GNUstep following Changes to OpenStep and MacOSX?, Do we have to have the NeXTstep look and feel?, Can I run NeXT OPENSTEP or MacOSX programs on GNUstep?, Compatibility and Layout
-@subsection Is GNUstep following Changes to OpenStep and MacOSX?
+@node Is GNUstep following changes to OpenStep and Mac OS X?, Do we have to have the NEXTSTEP look and feel?, Can I run NeXT OPENSTEP or Mac OS X programs on GNUstep?, Compatibility and Layout
+@subsection Is GNUstep following changes to OpenStep and Mac OS X?
Yes, gnustep-base already contains the documented changes in the
Foundation library. GNUstep aims to be compatible with both the
-OpenStep specification and with MacOS-X. It should be easy to write
+OpenStep specification and with Mac OS X. It should be easy to write
an application that compiles cleanly under both GNUstep and Cocoa.
-@node Do we have to have the NeXTstep look and feel?, What's up with the directory structure?, Is GNUstep following Changes to OpenStep and MacOSX?, Compatibility and Layout
-@subsection Do we have to have the NeXTstep look and feel?
+@node Do we have to have the NEXTSTEP look and feel?, What's up with the directory structure?, Is GNUstep following changes to OpenStep and Mac OS X?, Compatibility and Layout
+@subsection Do we have to have the NEXTSTEP look and feel?
-GNUstep is aiming for something like the NeXTstep-3.3 look and feel.
+GNUstep is aiming for something like the NEXTSTEP 3.3 look and feel.
Although we don't want to force anyone into this, a lot of the power and
ease of use comes from this feel. The look of GNUstep is something
-different - buttons and other widgets can look different but still act
+different --- buttons and other widgets can look different but still act
the same way. We hope to implement themes which will allow
this. Actually we're hoping someone will volunteer to do it.
-@node What's up with the directory structure?, Why not use Frameworks?, Do we have to have the NeXTstep look and feel?, Compatibility and Layout
+@node What's up with the directory structure?, Why not use framework bundles?, Do we have to have the NEXTSTEP look and feel?, Compatibility and Layout
@subsection What's up with the directory structure?
First of all, GNUstep uses a slightly different directory structure than
-NeXT or MacOSX. Part of this is historical, part is because we can't do
-things the same way (see @pxref{Why not use Frameworks?}). Although currently
-the structure is very similar to the it is done in MacOSX.
+NEXTSTEP or Mac OS X. Part of this is historical, part is because we can't do
+things the same way (see @pxref{Why not use framework bundles?}). Although
+currently the structure is very similar to the one used in Mac OS X.
-@node Why not use Frameworks?, , What's up with the directory structure?, Compatibility and Layout
-@subsection Why not use Frameworks?
+@node Why not use framework bundles?, , What's up with the directory structure?, Compatibility and Layout
+@subsection Why not use framework bundles?
-Frameworks are much more difficult to port and to use, and are very
-unnatural on a unix system - extremely unnatural on Windows. In a
-framework, the shared dynamic library is inside a framework wrapper
+Framework bundles are much more difficult to port and to use, and are very
+unnatural on a UNIX system; extremely unnatural on Windows. In a
+framework bundle, the shared dynamic library is inside a framework wrapper
directory. Because of this, the dynamic linker can't find it.
We have frameworks, so how do we work around that? Well, we build dynamic
difference. You put the dynamic library in a system directory in the
dynamic linker path, and associate with that library a resource directory.
-I think OpenStep for Windows did that, and still called them frameworks.
-Oh well we can do the same then, and call our libraries frameworks.
+OpenStep for Windows did that, and still called them frameworks.
+So we can do the same, and call our libraries frameworks.
In a shared library, the shared dynamic library is in a directory which is
in the path to the dynamic linker. the dynamic linker can find it very
-easily. this is how all shared and static libraries work on Unix systems,
-on Windows systems and possibly on most system at all.
+easily. this is how all shared and static libraries work on UNIX systems,
+Windows systems and possibly most system at all.
Moreover, the OpenStep API requires us to provide some stuff for
frameworks, like creating and registering automatically a framework
object each time a framework is used (linked at runtime, or linked into
the app), and attaching to it the list of classes inside the framework -
-which are not particularly trivial to implement - they depend on playing
-with the linker and the object file format - and might produce troubles
+which are not particularly trivial to implement --- they depend on playing
+with the linker and the object file format --- and might produce troubles
when porting. And we never use these facilities.
-For Apple MacOSX sure it's easier. They can modify
+For Apple Mac OS X sure it's easier. They can modify
the system linker, compiler, the system dynamical linker. They
always know on which platform they are working (their own), etc. They can
modify the system to support frameworks natively. Easy that way.
But GNUstep is meant to run on many different platforms, platforms which
-we don't control (Windows, Sun Solaris, Darwin, GNU/Linux, Unix
+we don't control (Windows, Sun Solaris, Darwin, GNU/Linux, UNIX system
variants) and which have different linkers and do not support frameworks
natively. On some systems it's difficult to just load a bundle or
compile a shared library!
So building the core libraries as 'libraries' means that it's much
easier to port them, and it's much more difficult to break them.
-Sure, frameworks have a bundle of resources associated with it - but we
+Sure, frameworks have a bundle of resources associated with it --- but we
can very easily associate a bundle of resource with a shared library, no
reason why not. We are doing it.
So please note that GNUstep libraries are meant to be much similar to
-MacOS X frameworks. They are composed of a shared library and
+Mac OS X frameworks. They are composed of a shared library and
associated with a bundle of resources. There is a difference in
terminology, in where the resources are installed, and possibly a slight
difference in the NSBundle API to get to the resource bundle (anyway,
-it's a one line difference between MacOSX and GNUstep, so it looks like
+it's a one line difference between Mac OS X and GNUstep, so it looks like
very easy to #ifdef).
In other words, GNUstep libraries are meant to basically do the same as
-frameworks do on MacOSX, but to be portable to strange platforms (such as
-Windows).
+frameworks do on Mac OS X, but to be portable to very different platforms (such
+as Windows).
@c ****************************************************************
when compiling the gui library, there could be several things wrong. One
is that you installed the gnustep-objc library, but the compiler
found another Objecive-C library (like the one that came with gcc). If
-you are using gcc 3.x, DO NOT use the gnustep-objc library.
+you are using gcc 3.x, DO NOT use the gnustep-objc library.
+
+There could also be a mismatch between the base and gui library versions.
+Make sure you have the latest release of each library installed.
@node Problems with Alt key, Problems with gcc3, Problems compiling (GNUstep Internal Error), Troubleshooting
@subsection Problems with Alt key
GNUstep Frequently Asked Questions with Answers
***********************************************
-Last updated 3 September 2004. Please send corrections to
+Last updated 21 July 2005. Please send corrections to
<gnustep-maintainer@gnu.org>. Also look at the user FAQ for more user
oriented questions.
They have added extensions and new classes that aren't available in
GNUstep yet. Plus there are some other issues. If you start with Cocoa:
- * Be careful with Cocoa.h includes (Use #ifndef GNUSTEP, for
- instance)
+ * Use #ifndef GNUSTEP for Apple only code.
* Do not use CoreFoundation
* You need to convert .nib files (see next question *note Tools for
porting::)
- * Some unfinished classes include Drawers.
+ See also
+<http://mediawiki.gnustep.org/index.php/Writing_portable_code> for more
+information.
Tools for porting
-----------------
format: portability, open standard, easy localization,
themeability, and intelligent autolayout.
+`Gorm'
+ The equivalent of the Interface Builder in GNUstep. It might be
+ easier to just recreate the interface using Gorm rather than
+ dealing with translations.
+
`OpenStep2GNUConverter and nfmake'
Two programs that allow you to convert PB files to GNUstep
makefiles or compile a program on GNUstep directly from PB files.
Do remember that any changes beyond a few lines of code (or
documentation) require a disclaimer or copyright assignment to the Free
Software Foundation before they can be incorporated into the project.
-Get in touch with the maintainer of the library you are working on
-about this.
+Get in touch with the GNUstep maintainer about this.
Don't start with large-scale reorganization of anything - instead,
get a general idea in mind of what you want to do, and proceed as much
GNUstep documentation should have copyright assigned to the Free
Software Foundation.
+How do I assign my contribution?
+--------------------------------
+
+Everyone who contributes more than 20 lines of code or so needs to sign
+a copyright assignment so that the FSF can have legal control of the
+copyright. This makes it easier to defend against any copyright
+infringement suits. Contact the GNUstep maintainer for instructions on
+how to do this or download and fill out the form
+<http://www.gnustep.org/resources/request-assign.future> (instructions
+are included).
+
How do I update the task list?
------------------------------
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# I've thought about using the Makefile package files
$(makedir)/Instance/Shared \
$(makedir)/Instance/Documentation)
-$(EC) rm -f $(GNUSTEP_SYSTEM_ROOT)/Makefiles
-ifeq ($(HAS_LN_S), yes)
- $(EC) (cd $(GNUSTEP_SYSTEM_ROOT); $(LN_S) @MAKEFILES_SUFFIX@ Makefiles)
-endif
$(EC)(echo "Installing gnustep-make support software"; \
$(INSTALL_PROGRAM) -m 755 which_lib$(EXEEXT) \
$(makedir)/$(GNUSTEP_TARGET_DIR); \
$(INSTALL_DATA) config.make $(makedir)/$(GNUSTEP_TARGET_DIR))
$(EC)($(srcdir)/mkinstalldirs $(GNUSTEP_SYSTEM_ROOT)/share; \
$(INSTALL_DATA) $(srcdir)/config.site $(GNUSTEP_SYSTEM_ROOT)/share)
- $(EC)(echo "Installing system GNUsteprc"; \
- $(INSTALL_DATA) GNUsteprc $(GNUSTEP_SYSTEM_ROOT)/.GNUsteprc)
$(EC)(if [ "@GNUSTEP_STRIP_MAKEFILES@" = "strip" ]; then \
echo "Stripping makefiles and shell scripts..."; \
cd $(makedir); ./strip_makefiles.sh; \
rm -f $(makedir)/executable.template
rm -f $(GNUSTEP_SYSTEM_ROOT)/share/config.site
rm -f $(makedir)/$(GNUSTEP_TARGET_DIR)/config.make
- rm -f $(GNUSTEP_SYSTEM_ROOT)/.GNUsteprc
-for f in $(makedir)/$(GNUSTEP_TARGET_CPU) \
$(makedir)/$(GNUSTEP_TARGET_DIR) \
$(makedir)/Additional \
GNUstep HOWTO
*************
- Last Update: 3 September 2004
+ Last Update: 21 July 2005
This document explains how to build the different components of the
GNUstep core libraries and GNUstep Launchpad.
`libxml2 (RECOMMENDED)'
The libxml library (Version 2) is used to translate some of the
documentation for GNUstep and to provide suport for MacOS-X
- compatible XML-based property-lists. It is recommended but not
- currently required.
+ compatible XML-based property-lists. It is not required, but you
+ have to explicitly disable use of XML when compiling GNUstep base
+ if you do not have it.
`libxslt (OPTIONAL)'
Stylesheet support for use with XML.
`The PNG library (libpng) (RECOMMENDED)'
The GUI library uses this to handle loading PNG images.
-`libaudiofile (RECOMMENDED)'
+`gif or ungif (OPTIONAL)'
+ The GUI library uses either one of these libraries to load GIF
+ images.
+
+`aspell (OPTIONAL)'
+ The GUI library uses this to handle spell checking.
+
+`cups (OPTIONAL)'
+ The GUI library uses this to handle interface to the CUPS print
+ servers.
+
+`audiofile (OPTIONAL)'
+ The GUI library uses this for playing sound files.
+
+`portaudio (OPTIONAL)'
The GUI library uses this for the sound server
`freetype2 (RECOMMENDED, REQUIRED for art backend)'
better if you use it with the WindowMaker window manager. Get
WindowMaker from <http://www.windowmaker.org>.
-`gnustep-objc package (for gcc version < 3.0 ONLY) (RECOMMENDED)'
+`gnustep-objc package (for gcc version < 3.0 ONLY or MINGW/Cygwin) (RECOMMENDED)'
Note: Do not install this library unless you are sure you need it.
- You probably don't need it except on MinGW. This is a special
- version of the Objective-C runtime that include several bug fixes
- and features that were not in gcc versions previous to 3.0. It is
- available at <ftp://ftp.gnustep.org/pub/gnustep/libs> which
- compiles using the GNUstep Makefile package (so you don't have to
- get the entire gcc dist). Make sure to set the THREADING variable
- in the GNUmakefile. It's possible to compile the library static
- (make shared=no) and just copy to the place where the gcc libobjc
- library is (type gcc -v to get this location). Note you have to
- install gnustep-make (below) before installing this library.
+ You probably don't need it except on MinGW and Cygwin (regardless
+ of the gcc version you have). This is a special version of the
+ Objective-C runtime that include several bug fixes and features
+ that were not in gcc versions previous to 3.0. It is available at
+ <ftp://ftp.gnustep.org/pub/gnustep/libs> which compiles using the
+ GNUstep Makefile package (so you don't have to get the entire gcc
+ dist). Make sure to set the THREADING variable in the GNUmakefile.
+ It's possible to compile the library static (make shared=no) and
+ just copy to the place where the gcc libobjc library is (type gcc
+ -v to get this location). Note you have to install gnustep-make
+ (below) before installing this library.
`GDB (OPTIONAL)'
GDB can be obtained from <ftp://ftp.gnu.org/gnu/gdb>. As of release
GNUstep Home
============
-Set up your home GNUstep directory. This should be done automatically
-if you don't do it. This is where user defaults are kept as well as
-other user configuration files. User installed apps, libraries, etc are
-also here (if the default user directory is used).
-
- cd
- mkdir GNUstep
+Your home GNUstep directory should be created automatically the first
+time you use a GNUstep tool or application. This is where user
+defaults are kept as well as other user configuration files. User
+installed apps, libraries, etc are also here (if the default user
+directory is used). By default this is the directory `GNUstep' under
+your home directory, but you can change this (see the gnustep-make
+installation documentation).
Time Zone
=========
-Next, set your local time zone. There are four ways to do this, pick
-one (see
+In most cases, GNUstep should be able to determine your time zone, if
+you have already set it up correctly when setting up your computer.
+However, in some cases this might fail or the correct information may
+not be available. You can set it manually using the GNUstep defaults
+utility to set `Local Time Zone' to your local time zone. Type
+something like `defaults write NSGlobalDomain "Local Time Zone" GB'.
+Where `GB' is a time zone abbreviation.
+
+ See
`$GNUSTEP_SYSTEM_ROOT/Library/Libraries/Resources/gnustep-bsae/NSTimeZones/zones'
for typical time zones):
- 1. Use the defaults utility to set "Local Time Zone" to your local
- time zone (defaults is installed with GNUstep in the Tools
- directory). Type something like "defaults write NSGlobalDomain
- "Local Time Zone" GB".
-
- 2. Set the GNUSTEP_TZ environment variable.
-
- 3. Create the file
- `$GNUSTEP_SYSTEM_ROOT/Library/Libraries/Resources/gnustep-base/NSTimeZones/localtime'
- with the name of the local time zone in it.
-
- 4. Set the TZ environment variable (this may conflict with other
- software on your system though).
-
GNUstep deamons
===============
* gpbs - Same as with gdnc, make sure X-Windows is running.
+ * make_services - Not a deamon, but a tool that needs to be run
+ everytime you install a new Application or service. This is NOT
+ run automatically.
+
if [ `gdomap -L GDNCServer | grep -c Unable` == 1 ]; then
echo "Starting GNUstep services..."
gdnc
gpbs
fi
+ make_services
Test Tools and Applications
***************************
-Test programs for the base library are in `base/Testing'. Example
-applications are located in the gstep-examples package. To make these,
-just uncompress and untar this package, cd to the appropriate
-directory, and type make. You will need to install the GNUstep core
-libraries first before doing this.
+Example applications are located in the gstep-examples package. To
+make these, just uncompress and untar this package, cd to the
+appropriate directory, and type make. You will need to install the
+GNUstep core libraries first before doing this.
To run the examples. Use the openapp utility that is part of the
GNUstep makefile package (and stored in `$GNUSTEP_SYSTEM_ROOT/Tools').
very old distributions. No one really knows if GNUstep works on these
although they may.
- A recommended compiler is listed for each machine, if known. You
-should try to use the recommended compiler for compiling GNUstep, as
-GNUstep is quite complex and tends provoke a lot of errors in some
-compilers. Even versions newer than the listed compiler may not work,
-so don't just get the latest version of a compiler expecting it to be
-better than previous versions.
+ If you have compiled GNUstep on a specific machine, please send
+information about what you needed and any special instructions needed to
+GNUstep <bug-gnustep@gnu.org>.
+
+Compilers
+=========
+
+A recommended compiler is listed for each machine, if known. You should
+try to use the recommended compiler for compiling GNUstep, as GNUstep
+is quite complex and tends provoke a lot of errors in some compilers.
+Even versions newer than the listed compiler may not work, so don't
+just get the latest version of a compiler expecting it to be better
+than previous versions.
Compiler notes: If a recommended compiler is not listed, take note
of the following information before choosing the compiler you use.
-`egcs or gcc < 2.95'
+EGCS OR GCC < 2.95
Might work, but few people use these now.
-`gcc 2.95.x'
+GCC 2.95.X
Probably the oldest compiler that GNUstep is regularly tested with.
-`gcc 2.96'
+GCC 2.96
Not an official gcc release. Some versions (Redhat, Mandrake) have
problems that prevent GNUstep from being compiled correctly and
cause mysterious errors.
-`gcc 3.0.x'
+GCC 3.0.X
A fairly good compiler. Recommended.
-`gcc 3.1'
+GCC 3.1
Several bugs where introduced in the version. It's probably better
to avoid this one, although it might work fine.
-`gcc 3.2.x'
+GCC 3.2.X
Pretty good. Recommended.
-`gcc 3.3.x'
+GCC 3.3.X
Recommended. Fixes some bugs relating to protocols as well as other
improvements.
-`gcc 3.4'
- No info yet.
-
- If you have compiled GNUstep on a specific machine, please send
-information about what you needed and any special instructions needed to
-GNUstep <bug-gnustep@gnu.org>.
+GCC 3.4.X
+ Recommended. The #import directive is no longer deprecated as of
+ this version of the compiler.
If your having mysterious trouble with a machine, try compiling
GNUstep without optimization. Particularly in the newer GCC compilers,
Currently tested on Darwin 7.x
-`Recommended compiler'
- gcc 3.3.2. Older versions will not compile on Darwin.
+RECOMMENDED COMPILER
+ gcc 3.3.2 or greater 3.3.* versions. Older versions will not
+ compile on Darwin and 3.4.* versions don't support GNU runtime
+ compilation on Darwin currently (The GCC bug report is
+ http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11572).
- Default compiler has unknown problems. Use the GNU runtime.
- Download the gcc compiler and configure it with
- -enable-threads=posix. You don't need binutils or anything else.
+ Default compiler (Apple GCC) has unknown problems. Download the
+ FSF GCC compiler and configure it with -enable-threads=posix. You
+ don't need binutils or anything else. Use the GNU runtime. Make
+ sure to add
+ export CC=/usr/local/bin/gcc (use the correct path to FSF gcc)
+ so that the correct compiler is found
-`Extra libs needed'
+EXTRA LIBS NEEDED
+ Use ffcall because libffi hasn't been ported to Darwin x86.
-`Special Instructions'
+SPECIAL INSTRUCTIONS
Read the <README.Darwin> file in the gnustep-make/Documentation
directory for complete instructions.
Darwin/PowerPC
==============
-Currently tested on Darwin 6.x, 7.x
-
-`Recommended compiler'
- gcc 3.3.2. Older versions will not compile on Darwin.
-
- Default compiler has unknown problems. Use the GNU runtime.
- Download the gcc compiler and configure it with
- -enable-threads=posix. You don't need binutils or anything else.
-
-`Extra libs needed'
+This section is for building the complete GNUstep system. This system
+will not interact at all with Mac OS X/Cocoa. It uses different
+complilers, different display systems, etc. For building GNUstep
+extensions to be used with Mac OS X (for instance, if you want to build
+something based on GNUstep, such as GSWeb or GNUMail), see the
+MacOSX/PowerPC section.
+
+ Currently tested on Darwin 6.x, 7.x
+
+RECOMMENDED COMPILER
+ gcc 3.3.2 or greater 3.3.* versions. Older versions will not
+ compile on Darwin and 3.4.* versions don't support GNU runtime
+ compilation on Darwin currently (The GCC bug report is
+ http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11572).
+
+ Default compiler (Apple GCC) has unknown problems. Download the
+ FSF GCC compiler and configure it with -enable-threads=posix. You
+ don't need binutils or anything else. Use the GNU runtime. Make
+ sure to add
+ export CC=/usr/local/bin/gcc (use the correct path to FSF gcc)
+ so that the correct compiler is found
+
+EXTRA LIBS NEEDED
Use libffi (not ffcall). This should be enabled by default in
gnustep-base so you don't have to type -enable-libffi. For 6.x,
you need the dlcompat library (from <www.opendarwin.org>) to load
bundles (not needed for 7.x).
-`Special Instructions'
+SPECIAL INSTRUCTIONS
Read the <README.Darwin> file in the gnustep-make/Documentation
directory for complete instructions.
Debian/DEC-Alpha
================
-`Recommended compiler'
- Unknown
+RECOMMENDED COMPILER
+ Standard
-`Extra libs needed'
+EXTRA LIBS NEEDED
Unknown
-`Special Instructions'
+SPECIAL INSTRUCTIONS
None
Debian/i386
===========
Tested on sid.
-`Recommended compiler'
- Unknown
+RECOMMENDED COMPILER
+ Standard
-`Extra libs needed'
+EXTRA LIBS NEEDED
Unknown
-`Special Instructions'
+SPECIAL INSTRUCTIONS
None
Debian/PowerPC
==============
Tested on sid.
-`Recommended compiler'
- Unknown
+RECOMMENDED COMPILER
+ Standard
-`Extra libs needed'
+EXTRA LIBS NEEDED
Unknown
-`Special Instructions'
+SPECIAL INSTRUCTIONS
None
Debian/SPARC
============
Tested on sid.
-`Recommended compiler'
- Unknown
+RECOMMENDED COMPILER
+ Standard
-`Extra libs needed'
- Unknown
+EXTRA LIBS NEEDED
-`Special Instructions'
+SPECIAL INSTRUCTIONS
None
FreeBSD 5.x
===========
-Tested on 5.0 and 5.1
-`Recommended compiler'
+Tested on 5.0, 5.1, 5.3
+RECOMMENDED COMPILER
-`Extra libs needed'
+EXTRA LIBS NEEDED
None.
-`Special Instructions'
+SPECIAL INSTRUCTIONS
Can install via /usr/ports/devel/gnustep, but not all required
dependancies are installed. See the GNUstep-HOWTO for list of
libraries.
+ For 5.3, there is a bug in libkvm that requires that /proc be
+ mounted. Use 'mount_procfs proc /proc' or see the procfs man page.
+
FreeBSD 4.x
===========
-`Recommended compiler'
+RECOMMENDED COMPILER
-`Extra libs needed'
+EXTRA LIBS NEEDED
Unknown
-`Special Instructions'
+SPECIAL INSTRUCTIONS
For gcc 3.0.4, make WANT_THREADS_SUPPORT=YES
For libxml2 2.4.24, make WITHOUT_PYTHON=YES
-FreeBSD 3.x
-===========
+FreeBSD 3.x (_Obsolete_)
+=========================
Compiles "out of the box" on FreeBSD 3.4.
-`Recommended compiler'
+RECOMMENDED COMPILER
gcc 2.95.2
-`Extra libs needed'
+EXTRA LIBS NEEDED
Unknown
-`Special Instructions'
+SPECIAL INSTRUCTIONS
You need to use gmake not make to compile the GNUstep packages. A
special port of gdb can be used with the Objective-C patches from
<ftp://ftp.pcnet.com/users/eischen/FreeBSD/gdb-4.17-port.tar.gz>
FreeBSD 2.x (_Obsolete,Unstable_)
=================================
-`Recommended compiler'
+RECOMMENDED COMPILER
gcc 2.8.x
-`Extra libs needed'
+EXTRA LIBS NEEDED
Unknown
-`Special Instructions'
+SPECIAL INSTRUCTIONS
Only static libraries work on this system. Use /stand/sysinstall
to install these packages if you have not already done so:
GNUstep packages.
-Irix 6.5/MIPS
-=============
+Irix 6.5/MIPS (_Needs a maintainer_)
+====================================
-`Recommended compiler'
+RECOMMENDED COMPILER
gcc 3.2.1
To use threads, it's necessary to bootstrap a compiler yourself:
link EVERY objective C executable with -lpthread, no matter what
warnings the irix linker produces!
-`Extra libs needed'
+EXTRA LIBS NEEDED
Unknown
-`Special Instructions'
+SPECIAL INSTRUCTIONS
If you cannot link the library because of the very low default
limit (20480) for the command line length, then you should either
use systune ncargs to increase the value (maximum is 262144) or
MacOSX/PowerPC
==============
-Currently tested on MacOSX 10.2, 10.3
+This section is for building the GNUstep extensions only. Use this if,
+for instance, if you want to build something based on GNUstep, such as
+GSWeb or GNUMail. If you want to build the complete GNUstep system
+independant of Mac OS X, see the Darwin/PowerPC section.
+
+ Currently tested on MacOSX 10.1.5, 10.2, 10.3
-`Recommended compiler'
- Default.
+RECOMMENDED COMPILER
+ Default. For 10.1.5, you need to add -no-cpp-precomp to CFLAGS
+ (For instance, ./configure CFLAGS="-no-cpp-precomp" ...)
-`Extra libs needed'
+EXTRA LIBS NEEDED
None.
-`Special Instructions'
- By default, on Mac OS X, only the GNUstep extensions are built.
- This is if you want to build gdl2, etc on Mac OS X. Xcode project
- files exist, but they may not be up-to-date. Try:
+SPECIAL INSTRUCTIONS
+ Warning ! To know how to install a complete GNUstep system on Mac
+ OS X, read the Darwin/PowerPC section. By default, on Mac OS X,
+ only the GNUstep extensions are built. Read the <README.Darwin>
+ file in the gnustep-make/Documentation directory for complete
+ instructions.
+
+ To build the GNUstep extensions only is useful, when you want to
+ build on Mac OS X, GNUstep related projects like gdl2, etc linked
+ to Cocoa. Xcode project files exist, but they may not be
+ up-to-date. Make sure /usr/sbin is in your path:
+
+ PATH=$PATH:/usr/sbin
+
+ Then type:
cd make
./configure --with-library-combo=apple-apple-apple
make install
-
+ . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
cd ../base
./configure --with-xml-prefix=/usr --disable-xmltest
make debug=yes install
+ On Mac OS X 10.1.5, there is no libxml. Either install libxml2 or
+ configure base with -disable-xml.
See also the Darwin/PowerPC section.
Tested with R2 RC2 (2004/03/04).
-`Recommended compiler'
+RECOMMENDED COMPILER
gcc 3.x allthough earlier ones should work if you also install
gnustep-objc
-`Extra libs needed'
+EXTRA LIBS NEEDED
None.
-`Special Instructions'
+SPECIAL INSTRUCTIONS
Unknown.
-NetBSD
-======
+NetBSD/i386
+===========
-`Recommended compiler'
- Unknown
+Tested on NetBSD 2.0.2 (2005/04/15)
+
+RECOMMENDED COMPILER
+ Standard
+
+EXTRA LIBS NEEDED
+ libiconv(?), libffi
-`Extra libs needed'
- libiconv
+SPECIAL INSTRUCTIONS
+ Use NetBSD packages to install needed libraries. libffi either
+ comes automatically with gcc or can be installed separately and
+ works fine (over ffcall).
-`Special Instructions'
- See the <README.NetBSD> file located in the gnustep-make package.
+NetBSD/Sparc64 (_Unstable_)
+============================
+
+Tested on NetBSD 2.0.2 (2005/04/15)
+
+RECOMMENDED COMPILER
+ Standard
+
+EXTRA LIBS NEEDED
+ libiconv(?), libffi
+
+SPECIAL INSTRUCTIONS
+ Use NetBSD packages to install needed libraries. libffi either
+ comes automatically with gcc or can be installed separately and is
+ prefered over ffcall which does not work on Sparc64 machines.
+
+
+ gdomap crashes. Perhaps other things do not work as well.
Netwinder (_Unstable_)
======================
-`Recommended compiler'
+RECOMMENDED COMPILER
Build #12 of the system.
-`Extra libs needed'
+EXTRA LIBS NEEDED
Unknown
-`Special Instructions'
+SPECIAL INSTRUCTIONS
See <http://www.netwinder.org/~patrix>
OpenBSD 3.x (_Needs Testing_)
==============================
-`Recommended compiler'
+RECOMMENDED COMPILER
Unknown
-`Extra libs needed'
+EXTRA LIBS NEEDED
Unknown
-`Special Instructions'
+SPECIAL INSTRUCTIONS
Try reading the <README.NetBSD> which might work the same on
OpenBSD.
Information is for Version 3.2C
-`Recommended compiler'
+RECOMMENDED COMPILER
egcs-1.1.1/1.1.2, gcc-2.95
-`Extra libs needed'
+EXTRA LIBS NEEDED
Unknown
-`Special Instructions'
+SPECIAL INSTRUCTIONS
Can only compile with static libraries. Compiler may fail when
linking executables (e.g. gdnc). Standard ranlib and ar programs
are to feable to create libraries. Should use GNU binutils
RedHat/Intel
============
-`Recommended compiler'
+RECOMMENDED COMPILER
Standard
-`Extra libs needed'
+EXTRA LIBS NEEDED
Standard (ffcall or libffi)
-`Special Instructions'
+SPECIAL INSTRUCTIONS
None
Slackware/Intel
===============
-`Recommended compiler'
+RECOMMENDED COMPILER
Unknown.
-`Extra libs needed'
+EXTRA LIBS NEEDED
Unknown.
-`Special Instructions'
+SPECIAL INSTRUCTIONS
Unknown.
+Slackware/Sparc (Splack)
+========================
+
+Tested with Spalck 8.0
+
+RECOMMENDED COMPILER
+ gcc 3.2, no extra options.
+
+EXTRA LIBS NEEDED
+ Unknown.
+
+SPECIAL INSTRUCTIONS
+ Tested on an ultra sparc server, kernel 2.4.27, XF86-4.0.3
+
+
Solaris 2.5.1/Sparc (_Obsolete_)
================================
This configuration is no longer being tested, but it may still work.
-`Recommended compiler'
+RECOMMENDED COMPILER
Unknown
-`Extra libs needed'
+EXTRA LIBS NEEDED
tiff, Don't use the one in /usr/openwin
-`Special Instructions'
+SPECIAL INSTRUCTIONS
See the Solaris 2.6 section for more instructions.
Solaris 2.[678]/Sparc
Tested on Solaris version 6, 7, and 8
-`Recommended compiler'
+RECOMMENDED COMPILER
gcc 3.2.1 or greater gcc 2.95.3. Version 2.95.2 has several bugs
that GNUstep tickles. gcc 3.04. Not 3.1 - does not compile parts
of GNUstep.
-`Extra libs needed'
+EXTRA LIBS NEEDED
tiff, Don't use the one in /usr/openwin
-`Special Instructions'
+SPECIAL INSTRUCTIONS
Using a POSIX shell (zsh or bash, which should come with Solaris)
is highly recommended. In fact, some functions, such as compiling
frameworks, will not work without it.
Solaris 2.7/Intel
=================
-`Recommended compiler'
+RECOMMENDED COMPILER
Unknown.
-`Extra libs needed'
+EXTRA LIBS NEEDED
Unknown
-`Special Instructions'
+SPECIAL INSTRUCTIONS
Make sure there are no -g compiler flags (i.e. compiling with
debug=yes might be a problem). Unsure of correct bundle flags -
You might need to use the alternate flags listed in target.make,
GNUstep has been tested on version 6.2-6.4 of Suse
-`Recommended compiler'
+RECOMMENDED COMPILER
Standard
-`Extra libs needed'
+EXTRA LIBS NEEDED
None
-`Special Instructions'
+SPECIAL INSTRUCTIONS
It seems that there is a problem with the default kernel build
distributed with Suse which means that the socket binding used by
gdnc doesn't work. If you recompile the kernel then it starts
Suse/Intel
==========
-GNUstep has been tested on version 7.0, 8.0, 8.1, 8.2, 9.0, and 9.1 of
-Suse
+GNUstep has been tested on version 7.0, 8.0, 8.1, 8.2, 9.0, 9.1, and
+9.3 of Suse
-`Recommended compiler'
+RECOMMENDED COMPILER
The default compiler that comes with Susu is fine. Also gcc2.95.x,
gcc3.0.x, 3.1 and 3.2 work, but 2.95 is faster. Compile with
-threads-enabled (non-standard).
-`Extra libs needed'
+EXTRA LIBS NEEDED
None
-`Special Instructions'
+SPECIAL INSTRUCTIONS
None.
GNUstep has been tested on version 7.0 of Suse/PPC
-`Recommended compiler'
+RECOMMENDED COMPILER
Standard. gcc2.95.x, gcc3.0.x and gc3.1 work, but 2.95 is faster.
Compile with -threads-enabled (non-standard).
-`Extra libs needed'
+EXTRA LIBS NEEDED
None
-`Special Instructions'
+SPECIAL INSTRUCTIONS
Unixware-2.1.3/Intel
====================
-`Recommended compiler'
+RECOMMENDED COMPILER
Unknown
-`Extra libs needed'
+EXTRA LIBS NEEDED
Unknown
If you don't set gdomap up correctly, Distributed Objects will not
work.
-Windows with CYGWIN (_Needs Testing_)
-=====================================
+Windows with CYGWIN (_Needs a maintainer_)
+==========================================
-`Recommended compiler'
+RECOMMENDED COMPILER
gcc 3.3.1 or later (with libobjc and libjava (if using libffi))
-`Extra libs needed'
+EXTRA LIBS NEEDED
Objective-C library DLL
(<ftp://ftp.gnustep.org/pub/gnustep/windows/cygwin>) for shared
libs. It's a good idea to remove the libobjc.a that comes with gcc
passing, but that is generally not supported on any architecture.
libffi also works.
-`Special Instructions'
+SPECIAL INSTRUCTIONS
Make sure you have good shared libraries for everthing. Sometimes
a bad shared library (like libtiff) will cause odd and untraceable
problems. See <README.Cygwin> for information on compiling.
Windows with MinGW
==================
-`Recommended compiler'
+RECOMMENDED COMPILER
See below.
-`Extra libs needed'
+EXTRA LIBS NEEDED
See below.
-`Special Instructions'
+SPECIAL INSTRUCTIONS
See the <README.MinGW> file located in the gnustep-make
Documentation directory for instructions. Windows NT/2000/XP only.
Win98 machines and earlier are very buggy and are not supported.
Yellowdog/PowerPC
=================
-`Recommended compiler'
+RECOMMENDED COMPILER
Standard
-`Extra libs needed'
+EXTRA LIBS NEEDED
Standard (ffcall or libffi)
-`Special Instructions'
+SPECIAL INSTRUCTIONS
Getting Libraries via Anonymous CVS
***********************************
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# This file is used to reset your environment. This is needed if you
# GNUstep.sh file.
# This function resets a path.
-# The only argument is the name of the path variable to be reset. All
-# paths beginning with GNUSTEP_SYSTEM_ROOT, GNUSTEP_LOCAL_ROOT,
-# GNUSTEP_NETWORK_ROOT and GNUSTEP_USER_ROOT are removed from the path
-# variable (yes, we are rather crude). All other paths are kept
-# unchanged.
+# It takes two arguments: the name of the path variable to reset,
+# and a path fragment which is used to make our guess at what should
+# be removed more accurate. All paths beginning with GNUSTEP_SYSTEM_ROOT,
+# GNUSTEP_LOCAL_ROOT, GNUSTEP_NETWORK_ROOT and GNUSTEP_USER_ROOT
+# followed by the specified path fragment are removed from the path
+# variable. All other paths are kept unchanged.
function reset_path
{
# Declare local variables
# a path in GNUSTEP_PATHLIST as prefix
found=no;
for gnustep_dir in $GNUSTEP_PATHLIST; do
- if [ -n "$gnustep_dir" ]; then
+ if [ -n "$gnustep_dir$2" ]; then
case "$dir" in
- $gnustep_dir*) found=yes; break;;
+ $gnustep_dir$2*) found=yes; break;;
*);;
esac;
fi;
fi
}
-reset_path CLASSPATH
-reset_path GUILE_LOAD_PATH
-reset_path LD_LIBRARY_PATH
-reset_path DYLD_LIBRARY_PATH
-reset_path DYLD_FRAMEWORK_PATH
-reset_path PATH
+reset_path CLASSPATH /Library/Libraries/Java
+reset_path GUILE_LOAD_PATH /Library/Libraries/Guile
+reset_path LD_LIBRARY_PATH /Library/Libraries
+reset_path DYLD_LIBRARY_PATH /Library/Libraries
+reset_path DYLD_FRAMEWORK_PATH /Library/Frameworks
+reset_path PATH /Tools
# Make sure we destroy the reset_path function after using it - we don't
# want to pollute the environment with it.
--- /dev/null
+#
+# Example GNUstep.conf file. Please customize for your use
+# and place in the appropriate configuration directory (which depends
+# on the operating system or the --config-file argument passed to gnustep-base
+# configure.)
+#
+GNUSTEP_SYSTEM_ROOT = /usr/GNUstep/System
+GNUSTEP_LOCAL_ROOT = /usr/GNUstep/Local
+GNUSTEP_NETWORK_ROOT = /usr/GNUstep/Local
+
+USER_GNUSTEP_DIR = GNUstep
+USER_GNUSTEP_DEFAULTS = Defaults
+USER_GNUSTEP_RC = .GNUsteprc
+
+SYS_APPS = /bin
+SYS_LIBS = /lib
+SYS_PREFS = /etc
+SYS_ADMIN = /sbin
+
+PLATFORM_APPS = /usr/bin
+PLATFORM_LIBS = /usr/lib
+PLATFORM_ADMIN = /usr/sbin
+PLATFORM_RESOURCES = /usr/share
+
+PLATFORM_LOCAL_APPS = /usr/local/bin
+PLATFORM_LOCAL_LIBS = /usr/local/libs
+PLATFORM_LOCAL_ADMIN = /usr/local/sbin
+PLATFORM_LOCAL_RESOURCES = /usr/local/share
+
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
#
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# Warning - this shell script is delicate, because it is sourced by
if [ -n "$GS_ZSH_NEED_TO_RESTORE_SET" ]; then
set +y
fi
-# EOF
\ No newline at end of file
+# EOF
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(BASE_MAKE_LOADED), yes)
ifeq ($(GNUSTEP_BASE_HAVE_LIBXML), 1)
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# The only thing we know is that each %.gsdoc file should generate a
# %.html file. If any of the %.gsdoc files is newer than a corresponding
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
internal-doc-install_::
$(ECHO_INSTALLING)for file in $($(GNUSTEP_INSTANCE)_INSTALL_FILES) __done; do \
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
JAVADOC_SOURCEPATH = $($(GNUSTEP_INSTANCE)_JAVADOC_SOURCEPATH)
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
$(GNUSTEP_INSTANCE).dvi: $(LATEX_FILES)
latex $(GNUSTEP_INSTANCE).tex
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# To override GNUSTEP_MAKEINFO, define it differently in
# GNUmakefile.preamble
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# input variables:
# create the file {bundle}/Language.lproj/xxx/yyy, because we want to
# mirror the Language.lproj directory faithfully. There is no
# possible confusion here.
-
+#
+# Important: we pass the '-f' argument to 'cp' to make sure that you
+# can write and overwrite RESOURCE_FILES which are -r--r--r--.
+#
shared-instance-bundle-all: $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH) \
$(FULL_RESOURCE_DIRS) \
shared-instance-bundle-all-gsweb
ifneq ($(RESOURCE_FILES),)
$(ECHO_COPYING_RESOURCES)for f in $(RESOURCE_FILES); do \
if [ -f $$f -o -d $$f ]; then \
- cp -r $$f $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/; \
+ cp -fr $$f $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/; \
else \
echo "Warning: $$f not found - ignoring"; \
fi; \
$(MKDIRS) $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/$$l.lproj; \
for f in $(LOCALIZED_RESOURCE_FILES); do \
if [ -f $$l.lproj/$$f -o -d $$l.lproj/$$f ]; then \
- cp -r $$l.lproj/$$f \
- $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/$$l.lproj/$$f; \
+ cp -fr $$l.lproj/$$f \
+ $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/$$l.lproj/; \
else \
echo "Warning: $$l.lproj/$$f not found - ignoring"; \
fi; \
if [ -d $$subproject/Resources/Subproject ]; then \
for f in $$subproject/Resources/Subproject/*; do \
if [ $$f != $$subproject'/Resources/Subproject/*' ]; then \
- cp -r $$f $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/; \
+ cp -fr $$f $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/; \
fi; \
done; \
fi; \
$(ECHO_COPYING_WEBSERVER_RESOURCES)for f in $(WEBSERVER_RESOURCE_FILES); do \
if [ -f ./WebServerResources/$$f \
-o -d ./WebServerResources/$$f ]; then \
- cp -r ./WebServerResources/$$f \
+ cp -fr ./WebServerResources/$$f \
$(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer/$$f; \
else \
echo "Warning: WebServerResources/$$f not found - ignoring"; \
for f in $(WEBSERVER_LOCALIZED_RESOURCE_FILES); do \
if [ -f ./WebServerResources/$$l.lproj/$$f \
-o -d ./WebServerResources/$$l.lproj/$$f ]; then \
- cp -r ./WebServerResources/$$l.lproj/$$f \
+ cp -fr ./WebServerResources/$$l.lproj/$$f \
$(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer/$$l.lproj/$$f; \
else \
echo "Warning: WebServerResources/$$l.lproj/$$f not found - ignoring"; \
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# input variables:
shared-instance-headers-install \
shared-instance-headers-uninstall
-ifeq ($(HEADER_FILES),)
-
-shared-instance-headers-install:
-
-shared-instance-headers-uninstall:
-
-else # we have some HEADER_FILES
-
+# We always compute HEADER_FILES_DIR and HEADER_FILES_INSTALL_DIR.
+# The reason is that frameworks might have headers in subprojects (and
+# not in the top framework makefile!). Those headers are
+# automatically used and installed, but in the top-level makefile,
+# HEADER_FILES = '', still you might want to have a special
+# HEADER_FILES_DIR and HEADER_FILES_INSTALL_DIR even in this case.
+# NB: Header installation for frameworks is done by the framework
+# code.
HEADER_FILES_DIR = $($(GNUSTEP_INSTANCE)_HEADER_FILES_DIR)
ifeq ($(HEADER_FILES_DIR),)
HEADER_FILES_INSTALL_DIR = $(GNUSTEP_INSTANCE)
endif
+ifeq ($(HEADER_FILES),)
+
+shared-instance-headers-install:
+
+shared-instance-headers-uninstall:
+
+else # we have some HEADER_FILES
+
#
# We provide two different algorithms of installing headers.
#
$(ECHO_INSTALLING_HEADERS)for file in $(HEADER_FILES) __done; do \
if [ $$file != __done ]; then \
$(INSTALL_DATA) $(HEADER_FILES_DIR)/$$file \
- $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR)/$$file; \
+ $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR)/$$file; \
fi; \
done$(END_ECHO)
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# input variables:
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# Normally, make computes dependencies basing on files' timestamps.
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# input variables:
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# Include in the common makefile rules
APP_INSTALL_DIR = $(GNUSTEP_APPS)
endif
+# On windows, this is unfortunately required.
+ifeq ($(BUILD_DLL), yes)
+ DUP_OBJC_LIBS = $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS)
+endif
+
ALL_GUI_LIBS = \
$(shell $(WHICH_LIB_SCRIPT) \
$(ALL_LIB_DIRS) \
$(ADDITIONAL_GUI_LIBS) $(AUXILIARY_GUI_LIBS) $(GUI_LIBS) \
$(BACKEND_LIBS) $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \
- $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) \
- $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS) \
+ $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(DUP_OBJC_LIBS) $(SYSTEM_LIBS) \
debug=$(debug) profile=$(profile) shared=$(shared) \
libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT))
# Internal targets
#
+# If building on Windows, also generate an import library which can be
+# used by loadable bundles to resolve symbols in the application. If
+# a loadable bundle/palette needs to use symbols in the application,
+# it just needs to link against this APP_NAME/APP_NAME.exe.a library.
+# We add .exe to the application name to account for Gorm which is
+# using the same name for the library (libGorm.dll.a) and for the
+# application (Gorm.exe). Using this terminology, just add
+# Gorm.app/Gorm.exe.a to the list of objects you link and you get it
+# working. TODO: Move this into target.make
+ifeq ($(BUILD_DLL), yes)
+ifneq ($(OLD_DLL_SUPPORT),yes)
+ ALL_LDFLAGS += -Wl,--export-all-symbols -Wl,--out-implib,$(GNUSTEP_BUILD_DIR)/$(APP_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE).exe$(LIBEXT)
+endif
+endif
+
$(APP_FILE): $(OBJ_FILES_TO_LINK)
$(ECHO_LINKING)$(LD) $(ALL_LDFLAGS) -o $(LDOUT)$@ $(OBJ_FILES_TO_LINK)\
$(ALL_GUI_LIBS)$(END_ECHO)
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# libraries ...)
# On windows, this is unfortunately required.
-ifeq ($(WITH_DLL), yes)
+ifeq ($(BUILD_DLL), yes)
LINK_BUNDLE_AGAINST_ALL_LIBS = yes
endif
debug=$(debug) profile=$(profile) shared=$(shared) \
libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT))
-ifeq ($(WITH_DLL),yes)
+ifeq ($(BUILD_DLL),yes)
BUNDLE_OBJ_EXT = $(DLL_LIBEXT)
endif
ifneq ($(OBJ_FILES_TO_LINK),)
ifneq ($(FOUNDATION_LIB),apple)
-build-bundle:: $(BUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR) \
- $(BUNDLE_FILE) \
- $(BUNDLE_INFO_PLIST_FILE) \
- shared-instance-bundle-all
+build-bundle: $(BUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR) \
+ $(BUNDLE_FILE) \
+ $(BUNDLE_INFO_PLIST_FILE) \
+ shared-instance-bundle-all
else
-build-bundle:: $(BUNDLE_DIR)/Contents/MacOS \
- $(BUNDLE_FILE) \
- $(BUNDLE_INFO_PLIST_FILE) \
- shared-instance-bundle-all
+build-bundle: $(BUNDLE_DIR)/Contents/MacOS \
+ $(BUNDLE_FILE) \
+ $(BUNDLE_INFO_PLIST_FILE) \
+ shared-instance-bundle-all
endif
# The rule to build $(BUNDLE_DIR)/Resources is already provided
$(BUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR):
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
-ifeq ($(WITH_DLL),yes)
+# OLD_DLL_SUPPORT should really be deprecated and dropped.
+ifeq ($(OLD_DLL_SUPPORT),yes)
-$(BUNDLE_FILE) : $(OBJ_FILES_TO_LINK)
+$(BUNDLE_FILE): $(OBJ_FILES_TO_LINK)
$(ECHO_LINKING)$(DLLWRAP) --driver-name $(CC) \
-o $(LDOUT)$(BUNDLE_FILE) \
$(OBJ_FILES_TO_LINK) \
$(ALL_LDFLAGS) \
$(ALL_BUNDLE_LIBS)$(END_ECHO)
-else # WITH_DLL
+else # Standard bundle build using the rules for this target
-$(BUNDLE_FILE) : $(OBJ_FILES_TO_LINK)
+$(BUNDLE_FILE): $(OBJ_FILES_TO_LINK)
$(ECHO_LINKING)$(BUNDLE_LD) $(BUNDLE_LDFLAGS) $(ALL_LDFLAGS) \
-o $(LDOUT)$(BUNDLE_FILE) \
$(OBJ_FILES_TO_LINK) \
$(ALL_BUNDLE_LIBS)$(END_ECHO)
-endif # WITH_DLL
+endif # OLD_DLL_SUPPORT
PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS))
else
# Following code for the case OBJ_FILES_TO_LINK is empty - bundle with
# no shared object in it.
-build-bundle:: $(BUNDLE_INFO_PLIST_FILE) shared-instance-bundle-all
+build-bundle: $(BUNDLE_INFO_PLIST_FILE) shared-instance-bundle-all
endif # OBJ_FILES_TO_LINK
MAIN_MODEL_FILE = $(strip $(subst .gmodel,,$(subst .gorm,,$(subst .nib,,$($(GNUSTEP_INSTANCE)_MAIN_MODEL_FILE)))))
echo "<plist version='0.9'>";\
echo " <dict>";\
echo " <key>CFBundleExecutable</key>";\
- echo " <string>$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)${BUNDLE_OBJ_EXT}</string>";\
+ echo " <string>$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)$(BUNDLE_OBJ_EXT)</string>";\
echo " <key>CFBundleInfoDictionaryVersion</key>";\
echo " <string>6.0</string>";\
echo " <key>CFBundlePackageType</key>";\
$(BUNDLE_DIR)/Resources/Info-gnustep.plist: $(BUNDLE_DIR)/Resources \
$(GNUSTEP_STAMP_DEPEND)
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
- echo " NSExecutable = \"$(GNUSTEP_INSTANCE)${BUNDLE_OBJ_EXT}\";"; \
+ echo " NSExecutable = \"$(GNUSTEP_INSTANCE)$(BUNDLE_OBJ_EXT)\";"; \
echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \
echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \
echo "}") >$@$(END_ECHO)
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Warning/TODO - this makefile is not really finished, because it
# still uses the LIB_LINK_CMD used for normal ObjC libraries. The
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# The name of the ctools is in the CTOOL_NAME variable.
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
MAKE_CURRENT_VERSION = yes
endif
+# If there are no working symlinks, common.make sets
+# FRAMEWORK_VERSION_SUPPORT to no, which unconditionally turn
+# versioning off. This means that we create no symlinks inside the
+# xxx.framework directory for the various versions; that everything is
+# put top-level as in the case of bundles. So with
+# FRAMEWORK_VERSION_SUPPORT = no, the Directory structure is:
+#
+# xxx.framework/libframework.dll.a
+# xxx.framework/framework.dll
+# xxx.framework/Resources
+# xxx.framework/Headers
+#
+# The Headers, libframework.dll.a and framework.dll are then copied into
+# the standard header/library locations so that they can be found by
+# compiler/linker. Given that there are no symlinks, there is no other
+# way of doing this.
+ifeq ($(FRAMEWORK_VERSION_SUPPORT),no)
+ MAKE_CURRENT_VERSION = no
+endif
+
# Set VERSION from xxx_VERSION
ifneq ($($(GNUSTEP_INSTANCE)_VERSION),)
VERSION = $($(GNUSTEP_INSTANCE)_VERSION)
FRAMEWORK_DIR_NAME = $(GNUSTEP_INSTANCE).framework
FRAMEWORK_DIR = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_DIR_NAME)
-FRAMEWORK_VERSION_DIR_NAME = $(FRAMEWORK_DIR_NAME)/Versions/$(CURRENT_VERSION_NAME)
+
+ifeq ($(FRAMEWORK_VERSION_SUPPORT), yes)
+ FRAMEWORK_VERSION_DIR_NAME = $(FRAMEWORK_DIR_NAME)/Versions/$(CURRENT_VERSION_NAME)
+else
+ FRAMEWORK_VERSION_DIR_NAME = $(FRAMEWORK_DIR_NAME)
+endif
+
FRAMEWORK_VERSION_DIR = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_VERSION_DIR_NAME)
-# This is not doing much at the moment, but at least is defining
+# This is not doing much at the moment, it is only defining
# HEADER_FILES, HEADER_FILES_DIR and HEADER_FILES_INSTALL_DIR in the
-# standard way. NB: If HEADER_FILES is empty, HEADER_FILES_DIR and
-# HEADER_FILES_INSTALL_DIR are going to be undefined!
+# standard way. Please note that HEADER_FILES might be empty even if
+# we have headers in subprojects that we need to manage and install.
+# So we assume by default that we have some headers even if
+# HEADER_FILES is empty.
include $(GNUSTEP_MAKEFILES)/Instance/Shared/headers.make
-# FIXME - do we really want to link the framework against all libs ?
-# That easily makes problems when the framework is loaded as a bundle,
-# doesn't it ?
-ALL_FRAMEWORK_LIBS = \
- $(shell $(WHICH_LIB_SCRIPT) \
- $(ALL_LIB_DIRS) \
- $(FRAMEWORK_LIBS) \
- debug=$(debug) profile=$(profile) shared=$(shared) \
- libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT))
+# On windows, this is unfortunately required.
+ifeq ($(BUILD_DLL), yes)
+ LINK_AGAINST_ALL_LIBS = yes
+endif
+
+ifeq ($(LINK_AGAINST_ALL_LIBS), yes)
+# Link against all libs ... but not the one we're compiling! (not sure
+# when this could happen with frameworks, anyway it makes sense)
+LIBRARIES_DEPEND_UPON += $(filter-out -l$(GNUSTEP_INSTANCE), \
+ $(ADDITIONAL_GUI_LIBS) $(AUXILIARY_GUI_LIBS) \
+ $(BACKEND_LIBS) \
+ $(GUI_LIBS) $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \
+ $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) \
+ $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS))
+endif
INTERNAL_LIBRARIES_DEPEND_UPON = \
$(shell $(WHICH_LIB_SCRIPT) \
libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT))
ifeq ($(FOUNDATION_LIB),gnu)
+
# On GNUstep, build our dummy class to store information which
- # gnustep-base can find at run time
- DUMMY_FRAMEWORK = NSFramework_$(GNUSTEP_INSTANCE)
+ # gnustep-base can find at run time.
+
+ # An ObjC class name can not contain '-', but some people '-' this
+ # in framework names. So we need to encode the '-' in some way
+ # into an ObjC class name. (since we're there, we also encode '+'
+ # even if that's not really common).
+
+ # What we do is, we use '_' as an escape character, and encode (in the
+ # order) as follows:
+ #
+ # '_' is converted to '__'
+ # '-' is converted to '_0'
+ # '+' is converted to '_1'
+ #
+
+ # For example, 'Renaissance-Experimental' becomes
+ # 'Renaissance_0Experimental'.
+
+ # GNUstep-base will convert the name back by applying the reverse rules
+ # in the reverse order.
+
+ DUMMY_FRAMEWORK = NSFramework_$(subst +,_1,$(subst -,_0,$(subst _,__,$(GNUSTEP_INSTANCE))))
DUMMY_FRAMEWORK_FILE = $(DERIVED_SOURCES_DIR)/$(DUMMY_FRAMEWORK).m
DUMMY_FRAMEWORK_OBJ_FILE = $(addprefix $(GNUSTEP_OBJ_DIR)/,$(DUMMY_FRAMEWORK).o)
FRAMEWORK_HEADER_FILES := $(addprefix $(FRAMEWORK_VERSION_DIR)/Headers/,$(HEADER_FILES))
-ifneq ($(BUILD_DLL),yes)
+ifeq ($(FRAMEWORK_VERSION_SUPPORT), yes)
+ FRAMEWORK_CURRENT_DIR_NAME := $(FRAMEWORK_DIR_NAME)/Versions/Current
+else
+ FRAMEWORK_CURRENT_DIR_NAME := $(FRAMEWORK_DIR_NAME)
+endif
-FRAMEWORK_CURRENT_DIR_NAME := $(FRAMEWORK_DIR_NAME)/Versions/Current
FRAMEWORK_CURRENT_DIR := $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_CURRENT_DIR_NAME)
FRAMEWORK_LIBRARY_DIR_NAME := $(FRAMEWORK_VERSION_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)
FRAMEWORK_LIBRARY_DIR := $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_LIBRARY_DIR_NAME)
FRAMEWORK_CURRENT_LIBRARY_DIR_NAME := $(FRAMEWORK_CURRENT_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)
FRAMEWORK_CURRENT_LIBRARY_DIR := $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_CURRENT_LIBRARY_DIR_NAME)
+ifneq ($(BUILD_DLL), yes)
FRAMEWORK_LIBRARY_FILE = lib$(GNUSTEP_INSTANCE)$(SHARED_LIBEXT)
VERSION_FRAMEWORK_LIBRARY_FILE = $(FRAMEWORK_LIBRARY_FILE).$(VERSION)
endif
SONAME_FRAMEWORK_FILE = $(FRAMEWORK_LIBRARY_FILE).$(INTERFACE_VERSION)
-FRAMEWORK_FILE_NAME := $(FRAMEWORK_LIBRARY_DIR_NAME)/$(VERSION_FRAMEWORK_LIBRARY_FILE)
-FRAMEWORK_FILE := $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_FILE_NAME)
-
else # BUILD_DLL
-FRAMEWORK_FILE_NAME = $(GNUSTEP_INSTANCE)$(FRAMEWORK_NAME_SUFFIX)$(DLL_LIBEXT)
-FRAMEWORK_FILE = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_FILE_NAME)
-DLL_NAME = $(shell echo $(LIBRARY_FILE)|cut -b 4-)
-DLL_EXP_LIB = $(GNUSTEP_INSTANCE)$(FRAMEWORK_NAME_SUFFIX)$(SHARED_LIBEXT)
-DLL_EXP_DEF = $(GNUSTEP_INSTANCE)$(FRAMEWORK_NAME_SUFFIX).def
-
+# When you build a DLL, you have to install it in a directory which is
+# in your PATH.
ifeq ($(DLL_INSTALLATION_DIR),)
DLL_INSTALLATION_DIR = $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)
endif
+# When we build a DLL, we also pass -DBUILD_lib{library_name}_DLL=1 to
+# the preprocessor. With the new DLL support, this is usually not
+# needed; but in some cases some symbols are difficult and have to be
+# exported/imported manually. For these cases, the library header
+# files can use this preprocessor define to know that they are
+# included during compilation of the library itself, or are being
+# imported by external code. Typically with the new DLL support if a
+# symbol can't be imported you have to mark it with
+# __declspec(dllimport) when the library is not being compiled.
+# __declspec(dllexport) is not particularly useful instead.
+
+CLEAN_framework_NAME = $(subst -,_,$(GNUSTEP_INSTANCE))
+SHARED_CFLAGS += -DBUILD_$(CLEAN_framework_NAME)_DLL=1
+
+# FRAMEWORK_LIBRARY_FILE is the import library, libRenaissance.dll.a
+FRAMEWORK_LIBRARY_FILE = lib$(GNUSTEP_INSTANCE)$(DLL_LIBEXT)$(LIBEXT)
+VERSION_FRAMEWORK_LIBRARY_FILE = $(FRAMEWORK_LIBRARY_FILE)
+SONAME_FRAMEWORK_FILE = $(FRAMEWORK_LIBRARY_FILE)
+
+# LIB_LINK_DLL_FILE is the DLL library, Renaissance.dll
+LIB_LINK_DLL_FILE = $(GNUSTEP_INSTANCE)$(DLL_LIBEXT)
+
endif # BUILD_DLL
-ifeq ($(WITH_DLL),yes)
- FRAMEWORK_OBJ_EXT = $(DLL_LIBEXT)
-endif # WITH_DLL
+FRAMEWORK_FILE_NAME := $(FRAMEWORK_LIBRARY_DIR_NAME)/$(VERSION_FRAMEWORK_LIBRARY_FILE)
+FRAMEWORK_FILE := $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_FILE_NAME)
ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),)
FRAMEWORK_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR)
internal-framework-all_:: $(GNUSTEP_OBJ_DIR) \
build-framework
-internal-framework-build-headers:: build-framework-dirs \
- $(FRAMEWORK_HEADER_FILES)
-
+internal-framework-build-headers:: $(FRAMEWORK_HEADER_FILES) \
+ build-framework-dirs
ifeq ($(MAKE_CURRENT_VERSION),yes)
# A target to build/reset the Current symlink to point to the newly
# compiled framework. Only executed if MAKE_CURRENT_VERSION is yes.
UPDATE_CURRENT_SYMLINK_RULE = update-current-symlink
-update-current-symlink:: $(FRAMEWORK_VERSION_DIR)
+update-current-symlink: $(FRAMEWORK_VERSION_DIR)
$(ECHO_NOTHING)cd $(FRAMEWORK_DIR)/Versions; \
- rm -f Current; \
+ $(RM_LN_S) Current; \
$(LN_S) $(CURRENT_VERSION_NAME) Current$(END_ECHO)
else
# Please note that test -h must be used instead of test -L because on old
# Sun Solaris, test -h works but test -L does not.
-build-framework-dirs:: $(DERIVED_SOURCES_DIR) \
- $(FRAMEWORK_LIBRARY_DIR) \
- $(FRAMEWORK_VERSION_DIR)/Headers \
- $(FRAMEWORK_VERSION_DIR)/Resources \
- $(FRAMEWORK_RESOURCE_DIRS) \
- $(UPDATE_CURRENT_SYMLINK_RULE)
+build-framework-dirs: $(DERIVED_SOURCES_DIR) \
+ $(FRAMEWORK_LIBRARY_DIR) \
+ $(FRAMEWORK_VERSION_DIR)/Headers \
+ $(FRAMEWORK_VERSION_DIR)/Resources \
+ $(FRAMEWORK_RESOURCE_DIRS) \
+ $(UPDATE_CURRENT_SYMLINK_RULE)
+ifeq ($(FRAMEWORK_VERSION_SUPPORT), yes)
$(ECHO_NOTHING)cd $(FRAMEWORK_DIR); \
if [ ! -h "Resources" ]; then \
- rm -f Resources; \
+ $(RM_LN_S) Resources; \
$(LN_S) Versions/Current/Resources Resources; \
fi; \
if [ ! -h "Headers" ]; then \
- rm -f Headers; \
+ $(RM_LN_S) Headers; \
$(LN_S) Versions/Current/Headers Headers; \
fi$(END_ECHO)
-ifneq ($(HEADER_FILES),)
+endif
$(ECHO_NOTHING)cd $(DERIVED_SOURCES_DIR); \
if [ ! -h "$(HEADER_FILES_INSTALL_DIR)" ]; then \
- rm -f ./$(HEADER_FILES_INSTALL_DIR); \
+ $(RM_LN_S) ./$(HEADER_FILES_INSTALL_DIR); \
$(LN_S) ../$(FRAMEWORK_DIR_NAME)/Headers \
./$(HEADER_FILES_INSTALL_DIR); \
fi$(END_ECHO)
-endif
$(FRAMEWORK_LIBRARY_DIR):
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
# Need to share this code with the headers code ... but how.
-$(FRAMEWORK_HEADER_FILES):: $(addprefix $(HEADER_FILES_DIR)/,$(HEADER_FILES))
+$(FRAMEWORK_HEADER_FILES): $(addprefix $(HEADER_FILES_DIR)/,$(HEADER_FILES)) \
+ $(FRAMEWORK_VERSION_DIR)/Headers
ifneq ($(HEADER_FILES),)
$(ECHO_NOTHING)for file in $(HEADER_FILES) __done; do \
if [ $$file != __done ]; then \
$(ECHO_COMPILING)$(CC) $< -c $(ALL_CPPFLAGS) $(ALL_OBJCFLAGS) -o $@$(END_ECHO)
endif
-ifeq ($(FOUNDATION_LIB), apple)
+ifeq ($(findstring darwin, $(GNUSTEP_TARGET_OS)), darwin)
# When building native frameworks on Apple, we need to create a
# top-level symlink xxx.framework/xxx ---> the framework shared
-# library
+# library. On Darwin (non-Apple) we do this as well since we can partially
+# emulate frameworks (see the ld_lib_path.sh comments on this).
-build-framework:: $(FRAMEWORK_FILE) \
- shared-instance-bundle-all \
- $(FRAMEWORK_VERSION_DIR)/Resources/Info.plist \
- $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_INSTANCE)
+build-framework: $(FRAMEWORK_FILE) \
+ shared-instance-bundle-all \
+ $(FRAMEWORK_VERSION_DIR)/Resources/Info.plist \
+ $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_INSTANCE)
# Please note that the following keeps the top-level symlink pointing
# to the framework in Current. This is always correct, even if what
$(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_INSTANCE):
ifeq ($(MAKE_CURRENT_VERSION),yes)
$(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework; \
- rm -f $(GNUSTEP_INSTANCE); \
+ $(RM_LN_S) $(GNUSTEP_INSTANCE); \
$(LN_S) Versions/Current/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE) $(GNUSTEP_INSTANCE)$(END_ECHO)
endif
else
-build-framework:: $(FRAMEWORK_FILE) \
- shared-instance-bundle-all \
- $(FRAMEWORK_VERSION_DIR)/Resources/Info-gnustep.plist
+build-framework: $(FRAMEWORK_FILE) \
+ shared-instance-bundle-all \
+ $(FRAMEWORK_VERSION_DIR)/Resources/Info-gnustep.plist
endif
+# We create a top-level symlink (/copy)
+#
+# xxx.framework/xxx --> <the framework object file>
+#
+# Normally, the framework object file that we link to is LIB_LINK_FILE
+# (eg, libRenaissance.so); on Windows instead LIB_LINK_FILE is only
+# the wrapper library (eg, libRenaissance.dll.a) and we want the
+# top-level symlink to point to the real .dll: LIB_LINK_DLL_FILE
+# (which is something like Renaissance.dll). This is what is loaded
+# at runtime if you load the framework as a bundle.
+#
+ifneq ($(BUILD_DLL), yes)
+ LIB_LINK_FRAMEWORK_FILE = $(LIB_LINK_FILE)
+else
+ LIB_LINK_FRAMEWORK_FILE = $(LIB_LINK_DLL_FILE)
+endif
-
-
-
-ifeq ($(WITH_DLL),yes)
-
-$(FRAMEWORK_FILE) : $(DUMMY_FRAMEWORK_OBJ_FILE) $(OBJ_FILES_TO_LINK)
- $(ECHO_LINKING)$(DLLWRAP) --driver-name $(CC) \
- -o $(LDOUT)$(FRAMEWORK_FILE) \
- $(OBJ_FILES_TO_LINK) \
- $(ALL_LDFLAGS) \
- $(ALL_FRAMEWORK_LIBS)$(END_ECHO)
-
-else # without DLL
-
-$(FRAMEWORK_FILE) : $(DUMMY_FRAMEWORK_OBJ_FILE) $(OBJ_FILES_TO_LINK)
+$(FRAMEWORK_FILE): $(DUMMY_FRAMEWORK_OBJ_FILE) $(OBJ_FILES_TO_LINK)
$(ECHO_LINKING) \
$(LIB_LINK_CMD); \
(cd $(LIB_LINK_OBJ_DIR); \
- rm -f $(GNUSTEP_INSTANCE); \
- $(LN_S) $(LIB_LINK_FILE) $(GNUSTEP_INSTANCE)) \
+ $(RM_LN_S) $(GNUSTEP_INSTANCE); \
+ $(LN_S) $(LIB_LINK_FRAMEWORK_FILE) $(GNUSTEP_INSTANCE)) \
$(END_ECHO)
-endif # WITH_DLL
-
PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS))
ifeq ($(PRINCIPAL_CLASS),)
# MacOSX-S frameworks
$(FRAMEWORK_VERSION_DIR)/Resources/Info.plist: $(FRAMEWORK_VERSION_DIR)/Resources
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
- echo " NSExecutable = \"$(GNUSTEP_INSTANCE)${FRAMEWORK_OBJ_EXT}\";"; \
+ echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \
echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \
echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \
echo "}") >$@$(END_ECHO)
# GNUstep frameworks
$(FRAMEWORK_VERSION_DIR)/Resources/Info-gnustep.plist: $(FRAMEWORK_VERSION_DIR)/Resources $(DUMMY_FRAMEWORK_FILE)
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
- echo " NSExecutable = \"$(GNUSTEP_INSTANCE)${FRAMEWORK_OBJ_EXT}\";"; \
+ echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \
echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \
echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \
echo " Classes = "; \
plmerge $@ $(GNUSTEP_INSTANCE)Info.plist; \
fi$(END_ECHO)
-ifneq ($(WITH_DLL),yes)
+ifneq ($(BUILD_DLL),yes)
ifeq ($(FOUNDATION_LIB),gnu)
$(ECHO_STRIPPING)$(STRIP) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_FILE_NAME)$(END_ECHO)
endif
$(ECHO_INSTALLING_HEADERS)cd $(GNUSTEP_HEADERS); \
- if [ "$(HEADER_FILES)" != "" ]; then \
- rm -f $(HEADER_FILES_INSTALL_DIR); \
- $(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_HEADERS) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_DIR_NAME)/Headers` $(HEADER_FILES_INSTALL_DIR); \
- fi;$(END_ECHO)
+ $(RM_LN_S) $(HEADER_FILES_INSTALL_DIR); \
+ $(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_HEADERS) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_DIR_NAME)/Headers` $(HEADER_FILES_INSTALL_DIR); \
+ $(END_ECHO)
ifneq ($(CHOWN_TO),)
$(ECHO_CHOWNING)cd $(GNUSTEP_HEADERS); \
- if [ "$(HEADER_FILES)" != "" ]; then \
- $(CHOWN) $(CHOWN_TO) $(HEADER_FILES_INSTALL_DIR); \
- fi$(END_ECHO)
+ $(CHOWN) $(CHOWN_TO) $(HEADER_FILES_INSTALL_DIR); \
+ $(END_ECHO)
endif
$(ECHO_NOTHING)cd $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR); \
- rm -f $(FRAMEWORK_LIBRARY_FILE); \
- rm -f $(SONAME_FRAMEWORK_FILE); \
- rm -f $(VERSION_FRAMEWORK_LIBRARY_FILE); \
+ $(RM_LN_S) $(FRAMEWORK_LIBRARY_FILE); \
+ $(RM_LN_S) $(SONAME_FRAMEWORK_FILE); \
+ $(RM_LN_S) $(VERSION_FRAMEWORK_LIBRARY_FILE); \
$(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_CURRENT_LIBRARY_DIR_NAME)/$(FRAMEWORK_LIBRARY_FILE)` $(FRAMEWORK_LIBRARY_FILE); \
if test -r "$(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_CURRENT_LIBRARY_DIR_NAME)/$(SONAME_FRAMEWORK_FILE)"; then \
$(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_CURRENT_LIBRARY_DIR_NAME)/$(SONAME_FRAMEWORK_FILE)` $(SONAME_FRAMEWORK_FILE); \
$(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) \
$(GNUSTEP_HEADERS) \
$(DLL_INSTALLATION_DIR)
- $(ECHO_INSTALLING)rm -rf $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_DIR_NAME); \
- (cd $(GNUSTEP_BUILD_DIR); $(TAR) cfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list $(FRAMEWORK_DIR_NAME)) | (cd $(FRAMEWORK_INSTALL_DIR); $(TAR) xf -)$(END_ECHO)
+ $(ECHO_INSTALLING)\
+ rm -rf $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_DIR_NAME); \
+ (cd $(GNUSTEP_BUILD_DIR);\
+ $(TAR) cfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list \
+ $(FRAMEWORK_DIR_NAME)) | (cd $(FRAMEWORK_INSTALL_DIR); \
+ $(TAR) xf -)$(END_ECHO)
ifneq ($(CHOWN_TO),)
$(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_DIR_NAME)$(END_ECHO)
endif
$(ECHO_STRIPPING)$(STRIP) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_FILE_NAME)$(END_ECHO)
endif
$(ECHO_INSTALLING_HEADERS)cd $(GNUSTEP_HEADERS); \
- if [ "$(HEADER_FILES)" != "" ]; then \
- if test -d "$(HEADER_FILES_INSTALL_DIR)"; then \
- rm -Rf $(HEADER_FILES_INSTALL_DIR); \
- fi; \
- $(MKINSTALLDIRS) $(HEADER_FILES_INSTALL_DIR); \
- cd $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_VERSION_DIR_NAME)/Headers ; \
- $(TAR) cfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list . | (cd $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR); \
- $(TAR) xf - ); \
- fi;$(END_ECHO)
+ if test -d "$(HEADER_FILES_INSTALL_DIR)"; then \
+ rm -Rf $(HEADER_FILES_INSTALL_DIR); \
+ fi; \
+ $(MKINSTALLDIRS) $(HEADER_FILES_INSTALL_DIR); \
+ cd $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_VERSION_DIR_NAME)/Headers ; \
+ $(TAR) cfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list . | (cd $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR); \
+ $(TAR) xf - ); \
+ $(END_ECHO)
ifneq ($(CHOWN_TO),)
$(ECHO_CHOWNING)cd $(GNUSTEP_HEADERS); \
- if [ "$(HEADER_FILES)" != "" ]; then \
- $(CHOWN) -R $(CHOWN_TO) $(HEADER_FILES_INSTALL_DIR); \
- fi$(END_ECHO)
+ $(CHOWN) -R $(CHOWN_TO) $(HEADER_FILES_INSTALL_DIR); \
+ $(END_ECHO)
endif
- $(ECHO_NOTHING)cd $(DLL_INSTALLATION_DIR); \
- if test -r "$(FRAMEWORK_FILE_NAME)"; then \
- rm -f $(FRAMEWORK_FILE_NAME); \
- fi$(END_ECHO)
- $(ECHO_NOTHING)$(INSTALL_PROGRAM) -m 0755 $(FRAMEWORK_FILE) \
- $(DLL_INSTALLATION_DIR)/$(FRAMEWORK_FILE_NAME)$(END_ECHO)
+ $(ECHO_NOTHING)$(INSTALL_PROGRAM) $(FRAMEWORK_LIBRARY_DIR)/$(LIB_LINK_DLL_FILE) \
+ $(DLL_INSTALLATION_DIR)$(END_ECHO)
+ $(ECHO_NOTHING)$(INSTALL_PROGRAM) $(FRAMEWORK_FILE_NAME) \
+ $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR)$(END_ECHO)
endif
-$(DLL_INSTALLATION_DIR)::
+$(DLL_INSTALLATION_DIR):
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
-$(FRAMEWORK_DIR)/Resources::
+# If Version support is disabled, then this directory is the same as
+# the Resources directory in Shared/bundle.make for which we already
+# have a rule.
+ifeq ($(FRAMEWORK_VERSION_SUPPORT), yes)
+$(FRAMEWORK_DIR)/Resources:
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
+endif
-$(FRAMEWORK_INSTALL_DIR)::
+$(FRAMEWORK_INSTALL_DIR):
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
-$(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) :
+$(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR):
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
-$(GNUSTEP_HEADERS) :
+$(GNUSTEP_HEADERS):
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
-# NB: We use 'rm -f' to remove the symlinks to insure
+ifneq ($(BUILD_DLL), yes)
+# NB: We use '$(RM_LN_S)' to remove the symlinks to insure
# that we do not remove customized real directories.
internal-framework-uninstall_::
$(ECHO_UNINSTALLING)if [ "$(HEADER_FILES)" != "" ]; then \
fi; \
done; \
fi; \
- if [ -n "$(HEADER_FILES)" ]; then \
- rm -f $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR) ; \
+ $(RM_LN_S) $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR) ; \
+ rm -rf $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_DIR_NAME) ; \
+ cd $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR); \
+ $(RM_LN_S) $(FRAMEWORK_LIBRARY_FILE); \
+ $(RM_LN_S) $(SONAME_FRAMEWORK_FILE); \
+ $(RM_LN_S) $(VERSION_FRAMEWORK_LIBRARY_FILE); \
+ $(END_ECHO)
+else
+internal-framework-uninstall_::
+ $(ECHO_UNINSTALLING)if [ "$(HEADER_FILES)" != "" ]; then \
+ for file in $(HEADER_FILES) __done; do \
+ if [ $$file != __done ]; then \
+ rm -rf $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR)/$$file ; \
+ fi; \
+ done; \
fi; \
+ $(RM_LN_S) $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR) ; \
rm -rf $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_DIR_NAME) ; \
cd $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR); \
- rm -f $(FRAMEWORK_LIBRARY_FILE); \
- rm -f $(SONAME_FRAMEWORK_FILE); \
- rm -f $(VERSION_FRAMEWORK_LIBRARY_FILE); \
+ $(RM_LN_S) $(FRAMEWORK_LIBRARY_FILE); \
+ cd $(DLL_INSTALLATION_DIR); \
+ $(RM_LN_S) $(LIB_LINK_DLL_FILE); \
$(END_ECHO)
-
+endif
#
# Cleaning targets
#
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
GSWAPP_INSTALL_DIR = $(GNUSTEP_GSWAPPS)
endif
+# On windows, this is unfortunately required.
+ifeq ($(BUILD_DLL), yes)
+ DUP_OBJC_LIBS = $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS)
+endif
+
# Libraries that go before the WO libraries
ALL_GSW_LIBS = \
$(shell $(WHICH_LIB_SCRIPT) \
$(ALL_LIB_DIRS) \
$(ADDITIONAL_GSW_LIBS) $(AUXILIARY_GSW_LIBS) $(GSW_LIBS) \
$(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \
- $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) \
- $(OBJC_LIBS) $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS) \
+ $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(DUP_OBJC_LIBS) $(SYSTEM_LIBS) \
debug=$(debug) profile=$(profile) shared=$(shared) \
libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT))
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
endif
-build-bundle-dir:: $(GSWBUNDLE_DIR)/Resources \
- $(GSWBUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR) \
- $(GSWBUNDLE_RESOURCE_DIRS)
+build-bundle-dir: $(GSWBUNDLE_DIR)/Resources \
+ $(GSWBUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR) \
+ $(GSWBUNDLE_RESOURCE_DIRS)
$(GSWBUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR):
$(ECHO_CREATING)$(MKDIRS) $(GSWBUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR)$(END_ECHO)
$(GSWBUNDLE_RESOURCE_DIRS):
$(ECHO_CREATING)$(MKDIRS) $(GSWBUNDLE_RESOURCE_DIRS)$(END_ECHO)
-build-bundle:: $(GSWBUNDLE_FILE) \
- gswbundle-components \
- gswbundle-resource-files \
- gswbundle-localized-resource-files \
- gswbundle-localized-webresource-files \
- gswbundle-webresource-files
+build-bundle: $(GSWBUNDLE_FILE) \
+ gswbundle-components \
+ gswbundle-resource-files \
+ gswbundle-localized-resource-files \
+ gswbundle-localized-webresource-files \
+ gswbundle-webresource-files
$(GSWBUNDLE_FILE) : $(OBJ_FILES_TO_LINK)
$(OBJ_FILES_TO_LINK) \
$(ALL_GSWBUNDLE_LIBS)$(END_ECHO)
-gswbundle-components :: $(GSWBUNDLE_DIR)
+gswbundle-components: $(GSWBUNDLE_DIR)
ifneq ($(strip $(COMPONENTS)),)
@(echo "Linking components into the bundle wrapper..."; \
cd $(GSWBUNDLE_DIR)/Resources; \
done)
endif
-gswbundle-resource-files:: $(GSWBUNDLE_DIR)/bundle-info.plist \
- $(GSWBUNDLE_DIR)/Resources/Info-gnustep.plist
+gswbundle-resource-files: $(GSWBUNDLE_DIR)/bundle-info.plist \
+ $(GSWBUNDLE_DIR)/Resources/Info-gnustep.plist
ifneq ($(strip $(RESOURCE_FILES)),)
@(echo "Linking resources into the bundle wrapper..."; \
cd $(GSWBUNDLE_DIR)/Resources/; \
done)
endif
-gswbundle-localized-resource-files:: $(GSWBUNDLE_DIR)/Resources/Info-gnustep.plist
+gswbundle-localized-resource-files: $(GSWBUNDLE_DIR)/Resources/Info-gnustep.plist
ifneq ($(strip $(LOCALIZED_RESOURCE_FILES)),)
@(echo "Linking localized resources into the bundle wrapper..."; \
cd $(GSWBUNDLE_DIR)/Resources; \
done)
endif
-gswbundle-webresource-dir::
+gswbundle-webresource-dir:
$(ECHO_CREATING)$(MKDIRS) $(GSWBUNDLE_WEBSERVER_RESOURCE_DIRS)$(END_ECHO)
-gswbundle-webresource-files:: $(GSWBUNDLE_DIR)/Resources/WebServer \
+gswbundle-webresource-files: $(GSWBUNDLE_DIR)/Resources/WebServer \
gswbundle-webresource-dir
ifneq ($(strip $(WEBSERVER_RESOURCE_FILES)),)
@(echo "Linking webserver resources into the application wrapper..."; \
done)
endif
-gswbundle-localized-webresource-files:: $(GSWBUNDLE_DIR)/Resources/WebServer \
+gswbundle-localized-webresource-files: $(GSWBUNDLE_DIR)/Resources/WebServer \
gswbundle-webresource-dir
ifneq ($(strip $(LOCALIZED_WEBSERVER_RESOURCE_FILES)),)
@(echo "Linking localized web resources into the application wrapper..."; \
$(ECHO_STRIPPING)$(STRIP) $(GSWBUNDLE_INSTALL_DIR)/$(GSWBUNDLE_FILE_NAME)$(END_ECHO)
endif
-$(GSWBUNDLE_INSTALL_DIR)::
+$(GSWBUNDLE_INSTALL_DIR):
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
internal-gswbundle-uninstall_:: shared-instance-headers-uninstall
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Why using Java if you can use Objective-C ...
# Anyway if you really want it, here we go.
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# The directory where the header files are located is xxx_HEADER_FILES_DIR
# The directory where to install the header files inside the library
# installation directory is xxx_HEADER_FILES_INSTALL_DIR
-# The DLL export file is in xxx_DLL_DEF
#
# Where xxx is the name of the library
#
#
ifneq ($(filter lib%,$(GNUSTEP_INSTANCE)),)
LIBRARY_NAME_WITH_LIB = $(GNUSTEP_INSTANCE)
+ LIBRARY_NAME_WITHOUT_LIB = $(patsubst lib%,%,$(GNUSTEP_INSTANCE))
else
LIBRARY_NAME_WITH_LIB = lib$(GNUSTEP_INSTANCE)
+ LIBRARY_NAME_WITHOUT_LIB = $(GNUSTEP_INSTANCE)
+endif
+
+# On windows, this is unfortunately required.
+ifeq ($(BUILD_DLL), yes)
+ LINK_AGAINST_ALL_LIBS = yes
+endif
+
+ifeq ($(LINK_AGAINST_ALL_LIBS), yes)
+# Link against all libs ... but not the one we're compiling! (this can
+# happen, for example, with gnustep-gui)
+LIBRARIES_DEPEND_UPON += $(filter-out -l$(LIBRARY_NAME_WITHOUT_LIB), \
+ $(ADDITIONAL_GUI_LIBS) $(AUXILIARY_GUI_LIBS) \
+ $(BACKEND_LIBS) \
+ $(GUI_LIBS) $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \
+ $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) \
+ $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS))
endif
INTERNAL_LIBRARIES_DEPEND_UPON = \
ifneq ($(BUILD_DLL),yes)
LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB)$(LIBRARY_NAME_SUFFIX)$(SHARED_LIBEXT)
-LIBRARY_FILE_EXT = $(SHARED_LIBEXT)
VERSION_LIBRARY_FILE = $(LIBRARY_FILE).$(VERSION)
# Allow the user GNUmakefile to define xxx_INTERFACE_VERSION to
else # BUILD_DLL
+# When you build a DLL, you have to install it in a directory which is
+# in your PATH.
+ifeq ($(DLL_INSTALLATION_DIR),)
+ DLL_INSTALLATION_DIR = $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)
+endif
+
+# When we build a DLL, we also pass -DBUILD_lib{library_name}_DLL=1 to
+# the preprocessor. With the new DLL support, this is usually not
+# needed; but in some cases some symbols are difficult and have to be
+# exported/imported manually. For these cases, the library header
+# files can use this preprocessor define to know that they are
+# included during compilation of the library itself, or are being
+# imported by external code. Typically with the new DLL support if a
+# symbol can't be imported you have to mark it with
+# __declspec(dllimport) when the library is not being compiled.
+# __declspec(dllexport) is not particularly useful instead.
+
+CLEAN_library_NAME = $(subst -,_,$(LIBRARY_NAME_WITH_LIB))
+SHARED_CFLAGS += -DBUILD_$(CLEAN_library_NAME)_DLL=1
+
+# OLD_DLL_SUPPORT should really be deprecated and dropped.
+ifeq ($(OLD_DLL_SUPPORT),yes)
LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB)$(LIBRARY_NAME_SUFFIX)$(DLL_LIBEXT)
-LIBRARY_FILE_EXT = $(DLL_LIBEXT)
DLL_NAME = $(shell echo $(LIBRARY_FILE)|cut -b 4-)
DLL_EXP_LIB = $(LIBRARY_NAME_WITH_LIB)$(LIBRARY_NAME_SUFFIX)$(SHARED_LIBEXT)
DLL_EXP_DEF = $(LIBRARY_NAME_WITH_LIB)$(LIBRARY_NAME_SUFFIX).def
-ifeq ($(DLL_INSTALLATION_DIR),)
- DLL_INSTALLATION_DIR = $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)
-endif
+else
+# BUILD_DLL, but new DLL support.
+
+# LIBRARY_FILE is the import library, libgnustep-base.dll.a
+LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB)$(LIBRARY_NAME_SUFFIX)$(DLL_LIBEXT)$(LIBEXT)
+VERSION_LIBRARY_FILE = $(LIBRARY_FILE)
+SONAME_LIBRARY_FILE = $(LIBRARY_FILE)
+
+# LIB_LINK_DLL_FILE is the DLL library, gnustep-base.dll
+LIB_LINK_DLL_FILE = $(LIBRARY_NAME_WITHOUT_LIB)$(LIBRARY_NAME_SUFFIX)$(DLL_LIBEXT)
+endif # OLD_DLL_SUPPORT
endif # BUILD_DLL
-else # shared
+else # following code for static libs
LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB)$(LIBRARY_NAME_SUFFIX)$(LIBEXT)
-LIBRARY_FILE_EXT = $(LIBEXT)
VERSION_LIBRARY_FILE = $(LIBRARY_FILE)
SONAME_LIBRARY_FILE = $(LIBRARY_FILE)
# Compilation targets
#
-ifeq ($(BUILD_DLL),yes)
+ifeq ($(OLD_DLL_SUPPORT),yes)
DLL_DEF = $($(GNUSTEP_INSTANCE)_DLL_DEF)
DLL_DEF_FILES = $(SUBPROJECT_DEF_FILES) $(DLL_DEF)
DLL_DEF_FLAG = --input-def $(DLL_DEF_INP)
endif
-# Pass -DBUILD_lib{library_name}_DLL=1 to the preprocessor. The
-# library header files can use this preprocessor define to know that
-# they are included during compilation of the library itself, and can
-# then use __declspec(dllexport) to export symbols
-CLEAN_library_NAME = $(shell echo $(LIBRARY_NAME_WITH_LIB)|tr '-' '_')
-SHARED_CFLAGS += -DBUILD_$(CLEAN_library_NAME)_DLL=1
-
internal-library-all_:: \
$(GNUSTEP_OBJ_DIR) \
$(DERIVED_SOURCES_DIR) \
$(INTERNAL_LIBRARIES_DEPEND_UPON) $(TARGET_SYSTEM_LIBS) \
$(SHARED_LD_POSTFLAGS)$(END_ECHO)
-else # BUILD_DLL
+else # following code for anything but OLD_DLL_SUPPORT
internal-library-all_:: $(GNUSTEP_OBJ_DIR) \
$(GNUSTEP_OBJ_DIR)/$(VERSION_LIBRARY_FILE)
$(DLL_INSTALLATION_DIR):
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
-ifeq ($(BUILD_DLL),yes)
+ifeq ($(OLD_DLL_SUPPORT),yes)
internal-install-lib::
$(ECHO_INSTALLING)if [ -f $(GNUSTEP_OBJ_DIR)/$(DLL_NAME) ]; then \
$(AFTER_INSTALL_LIBRARY_CMD) \
fi$(END_ECHO)
+ifeq ($(BUILD_DLL),yes)
+# For new-style DLLs, also install the DLL file.
+internal-install-lib::
+ $(ECHO_INSTALLING)if [ -f $(GNUSTEP_OBJ_DIR)/$(LIB_LINK_DLL_FILE) ]; then \
+ $(INSTALL_PROGRAM) $(GNUSTEP_OBJ_DIR)/$(LIB_LINK_DLL_FILE) \
+ $(DLL_INSTALLATION_DIR) ; \
+ fi$(END_ECHO)
+endif
endif
-ifeq ($(BUILD_DLL),yes)
+ifeq ($(OLD_DLL_SUPPORT),yes)
internal-library-uninstall_:: shared-instance-headers-uninstall
$(ECHO_UNINSTALLING)rm -f $(DLL_INSTALLATION_DIR)/$(DLL_NAME) \
$(ECHO_UNINSTALLING)rm -f $(FINAL_LIBRARY_INSTALL_DIR)/$(VERSION_LIBRARY_FILE) \
$(FINAL_LIBRARY_INSTALL_DIR)/$(LIBRARY_FILE) \
$(FINAL_LIBRARY_INSTALL_DIR)/$(SONAME_LIBRARY_FILE)$(END_ECHO)
+
+ifeq ($(BUILD_DLL),yes)
+# For new-style DLLs, also remove the DLL file.
+internal-library-uninstall_::
+ $(ECHO_UNINSTALLING)rm -f $(DLL_INSTALLATION_DIR)/$(LINK_LIBRARY_DLL_FILE)$(END_ECHO)
+endif
endif
#
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# The name of the ObjC program(s) is in the OBJC_PROGRAM_NAME variable.
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# shared_libext=$(SHARED_LIBEXT))
# On windows, this is unfortunately required.
-ifeq ($(WITH_DLL), yes)
+ifeq ($(BUILD_DLL), yes)
LINK_PALETTE_AGAINST_ALL_LIBS = yes
endif
debug=$(debug) profile=$(profile) shared=$(shared) \
libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT))
-ifeq ($(WITH_DLL),yes)
+ifeq ($(BUILD_DLL),yes)
PALETTE_OBJ_EXT = $(DLL_LIBEXT)
endif
$(PALETTE_DIR)/$(GNUSTEP_TARGET_LDIR):
$(ECHO_CREATING)$(MKDIRS) $(PALETTE_DIR)/$(GNUSTEP_TARGET_LDIR)$(END_ECHO)
-ifeq ($(WITH_DLL),yes)
+# OLD_DLL_SUPPORT should really be deprecated and dropped.
+ifeq ($(OLD_DLL_SUPPORT),yes)
$(PALETTE_FILE) : $(OBJ_FILES_TO_LINK)
$(ECHO_LINKING)$(DLLWRAP) --driver-name $(CC) \
$(ALL_LDFLAGS) \
$(ALL_PALETTE_LIBS)$(END_ECHO)
-else # WITH_DLL
+else # Standard bundle build using the rules for this target
$(PALETTE_FILE) : $(OBJ_FILES_TO_LINK)
$(ECHO_LINKING)$(BUNDLE_LD) $(BUNDLE_LDFLAGS) $(ALL_LDFLAGS) \
$(OBJ_FILES_TO_LINK) \
$(ALL_PALETTE_LIBS)$(END_ECHO)
-endif # WITH_DLL
+endif # OLD_DLL_SUPPORT
PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS))
$(PALETTE_DIR)/Resources/Info-gnustep.plist: $(PALETTE_DIR)/Resources
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
- echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \
+ echo " NSExecutable = \"$(PALETTE_NAME)$(PALETTE_OBJ_EXT)\";"; \
if [ -r "$(GNUSTEP_INSTANCE)Info.plist" ]; then \
cat $(GNUSTEP_INSTANCE)Info.plist; \
fi; \
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Every project should have its internal-xxx-all depend first on
# The list of JAVA source files from which to generate jni headers
# are in the JAVA_JNI_FILES variable.
#
+# This list of WINDRES source files to be compiled
+# are in the WINDRES_FILES variable.
+#
#
# Please note the subtle difference:
$(patsubst %.cxx,%$(OEXT),$($(GNUSTEP_INSTANCE)_CC_FILES))))))
CC_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_DIR)/,$(CC_OBJS))
+ifeq ($(findstring mingw32, $(GNUSTEP_TARGET_OS)), mingw32)
+ WINDRES_OBJS = $(patsubst %.rc,%$(OEXT),$($(GNUSTEP_INSTANCE)_WINDRES_FILES))
+ WINDRES_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_DIR)/,$(WINDRES_OBJS))
+else
+ WINDRES_OBJ_FILES =
+endif
+
OBJ_FILES = $($(GNUSTEP_INSTANCE)_OBJ_FILES)
# OBJ_FILES_TO_LINK is the set of all .o files which will be linked
# OBJ_FILES_TO_LINK to '' we know if there is a link stage to be
# performed at all (useful for example in bundles which can contain an
# object file, or not).
-OBJ_FILES_TO_LINK = $(strip $(C_OBJ_FILES) $(OBJC_OBJ_FILES) $(CC_OBJ_FILES) $(SUBPROJECT_OBJ_FILES) $(OBJ_FILES))
+OBJ_FILES_TO_LINK = $(strip $(C_OBJ_FILES) $(OBJC_OBJ_FILES) $(CC_OBJ_FILES) $(WINDRES_OBJ_FILES) $(SUBPROJECT_OBJ_FILES) $(OBJ_FILES))
ifeq ($(AUTO_DEPENDENCIES),yes)
ifneq ($(strip $(OBJ_FILES_TO_LINK)),)
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
internal-service-copy_into_dir \
service-resource-files
+# On windows, this is unfortunately required.
+ifeq ($(BUILD_DLL), yes)
+ DUP_OBJC_LIBS = $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS)
+endif
+
# Libraries that go before the GUI libraries
ALL_SERVICE_LIBS = \
$(shell $(WHICH_LIB_SCRIPT) \
$(ALL_LIB_DIRS) \
$(ADDITIONAL_GUI_LIBS) $(AUXILIARY_GUI_LIBS) \
$(GUI_LIBS) $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \
- $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) \
- $(OBJC_LIBS) $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS) \
+ $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(DUP_OBJC_LIBS) \
+ $(SYSTEM_LIBS) \
debug=$(debug) profile=$(profile) shared=$(shared) \
libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT))
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# We need to build the OWNING_PROJECT_HEADER_DIR directory here
# because this rule could be executed before the top-level framework
# has built his dirs
-$(OWNING_PROJECT_HEADER_FILES):: $(HEADER_FILES) $(OWNING_PROJECT_HEADER_DIR)
+$(OWNING_PROJECT_HEADER_FILES): $(HEADER_FILES) $(OWNING_PROJECT_HEADER_DIR)
ifneq ($(HEADER_FILES),)
$(ECHO_NOTHING)for file in $(HEADER_FILES) __done; do \
if [ $$file != __done ]; then \
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
#
# Instance/test-library.make
#
-# Instance Makefile rules for dejagnu/GNUstep based testing
+# Instance Makefile rules for test/non-installed libraries
#
-# Copyright (C) 1997 Free Software Foundation, Inc.
+# Copyright (C) 2005 Free Software Foundation, Inc.
#
-# Author: Scott Christley <scottc@net-community.com>
-# Author: Ovidiu Predescu <ovidiu@net-community.com>
+# Author: Adam Fedor <fedor@gnu.org>
#
# This file is part of the GNUstep Makefile Package.
#
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
endif
-#
-# The three main components to perform a test in the framework
-# a) code to be tested
-# b) scripts which say what/how to test
-# c) test driver
-#
-# Component A can be any (or all) of the possible build targets
-# supported by the GNUstep Makefile Package: library, tool,
-# application, or bundle. The code is assumed to be compiled
-# elsewhere and just needs to be accessed to run the tests.
-#
-# Component B are written by the user. The GNUstep Makefile Package
-# does not interpret these scripts; it require that you specify
-# a list of directories which contain the scripts for the code to be
-# tested, so that this information can be passed to dejagnu.
-#
-# Component C is dependent upon the type of code to be tested; generally
-# an interactive program is its own test driver as it can communicate
-# directly with dejagnu. Libraries, however, require a test driver which
-# interactively accepts commands from dejagnu; the Objective-C Testing
-# Framework is the default test driver.
-#
-# Test drivers for the various build targets; the names should be unique
-# across all of the test drivers:
-#
-# TEST_LIBRARY_NAME
-#
-# xxx_OBJC_FILES, xxx_C_FILES, and xxx_PSWRAP_FILES holds the files
-# to be compiled for the xxx test driver.
-#
-# xxx_SCRIPT_DIRS is a list of directories containing the test scripts
-# which will be performed by dejagnu for the xxx test driver.
-#
-# xxx_SCRIPTS_DIRECTORY is the directory where the xxx_SCRIPT_DIRS
-# are located for the xxx test driver.
-#
-# xxx_INCLUDE_DIRS are additional headers directories to be searched
-#
-# xxx_LIB_DIRS and xxx_LIBS are additional libraries directories and
-# libraries to link against, respectively to link the xxx test driver.
-# The same paths are passed to the dynamic linker.
-#
-
-SCRIPTS_DIRECTORY = $($(GNUSTEP_INSTANCE)_SCRIPTS_DIRECTORY)
-CHECK_SCRIPT_DIRS = $($(GNUSTEP_INSTANCE)_SCRIPT_DIRS)
-
-ifeq ($(SCRIPTS_DIRECTORY),)
-SCRIPTS_DIRECTORY = .
-endif
-
-ALL_TEST_LIBRARY_LIBS = \
- $(shell $(WHICH_LIB_SCRIPT) \
- $(ALL_LIB_DIRS) \
- $(ADDITIONAL_LIBRARY_LIBS) $(AUXILIARY_LIBS) \
- $(AUXILIARY_TOOL_LIBS) $(FND_LIBS) $(OBJC_LIBS) \
- $(TARGET_SYSTEM_LIBS) \
- debug=$(debug) profile=$(profile) shared=$(shared) \
- libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT))
-
-internal-test_lib-all_:: $(GNUSTEP_OBJ_DIR) \
- $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)
-
-$(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE): $(OBJ_FILES_TO_LINK)
- $(LD) $(ALL_LDFLAGS) -o $(LDOUT)$@ \
- $(OBJ_FILES_TO_LINK) \
- $(ALL_TEST_LIBRARY_LIBS)
-
-dejagnu_vars = "FOUNDATION_LIBRARY=$(FOUNDATION_LIB)" \
- "OBJC_RUNTIME=$(OBJC_RUNTIME)"
-
-internal-test_lib-check:: $(SCRIPTS_DIRECTORY)/config/unix.exp \
- really-testlib-check
-
-really-test_lib-check:
- @(additional_library_paths="`echo $(ADDITIONAL_LIB_DIRS) | sed 's/-L//g'`"; \
- additional_library_paths="`$(GNUSTEP_MAKEFILES)/transform_paths.sh $$additional_library_paths`"; \
- . $(GNUSTEP_MAKEFILES)/ld_lib_path.sh; \
- for f in $(CHECK_SCRIPT_DIRS); do \
- if [ "$(SCRIPTS_DIRECTORY)" != "" ]; then \
- echo "cd $(SCRIPTS_DIRECTORY); runtest --tool $$f --srcdir . PROG=../$(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE) $(dejagnu_vars) $(ADDITIONAL_DEJAGNU_VARS)"; \
- (cd $(SCRIPTS_DIRECTORY); runtest --tool $$f --srcdir . PROG=../$(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE) $(dejagnu_vars) $(ADDITIONAL_DEJAGNU_VARS)); \
- else \
- runtest --tool $$f --srcdir . PROG=./$(GNUSTEP_INSTANCE) \
- $(dejagnu_vars) $(ADDITIONAL_DEJAGNU_VARS); \
- fi; \
- done)
-
-_FORCE::
-
-$(SCRIPTS_DIRECTORY)/config/unix.exp: _FORCE
- $(ECHO_CREATING)$(MKDIRS) $(SCRIPTS_DIRECTORY)/config$(END_ECHO)
- @(echo "Creating the $@ file..."; \
- echo "## Do Not Edit ##" > $@; \
- (echo "# Contents generated automatically by Makefile"; \
- echo "#"; \
- echo ""; \
- echo "set OBJC_RUNTIME $(OBJC_RUNTIME)"; \
- echo "set FOUNDATION_LIBRARY $(FOUNDATION_LIB)"; \
- echo ""; \
- echo "if {[file isdirectory $(GNUSTEP_USER_ROOT)/Library/Libraries/ObjCTest]} {"; \
- echo " set OBJCTEST_DIR $(GNUSTEP_USER_ROOT)/Library/Libraries/ObjCTest"; \
- echo "} elseif {[file isdirectory $(GNUSTEP_LOCAL_ROOT)/Library/Libraries/ObjCTest]} {"; \
- echo " set OBJCTEST_DIR $(GNUSTEP_LOCAL_ROOT)/Library/Libraries/ObjCTest"; \
- echo "} elseif {[file isdirectory $(GNUSTEP_SYSTEM_ROOT)/Library/Libraries/ObjCTest]} {"; \
- echo " set OBJCTEST_DIR $(GNUSTEP_SYSTEM_ROOT)/Library/Libraries/ObjCTest"; \
- echo "}"; \
- echo "set objdir `pwd`"; \
- echo "source \"\$$OBJCTEST_DIR/common.exp\""; \
- echo ""; \
- echo "# Maintain your own code in local.exp"; \
- echo "source \"config/local.exp\"") >>$@)
-
-internal-test_lib-install_::
+# Just inherit the build rule from library.make
-internal-test_lib-uninstall_::
+include $(GNUSTEP_MAKEFILES)/Instance/library.make
-include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make
+internal-test_library-all_:: internal-library-all_
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# The name of the tools is in the TOOL_NAME variable.
# This is the directory where the tools get installed. If you don't specify a
# directory they will get installed in the GNUstep Local Root.
ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),)
- TOOLD_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR)
+ TOOL_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR)
endif
ifeq ($(TOOL_INSTALL_DIR),)
FINAL_TOOL_INSTALL_DIR = $(TOOL_INSTALL_DIR)/$(GNUSTEP_TARGET_LDIR)
endif
+# On windows, this is unfortunately required.
+ifeq ($(BUILD_DLL), yes)
+ DUP_OBJC_LIBS = $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS)
+endif
+
ALL_TOOL_LIBS = \
$(shell $(WHICH_LIB_SCRIPT) \
$(ALL_LIB_DIRS) \
$(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) $(FND_LIBS) \
- $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) \
- $(TARGET_SYSTEM_LIBS) \
+ $(ADDITIONAL_OBJC_LIBS) $(DUP_OBJC_LIBS) \
debug=$(debug) profile=$(profile) shared=$(shared) \
libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT))
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Why using Java if you can use Objective-C ...
# Anyway if you really want it, here we go.
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
OBJC_PROGRAM_NAME := $(strip $(OBJC_PROGRAM_NAME))
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# FIXME: Move all this documentation into the documentation
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# Quick explanation -
fi; \
if [ "$(OWNING_PROJECT_HEADER_DIR_NAME)" = "" ]; then \
if [ "$$type" = "framework" ]; then \
- framework_version="$($(basename $(basename $*))_CURRENT_VERSION_NAME)"; \
- if [ "$$framework_version" = "" ]; then framework_version="A"; fi; \
- owning_project_header_dir="../$${instance}.framework/Versions/$${framework_version}/Headers"; \
+ if [ "$(FRAMEWORK_VERSION_SUPPORT)" = "yes" ]; then \
+ framework_version="$($(basename $(basename $*))_CURRENT_VERSION_NAME)"; \
+ if [ "$$framework_version" = "" ]; then framework_version="A"; fi; \
+ owning_project_header_dir="../$${instance}.framework/Versions/$${framework_version}/Headers"; \
+ else \
+ owning_project_header_dir="../$${instance}.framework/Headers"; \
+ fi; \
else owning_project_header_dir=""; \
fi; \
else \
fi; \
if [ "$(OWNING_PROJECT_HEADER_DIR_NAME)" = "" ]; then \
if [ "$$type" = "framework" ]; then \
- framework_version="$($(basename $(basename $*))_CURRENT_VERSION_NAME)"; \
- if [ "$$framework_version" = "" ]; then framework_version="A"; fi; \
- owning_project_header_dir="../$${instance}.framework/Versions/$${framework_version}/Headers"; \
+ if [ "$(FRAMEWORK_VERSION_SUPPORT)" = "yes" ]; then \
+ framework_version="$($(basename $(basename $*))_CURRENT_VERSION_NAME)"; \
+ if [ "$$framework_version" = "" ]; then framework_version="A"; fi; \
+ owning_project_header_dir="../$${instance}.framework/Versions/$${framework_version}/Headers"; \
+ else \
+ owning_project_header_dir="../$${instance}.framework/Headers"; \
+ fi; \
else owning_project_header_dir=""; \
fi; \
else \
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# Interesting variables to define in your GNUmakefile:
dist: distclean
@echo "Generating $(ARCHIVE_FILE) in the parent directory..."; \
SNAPSHOT_DIR=`basename $$(pwd)`; \
- cd ..; \
if [ "$$SNAPSHOT_DIR" != "$(VERSION_NAME)" ]; then \
- if [ -d "$(VERSION_NAME)" ]; then \
+ if [ -d "../$(VERSION_NAME)" ]; then \
echo "$(VERSION_NAME) already exists in parent directory (?):"; \
echo "Saving old version in $(VERSION_NAME)~"; \
- mv $(VERSION_NAME) $(VERSION_NAME)~; \
+ mv ../$(VERSION_NAME) ../$(VERSION_NAME)~; \
fi; \
- mv $$SNAPSHOT_DIR $(VERSION_NAME);\
- fi; \
+ mkdir ../$(VERSION_NAME); \
+ tar cf - . | (cd ../$(VERSION_NAME); tar xf -); \
+ fi; \
+ cd ..; \
if [ -f $(ARCHIVE_FILE) ]; then \
echo "$(ARCHIVE_FILE) already exists:"; \
echo "Saving old version in $(ARCHIVE_FILE)~"; \
| $(COMPRESSION_PROGRAM) > $(ARCHIVE_FILE); \
fi; \
if [ "$$SNAPSHOT_DIR" != "$(VERSION_NAME)" ]; then \
- mv $(VERSION_NAME) $$SNAPSHOT_DIR; \
+ rm -rf $(VERSION_NAME); \
fi; \
if [ ! -f $(ARCHIVE_FILE) ]; then \
echo "*Error* creating .tar$(COMPRESSION_EXT) archive"; \
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
TEST_APP_NAME := $(strip $(TEST_APP_NAME))
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
TEST_LIBRARY_NAME := $(strip $(TEST_LIBRARY_NAME))
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
TEST_TOOL_NAME := $(strip $(TEST_TOOL_NAME))
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
TOOL_NAME := $(strip $(TOOL_NAME))
NEWS
****
-The currently released version is `1.10.0'.
+The currently released version is `1.11.0'.
+
+Changes in version `1.11.0'
+===========================
+
+NOTE: The libobjc library is now linked in with the base library and
+NOT with individual applications or tools (except on MingW). This
+requires that you do a complete rebuild of all libraries, tools and
+apps when switching to this new version.
+
+ * 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
+ new GNUstep.conf file (which is not installed by default).
+
+ * 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.
+
Changes in version `1.10.0'
===========================
which requires that all the released improved versions be free software
as well. You should read the COPYING file for more information.
- With GNUstep-Base, we strongly recommend the use of the ffcall
-libraries, which provides stack frame handling for NSInvocation and
-NSConnection. "Ffcall is under GNU GPL. As a special exception, if used
-in GNUstep or in derivate works of GNUstep, the included parts of ffcall
-are under GNU LGPL" (Text in quotes provided by the author of ffcall).
+ The GNUstep make package is licensed under the GNU GPL.
History
=======
-The GNUstep makefile package was designed by Scott Christley
-<scottc@net-community.com> and Ovidiu Predescu
-<ovidiu@net-community.com>.
+The GNUstep makefile package was designed by Scott Christley and Ovidiu
+Predescu.
Flags for building shared libraries and bundles on several systems
were originally identified by Mircea Oancea <mircea@pathcom.com>.
# The version number of this release.
GNUSTEP_MAKE_MAJOR_VERSION=1
-GNUSTEP_MAKE_MINOR_VERSION=10
+GNUSTEP_MAKE_MINOR_VERSION=11
GNUSTEP_MAKE_SUBMINOR_VERSION=0
GNUSTEP_MAKE_VERSION=${GNUSTEP_MAKE_MAJOR_VERSION}.${GNUSTEP_MAKE_MINOR_VERSION}.${GNUSTEP_MAKE_SUBMINOR_VERSION}
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# prevent multiple inclusions
ifeq ($(AGGREGATE_MAKE_LOADED),)
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/application.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/bundle.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
case "$1" in
# Intel processors are made equivalent
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Nothing to clean right now
case "$1" in
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Nothing to clean right now
echo $1
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/clibrary.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(COMMON_MAKE_LOADED),)
COMMON_MAKE_LOADED = yes
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# The GNUstep Make Package Version
# returns LN_S
ifeq ($(LN_S), ln -s)
HAS_LN_S = yes
+else
+ HAS_LN_S = no
endif
+# Special case - on mingw32, autoconf sets LN_S to 'ln -s', but then
+# that does a recursive copy (ie, cp -r).
ifeq (@target_os@,mingw32)
HAS_LN_S = no
endif
+# This is used to remove an existing symlink before creating a new
+# one. We don't trust 'ln -s -f' as it's unportable so we remove
+# manually the existing symlink (if any) before creating a new one.
+# If symlinks are supported on the platform, RM_LN_S is just 'rm -f';
+# if they are not, we assume they are copies (like cp -r) and we go
+# heavy-handed with 'rm -Rf'. Note - this code might need rechecking
+# for the case where LN_S = 'ln', if that ever happens on some
+# platforms.
+ifeq ($(HAS_LN_S), yes)
+ RM_LN_S = rm -f
+ FRAMEWORK_VERSION_SUPPORT = yes
+else
+ RM_LN_S = rm -Rf
+ FRAMEWORK_VERSION_SUPPORT = no
+endif
+
LD = $(CC)
LDOUT =
LDFLAGS = @LDFLAGS@
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
echo Processing GNUstep site configuration
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
else
gs_cv_objc_libdir=NONE
if test -f "$GNUSTEP_HDIR/objc/objc.h"; then
- if test -f "$GNUSTEP_LDIR/libobjc.a" -o -f "$GNUSTEP_LDIR/libobjc.so"; then
+ if test -f "$GNUSTEP_LDIR/libobjc.a" -o -f "$GNUSTEP_LDIR/libobjc.so" -o -f "$GNUSTEP_LDIR/libobjc.dll.a"; then
gs_cv_objc_libdir="$GNUSTEP_LDIR"
else
gs_cv_objc_libdir=NONE
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
AC_INIT
AC_PREREQ(2.57)
AC_CONFIG_SRCDIR([application.make])
[dnl
gs_cv_objc_libdir=NONE
if test -f "$GNUSTEP_HDIR/objc/objc.h"; then
- if test -f "$GNUSTEP_LDIR/libobjc.a" -o -f "$GNUSTEP_LDIR/libobjc.so"; then
+ if test -f "$GNUSTEP_LDIR/libobjc.a" -o -f "$GNUSTEP_LDIR/libobjc.so" -o -f "$GNUSTEP_LDIR/libobjc.dll.a"; then
gs_cv_objc_libdir="$GNUSTEP_LDIR"
else
gs_cv_objc_libdir=NONE
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
echo $1 | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Take a single argument - a directory name -, and create the GNUstep
# domain directory structure inside the directory.
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/ctool.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Execute gdb for the application passed as argument. The application is
# searched through the GNUstep directories if a complete or relative path name
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/documentation.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# This is a shell script which attempts to find the GNUstep executable
# of the same name based on the current host and library_combo.
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
#
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/framework.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/gswapp.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/gswbundle.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# This is a shell script which attempts to execute a specific Java
# class (hardcoded when the shell script is installed), preparing
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/java-tool.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/java.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# Include this file if you need to compile JNI code.
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# The first (and only) parameter to this script is the canonical
endif
# The code below has been temporarily removed, because...
-# With GNUstep -make on any platform, when you compile a
-# framework, it is supported by creating a link like
-# Librairies/libMyFramework.dylib ->
-# Frameworks/MyFramework.framework/Versions/Current/libMyFramework.dylib, to
-# mitigate the fact that FSF GCC supports to link frameworks with the -frameworks
-# flag only on Darwin .
-# Well concerning library GNUstep -make on Darwin, the problem lies in the fact
-# the Darwin linker seems to be unable to link the library when you pass the
-# flag -lMyFramework to compile an application which depends on it, strangely it
-# links the framework directly. You can see that with otool -L
-# Whatever/MyApplication.app/MyApplication which will output
-# MyFramework.framework/MyFramework and not libMyFramework.dylib .
-# So because a framework is linked when it is present even when you want to
-# link the equivalent library, the application will not find the framework when
-# you launch it with DYLD_FRAMEWORK_PATH empty. To correct that, we must
-# set DYLD_FRAMEWORK_PATH in any cases until the Darwin linker behaves correctly.
+# Frameworks in GNUstep-make are supported by creating a link like
+#
+# Libraries/libMyFramework.dylib ->
+# Frameworks/MyFramework.framework/Versions/Current/libMyFramework.dylib,
#
-#Â Â if ( ( "${LIBRARY_COMBO}" == "apple-apple-apple" ) \Â
-#Â Â Â Â Â || ( "${LIBRARY_COMBO}" == "apple") ) then
+# to mitigate the fact that FSF GCC does not support a -framework flag.
+#
+# On Darwin, however, we partially emulate -framework by setting the
+# "install_name" to the framework name during linking. The dynamic
+# linker (dyld) is smart enough to find the framework under this name,
+# but only if DYLD_FRAMEWORK_PATH is set (unless we set the
+# "install_name" to an absolute path, which we don't). We'd really like
+# to fully support -framework, though.
+#
+# Use otool -L MyApplication.app/MyApplication, for instance, to see
+# how the shared libraries/frameworks are linked.
+#
+# if [ "$LIBRARY_COMBO" = "apple-apple-apple" -o \
+# "$LIBRARY_COMBO" = "apple" ]; then
unset additional
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# This file is sourced. This means extra care is needed when changing
export DYLD_LIBRARY_PATH
# The code below has been temporarily removed, because...
-# With GNUstep -make on any platform, when you compile a
-# framework, it is supported by creating a link like
-# Librairies/libMyFramework.dylib ->
-# Frameworks/MyFramework.framework/Versions/Current/libMyFramework.dylib, to
-# mitigate the fact that FSF GCC supports to link frameworks with the -frameworks
-# flag only on Darwin .
-# Well concerning library GNUstep -make on Darwin, the problem lies in the fact
-# the Darwin linker seems to be unable to link the library when you pass the
-# flag -lMyFramework to compile an application which depends on it, strangely it
-# links the framework directly. You can see that with otool -L
-# Whatever/MyApplication.app/MyApplication which will output
-# MyFramework.framework/MyFramework and not libMyFramework.dylib .
-# So because a framework is linked when it is present even when you want to
-# link the equivalent library, the application will not find the framework when
-# you launch it with DYLD_FRAMEWORK_PATH empty. To correct that, we must
-# set DYLD_FRAMEWORK_PATH in any cases until the Darwin linker behaves correctly.
+# Frameworks in GNUstep-make are supported by creating a link like
+#
+# Libraries/libMyFramework.dylib ->
+# Frameworks/MyFramework.framework/Versions/Current/libMyFramework.dylib,
+#
+# to mitigate the fact that FSF GCC does not support a -framework flag.
+#
+# On Darwin, however, we partially emulate -framework by setting the
+# "install_name" to the framework name during linking. The dynamic
+# linker (dyld) is smart enough to find the framework under this name,
+# but only if DYLD_FRAMEWORK_PATH is set (unless we set the
+# "install_name" to an absolute path, which we don't). We'd really like
+# to fully support -framework, though.
+#
+# Use otool -L MyApplication.app/MyApplication, for instance, to see
+# how the shared libraries/frameworks are linked.
#
# if [ "$LIBRARY_COMBO" = "apple-apple-apple" -o \
-#Â Â Â "$LIBRARY_COMBO" = "apple" ]; then
+# "$LIBRARY_COMBO" = "apple" ]; then
if [ -z "$DYLD_FRAMEWORK_PATH" ]; then
DYLD_FRAMEWORK_PATH="$fw_paths"
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Get library_combo from LIBRARY_COMBO or default_library_combo (or
# from the command line if the user defined it on the command line by
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/library.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Helpful messages which are always printed
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Move old paths from previous filesystem heirarchy to new location
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Run config.guess to guess the host
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# A "native library" is a project which is to be built as a shared
# library on unix/windows, and as a framework on apple. In other
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/objc.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Try to execute the application passed as argument. The application is
# searched through the GNUstep directories if a complete or relative path name
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Try to execute the GNUstep tool passed as argument. The tool is
# searched through the GNUstep directories if a complete or relative path name
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
echo $1 | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/palette.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# This script gets two paths as argument - and outputs a relative path
# which, when appended to the first one, gives the second one ... more
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/resource-set.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# prevent multiple inclusions
# case use __declspec(dllimport) to mark symbols as needing to be put
# into the import table for the executable/library/whatever that is
# being compiled.
-ifeq ($(WITH_DLL),yes)
+#
+# In the new DLL support, this is usually no longer needed. The
+# compiler does it all automatically. But in some cases, some symbols
+# can not be automatically imported and you might want to declare them
+# specially. For those symbols, this define is handy.
+#
+ifeq ($(BUILD_DLL),yes)
ALL_CPPFLAGS += -DGNUSTEP_WITH_DLL
endif
$(YACC) $(YACC_FLAGS) $<
mv -f y.tab.c $@
+#
+# Special mingw32 specific rules to compile Windows resource files (.rc files)
+# into object files.
+#
+ifeq ($(findstring mingw32, $(GNUSTEP_TARGET_OS)), mingw32)
+# Add the .rc suffix on Windows.
+.SUFFIXES: .rc
+
+# A rule to generate a .o file from the .rc file.
+$(GNUSTEP_OBJ_DIR)/%${OEXT}: %.rc
+ $(ECHO_COMPILING)windres $< $@$(END_ECHO)
+endif
+
+
# The following dummy rules are needed for performance - we need to
# prevent make from spending time trying to compute how/if to rebuild
# the system makefiles! the following rules tell him that these files
$(GNUSTEP_OBJ_DIR):
$(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR); \
$(MKDIRS) ./$(GNUSTEP_OBJ_DIR_NAME); \
- rm -f obj; \
+ $(RM_LN_S) obj; \
$(LN_S) ./$(GNUSTEP_OBJ_DIR_NAME) obj$(END_ECHO)
endif
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/service.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
echo " "
echo "Enter the name of your timezone file"
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# This script "strips" the makefiles and shell scripts.
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/subproject.make
CVS
-.svn
\ No newline at end of file
+*.svn
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# This file should not contain any conditional based on the value of
# the 'shared' variable, because we have not set it up yet when this
endif
ifeq ($(findstring mingw32, $(GNUSTEP_TARGET_OS)), mingw32)
- TARGET_SYSTEM_LIBS := $(CONFIG_SYSTEM_LIBS) \
+ TARGET_SYSTEM_LIBS = $(CONFIG_SYSTEM_LIBS) \
-lws2_32 -ladvapi32 -lcomctl32 -luser32 -lcomdlg32 \
-lmpr -lnetapi32 -lm -I. # the -I is a dummy to avoid -lm^M
endif
ifeq ($(findstring cygwin, $(GNUSTEP_TARGET_OS)), cygwin)
- TARGET_SYSTEM_LIBS := $(CONFIG_SYSTEM_LIBS) -lm -I.
+ TARGET_SYSTEM_LIBS = $(CONFIG_SYSTEM_LIBS) -lm -I.
endif
ifeq ($(findstring solaris, $(GNUSTEP_TARGET_OS)), solaris)
- TARGET_SYSTEM_LIBS := $(CONFIG_SYSTEM_LIBS) -lsocket -lnsl -lm
+ TARGET_SYSTEM_LIBS = $(CONFIG_SYSTEM_LIBS) -lsocket -lnsl -lm
endif
ifeq ($(findstring sysv4.2, $(GNUSTEP_TARGET_OS)), sysv4.2)
- TARGET_SYSTEM_LIBS := $(CONFIG_SYSTEM_LIBS) -lsocket -lnsl -lm
+ TARGET_SYSTEM_LIBS = $(CONFIG_SYSTEM_LIBS) -lsocket -lnsl -lm
endif
#
# for frameworks.
# LIB_LINK_VERSION_FILE: the final file to create, having full
# version information: typically `libgnustep-base.so.1.5.3' for shared
-# libraries, and `libgnustep-base.a' for static libraries.
+# libraries, and `libgnustep-base.a' for static libraries. For DLL
+# libraries, this is the import library libgnustep-base.dll.a. The
+# reason we use the import library is because that is the code which
+# needs to be installed in the library path. So by setting
+# LIB_LINK_VERSION_FILE to the import library, the standard code to
+# install it in the library path will work for Windows. The DLL
+# library instead needs to be installed in the PATH, so we have separate
+# code for that one.
# LIB_LINK_SONAME_FILE: this is only used for shared libraries; it
# should be passed in the -Wl,-soname argument of most linkers when
# building the LIB_LINK_VERSION_FILE. Typically `libgnustep-base.so.1'
# LIB_LINK_INSTALL_NAME: on some platforms, when a shared library is
# linked, a default install name of the library is hardcoded into
# the library. This is that name.
-#
+# LIB_LINK_DLL_FILE: on Windows, this is the DLL that gets created
+# and installed in the Tools/ directory (eg, gnustep-base.dll).
+# Please note that while this is the main file you need to use the
+# library at runtime, on Windows we treat this as a side-effect of
+# the compilation; the compilation target for make is
+# LIB_LINK_VERSION_FILE, which is the import library.
+
# AFTER_INSTALL_SHARED_LIB_CMD provides commands to be executed after
# installation (at least for libraries, not for frameworks at the
# moment), and is supposed to setup symlinks properly in the
SHARED_LIBEXT =
AFTER_INSTALL_SHARED_LIB_CMD = \
(cd $(LIB_LINK_INSTALL_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
AFTER_INSTALL_SHARED_LIB_CHOWN = \
(cd $(LIB_LINK_INSTALL_DIR); \
-framework System \
$(INTERNAL_LIBRARIES_DEPEND_UPON) $(LIBRARIES_FOUNDATION_DEPEND_UPON) \
-lobjc -lgcc $^ $(SHARED_LD_POSTFLAGS); \
- (cd $(LIB_LINK_OBJ_DIR); rm -f $(LIB_LINK_FILE); \
+ (cd $(LIB_LINK_OBJ_DIR); $(RM_LN_S) $(LIB_LINK_FILE); \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
else # OBJC_COMPILER=NeXT
SHARED_LIB_LINK_CMD = \
$(INTERNAL_LIBRARIES_DEPEND_UPON) $(LIBRARIES_FOUNDATION_DEPEND_UPON) \
-framework Foundation \
$^ $(SHARED_LD_POSTFLAGS); \
- (cd $(LIB_LINK_OBJ_DIR); rm -f $(LIB_LINK_FILE); \
+ (cd $(LIB_LINK_OBJ_DIR); $(RM_LN_S) $(LIB_LINK_FILE); \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
endif # OBJC_COMPILER
DYLIB_DEF_FRAMEWORKS += -framework Foundation
endif
-
ifeq ($(CC_BUNDLE), no)
# GNU compiler
-SHARED_LD_PREFLAGS += -noall_load -read_only_relocs warning \
- -flat_namespace -undefined warning
+
+INTERNAL_LDFLAGS += -flat_namespace -undefined warning
+
+SHARED_LD_PREFLAGS += -Wl,-noall_load -read_only_relocs warning
# Useful flag: -Wl,-single_module. This flag only
# works starting with 10.3. libs w/ffcall don't link on darwin/ix86 without it.
ifeq ($(findstring darwin7, $(GNUSTEP_TARGET_OS)), darwin7)
SHARED_LD_PREFLAGS += -single_module
endif
SHARED_LIB_LINK_CMD = \
- /usr/bin/libtool \
+ $(CC) \
$(SHARED_LD_PREFLAGS) \
- $(ARCH_FLAGS) -dynamic \
+ $(ARCH_FLAGS) -dynamic -dynamiclib \
$(DYLIB_COMPATIBILITY_VERSION) \
$(DYLIB_CURRENT_VERSION) \
-install_name $(LIB_LINK_INSTALL_NAME) \
$^ $(INTERNAL_LIBRARIES_DEPEND_UPON) $(LIBRARIES_FOUNDATION_DEPEND_UPON) \
$(SHARED_LD_POSTFLAGS); \
(cd $(LIB_LINK_OBJ_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
- rm -f $(LIB_LINK_SONAME_FILE);\
+ $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
fi; \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
BUNDLE_LD = /usr/bin/ld
-BUNDLE_LDFLAGS += -bundle -flat_namespace -undefined suppress /usr/lib/bundle1.o
+BUNDLE_LDFLAGS += -bundle /usr/lib/bundle1.o
else
# Apple Compiler
$(INTERNAL_LIBRARIES_DEPEND_UPON) $(LIBRARIES_FOUNDATION_DEPEND_UPON) \
$^ $(SHARED_LD_POSTFLAGS); \
(cd $(LIB_LINK_OBJ_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
- rm -f $(LIB_LINK_SONAME_FILE);\
+ $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
fi; \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
AFTER_INSTALL_SHARED_LIB_CMD = \
(cd $(LIB_LINK_INSTALL_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
- rm -f $(LIB_LINK_SONAME_FILE);\
+ $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
fi; \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE) )
-framework System \
$(INTERNAL_LIBRARIES_DEPEND_UPON) $(LIBRARIES_FOUNDATION_DEPEND_UPON) \
-lobjc -lgcc $^ $(SHARED_LD_POSTFLAGS); \
- (cd $(LIB_LINK_OBJ_DIR); rm -f $(LIB_LINK_FILE); \
+ (cd $(LIB_LINK_OBJ_DIR); $(RM_LN_S) $(LIB_LINK_FILE); \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
else
SHARED_LIB_LINK_CMD = \
$(INTERNAL_LIBRARIES_DEPEND_UPON) \
$(LIBRARIES_FOUNDATION_DEPEND_UPON) $^ \
$(SHARED_LD_POSTFLAGS); \
- (cd $(LIB_LINK_OBJ_DIR); rm -f $(LIB_LINK_FILE); \
+ (cd $(LIB_LINK_OBJ_DIR); $(RM_LN_S) $(LIB_LINK_FILE); \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
endif
$(ARCH_FLAGS) $(ALL_LDFLAGS) -o $@ -framework System \
$(INTERNAL_LIBRARIES_DEPEND_UPON) -lobjc -lgcc -undefined warning $^ \
$(SHARED_LD_POSTFLAGS); \
- (cd $(LIB_LINK_OBJ_DIR); rm -f $(LIB_LINK_FILE); \
+ (cd $(LIB_LINK_OBJ_DIR); $(RM_LN_S) $(LIB_LINK_FILE); \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
else
SHARED_LIB_LINK_CMD = \
-framework System \
$(INTERNAL_LIBRARIES_DEPEND_UPON) $^ \
$(SHARED_LD_POSTFLAGS); \
- (cd $(LIB_LINK_OBJ_DIR); rm -f $(LIB_LINK_FILE); \
+ (cd $(LIB_LINK_OBJ_DIR); $(RM_LN_S) $(LIB_LINK_FILE); \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
endif
$(INTERNAL_LIBRARIES_DEPEND_UPON) \
$(SHARED_LD_POSTFLAGS);\
(cd $(LIB_LINK_OBJ_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
- rm -f $(LIB_LINK_SONAME_FILE);\
+ $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
fi; \
$(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \
)
AFTER_INSTALL_SHARED_LIB_CMD = \
(cd $(LIB_LINK_INSTALL_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
- rm -f $(LIB_LINK_SONAME_FILE);\
+ $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
fi; \
$(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \
BUNDLE_LDFLAGS += -shared
ADDITIONAL_LDFLAGS += -rdynamic
STATIC_LDFLAGS += -static
-
endif
#
# end Linux ELF
$(CC) -shared -Wl,-soname,$(LIB_LINK_VERSION_FILE) \
$(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ /usr/lib/c++rt0.o;\
(cd $(LIB_LINK_OBJ_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
SHARED_CFLAGS += -fPIC
$(INTERNAL_LIBRARIES_DEPEND_UPON) \
$(SHARED_LD_POSTFLAGS);\
(cd $(LIB_LINK_OBJ_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
- rm -f $(LIB_LINK_SONAME_FILE);\
+ $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
fi; \
$(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE))
AFTER_INSTALL_SHARED_LIB_CMD = \
(cd $(LIB_LINK_INSTALL_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
- rm -f $(LIB_LINK_SONAME_FILE);\
+ $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
fi; \
$(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \
BUNDLE_LDFLAGS += -shared
ADDITIONAL_LDFLAGS += -rdynamic
STATIC_LDFLAGS += -static
+
+##
+## The -pthread flag must be passed to all compilation/link commands.
+##
+ifeq ($(objc_threaded), -pthread)
+ INTERNAL_CFLAGS += -pthread
+ INTERNAL_OBJCFLAGS += -pthread
+ INTERNAL_LDFLAGS += -pthread
+endif
endif
endif
#
$(SHARED_LD) -x -Bshareable -Bforcearchive \
$(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ /usr/lib/c++rt0.o;\
(cd $(LIB_LINK_OBJ_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
SHARED_CFLAGS += -shared -fpic
$^ $(INTERNAL_LIBRARIES_DEPEND_UPON) \
$(SHARED_LD_POSTFLAGS); \
(cd $(LIB_LINK_OBJ_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
OBJ_MERGE_CMD = \
$(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(INTERNAL_LIBRARIES_DEPEND_UPON) \
$(SHARED_LD_POSTFLAGS);\
(cd $(LIB_LINK_OBJ_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
- rm -f $(LIB_LINK_SONAME_FILE);\
+ $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
fi; \
$(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE))
AFTER_INSTALL_SHARED_LIB_CMD = \
(cd $(LIB_LINK_INSTALL_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
- rm -f $(LIB_LINK_SONAME_FILE);\
+ $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
fi; \
$(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \
$(CC) -shared -Wl,-soname,$(LIB_LINK_VERSION_FILE) \
$(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ ;\
(cd $(LIB_LINK_OBJ_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
OBJ_MERGE_CMD = \
$(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(INTERNAL_LIBRARIES_DEPEND_UPON) \
$(SHARED_LD_POSTFLAGS);\
(cd $(LIB_LINK_OBJ_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
- rm -f $(LIB_LINK_SONAME_FILE);\
+ $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
fi; \
$(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \
)
AFTER_INSTALL_SHARED_LIB_CMD = \
(cd $(LIB_LINK_INSTALL_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
- rm -f $(LIB_LINK_SONAME_FILE);\
+ $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
fi; \
$(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \
ifeq ($(findstring mingw32, $(GNUSTEP_TARGET_OS)), mingw32)
shared = yes
HAVE_SHARED_LIBS = yes
+# This command links the library, generates automatically the list of
+# symbols to export, creates the DLL (eg, obj/gnustep-base.dll) and
+# the import library (eg, obj/libgnustep-base.dll.a).
+SHARED_LIB_LINK_CMD = \
+ $(CC) $(SHARED_LD_PREFLAGS) -shared -Wl,--out-implib,$(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) \
+ $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_DLL_FILE) $^ \
+ $(INTERNAL_LIBRARIES_DEPEND_UPON) \
+ $(SHARED_LD_POSTFLAGS)
+
+AFTER_INSTALL_SHARED_LIB_CMD =
+AFTER_INSTALL_SHARED_LIB_CHOWN =
+
BUILD_DLL = yes
-WITH_DLL = yes
-SHARED_LIBEXT = .a
+LIBEXT = .a
+# Technically, in this Unix-inspired building system, a DLL is
+# composed of a .dll file which goes in the executable path and is the
+# one which is loaded at runtime, and a .dll.a file which goes in the
+# library path and which is linked into the application in order to
+# enable it use the .dll. Anything in gnustep-make which is looking
+# for shared libs should detect / look for the .dll.a as that's what
+# we link applications against.
+SHARED_LIBEXT = .dll.a
DLL_LIBEXT = .dll
-DLLTOOL = dlltool
-DLLWRAP = dllwrap
#SHARED_CFLAGS +=
OBJ_MERGE_CMD = \
HAVE_BUNDLES = yes
BUNDLE_LD = $(CC)
-BUNDLE_LDFLAGS += -nodefaultlibs -Xlinker -r
+BUNDLE_LDFLAGS += -shared
+
+# On Mingw32, it looks like the class name symbols start with '___' rather
+# than '__'
+EXTRACT_CLASS_NAMES_COMMAND = nm -Pg $$object_file | sed -n -e '/^___objc_class_name_[A-Za-z_.]* [^U]/ {s/^___objc_class_name_\([A-Za-z_.]*\) [^U].*/\1/p;}'
+
endif
# end Mingw32
shared = yes
HAVE_SHARED_LIBS = yes
BUILD_DLL = yes
-WITH_DLL = yes
+OLD_DLL_SUPPORT = yes
SHARED_LIBEXT = .a
DLL_LIBEXT = .dll
DLLTOOL = dlltool
$(INTERNAL_LIBRARIES_DEPEND_UPON) \
$(SHARED_LD_POSTFLAGS);\
(cd $(LIB_LINK_OBJ_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
- rm -f $(LIB_LINK_SONAME_FILE);\
+ $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
fi; \
$(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \
)
AFTER_INSTALL_SHARED_LIB_CMD = \
(cd $(LIB_LINK_INSTALL_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
- rm -f $(LIB_LINK_SONAME_FILE);\
+ $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
fi; \
$(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \
$(SHARED_LD_POSTFLAGS);\
mv $(LIB_LINK_VERSION_FILE) $(LIB_LINK_OBJ_DIR);\
(cd $(LIB_LINK_OBJ_DIR); \
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
SHARED_CFLAGS += -fpic -fPIC
-v $(SHARED_CFLAGS) -shared \
$(ALL_LDFLAGS) -o $(LIB_LINK_VERSION_FILE) `ls -1 *\.o */*\.o` \
$(SHARED_LD_POSTFLAGS) ;\
- rm -f $(LIB_LINK_FILE); \
+ $(RM_LN_S) $(LIB_LINK_FILE); \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
ifeq ($(CC), cc)
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/test-application.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/test-library.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/test-tool.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ifeq ($(GNUSTEP_INSTANCE),)
include $(GNUSTEP_MAKEFILES)/Master/tool.make
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Takes a list of paths possibly containing relative paths and outputs a
# list containing only absolute paths based upon the current directory.
You should have received a copy of the GNU General Public
License along with this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
- 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
#include "config.h"
sprintf(home, "C:%s", buf0);
}
}
+ else
+ {
+ strcpy(home, buf0);
+ }
}
else
{
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
echo $1 | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'
You should have received a copy of the GNU General Public
License along with this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
- 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
/*