From d9f9256ad47da076af749eaf61d6cf7f496ae429 Mon Sep 17 00:00:00 2001 From: helge Date: Tue, 16 Aug 2005 23:16:10 +0000 Subject: [PATCH] merging gnustep-make 1.11.0 into trunk git-svn-id: http://svn.opengroupware.org/SOPE/trunk@1043 e4a50df8-12e2-0310-a44c-efbce7f8a7e3 --- gnustep-make/.cvsignore | 1 + gnustep-make/ANNOUNCE | 34 +- gnustep-make/COPYING | 4 +- gnustep-make/ChangeLog | 328 ++++++++++- gnustep-make/Documentation/GNUmakefile | 8 +- gnustep-make/Documentation/README.Cygwin | 118 ++-- gnustep-make/Documentation/README.Darwin | 524 ++++++++++-------- gnustep-make/Documentation/README.MinGW | 394 ++++++------- gnustep-make/Documentation/faq.texi | 31 +- gnustep-make/Documentation/gnustep-howto.texi | 66 ++- gnustep-make/Documentation/gnustep.init | 4 +- gnustep-make/Documentation/machines.texi | 256 ++++++--- gnustep-make/Documentation/news.texi | 29 +- gnustep-make/Documentation/readme.texi | 9 +- gnustep-make/Documentation/userfaq.texi | 133 ++--- gnustep-make/FAQ | 28 +- gnustep-make/GNUmakefile.in | 8 +- gnustep-make/GNUstep-HOWTO | 466 +++++++++------- gnustep-make/GNUstep-reset.sh | 29 +- gnustep-make/GNUstep.conf | 29 + gnustep-make/GNUstep.csh.in | 2 +- gnustep-make/GNUstep.sh.in | 4 +- .../Instance/Documentation/autogsdoc.make | 2 +- .../Instance/Documentation/gsdoc.make | 2 +- .../Instance/Documentation/install_files.make | 2 +- .../Instance/Documentation/javadoc.make | 2 +- .../Instance/Documentation/latex.make | 2 +- gnustep-make/Instance/Documentation/texi.make | 2 +- gnustep-make/Instance/Shared/bundle.make | 19 +- gnustep-make/Instance/Shared/headers.make | 28 +- gnustep-make/Instance/Shared/java.make | 2 +- .../Instance/Shared/stamp-string.make | 2 +- gnustep-make/Instance/Shared/strings.make | 2 +- gnustep-make/Instance/application.make | 25 +- gnustep-make/Instance/bundle.make | 39 +- gnustep-make/Instance/clibrary.make | 2 +- gnustep-make/Instance/ctool.make | 2 +- gnustep-make/Instance/documentation.make | 2 +- gnustep-make/Instance/framework.make | 334 +++++++---- gnustep-make/Instance/gswapp.make | 10 +- gnustep-make/Instance/gswbundle.make | 36 +- gnustep-make/Instance/java-tool.make | 2 +- gnustep-make/Instance/java.make | 2 +- gnustep-make/Instance/library.make | 91 ++- gnustep-make/Instance/objc.make | 2 +- gnustep-make/Instance/palette.make | 15 +- gnustep-make/Instance/resource-set.make | 2 +- gnustep-make/Instance/rules.make | 14 +- gnustep-make/Instance/service.make | 11 +- gnustep-make/Instance/subproject.make | 4 +- gnustep-make/Instance/test-application.make | 2 +- gnustep-make/Instance/test-library.make | 127 +---- gnustep-make/Instance/test-tool.make | 2 +- gnustep-make/Instance/tool.make | 12 +- gnustep-make/Master/aggregate.make | 2 +- gnustep-make/Master/application.make | 2 +- gnustep-make/Master/bundle.make | 2 +- gnustep-make/Master/clibrary.make | 2 +- gnustep-make/Master/ctool.make | 2 +- gnustep-make/Master/documentation.make | 2 +- gnustep-make/Master/framework.make | 2 +- gnustep-make/Master/gswapp.make | 2 +- gnustep-make/Master/gswbundle.make | 2 +- gnustep-make/Master/java-tool.make | 2 +- gnustep-make/Master/java.make | 2 +- gnustep-make/Master/library.make | 2 +- gnustep-make/Master/objc.make | 2 +- gnustep-make/Master/palette.make | 2 +- gnustep-make/Master/resource-set.make | 2 +- gnustep-make/Master/rpm.make | 2 +- gnustep-make/Master/rules.make | 22 +- gnustep-make/Master/service.make | 2 +- gnustep-make/Master/source-distribution.make | 15 +- gnustep-make/Master/subproject.make | 2 +- gnustep-make/Master/test-application.make | 2 +- gnustep-make/Master/test-library.make | 2 +- gnustep-make/Master/test-tool.make | 2 +- gnustep-make/Master/tool.make | 2 +- gnustep-make/NEWS | 25 +- gnustep-make/README | 11 +- gnustep-make/Version | 2 +- gnustep-make/aggregate.make | 2 +- gnustep-make/application.make | 2 +- gnustep-make/bundle.make | 2 +- gnustep-make/clean_cpu.sh | 2 +- gnustep-make/clean_os.sh | 2 +- gnustep-make/clean_vendor.sh | 2 +- gnustep-make/clibrary.make | 2 +- gnustep-make/common.make | 2 +- gnustep-make/config.guess | 2 +- gnustep-make/config.make.in | 22 +- gnustep-make/config.site | 2 +- gnustep-make/config.sub | 4 +- gnustep-make/configure | 2 +- gnustep-make/configure.ac | 4 +- gnustep-make/cpu.sh | 2 +- gnustep-make/create_domain_dir_tree.sh | 2 +- gnustep-make/ctool.make | 2 +- gnustep-make/debugapp.in | 2 +- gnustep-make/documentation.make | 2 +- gnustep-make/executable.template.in | 2 +- gnustep-make/fixpath.sh.in | 2 +- gnustep-make/framework.make | 2 +- gnustep-make/gswapp.make | 2 +- gnustep-make/gswbundle.make | 2 +- gnustep-make/java-executable.template | 2 +- gnustep-make/java-tool.make | 2 +- gnustep-make/java.make | 2 +- gnustep-make/jni.make | 2 +- gnustep-make/ld_lib_path.csh | 38 +- gnustep-make/ld_lib_path.sh | 36 +- gnustep-make/library-combo.make | 2 +- gnustep-make/library.make | 2 +- gnustep-make/messages.make | 2 +- gnustep-make/move_obsolete_paths.sh | 2 +- gnustep-make/names.make | 2 +- gnustep-make/native-library.make | 2 +- gnustep-make/objc.make | 2 +- gnustep-make/openapp.in | 2 +- gnustep-make/opentool.in | 2 +- gnustep-make/os.sh | 2 +- gnustep-make/palette.make | 2 +- gnustep-make/relative_path.sh | 2 +- gnustep-make/resource-set.make | 2 +- gnustep-make/rules.make | 26 +- gnustep-make/service.make | 2 +- gnustep-make/setlocaltz.sh | 2 +- gnustep-make/strip_makefiles.sh | 2 +- gnustep-make/subproject.make | 2 +- gnustep-make/tar-exclude-list | 2 +- gnustep-make/target.make | 162 ++++-- gnustep-make/test-application.make | 2 +- gnustep-make/test-library.make | 2 +- gnustep-make/test-tool.make | 2 +- gnustep-make/tool.make | 2 +- gnustep-make/transform_paths.sh | 2 +- gnustep-make/user_home.c | 6 +- gnustep-make/vendor.sh | 2 +- gnustep-make/which_lib.c | 2 +- 139 files changed, 2302 insertions(+), 1521 deletions(-) create mode 100644 gnustep-make/GNUstep.conf diff --git a/gnustep-make/.cvsignore b/gnustep-make/.cvsignore index ad3026da..c68c7766 100644 --- a/gnustep-make/.cvsignore +++ b/gnustep-make/.cvsignore @@ -14,3 +14,4 @@ executable.template opentool gnustep-make.spec fixpath.sh +GNUsteprc diff --git a/gnustep-make/ANNOUNCE b/gnustep-make/ANNOUNCE index d3927704..ed2af410 100644 --- a/gnustep-make/ANNOUNCE +++ b/gnustep-make/ANNOUNCE @@ -1,7 +1,7 @@ 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? ===================================== @@ -12,29 +12,33 @@ project without having to deal with the complex issues associated with configuration, building, installation, and packaging. It also allows the user to easily create cross-compiled binaries. -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 Please log bug reports on the GNUstep project page diff --git a/gnustep-make/COPYING b/gnustep-make/COPYING index 60549be5..ebb24a85 100644 --- a/gnustep-make/COPYING +++ b/gnustep-make/COPYING @@ -2,7 +2,7 @@ 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. @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. 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. diff --git a/gnustep-make/ChangeLog b/gnustep-make/ChangeLog index 6c8acb28..f9586464 100644 --- a/gnustep-make/ChangeLog +++ b/gnustep-make/ChangeLog @@ -1,6 +1,330 @@ -2005-08-10 Helge Hess +2005-07-21 Adam Fedor - * Instance/framework.make: fixed header lookup + * Version 1.11.0 + +2005-07-20 Jeremy Bettis , + Nicola Pero + + * 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 , + Nicola Pero + + 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 , + Nicola Pero + + 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 + + * target.make (EXTRACT_CLASS_NAMES_COMMAND): New define for + mingw32 where class name symbols start with '___' rather than + '__'. + +2005-07-12 Nicola Pero + + * 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 + + * Instance/framework.make (DUMMY_FRAMEWORK): Mangle + framework names into valid ObjC class names. + +2005-07-12 Nicola Pero + + * Documentation/README.MinGW: Updated. + +2005-07-08 Adam Fedor + + * Documentation/news.texi: Update for next version. + +2005-07-06 Nicola Pero + + * 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 + + * Documentation/GNUmakefile: Don't try to install README.NetBSD + * Documentation/machines.texi: Updates. + +2005-06-10 Adam Fedor + + * Instance/test-library.make: Remove dejagnu code and replace + with rules to inherit from library.make + +2005-06-10 Adam Fedor + + * 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 + + * 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 + + * Documentation/README.MinGW: Rewritten with updated instructions. + +2005-05-23 David Lazaro Saz + + * Documentation/userfaq.texi: Updated style, trademark usage and some + spelling mistakes. + +2005-05-21 Adam Fedor + + * Update FSF Address. + * Documentation/gnustep-howto.texi: Update required libs. + +2005-04-19 Adam Fedor + + * 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 + + * 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 + + * GNUstep.conf (USER_GNUSTEP_RC): Fixed typo, it was spelt + as .GNusteprc instead of .GNUsteprc. + +2005-04-06 Nicola Pero + + * 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 + + * 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 ). + +2005-03-22 Nicola Pero + + * 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 + + * 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 + + * 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 + + * Instance/bundle.make: Use make quotes, not shell quotes, for + BUNDLE_OBJ_EXT when used in rules. + +2005-03-21 Nicola Pero + + * 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 + + * 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 + + * 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 + + * configure.ac: Detect libobjc.dll.a as a custom ObjC library. + * configure: Regenerated. + +2005-03-01 Nicola Pero + + * 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 + + * 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 + + * Documentation/README.MinGW: Update with my latest experiences. + +2005-01-31 Adam Fedor + + * Documentation/GNUmakefile: Install README.* docs + * Documentation/machines.texi: Typo. + +2005-01-14 Armando Di Cianno + + * 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 + + * 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 + + * 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 + + * 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 + + * Documentation/README.Darwin: Improved indentation and presentation. + +2004-12-19 Richard Frith-Macdonald + + * 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 + + * Documentation/machines.texi (MacOSX): Update (info from Markus + Hitter). + + * Documentation/README.Darwin: Clean up, simplify. + +Sun Nov 7 04:18:39 2004 Nicola Pero + + * tar-exclude-list: Use *.svn instead of .svn to have + .svn dirs excluded. + +Sun Nov 7 04:07:50 2004 David Wetzel + + * 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 + + * 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 + + * Documentation/README.Cygwin: Updated + * Documentation/README.Darwin: Minor update + * Documentation/gnustep.init: Add navigation tags back + +2004-10-18 Adam Fedor + + * 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 diff --git a/gnustep-make/Documentation/GNUmakefile b/gnustep-make/Documentation/GNUmakefile index 23856818..a321e160 100644 --- a/gnustep-make/Documentation/GNUmakefile +++ b/gnustep-make/Documentation/GNUmakefile @@ -68,6 +68,9 @@ DOCUMENT_NAME = gnustep-howto faq filesystem internals machines make userfaq 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 @@ -146,8 +149,11 @@ version.texi: ../Version > 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; \ diff --git a/gnustep-make/Documentation/README.Cygwin b/gnustep-make/Documentation/README.Cygwin index de2726c8..60422823 100644 --- a/gnustep-make/Documentation/README.Cygwin +++ b/gnustep-make/Documentation/README.Cygwin @@ -1,5 +1,8 @@ Date: 17-Sep-2002 (tested under windows-xp) Author: Ildar Mulyukov +Update: 23-Oct-2004 (tested under windows-2000) +Author: Adam Fedor + PURPOSE ------- @@ -22,7 +25,7 @@ Win32 API so be warned. 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 @@ -60,59 +63,39 @@ Before you start, you need Cygwin in some programming-oriented 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 @@ -121,86 +104,61 @@ 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 for his README.MinGW as I -have copy-pasted structure of this document from his README.MinGW - - APPENDIX A ---------- diff --git a/gnustep-make/Documentation/README.Darwin b/gnustep-make/Documentation/README.Darwin index d4b62028..ff92523f 100644 --- a/gnustep-make/Documentation/README.Darwin +++ b/gnustep-make/Documentation/README.Darwin @@ -1,5 +1,5 @@ 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 Quentin Mathé @@ -8,7 +8,7 @@ Authors: Adam Fedor 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 @@ -19,143 +19,124 @@ COMMONLY USED SYMBOLS --------------------- <> 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='/bin/gcc' + ./configure CC=/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 ---------------- @@ -164,104 +145,113 @@ Darwin x86: 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 -/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 + /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 -/gcc-x.x.x/configure [ --prefix=] # by default gcc - # installs in /usr/local -make bootstrap -make install -cd /lib -ln -s libobjc.a libobjc.dylib # So the linker sees us + mkdir build + cd build + /gcc-x.x.x/configure \ # The first option + [--prefix=] \ # 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 /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=/bin/gcc' >> ~/.profile + echo 'export CC=/bin/gcc' >> ~/.profile with c shell like tcsh (Mac OS X 10.2): -echo 'setenv CC /bin/gcc' >> ~/.tcshrc + echo 'setenv CC /bin/gcc' >> ~/.tcshrc -else use [CC='/bin/gcc'] option when running configure. +else use [CC=/bin/gcc] option when running configure. then: -./configure --with-library-combo=gnu-gnu-gnu [--prefix=] \ -[CC='/bin/gcc'] + ./configure --with-library-combo=gnu-gnu-gnu \ + [--prefix=] [CC=/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=] \ -[CC='/bin/gcc'] + ./configure --with-library-combo=gnu-gnu-gnu --disable-flattened \ + --enable-multi-platform [--prefix=] \ + [CC=/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 -/libffi/configure [CC='/bin/gcc'] -make -make install + mkdir libffi-build + cd libffi-build + /libffi/configure [CC=/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 -/libffi-src/configure [CC='/bin/gcc'] -make -make install + mkdir libffi-build + cd libffi-build + /libffi-src/configure [CC=/bin/gcc] + make + make install Warning ! Don't install libffi in , let it just install in /usr/local @@ -269,73 +259,75 @@ Warning ! Don't install libffi in , let it just install in 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=/lib:/sw/lib:$DYLD_LIBRARY_PATH' ->> ~/.profile - -with c shell like tcsh (Mac OS X 10.2): - -echo 'setenv DYLD_LIBRARY_PATH /lib:/sw/lib:$DYLD_LIBRARY_PATH' ->> ~/.tcshrc + make + make install Source GNUstep.sh ----------------- If you are using bourne shell like bash, type: -. /System/Makefiles/GNUstep.sh + . /System/Makefiles/GNUstep.sh If you are using c shell like tcsh, type: -source /System/Makefiles/GNUstep.csh + source /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=/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='/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='/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. @@ -343,33 +335,34 @@ 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='/bin/gcc'] + ./configure --disable-gsnd [CC=/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= --with-jpeg-include= to have the libjpeg detected. +In the case configure didn't found libjpeg, use +--with-jpeg-library= --with-jpeg-include= 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 @@ -378,44 +371,69 @@ the X server, take a look at http://www.xdarwin.org In the back directory, type: - ./configure [CC='/bin/gcc'] - make - make install + ./configure [CC=/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 ) - ./configure --enable-graphics=art [CC='/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='/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 @@ -431,7 +449,8 @@ In the case, you choose to use it, don't forget to execute wmaker.inst else Window Maker will crash with signal 10. Example with Fink, do: -/sw/bin/wmaker.inst + + /sw/bin/wmaker.inst GNUstep daemons --------------- @@ -440,25 +459,64 @@ Refer to GNUstep-HOWTO to know how to launch 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/ 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 + sudo ln -s Versions//lib.dylib + +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 --- diff --git a/gnustep-make/Documentation/README.MinGW b/gnustep-make/Documentation/README.MinGW index 81810ca3..0e33f79e 100644 --- a/gnustep-make/Documentation/README.MinGW +++ b/gnustep-make/Documentation/README.MinGW @@ -1,6 +1,6 @@ -Date: 09-Jan-2003 (tested under Windows XP) -Update: 23-Feb-2003 (also tested under Windows 2000) -Author: Richard Frith-Macdonald +Date: 31-May-2005 (tested under Windows XP) +Author: Nicola Pero , + after Richard Frith-Macdonald and others PURPOSE ------- @@ -20,142 +20,128 @@ you are using as with GNUstep. 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//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 @@ -168,176 +154,138 @@ into errors. 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 +================================= - (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. -. -also need guile from - +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. diff --git a/gnustep-make/Documentation/faq.texi b/gnustep-make/Documentation/faq.texi index 54ae2792..aece2141 100644 --- a/gnustep-make/Documentation/faq.texi +++ b/gnustep-make/Documentation/faq.texi @@ -56,14 +56,16 @@ GNUstep yet. Plus there are some other issues. If you start with 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 @@ -88,6 +90,11 @@ interface. It has a number of advantages over the proprietary nib format: 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 @@ -215,6 +222,7 @@ asset - volunteers are, as always, welcome. * 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?:: @@ -246,8 +254,7 @@ maintainers. Ask questions in the discussion mailing list. 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 @@ -278,7 +285,7 @@ website. 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 @@ -302,7 +309,19 @@ format into gsdoc. 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 diff --git a/gnustep-make/Documentation/gnustep-howto.texi b/gnustep-make/Documentation/gnustep-howto.texi index f4b091f0..e56f9af9 100644 --- a/gnustep-make/Documentation/gnustep-howto.texi +++ b/gnustep-make/Documentation/gnustep-howto.texi @@ -107,7 +107,8 @@ Use this instead of ffcall. You don't need both. @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. @@ -137,7 +138,19 @@ The GUI library uses this to handle loading JPEG images. @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) @@ -152,9 +165,10 @@ Although it is not required, GNUstep will work much better if you use it 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 @@ -322,36 +336,26 @@ source /usr/GNUstep/System/Library/Makefiles/GNUstep.csh @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 @@ -370,6 +374,8 @@ fi @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 @@ -378,14 +384,14 @@ if [ `gdomap -L GDNCServer | grep -c Unable` == 1 ]; then 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. diff --git a/gnustep-make/Documentation/gnustep.init b/gnustep-make/Documentation/gnustep.init index cc5e2036..63702884 100644 --- a/gnustep-make/Documentation/gnustep.init +++ b/gnustep-make/Documentation/gnustep.init @@ -2,7 +2,7 @@ if (defined($ENV{'GNUSTEP_WEB_ROOT'})) { open(TMPL,"<$ENV{'GNUSTEP_WEB_ROOT'}/secondary.html.template"); $tmpl=join("",); 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>.*(.*
).*(<\/div><\/div>.*)<\/body>/sm); } else { @@ -20,4 +20,4 @@ sub nothing $T2H_print_About = \¬hing; $T2H_SECTION_NAVIGATION = 0; -$T2H_print_navigation = \¬hing; +#$T2H_print_navigation = \¬hing; diff --git a/gnustep-make/Documentation/machines.texi b/gnustep-make/Documentation/machines.texi index 54387a4d..631d0c66 100644 --- a/gnustep-make/Documentation/machines.texi +++ b/gnustep-make/Documentation/machines.texi @@ -3,8 +3,8 @@ @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 @@ -17,7 +17,12 @@ and need someone to help with reporting problems and fixes. 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:: @@ -31,12 +36,14 @@ knows if GNUstep works on these although they may. * 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:: @@ -49,6 +56,10 @@ knows if GNUstep works on these although they may. * 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 @@ -57,7 +68,7 @@ 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. -@table @samp +@table @var @item egcs or gcc < 2.95 Might work, but few people use these now. @item gcc 2.95.x @@ -76,19 +87,16 @@ Pretty good. Recommended. @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 @@ -96,21 +104,31 @@ and installing gcc and make. If you had GNUstep previously installed, make sure 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 @@ -122,15 +140,29 @@ directory for complete instructions. @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 @@ -150,9 +182,9 @@ See also the MacOSX/PowerPC section @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 @@ -166,9 +198,9 @@ None @section Debian/i386 Tested on sid. -@table @samp +@table @var @item Recommended compiler -Unknown +Standard @item Extra libs needed Unknown @@ -182,9 +214,9 @@ None @section Debian/PowerPC Tested on sid. -@table @samp +@table @var @item Recommended compiler -Unknown +Standard @item Extra libs needed Unknown @@ -198,12 +230,11 @@ None @section Debian/SPARC Tested on sid. -@table @samp +@table @var @item Recommended compiler -Unknown +Standard @item Extra libs needed -Unknown @item Special Instructions None @@ -213,8 +244,8 @@ 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 @@ -224,6 +255,9 @@ None. 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 @@ -231,7 +265,7 @@ are installed. See the GNUstep-HOWTO for list of libraries. @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 @@ -246,11 +280,11 @@ For libxml2 2.4.24, make WITHOUT_PYTHON=YES @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 @@ -292,7 +326,7 @@ flags to configure: @code{CFLAGS="-I/usr/local/include"} and @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 @@ -317,9 +351,9 @@ You need to use gmake not make to compile the GNUstep packages. @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 @@ -345,41 +379,61 @@ No libffi-support: Use ffcall @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 @@ -392,26 +446,52 @@ Unknown. @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. @@ -426,7 +506,7 @@ See @url{http://www.netwinder.org/~patrix} @node OpenBSD 3.x, OSF/Alpha, Netwinder, Machine Specific @section OpenBSD 3.x (@emph{Needs Testing}) -@table @samp +@table @var @item Recommended compiler Unknown @@ -444,7 +524,7 @@ Try reading the @url{README.NetBSD} which might work the same on OpenBSD. Information is for Version 3.2C -@table @samp +@table @var @item Recommended compiler egcs-1.1.1/1.1.2, gcc-2.95 @@ -465,7 +545,7 @@ ADDTIONAL_TOOL_LIBS in the GNUmakefile(.preamble). @node RedHat/Intel, Slackware/Intel, OSF/Alpha, Machine Specific @section RedHat/Intel -@table @samp +@table @var @item Recommended compiler Standard @@ -477,10 +557,10 @@ None @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. @@ -493,12 +573,30 @@ 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 @@ -515,7 +613,7 @@ See the Solaris 2.6 section for more instructions. 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. @@ -547,7 +645,7 @@ set to 'posix' not 'solaris'. @section Solaris 2.7/Intel @c Contact?: Sebastian Niesen -@table @samp +@table @var @item Recommended compiler Unknown. @@ -558,7 +656,7 @@ 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 @@ -572,7 +670,7 @@ instructions above for more information. GNUstep has been tested on version 6.2-6.4 of Suse -@table @samp +@table @var @item Recommended compiler Standard @@ -590,9 +688,9 @@ gdnc doesn't work. If you recompile the kernel then it starts working. @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. @@ -612,7 +710,7 @@ None. 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). @@ -629,7 +727,7 @@ None @section Unixware-2.1.3/Intel @c Contact?: Richard Frith-Macdonald -@table @samp +@table @var @item Recommended compiler Unknown @@ -732,9 +830,9 @@ work. @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)) @@ -758,7 +856,7 @@ See @url{README.Cygwin} for information on compiling. @node Windows with MinGW, Yellowdog/PowerPC, Windows with CYGWIN, Machine Specific @section Windows with MinGW -@table @samp +@table @var @item Recommended compiler See below. @@ -776,7 +874,7 @@ Native GUI backend is alpha version. @node Yellowdog/PowerPC, , Windows with MinGW, Machine Specific @section Yellowdog/PowerPC -@table @samp +@table @var @item Recommended compiler Standard diff --git a/gnustep-make/Documentation/news.texi b/gnustep-make/Documentation/news.texi index 19c3171f..d0d950e4 100644 --- a/gnustep-make/Documentation/news.texi +++ b/gnustep-make/Documentation/news.texi @@ -9,6 +9,33 @@ 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 @@ -26,8 +53,6 @@ configure to enable use of built in objc exceptions with compilers that support it. @end itemize -@ifclear ANNOUNCE-ONLY - @section Changes in version @samp{1.9.2} @itemize @bullet diff --git a/gnustep-make/Documentation/readme.texi b/gnustep-make/Documentation/readme.texi index 1f75ced3..a0c9d2f6 100644 --- a/gnustep-make/Documentation/readme.texi +++ b/gnustep-make/Documentation/readme.texi @@ -37,17 +37,12 @@ General Public License. The GNU GPL is a free software license, 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. @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}. diff --git a/gnustep-make/Documentation/userfaq.texi b/gnustep-make/Documentation/userfaq.texi index 7b238466..6de86c75 100644 --- a/gnustep-make/Documentation/userfaq.texi +++ b/gnustep-make/Documentation/userfaq.texi @@ -35,19 +35,19 @@ at the (developer) FAQ for more developer oriented questions. @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. @@ -60,25 +60,25 @@ You can obtain a copy of the OpenStep standard from the GNUstep web site 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 @@ -90,14 +90,14 @@ to write once, deploy anywhere. 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? @@ -119,14 +119,14 @@ some sort of program or window manager. 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 @@ -137,7 +137,7 @@ GNUstep and look at the example applications in the gnustep-examples 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 @@ -156,10 +156,10 @@ snapshots. @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. @@ -189,8 +189,8 @@ GNUstep web site. @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? @@ -208,7 +208,7 @@ fixed in GCC version 3.1. @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 @@ -228,53 +228,53 @@ you are using an early compiler, you can supress these warnings by adding @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 @@ -289,29 +289,29 @@ path, but that is simply a shared library then! Absolutely @emph{no} 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! @@ -319,21 +319,21 @@ 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 **************************************************************** @@ -398,7 +398,10 @@ Please report the error to bug-gnustep@@gnu.org. 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 diff --git a/gnustep-make/FAQ b/gnustep-make/FAQ index 03223e10..8db6ab70 100644 --- a/gnustep-make/FAQ +++ b/gnustep-make/FAQ @@ -1,7 +1,7 @@ GNUstep Frequently Asked Questions with Answers *********************************************** -Last updated 3 September 2004. Please send corrections to +Last updated 21 July 2005. Please send corrections to . Also look at the user FAQ for more user oriented questions. @@ -25,8 +25,7 @@ constantly changing, much faster than GNUstep could hope to keep up. 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 @@ -37,7 +36,9 @@ GNUstep yet. Plus there are some other issues. If you start with Cocoa: * You need to convert .nib files (see next question *note Tools for porting::) - * Some unfinished classes include Drawers. + See also + for more +information. Tools for porting ----------------- @@ -62,6 +63,11 @@ programs. 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. @@ -205,8 +211,7 @@ Ask questions in the discussion mailing list. 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 @@ -259,6 +264,17 @@ format into gsdoc. 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 + (instructions +are included). + How do I update the task list? ------------------------------ diff --git a/gnustep-make/GNUmakefile.in b/gnustep-make/GNUmakefile.in index c833ddb1..211351a3 100644 --- a/gnustep-make/GNUmakefile.in +++ b/gnustep-make/GNUmakefile.in @@ -17,7 +17,7 @@ # 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 @@ -144,9 +144,6 @@ install: all @GNUSTEP_MOVE_OBSOLETE@ $(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); \ @@ -187,8 +184,6 @@ endif $(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; \ @@ -240,7 +235,6 @@ uninstall: 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 \ diff --git a/gnustep-make/GNUstep-HOWTO b/gnustep-make/GNUstep-HOWTO index 07752388..3caaa883 100644 --- a/gnustep-make/GNUstep-HOWTO +++ b/gnustep-make/GNUstep-HOWTO @@ -1,7 +1,7 @@ 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. @@ -59,8 +59,9 @@ are required. `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. @@ -91,7 +92,21 @@ are required. `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)' @@ -106,18 +121,19 @@ are required. better if you use it with the WindowMaker window manager. Get WindowMaker from . -`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 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 + 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 . As of release @@ -250,36 +266,29 @@ tcsh, try 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 =============== @@ -298,20 +307,24 @@ app: * 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'). @@ -335,46 +348,50 @@ with reporting problems and fixes. Platforms marked _Obsolete_ are 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 . + +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 . +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, @@ -393,16 +410,23 @@ Darwin/ix86 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 file in the gnustep-make/Documentation directory for complete instructions. @@ -410,22 +434,35 @@ Currently tested on Darwin 7.x 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 ) to load bundles (not needed for 7.x). -`Special Instructions' +SPECIAL INSTRUCTIONS Read the file in the gnustep-make/Documentation directory for complete instructions. @@ -435,95 +472,97 @@ Currently tested on Darwin 6.x, 7.x 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 @@ -557,13 +596,13 @@ Compiles "out of the box" on FreeBSD 3.4. 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: @@ -576,10 +615,10 @@ FreeBSD 2.x (_Obsolete,Unstable_) 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: @@ -587,10 +626,10 @@ Irix 6.5/MIPS 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 @@ -600,27 +639,46 @@ Irix 6.5/MIPS 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 + 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. @@ -629,52 +687,75 @@ MkLinux/PowerPC 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 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 OpenBSD 3.x (_Needs Testing_) ============================== -`Recommended compiler' +RECOMMENDED COMPILER Unknown -`Extra libs needed' +EXTRA LIBS NEEDED Unknown -`Special Instructions' +SPECIAL INSTRUCTIONS Try reading the which might work the same on OpenBSD. @@ -683,13 +764,13 @@ OSF Alpha (_Unstable_) 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 @@ -702,40 +783,55 @@ Information is for Version 3.2C 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 @@ -743,15 +839,15 @@ 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. @@ -770,13 +866,13 @@ Or use the gnustep-objc package. Also make sure THREADS is set to 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, @@ -792,13 +888,13 @@ Suse 6.x/Intel 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 @@ -808,18 +904,18 @@ GNUstep has been tested on version 6.2-6.4 of Suse 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. @@ -828,22 +924,22 @@ Suse 7.x/PPC 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 @@ -929,13 +1025,13 @@ Unixware-2.1.3/Intel 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 () for shared libs. It's a good idea to remove the libobjc.a that comes with gcc @@ -945,7 +1041,7 @@ Windows with CYGWIN (_Needs Testing_) 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 for information on compiling. @@ -954,13 +1050,13 @@ Windows with CYGWIN (_Needs Testing_) Windows with MinGW ================== -`Recommended compiler' +RECOMMENDED COMPILER See below. -`Extra libs needed' +EXTRA LIBS NEEDED See below. -`Special Instructions' +SPECIAL INSTRUCTIONS See the 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. @@ -969,13 +1065,13 @@ Windows with MinGW 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 *********************************** diff --git a/gnustep-make/GNUstep-reset.sh b/gnustep-make/GNUstep-reset.sh index 83739487..b24b24d2 100644 --- a/gnustep-make/GNUstep-reset.sh +++ b/gnustep-make/GNUstep-reset.sh @@ -18,7 +18,7 @@ # 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 @@ -29,11 +29,12 @@ # 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 @@ -51,9 +52,9 @@ function reset_path # 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; @@ -80,12 +81,12 @@ function reset_path 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. diff --git a/gnustep-make/GNUstep.conf b/gnustep-make/GNUstep.conf new file mode 100644 index 00000000..47bd41e9 --- /dev/null +++ b/gnustep-make/GNUstep.conf @@ -0,0 +1,29 @@ +# +# 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 + diff --git a/gnustep-make/GNUstep.csh.in b/gnustep-make/GNUstep.csh.in index 138549a3..e5915d7c 100755 --- a/gnustep-make/GNUstep.csh.in +++ b/gnustep-make/GNUstep.csh.in @@ -21,7 +21,7 @@ # 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. # # diff --git a/gnustep-make/GNUstep.sh.in b/gnustep-make/GNUstep.sh.in index 640f7ed2..0fd0d4d6 100755 --- a/gnustep-make/GNUstep.sh.in +++ b/gnustep-make/GNUstep.sh.in @@ -21,7 +21,7 @@ # 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 @@ -305,4 +305,4 @@ fi if [ -n "$GS_ZSH_NEED_TO_RESTORE_SET" ]; then set +y fi -# EOF \ No newline at end of file +# EOF diff --git a/gnustep-make/Instance/Documentation/autogsdoc.make b/gnustep-make/Instance/Documentation/autogsdoc.make index dff1b66f..7c0fe034 100644 --- a/gnustep-make/Instance/Documentation/autogsdoc.make +++ b/gnustep-make/Instance/Documentation/autogsdoc.make @@ -18,7 +18,7 @@ # 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) diff --git a/gnustep-make/Instance/Documentation/gsdoc.make b/gnustep-make/Instance/Documentation/gsdoc.make index 578a5f0f..49c4e8d3 100644 --- a/gnustep-make/Instance/Documentation/gsdoc.make +++ b/gnustep-make/Instance/Documentation/gsdoc.make @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/Instance/Documentation/install_files.make b/gnustep-make/Instance/Documentation/install_files.make index 489bc5d7..bda12b07 100644 --- a/gnustep-make/Instance/Documentation/install_files.make +++ b/gnustep-make/Instance/Documentation/install_files.make @@ -18,7 +18,7 @@ # 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 \ diff --git a/gnustep-make/Instance/Documentation/javadoc.make b/gnustep-make/Instance/Documentation/javadoc.make index 25fa4a9b..8aa288f4 100644 --- a/gnustep-make/Instance/Documentation/javadoc.make +++ b/gnustep-make/Instance/Documentation/javadoc.make @@ -18,7 +18,7 @@ # 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) diff --git a/gnustep-make/Instance/Documentation/latex.make b/gnustep-make/Instance/Documentation/latex.make index ba8bedbd..74d57f05 100644 --- a/gnustep-make/Instance/Documentation/latex.make +++ b/gnustep-make/Instance/Documentation/latex.make @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/Instance/Documentation/texi.make b/gnustep-make/Instance/Documentation/texi.make index a9c4dc44..b498d44f 100644 --- a/gnustep-make/Instance/Documentation/texi.make +++ b/gnustep-make/Instance/Documentation/texi.make @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/Instance/Shared/bundle.make b/gnustep-make/Instance/Shared/bundle.make index d87074ca..ebe59b06 100644 --- a/gnustep-make/Instance/Shared/bundle.make +++ b/gnustep-make/Instance/Shared/bundle.make @@ -18,7 +18,7 @@ # 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: @@ -195,14 +195,17 @@ $(FULL_RESOURCE_DIRS): # 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; \ @@ -226,8 +229,8 @@ ifneq ($(LOCALIZED_RESOURCE_FILES),) $(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; \ @@ -242,7 +245,7 @@ ifneq ($(_SUBPROJECTS),) 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; \ @@ -300,7 +303,7 @@ shared-instance-bundle-all-webresources: \ $(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"; \ @@ -337,7 +340,7 @@ ifneq ($(WEBSERVER_LOCALIZED_RESOURCE_FILES),) 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"; \ diff --git a/gnustep-make/Instance/Shared/headers.make b/gnustep-make/Instance/Shared/headers.make index 9a619d50..b5bda5fc 100644 --- a/gnustep-make/Instance/Shared/headers.make +++ b/gnustep-make/Instance/Shared/headers.make @@ -17,7 +17,7 @@ # 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: @@ -45,14 +45,14 @@ HEADER_FILES = $($(GNUSTEP_INSTANCE)_HEADER_FILES) 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),) @@ -66,6 +66,14 @@ ifeq ($(HEADER_FILES_INSTALL_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. # @@ -81,7 +89,7 @@ shared-instance-headers-install: $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR) $(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) diff --git a/gnustep-make/Instance/Shared/java.make b/gnustep-make/Instance/Shared/java.make index 8e4c1706..d2aa1f88 100644 --- a/gnustep-make/Instance/Shared/java.make +++ b/gnustep-make/Instance/Shared/java.make @@ -18,7 +18,7 @@ # 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: diff --git a/gnustep-make/Instance/Shared/stamp-string.make b/gnustep-make/Instance/Shared/stamp-string.make index 0ccee7ac..1090b96b 100644 --- a/gnustep-make/Instance/Shared/stamp-string.make +++ b/gnustep-make/Instance/Shared/stamp-string.make @@ -17,7 +17,7 @@ # 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. diff --git a/gnustep-make/Instance/Shared/strings.make b/gnustep-make/Instance/Shared/strings.make index 2f1f46f5..c6eae2d5 100644 --- a/gnustep-make/Instance/Shared/strings.make +++ b/gnustep-make/Instance/Shared/strings.make @@ -17,7 +17,7 @@ # 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: diff --git a/gnustep-make/Instance/application.make b/gnustep-make/Instance/application.make index 4965301b..6970594c 100644 --- a/gnustep-make/Instance/application.make +++ b/gnustep-make/Instance/application.make @@ -19,7 +19,7 @@ # 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 @@ -58,13 +58,17 @@ ifeq ($(APP_INSTALL_DIR),) 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)) @@ -101,6 +105,21 @@ APP_FILE = $(GNUSTEP_BUILD_DIR)/$(APP_FILE_NAME) # 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) diff --git a/gnustep-make/Instance/bundle.make b/gnustep-make/Instance/bundle.make index 3c8db393..766e3bd5 100644 --- a/gnustep-make/Instance/bundle.make +++ b/gnustep-make/Instance/bundle.make @@ -19,7 +19,7 @@ # 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 @@ -60,7 +60,7 @@ ifneq ($(OBJ_FILES_TO_LINK),) # libraries ...) # On windows, this is unfortunately required. -ifeq ($(WITH_DLL), yes) +ifeq ($(BUILD_DLL), yes) LINK_BUNDLE_AGAINST_ALL_LIBS = yes endif @@ -84,7 +84,7 @@ ALL_BUNDLE_LIBS = \ 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 @@ -147,15 +147,15 @@ include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make 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 @@ -164,24 +164,25 @@ endif $(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)) @@ -192,7 +193,7 @@ endif 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))))) @@ -244,7 +245,7 @@ $(BUNDLE_DIR)/Contents/Info.plist: $(BUNDLE_DIR)/Contents \ echo "";\ echo " ";\ echo " CFBundleExecutable";\ - echo " $(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)${BUNDLE_OBJ_EXT}";\ + echo " $(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)$(BUNDLE_OBJ_EXT)";\ echo " CFBundleInfoDictionaryVersion";\ echo " 6.0";\ echo " CFBundlePackageType";\ @@ -278,7 +279,7 @@ ifneq ($(OBJ_FILES_TO_LINK),) $(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) diff --git a/gnustep-make/Instance/clibrary.make b/gnustep-make/Instance/clibrary.make index a98fa401..d8c08b31 100644 --- a/gnustep-make/Instance/clibrary.make +++ b/gnustep-make/Instance/clibrary.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/Instance/ctool.make b/gnustep-make/Instance/ctool.make index 71d2dfb0..56c5930f 100644 --- a/gnustep-make/Instance/ctool.make +++ b/gnustep-make/Instance/ctool.make @@ -18,7 +18,7 @@ # 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. diff --git a/gnustep-make/Instance/documentation.make b/gnustep-make/Instance/documentation.make index 8161a150..78860ea7 100644 --- a/gnustep-make/Instance/documentation.make +++ b/gnustep-make/Instance/documentation.make @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/Instance/framework.make b/gnustep-make/Instance/framework.make index cb6eb753..3132c2c3 100644 --- a/gnustep-make/Instance/framework.make +++ b/gnustep-make/Instance/framework.make @@ -18,7 +18,7 @@ # 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 @@ -91,6 +91,26 @@ ifeq ($(MAKE_CURRENT_VERSION),) 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) @@ -108,24 +128,38 @@ DYLIB_INSTALL_NAME_BASE = $($(GNUSTEP_INSTANCE)_DYLIB_INSTALL_NAME_BASE) 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) \ @@ -135,9 +169,30 @@ INTERNAL_LIBRARIES_DEPEND_UPON = \ 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) @@ -158,15 +213,19 @@ endif 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) @@ -181,26 +240,40 @@ else 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) @@ -241,17 +314,16 @@ include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make 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 @@ -260,29 +332,29 @@ endif # 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) @@ -294,7 +366,8 @@ $(DERIVED_SOURCES_DIR): $(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 \ @@ -385,15 +458,16 @@ $(DUMMY_FRAMEWORK_OBJ_FILE): $(DUMMY_FRAMEWORK_FILE) $(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 @@ -404,43 +478,43 @@ build-framework:: $(FRAMEWORK_FILE) \ $(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 --> +# +# 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),) @@ -452,7 +526,7 @@ MAIN_MODEL_FILE = $(strip $(subst .gmodel,,$(subst .gorm,,$(subst .nib,,$($(GNUS # 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) @@ -460,7 +534,7 @@ $(FRAMEWORK_VERSION_DIR)/Resources/Info.plist: $(FRAMEWORK_VERSION_DIR)/Resource # 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 = "; \ @@ -471,7 +545,7 @@ $(FRAMEWORK_VERSION_DIR)/Resources/Info-gnustep.plist: $(FRAMEWORK_VERSION_DIR)/ plmerge $@ $(GNUSTEP_INSTANCE)Info.plist; \ fi$(END_ECHO) -ifneq ($(WITH_DLL),yes) +ifneq ($(BUILD_DLL),yes) ifeq ($(FOUNDATION_LIB),gnu) @@ -487,20 +561,18 @@ ifeq ($(strip),yes) $(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); \ @@ -537,8 +609,12 @@ internal-framework-install_:: $(FRAMEWORK_INSTALL_DIR) \ $(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 @@ -546,46 +622,48 @@ ifeq ($(strip),yes) $(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 \ @@ -595,16 +673,30 @@ internal-framework-uninstall_:: 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 # diff --git a/gnustep-make/Instance/gswapp.make b/gnustep-make/Instance/gswapp.make index 7fcc7c5d..76074abb 100644 --- a/gnustep-make/Instance/gswapp.make +++ b/gnustep-make/Instance/gswapp.make @@ -21,7 +21,7 @@ # 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 @@ -73,14 +73,18 @@ ifeq ($(GSWAPP_INSTALL_DIR),) 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)) diff --git a/gnustep-make/Instance/gswbundle.make b/gnustep-make/Instance/gswbundle.make index 2474a54d..d36edf58 100644 --- a/gnustep-make/Instance/gswbundle.make +++ b/gnustep-make/Instance/gswbundle.make @@ -19,7 +19,7 @@ # 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 @@ -110,9 +110,9 @@ ifeq ($(strip $(LANGUAGES)),) 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) @@ -120,12 +120,12 @@ $(GSWBUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR): $(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) @@ -134,7 +134,7 @@ $(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; \ @@ -158,8 +158,8 @@ ifneq ($(strip $(COMPONENTS)),) 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/; \ @@ -168,7 +168,7 @@ ifneq ($(strip $(RESOURCE_FILES)),) 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; \ @@ -188,10 +188,10 @@ ifneq ($(strip $(LOCALIZED_RESOURCE_FILES)),) 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..."; \ @@ -201,7 +201,7 @@ ifneq ($(strip $(WEBSERVER_RESOURCE_FILES)),) 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..."; \ @@ -260,7 +260,7 @@ ifeq ($(strip),yes) $(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 diff --git a/gnustep-make/Instance/java-tool.make b/gnustep-make/Instance/java-tool.make index fb8013dc..80e76508 100644 --- a/gnustep-make/Instance/java-tool.make +++ b/gnustep-make/Instance/java-tool.make @@ -17,7 +17,7 @@ # 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. diff --git a/gnustep-make/Instance/java.make b/gnustep-make/Instance/java.make index 6d632629..c1da97bb 100644 --- a/gnustep-make/Instance/java.make +++ b/gnustep-make/Instance/java.make @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/Instance/library.make b/gnustep-make/Instance/library.make index b330df06..231d9611 100644 --- a/gnustep-make/Instance/library.make +++ b/gnustep-make/Instance/library.make @@ -19,7 +19,7 @@ # 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 @@ -37,7 +37,6 @@ include $(GNUSTEP_MAKEFILES)/Instance/Shared/headers.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 # @@ -98,8 +97,26 @@ endif # 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 = \ @@ -114,7 +131,6 @@ ifeq ($(shared), yes) 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 @@ -174,22 +190,50 @@ SONAME_LIBRARY_FILE = $(LIBRARY_FILE).$(INTERFACE_VERSION) 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) @@ -214,7 +258,7 @@ LIB_LINK_INSTALL_DIR = $(FINAL_LIBRARY_INSTALL_DIR) # 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) @@ -228,13 +272,6 @@ $(DLL_DEF_INP): $(DLL_DEF_FILES) 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) \ @@ -265,7 +302,7 @@ $(GNUSTEP_OBJ_DIR)/$(DLL_NAME): $(OBJ_FILES_TO_LINK) \ $(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) @@ -294,7 +331,7 @@ $(FINAL_LIBRARY_INSTALL_DIR): $(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 \ @@ -315,9 +352,17 @@ internal-install-lib:: $(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) \ @@ -329,6 +374,12 @@ internal-library-uninstall_:: shared-instance-headers-uninstall $(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 # diff --git a/gnustep-make/Instance/objc.make b/gnustep-make/Instance/objc.make index f62cd661..6a0b6c37 100644 --- a/gnustep-make/Instance/objc.make +++ b/gnustep-make/Instance/objc.make @@ -18,7 +18,7 @@ # 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. diff --git a/gnustep-make/Instance/palette.make b/gnustep-make/Instance/palette.make index a682b980..82f63988 100644 --- a/gnustep-make/Instance/palette.make +++ b/gnustep-make/Instance/palette.make @@ -20,7 +20,7 @@ # 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 @@ -56,7 +56,7 @@ endif # 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 @@ -80,7 +80,7 @@ ALL_PALETTE_LIBS = \ 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 @@ -113,7 +113,8 @@ internal-palette-all_:: $(GNUSTEP_OBJ_DIR) \ $(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) \ @@ -122,7 +123,7 @@ $(PALETTE_FILE) : $(OBJ_FILES_TO_LINK) $(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) \ @@ -130,7 +131,7 @@ $(PALETTE_FILE) : $(OBJ_FILES_TO_LINK) $(OBJ_FILES_TO_LINK) \ $(ALL_PALETTE_LIBS)$(END_ECHO) -endif # WITH_DLL +endif # OLD_DLL_SUPPORT PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS)) @@ -146,7 +147,7 @@ endif $(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; \ diff --git a/gnustep-make/Instance/resource-set.make b/gnustep-make/Instance/resource-set.make index 81d45d2c..8fba259d 100644 --- a/gnustep-make/Instance/resource-set.make +++ b/gnustep-make/Instance/resource-set.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/Instance/rules.make b/gnustep-make/Instance/rules.make index 81779b2d..4eb860c3 100644 --- a/gnustep-make/Instance/rules.make +++ b/gnustep-make/Instance/rules.make @@ -19,7 +19,7 @@ # 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 @@ -168,6 +168,9 @@ endif # 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: @@ -215,6 +218,13 @@ CC_OBJS = $(patsubst %.cc,%$(OEXT),\ $(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 @@ -224,7 +234,7 @@ OBJ_FILES = $($(GNUSTEP_INSTANCE)_OBJ_FILES) # 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)),) diff --git a/gnustep-make/Instance/service.make b/gnustep-make/Instance/service.make index 22ad9121..3ae610e2 100644 --- a/gnustep-make/Instance/service.make +++ b/gnustep-make/Instance/service.make @@ -19,7 +19,7 @@ # 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 @@ -39,14 +39,19 @@ endif 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)) diff --git a/gnustep-make/Instance/subproject.make b/gnustep-make/Instance/subproject.make index 22e0f9a0..0e8abc66 100644 --- a/gnustep-make/Instance/subproject.make +++ b/gnustep-make/Instance/subproject.make @@ -18,7 +18,7 @@ # 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 @@ -83,7 +83,7 @@ internal-subproject-build-headers:: $(OWNING_PROJECT_HEADER_FILES) # 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 \ diff --git a/gnustep-make/Instance/test-application.make b/gnustep-make/Instance/test-application.make index 5e87e34a..51da7444 100644 --- a/gnustep-make/Instance/test-application.make +++ b/gnustep-make/Instance/test-application.make @@ -15,7 +15,7 @@ # 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 diff --git a/gnustep-make/Instance/test-library.make b/gnustep-make/Instance/test-library.make index 84b53f27..0468a4e7 100644 --- a/gnustep-make/Instance/test-library.make +++ b/gnustep-make/Instance/test-library.make @@ -1,12 +1,11 @@ # # 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 -# Author: Ovidiu Predescu +# Author: Adam Fedor # # This file is part of the GNUstep Makefile Package. # @@ -18,126 +17,14 @@ # 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_ diff --git a/gnustep-make/Instance/test-tool.make b/gnustep-make/Instance/test-tool.make index ca0f75f5..30c04191 100644 --- a/gnustep-make/Instance/test-tool.make +++ b/gnustep-make/Instance/test-tool.make @@ -15,7 +15,7 @@ # 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 diff --git a/gnustep-make/Instance/tool.make b/gnustep-make/Instance/tool.make index cbcfb4e0..622fa651 100644 --- a/gnustep-make/Instance/tool.make +++ b/gnustep-make/Instance/tool.make @@ -18,7 +18,7 @@ # 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. @@ -38,7 +38,7 @@ endif # 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),) @@ -52,12 +52,16 @@ ifeq ($(FINAL_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)) diff --git a/gnustep-make/Master/aggregate.make b/gnustep-make/Master/aggregate.make index 6851f6a4..c3376aa1 100644 --- a/gnustep-make/Master/aggregate.make +++ b/gnustep-make/Master/aggregate.make @@ -19,7 +19,7 @@ # 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 diff --git a/gnustep-make/Master/application.make b/gnustep-make/Master/application.make index bc333591..6c7c1a8c 100644 --- a/gnustep-make/Master/application.make +++ b/gnustep-make/Master/application.make @@ -19,7 +19,7 @@ # 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 diff --git a/gnustep-make/Master/bundle.make b/gnustep-make/Master/bundle.make index 8c4f7d9f..d75bb2f5 100644 --- a/gnustep-make/Master/bundle.make +++ b/gnustep-make/Master/bundle.make @@ -19,7 +19,7 @@ # 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 diff --git a/gnustep-make/Master/clibrary.make b/gnustep-make/Master/clibrary.make index 82fe119b..aaf04a5f 100644 --- a/gnustep-make/Master/clibrary.make +++ b/gnustep-make/Master/clibrary.make @@ -19,7 +19,7 @@ # 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 diff --git a/gnustep-make/Master/ctool.make b/gnustep-make/Master/ctool.make index 7dfbdc65..392ba4d3 100644 --- a/gnustep-make/Master/ctool.make +++ b/gnustep-make/Master/ctool.make @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/Master/documentation.make b/gnustep-make/Master/documentation.make index 3aa5a6e8..079e19cf 100644 --- a/gnustep-make/Master/documentation.make +++ b/gnustep-make/Master/documentation.make @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/Master/framework.make b/gnustep-make/Master/framework.make index 2e8f1b90..43613aa4 100644 --- a/gnustep-make/Master/framework.make +++ b/gnustep-make/Master/framework.make @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/Master/gswapp.make b/gnustep-make/Master/gswapp.make index f0782745..e5b10b02 100644 --- a/gnustep-make/Master/gswapp.make +++ b/gnustep-make/Master/gswapp.make @@ -20,7 +20,7 @@ # 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 diff --git a/gnustep-make/Master/gswbundle.make b/gnustep-make/Master/gswbundle.make index bb2c33a2..96fee40b 100644 --- a/gnustep-make/Master/gswbundle.make +++ b/gnustep-make/Master/gswbundle.make @@ -19,7 +19,7 @@ # 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 diff --git a/gnustep-make/Master/java-tool.make b/gnustep-make/Master/java-tool.make index 4f36312a..6ea0ad4d 100644 --- a/gnustep-make/Master/java-tool.make +++ b/gnustep-make/Master/java-tool.make @@ -17,7 +17,7 @@ # 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. diff --git a/gnustep-make/Master/java.make b/gnustep-make/Master/java.make index 08129bb6..bea97b0d 100644 --- a/gnustep-make/Master/java.make +++ b/gnustep-make/Master/java.make @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/Master/library.make b/gnustep-make/Master/library.make index 6dac2412..4cd4e67a 100644 --- a/gnustep-make/Master/library.make +++ b/gnustep-make/Master/library.make @@ -19,7 +19,7 @@ # 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 diff --git a/gnustep-make/Master/objc.make b/gnustep-make/Master/objc.make index e81640ef..5ea5d534 100644 --- a/gnustep-make/Master/objc.make +++ b/gnustep-make/Master/objc.make @@ -18,7 +18,7 @@ # 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)) diff --git a/gnustep-make/Master/palette.make b/gnustep-make/Master/palette.make index 4cb4fd2e..d729f95a 100644 --- a/gnustep-make/Master/palette.make +++ b/gnustep-make/Master/palette.make @@ -20,7 +20,7 @@ # 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 diff --git a/gnustep-make/Master/resource-set.make b/gnustep-make/Master/resource-set.make index a64ce356..4fddd117 100644 --- a/gnustep-make/Master/resource-set.make +++ b/gnustep-make/Master/resource-set.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/Master/rpm.make b/gnustep-make/Master/rpm.make index 57721c63..e6738bc1 100644 --- a/gnustep-make/Master/rpm.make +++ b/gnustep-make/Master/rpm.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/Master/rules.make b/gnustep-make/Master/rules.make index 97e036c1..9e1d382d 100644 --- a/gnustep-make/Master/rules.make +++ b/gnustep-make/Master/rules.make @@ -19,7 +19,7 @@ # 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 - @@ -295,9 +295,13 @@ if [ "$($(basename $(basename $*))_SUBPROJECTS)" != "" ]; then \ 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 \ @@ -360,9 +364,13 @@ if [ "$($(basename $(basename $*))_SUBPROJECTS)" != "" ]; then \ 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 \ diff --git a/gnustep-make/Master/service.make b/gnustep-make/Master/service.make index ed558455..abe3eb89 100644 --- a/gnustep-make/Master/service.make +++ b/gnustep-make/Master/service.make @@ -19,7 +19,7 @@ # 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 diff --git a/gnustep-make/Master/source-distribution.make b/gnustep-make/Master/source-distribution.make index 6c35f625..ea8aaa33 100644 --- a/gnustep-make/Master/source-distribution.make +++ b/gnustep-make/Master/source-distribution.make @@ -18,7 +18,7 @@ # 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: @@ -131,15 +131,16 @@ VERTAG = $(subst .,_,$(PACKAGE_VERSION)) 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)~"; \ @@ -153,7 +154,7 @@ dist: distclean | $(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"; \ diff --git a/gnustep-make/Master/subproject.make b/gnustep-make/Master/subproject.make index 62292064..0e10886e 100644 --- a/gnustep-make/Master/subproject.make +++ b/gnustep-make/Master/subproject.make @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/Master/test-application.make b/gnustep-make/Master/test-application.make index 048f8a33..86423436 100644 --- a/gnustep-make/Master/test-application.make +++ b/gnustep-make/Master/test-application.make @@ -16,7 +16,7 @@ # 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)) diff --git a/gnustep-make/Master/test-library.make b/gnustep-make/Master/test-library.make index a80c8ff4..ccab8b18 100644 --- a/gnustep-make/Master/test-library.make +++ b/gnustep-make/Master/test-library.make @@ -18,7 +18,7 @@ # 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)) diff --git a/gnustep-make/Master/test-tool.make b/gnustep-make/Master/test-tool.make index f3994207..a6b1418a 100644 --- a/gnustep-make/Master/test-tool.make +++ b/gnustep-make/Master/test-tool.make @@ -16,7 +16,7 @@ # 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)) diff --git a/gnustep-make/Master/tool.make b/gnustep-make/Master/tool.make index a9ea6d80..1deda758 100644 --- a/gnustep-make/Master/tool.make +++ b/gnustep-make/Master/tool.make @@ -18,7 +18,7 @@ # 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)) diff --git a/gnustep-make/NEWS b/gnustep-make/NEWS index 4adc2f0b..5a975a41 100644 --- a/gnustep-make/NEWS +++ b/gnustep-make/NEWS @@ -1,7 +1,30 @@ 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' =========================== diff --git a/gnustep-make/README b/gnustep-make/README index 4d8037d9..32f37c45 100644 --- a/gnustep-make/README +++ b/gnustep-make/README @@ -39,18 +39,13 @@ GNU General Public License. The GNU GPL is a free software license, 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 - and Ovidiu Predescu -. +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 . diff --git a/gnustep-make/Version b/gnustep-make/Version index b977a015..6fd836d8 100644 --- a/gnustep-make/Version +++ b/gnustep-make/Version @@ -3,7 +3,7 @@ # 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} diff --git a/gnustep-make/aggregate.make b/gnustep-make/aggregate.make index 76a71e44..a9c349df 100644 --- a/gnustep-make/aggregate.make +++ b/gnustep-make/aggregate.make @@ -17,7 +17,7 @@ # 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),) diff --git a/gnustep-make/application.make b/gnustep-make/application.make index a033dddc..3be9953a 100644 --- a/gnustep-make/application.make +++ b/gnustep-make/application.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/bundle.make b/gnustep-make/bundle.make index 03ffc02a..79f7ea17 100644 --- a/gnustep-make/bundle.make +++ b/gnustep-make/bundle.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/clean_cpu.sh b/gnustep-make/clean_cpu.sh index 8256d3d8..354f27e9 100755 --- a/gnustep-make/clean_cpu.sh +++ b/gnustep-make/clean_cpu.sh @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/clean_os.sh b/gnustep-make/clean_os.sh index a43dbfc0..7f76b76d 100755 --- a/gnustep-make/clean_os.sh +++ b/gnustep-make/clean_os.sh @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/clean_vendor.sh b/gnustep-make/clean_vendor.sh index af5e4151..e61e8174 100755 --- a/gnustep-make/clean_vendor.sh +++ b/gnustep-make/clean_vendor.sh @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/clibrary.make b/gnustep-make/clibrary.make index 682b876c..187a17a3 100644 --- a/gnustep-make/clibrary.make +++ b/gnustep-make/clibrary.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/common.make b/gnustep-make/common.make index bebff12a..4ba8a314 100644 --- a/gnustep-make/common.make +++ b/gnustep-make/common.make @@ -19,7 +19,7 @@ # 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 diff --git a/gnustep-make/config.guess b/gnustep-make/config.guess index 182c2a1a..f9d18d48 100755 --- a/gnustep-make/config.guess +++ b/gnustep-make/config.guess @@ -17,7 +17,7 @@ timestamp='2002-02-12' # # 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 diff --git a/gnustep-make/config.make.in b/gnustep-make/config.make.in index e77c1de5..6663c0f5 100644 --- a/gnustep-make/config.make.in +++ b/gnustep-make/config.make.in @@ -19,7 +19,7 @@ # 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 @@ -48,12 +48,32 @@ LN_S = @LN_S@ # 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@ diff --git a/gnustep-make/config.site b/gnustep-make/config.site index 86099045..4583db62 100644 --- a/gnustep-make/config.site +++ b/gnustep-make/config.site @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/config.sub b/gnustep-make/config.sub index d1f7cb9f..427d6c92 100755 --- a/gnustep-make/config.sub +++ b/gnustep-make/config.sub @@ -21,8 +21,8 @@ timestamp='2002-02-12' # # 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 diff --git a/gnustep-make/configure b/gnustep-make/configure index c0989ad2..0c66afb3 100755 --- a/gnustep-make/configure +++ b/gnustep-make/configure @@ -3436,7 +3436,7 @@ if test "${gs_cv_objc_libdir+set}" = set; then 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 diff --git a/gnustep-make/configure.ac b/gnustep-make/configure.ac index 27aedbeb..bec3b2f1 100644 --- a/gnustep-make/configure.ac +++ b/gnustep-make/configure.ac @@ -18,7 +18,7 @@ # 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]) @@ -376,7 +376,7 @@ AC_CACHE_VAL(gs_cv_objc_libdir, [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 diff --git a/gnustep-make/cpu.sh b/gnustep-make/cpu.sh index 24fd04d8..d1dc9db6 100755 --- a/gnustep-make/cpu.sh +++ b/gnustep-make/cpu.sh @@ -18,6 +18,6 @@ # 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/' diff --git a/gnustep-make/create_domain_dir_tree.sh b/gnustep-make/create_domain_dir_tree.sh index 758e3031..8528e0f5 100755 --- a/gnustep-make/create_domain_dir_tree.sh +++ b/gnustep-make/create_domain_dir_tree.sh @@ -16,7 +16,7 @@ # 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. diff --git a/gnustep-make/ctool.make b/gnustep-make/ctool.make index da577c4f..f2515931 100644 --- a/gnustep-make/ctool.make +++ b/gnustep-make/ctool.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/debugapp.in b/gnustep-make/debugapp.in index 9b777560..39b0ea99 100644 --- a/gnustep-make/debugapp.in +++ b/gnustep-make/debugapp.in @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/documentation.make b/gnustep-make/documentation.make index b2fb7eea..ddd86db9 100644 --- a/gnustep-make/documentation.make +++ b/gnustep-make/documentation.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/executable.template.in b/gnustep-make/executable.template.in index 68303f1e..160aaadf 100755 --- a/gnustep-make/executable.template.in +++ b/gnustep-make/executable.template.in @@ -20,7 +20,7 @@ # 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. diff --git a/gnustep-make/fixpath.sh.in b/gnustep-make/fixpath.sh.in index c164e01b..60bf3f62 100755 --- a/gnustep-make/fixpath.sh.in +++ b/gnustep-make/fixpath.sh.in @@ -19,7 +19,7 @@ # 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. # # diff --git a/gnustep-make/framework.make b/gnustep-make/framework.make index b6fce4a5..fb3a2ab4 100644 --- a/gnustep-make/framework.make +++ b/gnustep-make/framework.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/gswapp.make b/gnustep-make/gswapp.make index aeab6aa3..db7257d6 100644 --- a/gnustep-make/gswapp.make +++ b/gnustep-make/gswapp.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/gswbundle.make b/gnustep-make/gswbundle.make index 267fb2fc..984e3014 100644 --- a/gnustep-make/gswbundle.make +++ b/gnustep-make/gswbundle.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/java-executable.template b/gnustep-make/java-executable.template index 1bf1bffc..ef3915a4 100644 --- a/gnustep-make/java-executable.template +++ b/gnustep-make/java-executable.template @@ -15,7 +15,7 @@ # 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 diff --git a/gnustep-make/java-tool.make b/gnustep-make/java-tool.make index a28d9e03..863d9ab5 100644 --- a/gnustep-make/java-tool.make +++ b/gnustep-make/java-tool.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/java.make b/gnustep-make/java.make index ba951569..777f3677 100644 --- a/gnustep-make/java.make +++ b/gnustep-make/java.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/jni.make b/gnustep-make/jni.make index 3a108844..95fca88b 100644 --- a/gnustep-make/jni.make +++ b/gnustep-make/jni.make @@ -17,7 +17,7 @@ # 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. diff --git a/gnustep-make/ld_lib_path.csh b/gnustep-make/ld_lib_path.csh index 21870752..3e4ae6b1 100755 --- a/gnustep-make/ld_lib_path.csh +++ b/gnustep-make/ld_lib_path.csh @@ -19,7 +19,7 @@ # 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 @@ -85,25 +85,25 @@ switch ( "${host_os}" ) 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 diff --git a/gnustep-make/ld_lib_path.sh b/gnustep-make/ld_lib_path.sh index 1b9b626a..cb6871da 100755 --- a/gnustep-make/ld_lib_path.sh +++ b/gnustep-make/ld_lib_path.sh @@ -21,7 +21,7 @@ # 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 @@ -133,25 +133,25 @@ case "$host_os" in 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" diff --git a/gnustep-make/library-combo.make b/gnustep-make/library-combo.make index 4459b698..f1a2824e 100644 --- a/gnustep-make/library-combo.make +++ b/gnustep-make/library-combo.make @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/library.make b/gnustep-make/library.make index b193731c..045a625f 100644 --- a/gnustep-make/library.make +++ b/gnustep-make/library.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/messages.make b/gnustep-make/messages.make index 9bc09e79..39b11269 100644 --- a/gnustep-make/messages.make +++ b/gnustep-make/messages.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/move_obsolete_paths.sh b/gnustep-make/move_obsolete_paths.sh index 2c2af93b..5c67102c 100755 --- a/gnustep-make/move_obsolete_paths.sh +++ b/gnustep-make/move_obsolete_paths.sh @@ -16,7 +16,7 @@ # 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 diff --git a/gnustep-make/names.make b/gnustep-make/names.make index 9eb351a9..71513c3d 100644 --- a/gnustep-make/names.make +++ b/gnustep-make/names.make @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/native-library.make b/gnustep-make/native-library.make index 06deb38d..a7e42f25 100644 --- a/gnustep-make/native-library.make +++ b/gnustep-make/native-library.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/objc.make b/gnustep-make/objc.make index 835c1e67..ba6fb5f9 100644 --- a/gnustep-make/objc.make +++ b/gnustep-make/objc.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/openapp.in b/gnustep-make/openapp.in index aa68403f..6b6f2948 100755 --- a/gnustep-make/openapp.in +++ b/gnustep-make/openapp.in @@ -19,7 +19,7 @@ # 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 diff --git a/gnustep-make/opentool.in b/gnustep-make/opentool.in index 5b7f9d33..747ce0c8 100644 --- a/gnustep-make/opentool.in +++ b/gnustep-make/opentool.in @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/os.sh b/gnustep-make/os.sh index 7f68e7fa..00eade90 100755 --- a/gnustep-make/os.sh +++ b/gnustep-make/os.sh @@ -18,6 +18,6 @@ # 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/' diff --git a/gnustep-make/palette.make b/gnustep-make/palette.make index 5bf6086a..03eaa66b 100644 --- a/gnustep-make/palette.make +++ b/gnustep-make/palette.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/relative_path.sh b/gnustep-make/relative_path.sh index 2268a9fc..072654d6 100755 --- a/gnustep-make/relative_path.sh +++ b/gnustep-make/relative_path.sh @@ -16,7 +16,7 @@ # 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 diff --git a/gnustep-make/resource-set.make b/gnustep-make/resource-set.make index 9a1ffa00..dce7d2f8 100644 --- a/gnustep-make/resource-set.make +++ b/gnustep-make/resource-set.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/rules.make b/gnustep-make/rules.make index 332e369c..76b425e5 100644 --- a/gnustep-make/rules.make +++ b/gnustep-make/rules.make @@ -19,7 +19,7 @@ # 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 @@ -307,7 +307,13 @@ ALL_CPLISTFLAGS += $(ADDITIONAL_CPLISTFLAGS) $(AUXILIARY_CPLISTFLAGS) # 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 @@ -474,6 +480,20 @@ $(GNUSTEP_OBJ_DIR)/%${OEXT} : %.cp $(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 @@ -503,7 +523,7 @@ endif $(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 diff --git a/gnustep-make/service.make b/gnustep-make/service.make index 0db1471f..1986fa51 100644 --- a/gnustep-make/service.make +++ b/gnustep-make/service.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/setlocaltz.sh b/gnustep-make/setlocaltz.sh index 0f70f1af..2c2870b1 100755 --- a/gnustep-make/setlocaltz.sh +++ b/gnustep-make/setlocaltz.sh @@ -21,7 +21,7 @@ # 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" diff --git a/gnustep-make/strip_makefiles.sh b/gnustep-make/strip_makefiles.sh index 2cbbbd22..1ba8a10e 100755 --- a/gnustep-make/strip_makefiles.sh +++ b/gnustep-make/strip_makefiles.sh @@ -16,7 +16,7 @@ # 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. diff --git a/gnustep-make/subproject.make b/gnustep-make/subproject.make index 2d52332e..fbc8c3d1 100644 --- a/gnustep-make/subproject.make +++ b/gnustep-make/subproject.make @@ -18,7 +18,7 @@ # 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 diff --git a/gnustep-make/tar-exclude-list b/gnustep-make/tar-exclude-list index 39e87fdd..0444be21 100644 --- a/gnustep-make/tar-exclude-list +++ b/gnustep-make/tar-exclude-list @@ -1,2 +1,2 @@ CVS -.svn \ No newline at end of file +*.svn diff --git a/gnustep-make/target.make b/gnustep-make/target.make index c46b5af0..6d658e7e 100644 --- a/gnustep-make/target.make +++ b/gnustep-make/target.make @@ -18,7 +18,7 @@ # 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 @@ -45,18 +45,18 @@ endif 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 # @@ -85,7 +85,14 @@ 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' @@ -102,7 +109,13 @@ endif # 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 @@ -152,7 +165,7 @@ SHARED_CFLAGS = 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); \ @@ -203,7 +216,7 @@ SHARED_LIB_LINK_CMD = \ -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 = \ @@ -216,7 +229,7 @@ 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 @@ -283,20 +296,21 @@ ifeq ($(FOUNDATION_LIB), apple) 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) \ @@ -305,15 +319,15 @@ 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); \ + $(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 @@ -337,9 +351,9 @@ 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); \ + $(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)) @@ -353,9 +367,9 @@ endif # CC_TYPE 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) ) @@ -414,7 +428,7 @@ SHARED_LIB_LINK_CMD = \ -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 = \ @@ -426,7 +440,7 @@ 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 @@ -482,7 +496,7 @@ SHARED_LIB_LINK_CMD = \ $(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 = \ @@ -491,7 +505,7 @@ 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 @@ -529,18 +543,18 @@ SHARED_LIB_LINK_CMD = \ $(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); \ @@ -561,7 +575,6 @@ BUNDLE_LD = $(CC) BUNDLE_LDFLAGS += -shared ADDITIONAL_LDFLAGS += -rdynamic STATIC_LDFLAGS += -static - endif # # end Linux ELF @@ -580,7 +593,7 @@ SHARED_LIB_LINK_CMD = \ $(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 @@ -610,17 +623,17 @@ SHARED_LIB_LINK_CMD = \ $(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); \ @@ -640,6 +653,15 @@ BUNDLE_LD = $(CC) 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 # @@ -662,7 +684,7 @@ SHARED_LIB_LINK_CMD = \ $(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 @@ -692,7 +714,7 @@ SHARED_LIB_LINK_CMD = \ $^ $(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) $^ ; @@ -728,17 +750,17 @@ SHARED_LIB_LINK_CMD = \ $(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); \ @@ -771,7 +793,7 @@ SHARED_LIB_LINK_CMD = \ $(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) $^ ; @@ -806,18 +828,18 @@ SHARED_LIB_LINK_CMD = \ $(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); \ @@ -852,12 +874,29 @@ endif 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 = \ @@ -865,7 +904,12 @@ 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 @@ -880,7 +924,7 @@ ifeq ($(findstring cygwin, $(GNUSTEP_TARGET_OS)), cygwin) shared = yes HAVE_SHARED_LIBS = yes BUILD_DLL = yes -WITH_DLL = yes +OLD_DLL_SUPPORT = yes SHARED_LIBEXT = .a DLL_LIBEXT = .dll DLLTOOL = dlltool @@ -912,18 +956,18 @@ SHARED_LIB_LINK_CMD = \ $(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); \ @@ -961,7 +1005,7 @@ SHARED_LIB_LINK_CMD = \ $(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 @@ -990,7 +1034,7 @@ SHARED_LIB_LINK_CMD = \ -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) diff --git a/gnustep-make/test-application.make b/gnustep-make/test-application.make index f980eb4a..2d147ec4 100644 --- a/gnustep-make/test-application.make +++ b/gnustep-make/test-application.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/test-library.make b/gnustep-make/test-library.make index c1fd9642..9a898067 100644 --- a/gnustep-make/test-library.make +++ b/gnustep-make/test-library.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/test-tool.make b/gnustep-make/test-tool.make index 7e6d3e14..7d761488 100644 --- a/gnustep-make/test-tool.make +++ b/gnustep-make/test-tool.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/tool.make b/gnustep-make/tool.make index e6d83ae3..579c8fcc 100644 --- a/gnustep-make/tool.make +++ b/gnustep-make/tool.make @@ -17,7 +17,7 @@ # 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 diff --git a/gnustep-make/transform_paths.sh b/gnustep-make/transform_paths.sh index 66875ec7..428075db 100755 --- a/gnustep-make/transform_paths.sh +++ b/gnustep-make/transform_paths.sh @@ -19,7 +19,7 @@ # 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. diff --git a/gnustep-make/user_home.c b/gnustep-make/user_home.c index 623210d5..96f77b1d 100644 --- a/gnustep-make/user_home.c +++ b/gnustep-make/user_home.c @@ -15,7 +15,7 @@ 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" @@ -186,6 +186,10 @@ int main (int argc, char** argv) sprintf(home, "C:%s", buf0); } } + else + { + strcpy(home, buf0); + } } else { diff --git a/gnustep-make/vendor.sh b/gnustep-make/vendor.sh index f3e6d347..fefffdbe 100755 --- a/gnustep-make/vendor.sh +++ b/gnustep-make/vendor.sh @@ -18,6 +18,6 @@ # 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/' diff --git a/gnustep-make/which_lib.c b/gnustep-make/which_lib.c index cf02287c..5f46597f 100644 --- a/gnustep-make/which_lib.c +++ b/gnustep-make/which_lib.c @@ -19,7 +19,7 @@ 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. */ /* -- 2.39.5