gnustep-make-2.7.0/0000775000175000017500000000000013074115163013735 5ustar richardrichardgnustep-make-2.7.0/spec-rules.template0000664000175000017500000000114210565766003017561 0ustar richardrichard# # Setup sources # %prep %setup -n %{gs_name}-%{gs_version} # # Build commands # %build if [ -z "$GNUSTEP_MAKEFILES" ]; then . %{gs_makefiles}/GNUstep.sh fi if [ "%{gs_configure}" = "YES" ]; then CFLAGS="$RPM_OPT_FLAGS" ./configure fi make # # Install commands (generate file list too) # %install if [ -z "$GNUSTEP_MAKEFILES" ]; then . %{gs_makefiles}/GNUstep.sh fi make DESTDIR=$RPM_BUILD_ROOT \ GNUSTEP_INSTALLATION_DOMAIN=%{gs_install_domain} \ filelist=yes install # # Clean commands # %clean rm -rf $RPM_BUILD_ROOT # # File list (generated by install) # %files -f %{gs_file_list} gnustep-make-2.7.0/empty.make0000664000175000017500000000024110565766242015743 0ustar richardrichard# An empty makefile used by gnustep-config to print out # compilation/link flags include $(GNUSTEP_MAKEFILES)/common.make include $(GNUSTEP_MAKEFILES)/rules.makegnustep-make-2.7.0/gnustep-make-ld.so.conf.in0000664000175000017500000000025112331557630020630 0ustar richardrichard# This file was installed by gnustep-make @GNUSTEP_MAKE_VERSION@ @GNUSTEP_PREFIX@/lib @GNUSTEP_SYSTEM_LIBRARIES@ @GNUSTEP_LOCAL_LIBRARIES@ @GNUSTEP_NETWORK_LIBRARIES@ gnustep-make-2.7.0/ChangeLog.10000664000175000017500000077102410377003773015667 0ustar richardrichardFri Nov 1 12:12:48 2002 Nicola Pero * Instance/documentation.make: Removed unused rules for autogsdoc. Thu Oct 31 21:52:45 2002 Nicola Pero * Instance/tool.make (internal-install-dirs, install-tool): Simplified rules removing these intermediate targets. (.PHONY): Removed those targets; added internal-tool-copy_into_dir. Thu Oct 31 13:51:41 2002 Nicola Pero Warning: removed framework's xxx_TOOLS API; replaced it with a new xxx_COPY_INTO_DIR API. * Instance/framework.make: Emit a long warning if xxx_TOOLS is used. * Master/rules.make (.PHONY): Removed %.tools. (%.tools): Rule removed. * Instance/tool.make: Removed custom FRAMEWORK code; the same result can now be obtained by using the xxx_COPY_INTO_DIR API, which simplifies framework code, and will soon work for all project types. * Instance/tool.make (internal-tool-copy_into_dir): Implemented. * Instance/rules.make: Recognize new xxx_COPY_INTO_DIR variable. Strip it and put it into COPY_INTO_DIR variable. If non-empty, centrally disable installation and execute the new internal-$(GNUSTEP_TYPE)-copy_into_dir target at the end of compilation. Added bare implementation of this :: target, which creates the COPY_INTO_DIR directory if it does not exist yet. * Instance/Shared/bundle.make (shared-instance-bundle-copy_into_dir): Implemented. * messages.make (ECHO_COPYING_INTO_DIR, ECHO_COPYING_BUNDLE_INTO_DIR): New variables. Wed Oct 30 13:16:15 2002 Nicola Pero Unified link commands for libraries and frameworks. * target.make: Changed all the variable names used in all link and post-link commands, in such a way that library.make and framework.make can use the same commands, and differentiate what is done by setting LIB_LINK_* variables. Documented extensively what these variables are. * Instance/framework.make: Set the appropriate LIB_LINK_* variables. Replaced FRAMEWORK_LINK_CMD with LIB_LINK_CMD. * Instance/library.make: Set the appropriate LIB_LINK_* variables. * common.make (FRAMEWORK_LINK_CMD): Variable removed. * target.make (SHARED_FRAMEWORK_LINK_CMD): Variable removed. Wed Oct 30 12:38:42 2002 Nicola Pero * target.make (AFTER_INSTALL_STATIC_LIB_COMMAND): Renamed to AFTER_INSTALL_STATIC_LIB_CMD for consistency with other variables. (AFTER_INSTALL_SHARED_LIB_COMMAND): Idem. * common.make (AFTER_INSTALL_LIBRARY_CMD): Updated for changes. Mon Oct 28 10:48:26 2002 Nicola Pero * Instance/framework.make (Resources/Info.plist): Use GNUSTEP_INSTANCE, not FRAMEWORK_NAME, when building NSExecutable. 2002-10-26 Richard Frith-Macdonald * Instance/documentation.make: Fix gsdoc install location Fri Oct 25 18:25:37 2002 Nicola Pero * Instance/rules.make (ADDITIONAL_CFLAGS): Add to it xxx_CFLAGS. (ADDITIONAL_OBJCFLAGS): Idem. (ADDITIONAL_CCFLAGS): Idem. Fri Oct 25 18:24:30 2002 Nicola Pero * Instance/rules.make (ADDITIONAL_CPPFLAGS): Add to it XXX_CPPFLAGS (Patch by David Ayers ). Fri Oct 25 18:08:49 2002 Nicola Pero * Documentation/readme.texi: Rewritten ultra short description of the GNU General Public License by adapting text from the GNU GPL FAQ at www.gnu.org - to address complaints that the previous description was incorrect/misleading. Tue Oct 22 02:29:02 2002 Nicola Pero * Master/objc.make (internal-clean): Fixed typo, objc_program for objc-program. (internal-distclean): Idem. Tue Oct 22 02:11:02 2002 Nicola Pero Implemented 'make strings' target, which runs make_strings to create/update .strings files. * Master/rules.make (strings, before-strings, internal-strings, after-strings): New targets * Master/aggregate.make (internal-strings): New target implemented. * Master/application.make (internal-strings): Idem. * Master/bundle.make (internal-strings): Idem. * Master/clibrary.make (internal-strings): Idem. * Master/ctool.make (internal-strings): Idem. * Master/framework.make (internal-strings): Idem. * Master/gswapp.make (internal-strings): Idem. * Master/gswbundle.make (internal-all): Idem. * Master/library.make (internal-strings): Idem. * Master/objc.make (internal-strings): Idem. * Master/palette.make (internal-strings): Idem. * Master/service.make (internal-strings): Idem. * Master/subproject.make (internal-strings): Idem. * Master/test-application.make (internal-strings): Idem. * Master/test-library.make (internal-strings): Idem. * Master/test-tool.make (internal-strings): Idem. * Master/tool.make (internal-strings): Idem. * Instance/Shared/strings.make: New file. * GNUmakefile.in (INSTANCE_SHARED_MAKE_FILES): Added the new file. * messages.make (ECHO_MAKING_STRINGS): New variable. (ALWAYS_ECHO_NO_LANGUAGES): New variable. (ALWAYS_ECHO_NO_FILES): New variable. * Instance/application.make: Include Instance/Shared/strings.make. * Instance/bundle.make: Idem. * Instance/ctool.make: Idem. * Instance/framework.make: Idem. * Instance/gswapp.make: Idem. * Instance/gswbundle.make: Idem. * Instance/library.make: Idem. * Instance/objc.make: Idem. * Instance/palette.make: Idem. * Instance/service.make: Idem. * Instance/subproject.make: Idem. * Instance/test-library.make: Idem. * Instance/tool.make: Idem. Tue Oct 22 00:59:28 2002 Nicola Pero * rules.make ($(GNUSTEP_MAKEFILES)/Instance/Shared/*.make): New rule to stop make from spending time trying to rebuild the Instance/Shared makefiles each time. Tue Oct 22 00:48:21 2002 Nicola Pero * Instance/Shared/headers.make (.PHONY): Fixed typo in target names, `install' instead of `instance'. * Instance/Shared/java.make (.PHONY): Idem. Thu Oct 17 17:49:51 2002 Nicola Pero * Master/aggregate.make: Execute nothing is SUBPROJECTS is empty. Removed __done hack; do not pass GNUSTEP_INSTALLATION_DIR to submakes on the command line. Renamed 'target' to 'operation'. Use 'aggregate project', not 'subproject', in warning messages. Commented extensively. * common.make: Export GNUSTEP_INSTALLATION_DIR Thu Oct 17 02:17:01 2002 Nicola Pero A further speedup for make all/install/uninstall. * Master/rules.make (%.variables): Inlined the %.subprojects rule into the %.variables rule. Wed Oct 16 05:11:48 2002 Nicola Pero * GNUmakefile.in: Renamed `tgz' target to `dist'. Wed Oct 16 04:47:13 2002 Nicola Pero A further speedup for make clean/distclean. * Master/application.make (APPS_WITH_SUBPROJECTS): New variable - set it, by using a make trick, to be the list of all apps having subprojects. (internal-clean): Only invoke the .subproject clean rule for apps with subprojects. (internal-distclean): Idem. * Master/bundle.make: Similar changes. * Master/clibrary.make: Idem. * Master/ctool.make: Idem. * Master/gswapp.make: Idem. * Master/gswbundle.make: Idem. * Master/java-tool.make: Idem. * Master/java.make: Idem. * Master/library.make: Idem. * Master/objc.make: Idem. * Master/palette.make: Idem. * Master/service.make: Idem. * Master/subproject.make : Idem. * Master/test-application.make : Idem. * Master/test-library.make : Idem. * Master/test-tool.make: Idem. * Master/tool.make: Idem. Mon Oct 14 13:09:09 2002 Nicola Pero * Master/rpm.make (rpm): Look for rpmbuild, and use it instead of rpm -ba if available; print a warning if neither rpm nor rpmbuild is found. (Originated from a suggestion by Jiri Novak ). * GNUmakefile.in (rpm): Similar change. Fri Oct 11 16:31:35 2002 Nicola Pero * spec-debug-alone-rules.template: Remove %install string from comment. * spec-debug-rules.template: Idem. * spec-rules.template: Idem. (Suggested by Jiri Novak ). Fri Oct 11 11:54:13 2002 Nicola Pero * Instance/framework.make ($(DUMMY_FRAMEWORK_FILE)): Rewritten the shell code to extract the class names to be faster by using a single sed process with multiple commands rather than piping through awk. Fri Oct 11 11:14:28 2002 Nicola Pero * target.make (OBJC_CLASS_SECTION): Removed. Fri Oct 11 11:13:53 2002 Nicola Pero * Instance/framework.make ($(DUMMY_FRAMEWORK_FILE)): Use all references to classes not in the U section (Patch by Stefan Urbanek ). Thu Oct 10 18:21:30 2002 Nicola Pero * create_domain_dir_tree.sh: New script to create the domain directory tree inside a directory. * GNUmakefile.in (install): Rewritten. Use the create_domain_dir_tree.sh to create the System domain; create only the top-level directories of the Local and Network domain; print short messages about installation rather than displaying the full shell commands unless messages=yes is given on the command line. (EC): New variable to implement messages=yes. 2002-10-09 Adam Fedor * Documentation/GNUmakefile: Add userfaq target * Documentation/userfaq.texi: Update. * Documentation/machines.texi: Idem. Wed Oct 9 12:38:27 2002 Nicola Pero * GNUmakefile.in (exec_prefix, bindir, libdir, includedir, datadir): Unused variables removed. Wed Oct 9 12:26:21 2002 Nicola Pero * GNUmakefile.in (librarydir): Unused variable removed. Wed Oct 9 12:17:19 2002 Nicola Pero * GNUmakefile.in (install): Create $(GNUSTEP_MAKEFILES)/Auxiliary directory, for auxiliary makefiles provided by packages. Mon Oct 7 18:19:27 2002 Nicola Pero * Instance/framework.make ($(DUMMY_FRAMEWORK_OBJ_FILE)): Wrap the compilation in ECHO_COMPILE / END_ECHO (Patch by Stefan Urbanek ). Sat Oct 5 01:59:47 2002 Nicola Pero * ld_lib_path.sh (guile_paths): Removed setting up guile_paths from here ... * GNUstep.sh.in (guile_paths): ... and added it here. The difference is that GNUstep.sh is executed only once at login, while ld_lib_path.sh is executed also each time an application is started, to setup the additional linker library paths for that specific application. * ld_lib_path.csh, GNUstep.csh.in (guile_paths): Idem. Sat Oct 5 01:05:47 2002 Nicola Pero * mkinstalldirs (MKDIR): Do not test for 'mkdir -p'; always use 'mkdir'. The test for 'mkdir -p' was itself subject to race conditions. Do not echo what is done. Sat Oct 5 00:50:41 2002 Nicola Pero * executable.template.in (app): Do not run a sed subprocess to remove / at the end of name. Do not run a sed subprocess to remove .app at the end of the name. Run a basename subprocess only if the executable name can't be determined from the Info-gnustep.plist. Rewritten a comparison against basename $app, no longer meaningful, to be against $0. Sat Oct 5 00:28:02 2002 Nicola Pero * openapp.in: Removed aesthetical semicolon. Fri Oct 4 14:45:53 2002 Nicola Pero * configure.ac (clean_target_os, clean_target_cpu, clean_target_vendor): New variables: compute them, and subst them in the generated files. * GNUmakefile.in (GNUSTEP_TARGET_CPU, GNUSTEP_TARGET_OS, GNUSTEP_TARGET_VENDOR): Just set to be clean_target_cpu, clean_target_os, clean_target_vendor. (VERTAG): Compute efficiently. * configure: Regenerated 2002-10-01 Richard Frith-Macdonald * Instance/documentation.make: commented out bogus extra running of autogsdoc without args, as this was halting install process. 2002-10-01 Adam Fedor * Documentation/filesystem.texi: New file. * Documentation/README.MinGWOnCygwin: Update troubleshooting. Tue Oct 1 01:08:23 2002 Nicola Pero * Instance/bundle.make: Rewritten build rules so that they are simpler, and we drop creating symbolic links in the directory. When on GNUstep, we no longer create the OSX bundle; when on OSX, we no longer create the GNUstep bundle. Also, install using Instance/Shared/bundle.make; no longer need to try and preserve the symbolic link. Removed rules to build NeXTstep Info.plist. (.PHONY): Removed unused targets. Tue Oct 1 01:02:41 2002 Nicola Pero * Instance/Shared/bundle.make (shared-instance-bundle-install): Use 'h' option to tar when installing. Fri Sep 27 03:16:57 2002 Nicola Pero Warning - minor incompatible change/update in API. * Master/subproject.make (internal-clean): Do not remove Resources/Subproject. (internal-distclean): Only remove Resources/ if the subproject has xxx_HAS_RESOURCE_BUNDLE = yes. * Instance/subproject.make: Only build the Resources/ bundle if `xxx_HAS_RESOURCE_BUNDLE = yes' is set in the GNUmakefile. Fri Sep 27 03:12:46 2002 Nicola Pero * Master/subproject.make (SUBPROJECT_NAME): If SUBPROJECT_NAME contains more than one word, emit warnings, and drop all words except the first one. (internal-clean): Simplified expression to compute pswrap files. Thu Sep 26 03:11:42 2002 Nicola Pero Implemented resource bundles for tools. * Master/tool.make (internal-distclean): Wipe out the Resources/ directory if there is any tool with xxx_HAS_RESOURCE_BUNDLE = yes. * Instance/tool.make: If xxx_HAS_RESOURCE_BUNDLE = yes, include Shared/Instance/bundle.make with the appropriate parameters and use its rules. All the standard xxx_RESOURCE_FILES etc options are then available; the bundle is automatically created in ./Resources/tool_name, managed and installed in the appropriate dir, and automatically available to the tool code -- both before and after installation -- via gnustep-base's [NSBundle +mainBundle]. Thu Sep 26 03:08:04 2002 Nicola Pero * Instance/Shared/bundle.make: Implemented rules to install and uninstall. * Instance/application.make: Use them. * messages.make (ECHO_INSTALLING_BUNDLE): New message used by Instance/Shared/bundle.make. Thu Sep 26 02:50:02 2002 Nicola Pero * Instance/application.make (APP_INSTALL_DIR): New variable. Implemented support for both APP_INSTALL_DIR and xxx_INSTALL_DIR. Updated the whole makefile for the change. Thu Sep 26 02:16:48 2002 Nicola Pero * Instance/ctool.make ($(CTOOL_INSTALLATION_DIR)/$(GNUSTEP_TARGET_LDIR)): Do not echo the command; use $@ syntax in command. * Instance/tool.make (internal-tool-uninstall_): Do nothing if NULL_INSTALL is YES. Thu Sep 26 02:01:04 2002 Nicola Pero Warning: tiny incompatible API change. * Instance/tool.make (TOOL_INSTALL_DIR): New variable replacing TOOL_INSTALLATION_DIR, but not including TARGET_LDIR to be consistent with LIBRARY_INSTALL_DIR and BUNDLE_INSTALL_DIR, and preparing the way for bundle resources for tools. Updated the whole makefile to work with the new variable. (TOOL_INSTALLATION_DIR): Emit a deprecation warning if it's used. * Instance/ctool.make: Perfectly similar changes. * Instance/objc.make: Perfectly similar changes. * Instance/java.make (JAVA_INSTALLATION_DIR): Renamed to be JAVA_INSTALL_DIR. We still accept the old name, but the new one should be preferred. Thu Sep 26 01:47:30 2002 Nicola Pero * Instance/Shared/bundle.make: Renamed all GNUSTEP_SHARED_INSTANCE_XXX variables to be shorter - GNUSTEP_SHARED_XXX. * Instance/application.make: Updated for change. * Instance/bundle.make: Idem. * Instance/framework.make: Idem. * Instance/palette.make: Idem. * Instance/service.make: Idem. * Instance/subproject.make: Idem. Mon Sep 23 05:58:52 2002 Nicola Pero * configure.ac: Made message about checking for a shared libobjc more explanatory. * configure: Regenerated. Mon Sep 23 05:51:56 2002 Nicola Pero * Documentation/gnustep-howto.texi: Fixed/updated documentation on ./configure --prefix for gnustep-make ... was confusing GNUSTEP_SYSTEM_ROOT and GNUSTEP_ROOT, and giving an incorrect example. Also, simplified/updated example for sourcing GNUstep.sh. * GNUstep-HOWTO: Regenerated. * FAQ: Regenerated. 2002-09-19 Adam Fedor * Documentation/faq.texi: Add section on porting to Cocoa. * Documentation/userfaq.texi: Update font troubleshooting. * Documentation/README.Cygwin: New file * Documentation/README.MinGWOnCygwin: Renamed from README.cygwin. Thu Sep 12 15:53:50 2002 Nicola Pero * target.make (ADDITIONAL_LDFLAGS): All concerned targets: do not add -static when shared=no. We can't perform conditionals on the value of shared in this file, since it has not yet been set up! (STATIC_LDFLAGS): New variable. Set it to -static in all concerned cases. * rules.make (ALL_LDFLAGS): Add STATIC_LDFLAGS. * target.make (BUNDLE_CFLAGS): This variable was no longer used, and can't be fixed. Removed for all targets. * common.make: Force shared=yes to be used whenever bundles are built. Static bundles are meaningless, and we want the flags for shared objects, such as -fPIC, to be automatically used when compiling bundle object files, otherwise linking the bundle will fail on some platforms. Thu Sep 12 10:23:19 2002 Nicola Pero * openapp.in: Implemented calling openapp with an application name without prefix, as in 'openapp Gorm': openapp will automatically look for Gorm.app or Gorm.debug or Gorm.profile. Implemented support for searching applications in subdirectories of Applications - only subdirs one level deep are supported. Other simple cleanups such as quoting of variables. Wed Sep 4 11:34:59 2002 Nicola Pero * Documentation/readme.texi: Fixed typo - it's the "GNU General Public License", not the "GNU Public License" (Reported by David Ayers ). * README: Regenerated. 2002-08-30 Adam Fedor * Version: 1.5.0 2002-08-26 Adam Fedor * configure.ac: Typo in CPPFLAGS (Reported by Chris Vetter). 2002-08-24 Adam Fedor * Documentation/README.MinGW: Update. 2002-08-15 Adam Fedor * configure.ac: Save user suplied CPPFLAGS, use INCLUDE_FLAGS instead (goes into CONFIG_SYSTEM_INCL). * config.make.in (CPPFLAGS): Subst with CPPFLAGS (CONFIG_SYSTEM_INCL): Subst with INCLUDE_FLAGS. Fri Aug 9 11:15:26 2002 Nicola Pero Patch from Peter Cooper with minor modifications: * target.make: Updated netbsdelf code. In particular, LIBRARIES_DEPEND_UPON should now work for netbsdelf. * configure.ac: Updated netbsdelf code. * conigure: Regenerated. 2002-08-08 Richard Frith-Macdonald * Instance/documentation.make: Order autogsdoc flags so that those from the user makefiles override the default values we supply. 2002-08-01 Adam Fedor * target.make (Darwin): Don't add flags if using NeXT Foundation. 2002-07-29 Adam Fedor * Changes from 1.4.0 merged into main branch. 2002-07-27 Adam Fedor * Version: 1.4.0 Wed Jul 24 16:31:14 2002 Nicola Pero * debian/: Outdated directory removed - the debian maintainers are maintaining the updated one elsewhere. (Suggested by Matthias Klose ). Mon Jul 22 12:34:49 2002 Georg Fleischmann * Instance/Shared/bundle.make (shared-instance-bundle-all): Copying of localized resources from subprojects with multiple languages corrected. 2002-07-21 Adam Fedor * target.make (Darwin): Changes to compile with GNU compiler/runtime. (Irix): Has shared libs. Add OBJ_MERGE_CMD. Remove extra section. * Documentation/machines.texi (Darwin): Update ffcall instructions. (Reports from Carl Eugen). 2002-07-03 Adam Fedor * Version: 1.3.4 * Documentation/news.texi: Update. * Documentation/machines.texi: Update. Sat Jun 29 12:35:56 2002 Nicola Pero * GNUstep.csh.in: Use source, not `.', to execute the user specific GNUstep.csh (Patch by Lars Sonchocky-Helldorf * GNUstep-reset.sh: Quoted two variables. Wed Jun 26 15:05:02 2002 Nicola Pero Use the gnugc-gnu-gnu library combo for garbage collecting. * library-combo.make (OBJC_RUNTIME_LIB): Set to gnugc if gc=yes. (LIBRARY_COMBO): Do not add -gc at the end if gc=yes. (OBJC_LDFLAGS): Added ObjC flags for the gnugc OBJC_RUNTIME_LIB. (OBJC_LIBS): For the gnugc-fd-xxx library-combo, do not add -lobjc as that would conflict with -lobjc_gc set elsewhere. Tue Jun 25 18:52:51 2002 Nicola Pero * opentool.in: Rewritten parsing of parameters adding support for the --library-combo switch. Changed inline help to put --library-combo=... before the tool name. Wed Jun 19 15:39:15 2002 Nicola Pero * Master/rules.make (internal-distclean): Reverted last change. 2002-06-18 Adam Fedor * GNUstep-reset.sh: Change GNUSTEP_PATHPREFIX_LIST to GNUSTEP_PATHLIST for compatibility with many shells (variable was too long). * GNUstep.csh.in: Idem * GNUstep.sh.in: Idem * debugapp.in: Idem * executable.template.in: Idem * ld_lib_path.sh: Idem * openapp.in: Idem * opentool.in: Idem * Documentation/install.texi: Idem Mon Jun 17 18:56:39 2002 Nicola Pero * Master/rules.make (internal-distclean): Remove program.core as well, for BSD systems (Suggestion by Chris B. Vetter ). Thu Jun 13 14:38:20 2002 Nicola Pero First attempt at user-friendly messages and verbosity levels. Run 'make messages=yes' to get full messages. * messages.make: New file. * GNUmakefile.in: Install messages.make. * common.make: Include messages.make. * rules.make: Changed all compilation rules to use new echo variables when compiling * Instance/application.make: Use new echo variables when linking, and in some cases when installing; tidy up echoing. * Instance/bundle.make: Idem. * Instance/ctool.make: Idem. * Instance/framework.make: Idem. * Instance/gswapp.make: Idem. * Instance/gswbundle.make: Idem. * Instance/library.make: Idem. * Instance/objc.make: Idem. * Instance/palette.make: Idem. * Instance/service.make: Idem. * Instance/subproject.make: Idem. * Instance/tool.make: Idem. * Instance/Shared/bundle.make: Idem. * Instance/Shared/headers.make: Idem. * Instance/Shared/java.make: Idem. Thu Jun 13 10:28:56 2002 Nicola Pero * Instance/Shared/bundle.make (RESOURCE_FILES): Strip the variables after concatenating them, not before. (LOCALIZED_RESOURCE_FILES): Idem. (WEBSERVER_RESOURCE_FILES): Idem. (WEBSERVER_LOCALIZED_RESOURCE_FILES): Idem. Wed Jun 12 12:32:40 2002 Nicola Pero * Instance/Shared/bundle.make: Fixed typo in ifneq which was causing the LOCALIZED_WEBSERVER_RESOURCE_FILES code to be never executed. (WEBSERVER_LOCALIZED_RESOURCE_DIRS): New variable. (shared-instance-bundle-all-localized-webresources): Implemented code to create webserver resource dirs. Fixed installation of WEBSERVER_LOCALIZED_RESOURCE_FILES ... yet another typo preventing it from working. Wed Jun 12 12:31:28 2002 Nicola Pero * Instance/Shared/bundle.make (WEBSERVER_LOCALIZED_RESOURCE_FILES): Support the new variable name xxx_WEBSERVER_LOCALIZED_RESOURCE_FILES. (WEBSERVER_COMPONENTS, WEBSERVER_LOCALIZED_COMPONENTS): Implemented support for these variables, by merging them into WEBSERVER_RESOURCE_FILES and WEBSERVER_LOCALIZED_RESOURCE_FILES Wed Jun 12 12:28:07 2002 Nicola Pero * Instance/Shared/bundle.make (COMPONENTS, LOCALIZED_COMPONENTS): Merge them into RESOURCE_FILES and LOCALIZED_RESOURCE_FILES. (shared-instance-bundle-all): Code to manage COMPONENTS and LOCALIZED_COMPONENTS removed. (shared-instance-bundle-all): When installing RESOURCE_FILES, check that the file exists, and is a file or a dir, before installing it. When installing LOCALIZED_RESOURCE_FILES, accept directories as well as files. (LOCALIZED_RESOURCE_DIRS): New variable. (shared-instance-bundle-all): Added code to manage LOCALIZED_RESOURCE_DIRS. Wed Jun 12 11:44:47 2002 Nicola Pero * relative_path.sh: Do not run sed to remove the partial_match from the paths if partial_match is empty. This fixes processing absolute paths which have no path in common. Wed Jun 12 11:24:23 2002 Nicola Pero * relative_path.sh: Changed syntax for running subcommands, `xxx` is more portable than $(xxx). (Patch by Marcus Muller ). 2002-06-10 Adam Fedor * Version: 1.3.3 * Documentation/news.texi: Update. Fri Jun 7 14:29:50 2002 Nicola Pero * executable.template.in (--library-combo): Fixed switching library combo to perform a full reset of the environment to the new library combo using GNUstep-reset.sh followed by GNUstep.sh. * executable.template.in: If a binary for the currently specified LIBRARY_COMBO can not be found, automatically search and run the first available binary for any other LIBRARY_COMBO for this machine/os. Fri Jun 7 13:39:37 2002 Nicola Pero Patch by Manuel Guesdom : * Instance/Shared/bundle.make (LOCALIZED_COMPONENTS): New variable. (shared-instance-bundle-all): Install LOCALIZED_COMPONENTS. 2002-06-06 Adam Fedor * Documentation/machines.texi: Update Fri May 24 18:23:37 2002 Nicola Pero * Instance/documentation.make (internal-doc-install_): Fixed installation of info files (Suggestion by Evan Prodromou ). (internal-doc-clean): Fixed cleaning info files in similar way. (internal-doc-uninstall_): Fixed removal installed info files in similar way. Thu May 23 12:22:05 2002 Nicola Pero * Instance/rules.make (OBJ_FILES_TO_LINK): Strip it when it's created, so that we can compare it to '' to check if there is anything to build/link or not. * Instance/bundle.make: Modified everything implementing support for bundles which contain resources, but no object file to load. Tue May 21 17:07:23 2002 Nicola Pero * Instance/rules.make (internal-$(GNUSTEP_TYPE)-install): Recognize XXX_STANDARD_INSTALL=no to mean we shouldn't perform the standard installation procedure and assume the makefile writer has provided his own (or none). Tue May 21 00:37:03 2002 Nicola Pero * Instance/Shared/bundle.make (shared-instance-bundle-all): Fixed quoting in code to copy subproject's resources. Mon May 20 11:11:29 2002 Nicola Pero * Instance/framework.make ($(FRAMEWORK_VERSION_DIR_NAME)/Resources/Info-gnustep.plist): Merge $(GNUSTEP_INSTANCE)Info.plist - if there is one - into the framework's gnustep plist. 2002-05-15 Adam Fedor * Documentation/machines.texi: Updated info re Win98 * Documentation/README.MinGW: Updated. * Documentation/userfaq.texi. Idem. 2002-05-15 Richard Frith-Macdonald * common.make: Define AUTOGSDOC * Instance/documentation.make: Use AUTOGSDOC 2002-05-14 Richard Frith-Macdonald * Documentation/README.MinGW: Update and correct libtiff info so instructions work for gui as well as base. 2002-05-10 Richard Frith-Macdonald * configure.ac: Remove FORCE_USER_ROOT and FORCE_DEFAULTS_ROOT * GNUmakefile.in: ditto * config.make.in: ditto * common.make: regenerate * configure: ditto * user_home.c: Implement system-wide .GNUsteprc * Documentation/install.texi: Document use of system-wide .GNUsteprc 2002-05-08 Richard Frith-Macdonald * Documentation/README.MinGW: Mention need to ensure we use MSYS make rather than MinGW make. 2002-05-07 Richard Frith-Macdonald * Documentation/README.MinGW: Updated to reflect experience of a full rebuild this morning ... including the GUI code! 2002-05-02 Adam Fedor * configure.ac: Updated using autoconf 2.53 from configure.in * configure, config.h.in: Regenerate. * GNUmakefile.in: Add @configure_input@ comment * GNUstep.csh.in, GNUstep.sh.in, debugapp.in, fixpath.sh.in, openapp.in, debugapp.in, opentool.in: Idem. * aclocal.m4: Remove. 2002-04-30 Adam Fedor * Version: 1.3.2 * Documentation/news.texi, gnustep-howto.texi: Update * NEWS: Regen. Sun Apr 21 11:47:11 2002 Nicola Pero * Instance/bundle.make (BUNDLE_LIBS): Readded BUNDLE_LIBS for Windows. Thu Apr 18 10:54:33 2002 Nicola Pero Warning - after this change, header files for libraries building on Windows must be changed - all symbols are to be marked for export if BUILD_lib{library_name}_DLL is defined, else to be marked for import if GNUSTEP_WITH_DLL is defined (else you're not on windows and you mark nothing). * rules.make (ALL_CPPFLAGS): If WITH_DLL, add -DGNUSTEP_WITH_DLL. Do not add any -Dlibxxx_ISDLL=1 flag. * Instance/application.make (ALL_CPPFLAGS): Do not add any -Dlibxxx_ISDLL=1 flag. * Instance/bundle.make (ALL_CPPFLAGS): Idem. (ALL_BUNDLE_LIBS): Even on Windows, do not link against libraries. * Instance/ctool.make (ALL_CPPFLAGS): Idem. * Instance/framework.make (ALL_CPPFLAGS): Idem. * Instance/objc.make (ALL_CPPFLAGS): Idem. * Instance/service.make (ALL_CPPFLAGS): Idem. * Instance/tool.make (ALL_CPPFLAGS): Idem. Thu Apr 18 10:41:26 2002 Nicola Pero * Instance/application.make: Removed spurious newline. Thu Apr 11 23:39:45 2002 Nicola Pero * ld_lib_path.sh (IFS): Fixed bug - was not resetting IFS correctly. 2002-04-11 Adam Fedor * configure.in (gcc version): Use -dumpversion to check gcc version. * Documentation/README.MinGW: Minor updates. * Documentation/machines.texi: Add FreeBSD 4.x Wed Apr 10 14:39:24 2002 Nicola Pero * Instance/documentation.make (internal-doc-install_): Install all xxx.info-* files, not only the root xxx.info file. (internal-doc-uninstall_): Remove all xxx.info-* files. (Suggestion by Sir Raorn ()). Wed Apr 10 14:18:29 2002 Nicola Pero * relative_path.sh: Fixed bug when looping - ignore path components which are '.' - fixing problem with frameworks and gnustep flattened. (Patch from Sir Raorn ()). * Instance/documentation.make (internal-doc-install_): Depend on creating GNUSTEP_DOCUMENTATION_INFO. ($(GNUSTEP_DOCUMENTATION_INFO): Rule to create the dir added. (Patch from Sir Raorn modified) Wed Apr 10 14:02:55 2002 Nicola Pero * Documentation/makedoc.make (internal-doc-install): Depend on creating GNUSTEP_DOCUMENTATION_INFO (internal-doc-uninstall): Remove the .info files from GNUSTEP_DOCUMENTATION_INFO. Patch from Sir Raorn (): * Documentation/GNUmakefile.in (GNUSTEP_DOCUMENTATION_INFO): Define. * Documentation/makedoc.make (internal-doc-install): Install the info files in GNUSTEP_DOCUMENTATION_INFO. ($(GNUSTEP_DOCUMENTATION_INFO)): Create the directory if missing. Mon Apr 8 00:45:53 2002 Nicola Pero * GNUstep.sh.in (dir): Unset after using (Reported by Balaton Zoltan ). Sat Apr 6 15:09:56 2002 Nicola Pero Fixed bundling frameworks in RPMs or DEBs. * relative_path.sh: New script building the relative path of a path relative to another one. * GNUmakefile.in (install): Install relative_path.sh. * common.make (REL_PATH_SCRIPT): set to be $GNUSTEP_MAKEFILES/relative_path.sh. * Instance/framework.make (internal-framework-install_): Use REL_PATH_SCRIPT to build symlinks in a relocatable way. Sat Apr 6 04:37:36 2002 Nicola Pero * Instance/bundle.make (BUNDLE_LIBS): Do not add system libraries when we are not building Windows DLLs. Thu Apr 4 14:57:38 2002 Nicola Pero * configure.in: Quote FORCE_USER_ROOT and FORCE_DEFAULTS_ROOT when building the -D preprocessor option. * configure: Regenerated. Thu Apr 4 14:41:53 2002 Nicola Pero * GNUstep.sh.in (temp_path, gnustep_class_path): Partially wewritten creating temp_path and gnustep_class_path to avoid spurious :. Thu Apr 4 14:25:51 2002 Nicola Pero * ld_lib_path.sh (lib_paths, guile_paths): Rewritten code building lib_paths and guile_paths so that they use GNUSTEP_PATHPREFIX_LIST. Thu Apr 4 14:19:28 2002 Nicola Pero * ld_lib_path.sh: Only set IFS for the little part which needs it. Thu Apr 4 14:02:27 2002 Nicola Pero * GNUstep.sh.in: Rewritten code setting GNUSTEP_PATHPREFIX_LIST so that duplicated entries are removed. Thu Apr 4 13:14:35 2002 Nicola Pero This should fix RPM builds on virgin envs - * GNUstep.sh.in: Removed convert_win_paths and other window specific variables; simply set GNUSTEP_PATHPREFIX_LIST and use that to set CLASSPATH as well. Made sure we never call unset for an unknown variable. Added verbose comments about technical pitfalls of sourced files. * ld_lib_path.sh: Make sure we don't unset variables unless we set them. Thu Apr 4 13:10:27 2002 Nicola Pero * GNUstep.sh.in: Quoted paths. Thu Apr 4 13:01:37 2002 Nicola Pero * GNUstep-reset.sh: Fixed bugs with shell substitutions and other technicalities. 2002-04-04 Fred Kiefer * Instance/bundle.make Use a += instead of a = to define BUNDLE_LIBS (Patch by Alexander Malmberg) 2002-04-03 Adam Fedor * Documentation/gnustep-howto.texi: Update. 2002-04-03 Fred Kiefer * Instance/bundle.make Uncommented the definition of BUNDLE_LIBS, so that bundles work under MS Windows. Tue Apr 2 13:39:17 2002 Nicola Pero * common.make (GNUSTEP_MAKEINFO_FLAGS): Do not use --no-headers. * Documentation/GNUmakefile.in (GNUSTEP_MAKEINFO_FLAGS): Idem. Tue Apr 2 13:23:58 2002 Nicola Pero * Instance/documentation.make (internal-doc-install_, internal-doc-uninstall_): Install/uninstall .info file into GNUSTEP_DOCUMENTATION_INFO. Thu Mar 28 13:19:09 2002 Nicola Pero * config.make.in (AWK, SED): Define. Added extensive comment about why we should not get them from configuration, but simply define them to be 'awk' and 'sed'. Thu Mar 28 13:08:27 2002 Nicola Pero * Instance/application.make (TTMP_LIBS): Setup for the benefit of Windows. Tue Mar 26 18:23:32 2002 Nicola Pero * openapp.in: Do not add EXEEXT at the end of the application name if we are not flattened; if we are, add it in the proper way. Quoted a path. Exec the application wrapper rather than simply running it. Fixed comment when application script not found. * opentool.in: Quoted a path. * debugapp.in: Fixed adding EXEEXT at the end of the application name. 2002-03-26 Richard Frith-Macdonald * Documentation/README.MinGW: Updated to reflect current state of the port and of the MSYS stuff. Fri Mar 22 16:58:33 2002 Nicola Pero * Documentation/install.texi: Tidied part on --disable-import. * INSTALL: Regenerated. 2002-03-20 Richard Frith-Macdonald * Documentation/GNUstep-howto.texi: Correct and expand on the instructions for installing gdomap. Tue Mar 19 13:05:52 2002 Nicola Pero Simplified implementation of before-$(GNUSTEP_INSTANCE)-all and after-$(GNUSTEP_INSTANCE)-all; implemented support for before-$(GNUSTEP_INSTANCE)-install and after-$(GNUSTEP_INSTANCE)-install. * Instance/rules.make (before-$(GNUSTEP_INSTANCE)-install): New target. (after-$(GNUSTEP_INSTANCE)-install): New target. (.PHONY): Added the new targets. * Instance/rules.make (before-$(GNUSTEP_INSTANCE)-uninstall): New target. (after-$(GNUSTEP_INSTANCE)-uninstall): New target. (.PHONY): Added the new targets. * Instance/rules.make (internal-$(GNUSTEP_TYPE)-all): New target automatically calling before-$(GNUSTEP_INSTANCE)-all, then internal-$(GNUSTEP_TYPE)-all_, then after-$(GNUSTEP_INSTANCE)-all. (internal-$(GNUSTEP_TYPE)-install): Similar. (internal-$(GNUSTEP_TYPE)-uninstall): Similar. (.PHONY): Added the new targets. * Instance/application.make (internal-app-all): Renamed to internal-app-all_; do not run before-$(GNUSTEP_INSTANCE)-all and after-$(GNUSTEP_INSTANCE)-all. (internal-app-install): Renamed to internal-app-install_. (internal-app-uninstall): Renamed to internal-app-uninstall_. (.PHONY): Updated for change. * Instance/bundle.make: Similar updates. * Instance/clibrary.make: Idem. * Instance/ctool.make: Idem. * Instance/documentation.make: Idem (NB - likely this fixes unnoticed errors here with multiple after-xxx-all and before-xxx-all too) * Instance/framework.make: Idem. * Instance/gswapp.make: Idem. * Instance/gswbundle.make: Idem. * Instance/java-tool.make: Idem. * Instance/java.make: Idem. * Instance/library.make: Idem. * Instance/objc.make: Idem. * Instance/palette.make: Idem. * Instance/resource-set.make: Idem. * Instance/service.make: Idem. * Instance/subproject.make: Idem. * Instance/test-application.make: Idem. * Instance/test-library.make: Idem. * Instance/test-tool.make: Idem. * Instance/tool.make: Idem. * Instance/bundle.make (.PHONY): Removed nonexisting target internal-bundle-clean and internal-bundle-distclean. * Instance/clibrary.make (internal-clibrary-clean): Unused target removed. * Instance/gswbundle.make (.PHONY): Removed nonexisting targets internal-gswbundle-clean and internal-gswbundle-distclean. 2002-03-19 Richard Frith-Macdonald * fixpath.sh.in: Restructure slightly so we can easily edit the fixpath.sh to force cygwin style paths. * Documentation/README.cygwin: Edd note about editing fixpath.sh Mon Mar 18 16:57:20 2002 Nicola Pero * common.make: If REMOVE_EMPTY_DIRS is yes, remove efficiently all empty directories from include and library flags (ie, -I and -L flags). (Suggestion by Markus Hitter ). * target.make (REMOVE_EMPTY_DIRS): Set to yes in the case of OS X. Mon Mar 18 14:07:53 2002 Nicola Pero * GNUstep-reset.sh: New file. Sourcing this file resets the environment from the GNUstep variables. It can be used to switch LIBRARY_COMBO on the fly - you first reset the existing environment using this script, then export the new LIBRARY_COMBO, then source GNUstep.sh again. * GNUmakefile.in (install): Install GNUstep-reset.sh Mon Mar 18 10:37:49 2002 Nicola Pero * Instance/test-library.make: Fixed typo, internal-test_lib-* targets were called internal-testlib-*. 2002-03-14 Adam Fedor * Version: 1.3.0 * Documentation/README.MinGW: Minor formatting. * README, ANNOUNCE, GNUstep-HOWTO, ...: Regenerate. 2002-03-13 Adam Fedor * Documentation/gnustep-howto.texi: Update. * Documentation/install.texi: Likewise. * Documentation/news.texi: Likewise. * Documentation/readme.texi: Likewise. 2002-03-13 Richard Frith-Macdonald * Documentation/README.MinGW: New content describing native MinGW build * Documentation/README.cygwin: Old contentnon cross-compiling to MinGW * fixpath.sh: Removed * fixpath.sh.in: new file * configure.in: generate fixpath.sh from fixpath.sh.in to control whether it fixes cygwin or mingw/msys style paths. 2002-03-11 Richard Frith-Macdonald * cygpath.sh: Removed ... replaced by fixpath.sh which should handle either cygwin or mingw/msys paths. 2002-03-10 Richard Frith-Macdonald * target.make: Force shared=yes for cygwin and mingw as stuff simply doesn't work under windows when built static. * configure.in: If hosted under mingw, use 'install' program and 'sh' and don't abort if chown is not found. * fixpath.sh: new path fixup script for mingw/msys as well as cygwin * GNUstep.sh.in: use fixpath * common.make: ditto Sat Mar 9 09:52:51 2002 Adam Fedor * configure.in: Move HOST_INSTALL so that prefix is defined before it is set. Fri Mar 8 12:53:05 2002 Nicola Pero * Instance/palette.make ($(PALETTE_DIR_NAME)/Resources/palette.table): Fixed typo. Thu Mar 7 14:06:37 2002 Nicola Pero * Master/rules.make (DLL_DEF): Do not pass down to submakes. * Instance/library.make (DLL_DEF): Define here instead. Thu Mar 7 14:05:38 2002 Nicola Pero * rules.make (SUBPROJECT_ROOT_DIR): Unused variable removed. * Master/rules.make (SUBPROJECT_ROOT_DIR): Idem. Thu Mar 7 13:43:28 2002 Nicola Pero * rules.make: Include Instance/rules.make before using the ADDITIONAL flags. * Instance/rules.make (BUNDLE_LIBS, ADDITIONAL_INCLUDE_DIRS, ADDITIONAL_GUI_LIBS, ADDITIONAL_TOOL_LIBS, ADDITIONAL_OBJC_LIBS, ADDITIONAL_LIB_DIRS, ADDITIONAL_LIBRARY_LIBS, ADDITIONAL_LDFLAGS, ADDITIONAL_CLASSPATH, LIBRARIES_DEPEND_UPON): Add instance specific flags here. * Master/rules.make (BUNDLE_LIBS, ADDITIONAL_INCLUDE_DIRS, ADDITIONAL_GUI_LIBS, ADDITIONAL_TOOL_LIBS, ADDITIONAL_OBJC_LIBS, ADDITIONAL_LIB_DIRS, ADDITIONAL_LIBRARY_LIBS, ADDITIONAL_LDFLAGS, ADDITIONAL_CLASSPATH, LIBRARIES_DEPEND_UPON): Do not pass down to submakes. Wed Mar 6 10:15:20 2002 Nicola Pero * Master/rules.make (MAIN_MODEL_FILE): Do not pass down to submakes here. * Instance/application.make (MAIN_MODEL_FILE): Define here. Also, simplified code to add it to the info plist. * Instance/bundle.make: Idem. * Instance/framework.make: Idem. * Instance/gswapp.make: Idem. * Instance/palette.make: Idem. Wed Mar 6 09:45:01 2002 Nicola Pero * clean_os.sh: Remove minor version number for Darwin 5 (Patch from Helge Hess ). Tue Mar 5 16:05:22 2002 Nicola Pero * Instance/Shared/bundle.make (shared-instance-bundle-all): Fixed tricky problem when copying resources from subprojects ... * in the shell being expanded to itself if no matching file exists. Tue Mar 5 15:15:41 2002 Nicola Pero * Instance/bundle.make (BUNDLE_INSTALL_DIR): Define with =, not :=. Tue Mar 5 14:37:58 2002 Nicola Pero * GNUstep.sh.in (GNUSTEP_USER_ROOT): Fixed setting in case GNUSTEP_FLATTENED (Suggestion from Marcus Müller ). * GNUstep.csh.in: Idem. Tue Mar 5 13:54:36 2002 Nicola Pero * Master/rules.make (COMPONENTS, LANGUAGES, WEBSERVER_RESOURCE_FILES, LOCALIZED_WEBSERVER_RESOURCE_FILES, WEBSERVER_RESOURCE_DIRS, LOCALIZED_RESOURCE_FILES, RESOURCE_FILES, RESOURCE_DIRS): Do not pass down to submakes. * Instance/Shared/bundle.make: Do not use override when defining resource variables. * Instance/gswapp.make: Idem. * Instance/gswbundle.make: Idem. Tue Mar 5 13:45:01 2002 Nicola Pero * Instance/subproject.make: Modified to have resources, and manage them by using Instance/Shared/bundle.make; put them into a Resources/Subproject directory. Removed a lot of framework specific code obsoleted by the new more general code - tidied up framework code to build headers. * Master/subproject.make (internal-clean): Remove Resources/Subproject. (internal-distclean): Remove Resources. * Instance/Shared/bundle.make: If the instance has subprojects, copy recursively resources from the subprojects Resources/Subproject dir into the instance resource bundle. Tue Mar 5 13:09:09 2002 Nicola Pero * Instance/Shared/headers.make (HEADER_FILES): Do not define HEADER variables using override. * Instance/framework.make: Idem. * Instance/subproject.make: Idem. Tue Mar 5 13:02:19 2002 Nicola Pero * Master/rules.make (HEADER_FILES, HEADER_FILES_DIR, HEADER_FILES_INSTALL_DIR): Do not pass down to submakes. Tue Mar 5 13:01:45 2002 Nicola Pero * Instance/framework.make (HEADER_FILES): Define here. * Instance/subproject.make (HEADER_FILES): Idem. Tue Mar 5 12:57:08 2002 Nicola Pero * Instance/gswapp.make (COMPONENTS, LANGUAGES, WEBSERVER_RESORCE_FILES, LOCALIZED_WEBSERVER_RESOURCE_FILES, WEBSERVER_RESORCE_DIRS, LOCALIZED_RESOURCE_DIRS, RESOURCE_FILES, RESOURCE_DIRS): Define here. Tue Mar 5 12:50:05 2002 Nicola Pero * config.make.in (HAS_LN_S): Set. Tue Mar 5 12:34:29 2002 Nicola Pero * Instance/framework.make: Major simplification by using Instance/Shared/bundle.make to manage resources. Tue Mar 5 12:20:09 2002 Nicola Pero * Instance/Shared/bundle.make: Added support for gsweb resources; bug fixes and tidyups everywhere. * Instance/application.make (GNUSTEP_SHARED_INSTANCE_BUNDLE_RESOURCE_PATH): Use this variable, not GNUSTEP_SHARED_INSTANCE_BUNDLE_PATH. * Instance/bundle.make: Idem. * Instance/service.make: Idem. * Instance/palette.make: Idem. Tue Mar 5 10:10:45 2002 Nicola Pero * Instance/resource-set.make: Added localized resource support, fixed bugs. Tue Mar 5 09:21:12 2002 Nicola Pero * Master/resource-set.make (internal-all): Do nothing, not even subproject processing. (internal-clean): Idem. (internal-distclean): Idem. Tue Mar 5 07:26:53 2002 Nicola Pero * Instance/gswapplication.make: Renamed bundle directory where gsweb resources are kept from WebServerResources to Resources/WebServer. * Instance/gswbundle.make: Idem. * Instance/framework.make: Idem. * Instance/subproject.make: Idem. * Instance/framework.make (framework-webresource-dir): Don't create the link for the WebServerResources. No longer needed since it uses the normal Resources link now. * Instance/subproject.make (framework-webresource-dir): Idem. Mon Mar 4 16:14:52 2002 Nicola Pero * GNUmakefile.in (MAKE_FILES): Added resource-set.make. (MASTER_MAKE_FILES): Added resource-set.make. (INSTANCE_MAKE_FILES): Added resource-set.make. * resource-set.make: New makefile. * Master/resource-set.make: New makefile. * Instance/resource-set.make: New makefile. 2002-03-02 Richard Frith-Macdonald * GNUstep.sh.in: Don't define GNUSTEP_DEFAULTS_ROOT * GNUstep.csh.in: Don't define GNUSTEP_DEFAULTS_ROOT * configure.in: Remove some unused stuff and improve log messages for forcing defaults and user roots. 2002-03-01 Richard Frith-Macdonald * user_home.c: Parse .GNUsteprc in configured GNUSTEP_SYSTEM_ROOT if per-user version is not available. Treat ~ at start of root as home directory of user. Fri Mar 1 15:28:58 2002 Nicola Pero * Instance/service.make: Use Instance/Shared/bundle.make to install resources. This automatically implements localizable resources for services. Removed internal targets, simplified code. Fri Mar 1 15:20:09 2002 Nicola Pero * Instance/palette.make: Use Instance/Shared/bundle.make to install resources. This automatically implements localizable resources for palettes. Removed internal targets, simplified code. Fri Mar 1 14:36:43 2002 Nicola Pero * Instance/Shared/headers.make: Added specific optimization for installing quickly headers during develoment - activated by setting GNUSTEP_DEVELOPER=YES in the environment. Fri Mar 1 12:28:52 2002 Nicola Pero * Instance/subproject.make: Use Shared/Instance/headers.make to install/uninstall headers. 2002-03-01 Richard Frith-Macdonald * GNUstep.sh.in: Updated to use user_home tool. * GNUstep.csh.in: ditto * configure.in: Updated comments/instructions to talk about forcing common user and defaults root directories. Fri Mar 1 10:58:58 2002 Nicola Pero * GNUmakefile.in (which_lib$(EXEEXT)): Compile $<, not which_lib.c. (user_home$(EXEEXT)): Idem. 2002-03-01 Richard Frith-Macdonald * user_home.c: Port to MINGW. Added functionality under unix to report GNUSTEP_USER_ROOT and GNUSTEP_DEFAULTS_ROOT 2002-02-28 Adam Fedor * target.make (darwin5): Correct compile flags. Add flags to ignore MacOSX headers if FOUNDATION_LIB is gnu. (darwin1): Correct compile flags. (nextstep4): Likewise. (nextstep3): Likewise. 2002-02-28 Richard Frith-Macdonald * configure.in: setup variables to force particular paths for user and defaults roots. * config.make.in: pass configured forced paths on to build process * common.make: use path forcing. Thu Feb 28 18:27:05 2002 Nicola Pero * Master/rules.make (PRINCIPAL_CLASS): Do not pass down to submakes. * Instance/application.make (PRINCIPAL_CLASS): Define in terms of $(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS; do not use override when fixing it up if it's empty. * Instance/bundle.make (PRINCIPAL_CLASS): Idem. * Instance/framework.make (PRINCIPAL_CLASS): Idem. * Instance/gswbundle.make (PRINCIPAL_CLASS): Idem. * Instance/java-tool.make (PRINCIPAL_CLASS): Idem. * Instance/palette.make (PRINCIPAL_CLASS): Idem. * Instance/gswapp.make (PRINCIPAL_CLASS): Define. Thu Feb 28 18:16:11 2002 Nicola Pero * Instance/gswbundle.make (COMPONENTS, LANGUAGES, WEBSERVER_RESORCE_FILES, LOCALIZED_WEBSERVER_RESOURCE_FILES, WEBSERVER_RESORCE_DIRS, LOCALIZED_RESOURCE_DIRS, RESOURCE_FILES, RESOURCE_DIRS): Define here. Thu Feb 28 15:22:31 2002 Nicola Pero * Instance/application.make: Simplified a lot by using Instance/Shared/bundle.make to copy resource files into the application bundle. 2002-02-28 Richard Frith-Macdonald * user_home.c: new utility to report users home directory. * configure.in: check for password file stuff etc. * GNUmakefile.in: build user_home Thu Feb 28 14:35:27 2002 Nicola Pero * Instance/rules.make (.PHONY): Declare here as .PHONY before-$(GNUSTEP_INSTANCE)-all and after-$(GNUSTEP_INSTANCE)-all. * Instance/application.make: And not here. * Instance/bundle.make: Idem. * Instance/ctool.make: Idem. * Instance/documentation.make: Idem. * Instance/framework.make: Idem. * Instance/gswapp.make: Idem. * Instance/gswbundle.make: Idem. * Instance/java-tool.make: Idem. * Instance/java.make: Idem. * Instance/library.make: Idem. * Instance/objc.make: Idem. * Instance/palette.make: Idem. * Instance/rules.make: Idem. * Instance/service.make: Idem. * Instance/subproject.make: Idem. * Instance/test-library.make: Idem. * Instance/tool.make: Idem. Thu Feb 28 13:24:08 2002 Nicola Pero * GNUmakefile.in (INSTANCE_SHARED_MAKE_FILES): Added bundle.make. * Instance/Shared/bundle.make: New file. * Instance/bundle.make: Simplified a lot by using Instance/Shared/bundle.make to create bundle dirs and copying resource files there. Thu Feb 28 13:03:12 2002 Nicola Pero * Instance/rules.make (before-$(GNUSTEP_INSTANCE)-all): Added. (after-$(GNUSTEP_INSTANCE)-all): Added. * Instance/application.make: Removed from here. * Instance/bundle.make: Idem. * Instance/ctool.make: Idem. * Instance/documentation.make: Idem. * Instance/framework.make: Idem. * Instance/gswapp.make: Idem. * Instance/gswbundle.make: Idem. * Instance/java-tool.make: Idem. * Instance/java.make: Idem. * Instance/library.make: Idem. * Instance/objc.make: Idem. * Instance/palette.make: Idem. * Instance/rules.make: Idem. * Instance/service.make: Idem. * Instance/subproject.make: Idem. * Instance/test-library.make: Idem. * Instance/tool.make: Idem. Thu Feb 28 11:06:51 2002 Nicola Pero * common.make (GNUSTEP_WOAPPS): Removed. Thu Feb 28 11:01:34 2002 Nicola Pero * GNUmakefile.in: Changed everywhere 'Apps' (used as directory name) into 'Applications'. * common.make: Idem. * debugapp.in: Idem. * executable.template.in: Idem. * openapp.in: Idem. * Documentation/DESIGN: Idem. Thu Feb 28 10:57:14 2002 Nicola Pero * Documentation/install.texi (Warnings for deprecated #import): Say that MacOS X uses #import. * INSTALL: Regenerated. 2002-02-28 Richard Frith-Macdonald * configure.in: Set default user root to $HOME/GNUstep as a quick hack solution to problems with LOGNAME 2002-02-27 Adam Fedor * Documentation/README.MinGW: Update. * Documentation/faq.texi: Likewise. * Documentation/machines.texi: Likewise. * Documentation/userfaq.texi: Likewise. Wed Feb 27 16:51:34 2002 Nicola Pero * subproject.make: Broken into Master and Instance. * Instance/subproject.make: New file. * Master/subproject.make: New file. * GNUmakefile.in (MASTER_MAKE_FILES): Added subproject.make. (INSTANCE_MAKE_FILES): Added subproject.make. Wed Feb 27 16:38:36 2002 Nicola Pero * Master/rules.make (PALETTE_ICON): Do not pass it to submakes. * Instance/palette.make (PALETTE_ICON): Define it here. (PALETTE_INSTALL_DIR): Define with =, not :=. Wed Feb 27 16:33:03 2002 Nicola Pero * palette.make: Broken into Master and Instance. * Instance/palette.make: New file. * Master/palette.make: New file. * GNUmakefile.in (MASTER_MAKE_FILES): Added palette.make. (INSTANCE_MAKE_FILES): Added palette.make. Wed Feb 27 16:28:16 2002 Nicola Pero * framework.make: Broken into Master and Instance. * Instance/framework.make: New file. * Master/framework.make: New file. * GNUmakefile.in (MASTER_MAKE_FILES): Added framework.make. (INSTANCE_MAKE_FILES): Added framework.make. * rules.make (DERIVED_SOURCES): Define. Wed Feb 27 13:54:53 2002 Nicola Pero * Documentation/install.texi: Document the --disable-import flag. * INSTALL: Regenerated. Wed Feb 27 13:05:49 2002 Nicola Pero * configure.in: Added configure option --disable-import which allows users to turn on/off the compiler warnings against usage of #import. Leave the default to no warnings. * configure: Regenerated. * config.make.in (OBJC_NO_IMPORT_FLAGS): New flag. * common.make (OBJCFLAGS): Set in terms of OBJC_NO_IMPORT_FLAGS. 2002-02-27 Richard Frith-Macdonald * Documentation/README.MinGW: updated to latest versions of things I used. Describe current state. 2002-02-25 Richard Frith-Macdonald * target.make: Use winsocks2 library ... we will never support systems that only have the old one, and we need the new one for our networking. Sun Feb 24 13:22:09 2002 Matthias Klose : * GNUstep.sh.in, GNUstep.csh.in: Start make_services in a subshell, disables "Done" messages for shells with job control. Fri Feb 22 18:08:39 2002 Nicola Pero * openapp.in: Quote the arguments when executing the app. Fri Feb 22 15:49:01 2002 Nicola Pero * Instance/documentation.make: Removed doubled installation of $(GNUSTEP_INSTANCE)_INSTALL_FILES. Fri Feb 22 13:18:43 2002 Nicola Pero * Master/rules.make (SERVICE_INSTALL_DIR): Unused variable removed. Fri Feb 22 13:12:44 2002 Nicola Pero * Instance/ctool.make (internal-ctool-uninstall): Use GNUSTEP_INSTANCE here. Fri Feb 22 13:06:18 2002 Nicola Pero * service.make: Broken into Master and Instance. * Master/service.make: New file. * Instance/service.make: New file. * GNUmakefile.in (MASTER_MAKE_FILES): Added service.make (INSTANCE_MAKE_FILES): Idem. Fri Feb 22 12:55:01 2002 Nicola Pero * Master/rules.make (SCRIPTS_DIRECTORY, CHECK_SCRIPT_DIRS): Do not define here. * Instance/test-library.make: But rather here. Fri Feb 22 12:53:43 2002 Nicola Pero * test-library.make: Broken into Master and Instance. * Master/test-library.make: New file. * Instance/test-library.make: New file. * GNUmakefile.in (MASTER_MAKE_FILES): Added test-library.make. (INSTANCE_MAKE_FILES): Idem. Fri Feb 22 12:38:59 2002 Nicola Pero * tool.make: Broken into Master and Instance. * Instance/tool.make: New file. * Master/tool.make: New file. * test-tool.make: Broken into Master and Instance. * Instance/test-tool.make: New file. * Master/test-tool.make: New file. * GNUmakefile.in (MASTER_MAKE_FILES): Added test-tool.make and tool.make (INSTANCE_MAKE_FILES): Idem. Fri Feb 22 12:33:13 2002 Nicola Pero * Master/test-application.make: Use test-app, not testapp, as GNUSTEP_TYPE. * Instance/test-application.make: Updated all rules. * test-application.make: Updated. Fri Feb 22 12:24:17 2002 Nicola Pero * Master/test-application.make (internal-check): Target removed. Fri Feb 22 12:14:08 2002 Nicola Pero * test-application.make: Broken into Master and Instance. * Master/test-application.make: New file. * Instance/test-application.make: New file. Fri Feb 22 12:02:55 2002 Nicola Pero * Master/rules.make (APPLICATION_ICON): Do not pass this down to submake Instance invocation. * Instance/application.make: Define it here instead. Fri Feb 22 11:55:42 2002 Nicola Pero * Instance/library.make: Do not define HEADER_FILES_DIR here. Fri Feb 22 11:50:17 2002 Nicola Pero * Master/rules.make (HAS_GSWCOMPONENTS, GSWAPP_INFO_PLIST): Do not pass these to the submake Instance invocation as arguments to make. * Instance/gswapp.make: Define the appropriate ones here instead. * Instance/gswbundle.make: And here. Fri Feb 22 11:36:40 2002 Nicola Pero * Instance/gswbundle.make: Updated/modified to use Instance/Shared/headers.make to manage headers. Fri Feb 22 11:34:22 2002 Nicola Pero * Master/gswbundle.make: All rules changed to invoke internal-gswbundle-* rules rather than internal-bundle-* rules. * Instance/gswbundle.make: All internal-bundle-* rules changed to be internal-gswbundle-*. * gswbundle.make: Corresponding update. Fri Feb 22 11:33:29 2002 Nicola Pero * gswbundle.make: Broken into Master and Instance. * Master/gswbundle.make: New file. * Instance/gswbundle.make: New file. * GNUmakefile.in (MASTER_MAKE_FILES): Added gswbundle.make (INSTANCE_MAKE_FILES): Adde gswbundle.make Fri Feb 22 11:25:36 2002 Nicola Pero * gswapp.make: Broken into Master and Instance. * Master/gswapp.make: New file. * Instance/gswapp.make: New file. * GNUmakefile.in (MASTER_MAKE_FILES): Added gswapp.make. (INSTANCE_MAKE_FILES): Added gswapp.make Fri Feb 22 01:10:09 2002 Nicola Pero * Master/rules.make (TEXI_FILES, GSDOC_FILES, AGSDOC_FILES, AGSDOC_FLAGS, LATEX_FILES, JAVADOC_FILES, JAVADOC_SOURCEPATH, DOC_INSTALL_DIR, TEXT_MAIN): Do not manually pass these variables down to the Instance submake invocation. * Instance/documentation.make: Set them here instead. Fri Feb 22 01:04:04 2002 Nicola Pero * documentation.make: Broken into Master and Instance. * Master/documentation.make: New file. * Instance/documentation.make: New file. * GNUmakefile.in (MASTER_MAKE_FILES): Added documentation.make. (INSTANCE_MAKE_FILES): Added documentation.make. Fri Feb 22 00:42:11 2002 Nicola Pero * Master/objc.make (internal-clean): Remove GNUSTEP_OBJ_DIR, not GNUSTEP_OBJ_PREFIX. * Instance/objc.make Minor simplification of rules by removing install-objc_program target. (OBJC_PROGRAM_INSTALLATION_DIR): Don't define if already defined. (internal-objc_program-uninstall): Implemented. Fri Feb 22 00:38:47 2002 Nicola Pero * objc.make: Broken into Master and Instance. * Master/objc.make: New file. * Instance/objc.make: New file. * GNUmakefile.in (MASTER_MAKE_FILES): Added objc.make. (INSTANCE_MAKE_FILES): Added objc.make. Thu Feb 21 14:37:37 2002 Nicola Pero * Instance/Shared/headers.make: Removed xxx_EMPTY_HEADER_FILES_INSTALL_DIR. People can simply set xxx_HEADER_FILES_INSTALL_DIR to `.' if they want to force it to be like empty. Wed Feb 20 16:56:43 2002 Nicola Pero * Instance/library.make (FINAL_LIBRARY_INSTALL_DIR): Only set if not already set. * Instance/clibrary.make: Trivialized. Set FINAL_LIBRARY_INSTALL_DIR, then include Instance/library.make to inherit all the makefile code from there ... very cool. Please note that this 'makefile inheritance' wouldn't have been possible had I not broken the makefiles into Master and Instance. Wed Feb 20 16:49:41 2002 Nicola Pero * Instance/library.make: Heavily simplified and improved support for headers by simply using Instance/Shared/headers.make to manage headers. * Instance/Shared/headers.make: Modified to support $(GNUSTEP_INSTANCE)_EMPTY_HEADER_FILES_INSTALL_DIR to allow callers to specify they really want an empty header files install dir, which is not otherwise tollerated, and automatically replaced with $(GNUSTEP_INSTANCE). Wed Feb 20 15:41:14 2002 Nicola Pero * library.make: Broken into Master and Instance. * Master/library.make: New file. * Instance/library.make: New file. * GNUmakefile.in (MASTER_MAKE_FILES): Added library.make. (INSTANCE_MAKE_FILES): Added library.make. Wed Feb 20 15:29:41 2002 Nicola Pero * clibrary.make: Broken into Master and Instance. * Master/clibrary.make: New file. * Instance/clibrary.make: New file. * GNUmakefile.in (MASTER_MAKE_FILES): Added clibrary.make. (INSTANCE_MAKE_FILES): Added clibrary.make. Wed Feb 20 13:06:17 2002 Nicola Pero * Master/rules.make (%.tools): Use --no-print-directory in the recursive make invocation. Wed Feb 20 12:49:55 2002 Nicola Pero * Instance/ctool.make: Simplified by removing the install-ctool rule. Wed Feb 20 12:45:32 2002 Nicola Pero * ctool.make: Broken into Master and Instance. * Master/ctool.make: New file. * Instance/ctool.make: New file. * GNUmakefile.in (MASTER_MAKE_FILES): Added ctool.make. (INSTANCE_MAKE_FILES): Added ctool.make. Wed Feb 20 11:37:55 2002 Nicola Pero * Master/rules.make (internal-distclean): Remove core files. Wed Feb 20 10:48:04 2002 Nicola Pero * Master/source-distribution.make (VERTAG): Replace efficiently using make function. * Master/source-distribution.make: Implemented allowing to change the compression program used, and define a standard set of handy compressions. (Patch by Stefan Urbanek modified). * Master/source-distribution.make: Added support for a .dist-ignore file specifying files not to include in distribution files. (Suggestion by Stefan Urbanek). 2002-02-14 Richard Frith-Macdonald * configure.in: New option to specify GNUSTEP_DEFAULTS_ROOT * configure: Regenerated. * GNUstep.sh.in: Use GNUSTEP_DEFAULTS_ROOT 2002-02-13 Richard Frith-Macdonald * configure: regenerated * configure.in: Set default user root to be ~$LOGNAME/GNUstep rather than ~/GNUstep so that it is consistent with the operation of the NSUserName() function ... ie. we use the login name in preference to any temporarily set user id. People wanting the old inconsistent behavior can simply unset the LOGNAME environment variable in any subshell they start with a new uid. Tue Feb 12 16:37:51 2002 Nicola Pero * framework.make (INTERNAL_LIBRARIES_DEPEND_UPON): Set this variable in the same way as it is done in library.make (Suggestion from Stephen Brandon ). Tue Feb 12 09:04:38 2002 Nicola Pero * config.guess: Updated to latest version. * config.sub: Idem. Sun Feb 10 02:06:40 2002 Nicola Pero * library.make (SOVERSION): Fixed typo. Sat Feb 9 13:05:27 2002 Nicola Pero * Instance/application.make: Do not protect against multiple inclusions. * Instance/bundle.make: Idem. * Instance/java.make: Idem. * Instance/java-tool.make: Idem. * Instance/rules.make: Idem. * Master/aggregate.make: Idem. * Master/application.make: Idem. * Master/bundle.make: Idem. * Master/java.make: Idem. * Master/java-tool.make: Idem. * Master/rules.make: Idem. * Master/rpm.make: Idem. * Master/source-distribution.make: Idem. Sat Feb 9 11:52:11 2002 Nicola Pero * GNUmakefile.in (clean): Remove Instance/Shared/*~. Sat Feb 9 11:45:16 2002 Nicola Pero * Instance/Shared/headers.make: New file - the code is new, and has improvements over the code found in old makefiles. * GNUmakefile.in (INSTANCE_SHARED_MAKE_FILES): Added headers.make. * Instance/bundle.make: Simplified and improved management of headers by using Instance/Shared/headers.make to manage headers. Sat Feb 9 11:22:10 2002 Nicola Pero * bundle.make: Broken into Master and Instance. * Master/bundle.make: New file. * Instance/bundle.make: New file. * GNUmakefile.in (INSTANCE_MAKE_FILES, MASTER_MAKE_FILES): Added bundle.make. Fri Feb 8 16:15:20 2002 Nicola Pero * Master/java-tool.make (internal-distclean): Depend on subprojects, not variables, to spare the recursive make invocation. * Master/java.make (internal-distclean): Idem. Fri Feb 8 13:32:33 2002 Nicola Pero * Instance/java.make (internal-java_package-uninstall): Added. Fri Feb 8 13:19:37 2002 Nicola Pero * Instance/Shared/java.make (shared-instance-java-uninstall): Implemented. Fri Feb 8 13:17:45 2002 Nicola Pero * Instance/Shared/java.make: New makefile fragment built from code common in java.make and java-tool.make. * Instance/java-tool.make: Simplified a lot by using Instance/Shared/java.make to do most of the work. * Instance/java.make: Idem. * GNUmakefile.in (INSTANCE_SHARED_MAKE_FILES): Install Instance/Shared/java.make. Fri Feb 8 12:36:01 2002 Nicola Pero * Instance/Shared: New directory. * Instance/Shared/README: New file. * GNUmakefile.in (INSTANCE_SHARED_MAKE_FILES): New variable. (install): Create the GNUSTEP_MAKEFILES/Instance/Shared directory. Install INSTANCE_SHARED_MAKE_FILES in there. Fri Feb 8 12:37:56 2002 Nicola Pero * Instance/rules.make (JAVA_JNI_OBJS): Fixed typo/bug - underscore in excess. Fri Feb 8 11:43:27 2002 Nicola Pero * java-tool.make: Broken into Master and Instance. * Instance/java-tool.make: New file. * Master/jave-tool.make: New file. * GNUmakefile.in (INSTANCE_MAKE_FILES): Added java-tool.make (MASTER_MAKE_FILES): Added java-tool.make. Fri Feb 8 10:07:42 2002 Nicola Pero * java.make: Broken into Master and Instance. * Instance/java.make: New file. * Master/java.make: New file. * GNUmakefile.in (INSTANCE_MAKE_FILES): Added java.make (MASTER_MAKE_FILES): Added java.make. Thu Feb 7 12:58:52 2002 Nicola Pero * java.make (install-java_package): Recognize and install xxx_JAVA_PROPERTIES_FILES. * java-tool.make (install-java_tool): Idem. 2002-02-04 Richard Frith-Macdonald * opentool.in: Rewrite searching code so that it looks in the appropriate host/os/library-combo subdirectory to find tools. 2002-02-03 Adam Fedor * configure.in: Remove setting of GCC_SO_DIR. Remove CPPFLAGS and LDFLAGS with GNUSTEP paths in them since they are already included in default rules. Set OBJC_CPPFLAGS/LDFLAGS for objc thread test. * GNUstep.csh.in: Remove GCC_SO_DIR * GNUstep.sh.in: Likewise. * ld_lib_path.csh: Likewise. * ld_lib_path.sh: Likewise. * Documentation/userfaq.texi: New file. Sat Feb 2 10:54:35 2002 Nicola Pero * GNUstep.sh.in (GNUSTEP_USER_ROOT): Fixed typo. * GNUstep.csh.in: Idem. Fri Feb 1 11:33:11 2002 Nicola Pero * Master/aggregate.make: New file with code taken from aggregate.make. * aggregate.make: If this is a Master invocation, include Master/aggregate.make, otherwise include nothing. * GNUmakefile.in (MASTER_MAKE_FILES): Install aggregate.make. 2002-02-01 Richard Frith-Macdonald * GNUmakeifle: install Master and Instance versions of application.make Thu Jan 31 17:47:39 2002 Nicola Pero * Master/application.make (APP_EXTENSION): Set it in common.make, so that it can be overridden at will. * Instance/application.make (INTERNAL_app_NAME, TARGET): Replaced everywhere by GNUSTEP_INSTANCE. Thu Jan 31 17:38:17 2002 Nicola Pero * application.make: Replaced with a makefile which includes Master/application.make or Instance/application.make or nothing depending on case. The original code broken in two and move into Master/application.make and Instance/application.make. * Master/application.make: New file. * Instance/application.make: new file. * GNUmakefile.in: Install the new files. Thu Jan 31 11:27:06 2002 Nicola Pero * configure.in: Moved determination of host, target and build system at the beginning of the file, so that any GNUstep test can use this knowledge. * configure.in (OBJC_RUNTIME_LIB): Use -F- option to awk rather than piping through an additional tr process. (DATE): Unused variable removed. (GNUSTEP_SYSTEM_ROOT, GNUSTEP_LOCAL_ROOT, GNUSTEP_NETWORK_ROOT, GNUSTEP_USER_ROOT): Print out which directories we are going to use for all these variables. (GNUSTEP_USER_ROOT): Set it to be ~/GNUstep or $HOMEDRIVE/$HOMEPATH/GNUstep on Windows. * configure: Regenerated. * GNUstep.sh.in (GNUSTEP_USER_ROOT): On Windows, convert \ into /. * GNUstep.csh.in: Idem. Wed Jan 30 19:01:11 2002 Nicola Pero * GNUmakefile.in (clean): Remove *~ in Master/ and Instance/ as well. Wed Jan 30 18:57:48 2002 Nicola Pero * Instance/README: New file. Wed Jan 30 18:43:06 2002 Nicola Pero * Master/rules.make (%.variables): Do not pass down to the Instance submake invocation _SUBPROJECTS, OBJC_FILES, JAVA_FILES and similar lists of source units. * Instance/rules.make: Set up all those variables here. ($(GNUSTEP_OBJ_DIR)): Rule to create the compilation directory moved into the top-level rules.make as it's not actually dependent on the instance. Wed Jan 30 18:13:25 2002 Nicola Pero * Instance/rules.make: Code to set generic flags and to build objects from sources moved back into the top-level rules.make. Code which will - not yet but will - depend on the instance retained here instead. * rules.make: Only include Instance/rules.make if GNUSTEP_INSTANCE is non empty. Wed Jan 30 17:56:44 2002 Nicola Pero * Master/rules.make (target): Renamed everywhere to 'instance' to avoid confusion. (%.variables): Pass down the new variables GNUSTEP_TYPE and GNUSTEP_INSTANCE, but not GNUSTEP_MAKE_INSTANCE_INVOCATION. * common.make: Unexport GNUSTEP_INSTANCE and GNUSTEP_TYPE rather than GNUSTEP_MAKE_INSTANCE_INVOCATION. * rules.make: Check for GNUSTEP_INSTANCE to decide whether to include Master/rules.make or not. Wed Jan 30 17:54:45 2002 Nicola Pero * rules.make (BUNDLE_EXTENSION, CURRENT_VERSION_NAME, DEPLOY_WITH_CURRENT_VERSION): Moved to common.make. Wed Jan 30 17:53:03 2002 Nicola Pero * rules.make: Always include Instance/rules.make, even if in the Master invocation, to allow master rules in GNUmakefile.postamble to be written as instance rules. Wed Jan 30 17:52:15 2002 Nicola Pero * configure.in (PERL): Do not check for PERL; do not generate which_lib.pl. * GNUmakefile.in (PERL): Do not define. (distclean): Do not remove which_lib.pl. * which_lib.pl.in: Removed. Wed Jan 30 17:48:57 2002 Nicola Pero * common.make (GNUSTEP_MAKE_INSTANCE_INVOCATION): Unexport the variable. Wed Jan 30 17:30:04 2002 Nicola Pero * tool.make (install-tool): Do not install the tool shell script wrapper. (internal-tool-uninstall): Do not remove it. * ctool.make (install-ctool, internal-ctool-uninstall): Idem. Wed Jan 30 17:11:34 2002 Nicola Pero * rules.make All global rules, and all %.variables, %.subprojects, %.tools rules and everything obviously used only in the Master invocation stage moved into Master/rules.make. All compilation rules and everything obviously used only in the Instance invocation stage moved into Instance/rules.make. * rules.make ($(GNUSTEP_MAKEFILES)/Master/*.make): New rule. ($(GNUSTEP_MAKEFILES)/Instance/*.make): New rule. Wed Jan 30 17:00:21 2002 Nicola Pero * Instance/rules.make: New file. * GNUmakefile.in (INSTANCE_MAKE_FILES): Install the new file. * rules.make ($(GNUSTEP_OBJ_DIR)): Rule moved to Instance/rules.make. Include Instance/rules.make if at the instance invocation. Wed Jan 30 16:39:41 2002 Nicola Pero Started a major reorganization of the package. * Master/: New directory. * Instance/: New directory. * rpm.make: Moved into Master/rpm.make. * source-distribution.make: Moved into Master/source-distribution.make. * Master/rules.make: New file. * Master/README: New file. * GNUmakefile.in: Create GNUSTEP_MAKEFILES/Master and GNUSTEP_MAKEFILES/Instance. Install rpm.make and source-distribution.make and Master/rules.make into GNUSTEP_MAKEFILES/Master. * rules.make (GNUSTEP_MAKE_INSTANCE_INVOCATION): Pass down to the submake with value of YES. (source-distribution.make, rpm.make): Code including them moved into Master/rules.make. (Master/rules.make): Include it, but only if GNUSTEP_MAKE_INSTANCE_INVOCATION is undefined. Wed Jan 30 12:50:04 2002 Nicola Pero * rules.make (LIB_DIRS_NO_SYSTEM): Removed. * application.make (ALL_GUI_LIBS): Use ALL_LIB_DIRS, not LIB_DIRS_NO_SYSTEM. ($(APP_FILE)): Do not add ALL_LIB_DIRS when linking. * bundle.make (ALL_BUNDLE_LIBS, $(BUNDLE_FILE)): Idem. * ctool.make (ALL_TOOL_LIBS, $(GNUSTEP_OBJ_DIR)/$(INTERNAL_ctool_NAME)$(EXEEXT)): Idem. * framework.make (ALL_FRAMEWORK_LIBS, $(FRAMEWOK_FILE)): Idem. * gswapp.make (ALL_GSW_LIBS, $(GSWAPP_FILE)): Idem. * gswbundle.make ($(GSWBUNDLE_FILE)): Idem. * objc.make (ALL_OBJC_LIBS, $(GNUSTEP_OBJ_DIR)/$(INTERNAL_objc_program_NAME)$(EXEEXT)): Idem. * palette.make ($(PALETTE_FILE)): Idem. * service.make (ALL_SERVICE_LIBS, $(SERVICE_FILE)): Idem. * test-library.make (ALL_TEST_LIBRARY_LIBS, $(GNUSTEP_OBJ_DIR)/$(INTERNAL_testlib_NAME)): Idem. * tool.make (ALL_TOOL_LIBS, $(GNUSTEP_OBJ_DIR)/$(INTERNAL_tool_NAME)$(EXEEXT)): Idem. * library.make ($(GNUSTEP_OBJ_DIR)/$(DLL_NAME)): Do not add ALL_LIB_DIRS (INTERNAL_LIBRARIES_DEPEND_UPON): Do not add $($(INTERNAL_library_NAME)_LIB_DIRS) and $(ADDITIONAL_LIB_DIRS). * clibrary.make: Similar changes. Tue Jan 29 13:29:26 2002 Nicola Pero * rules.make (LIBRARIES_DEPEND_UPON): Pass only target_LIBRARIES_DEPEND_UPON + LIBRARIES_DEPEND_UPON to the submake. Do not run which_lib here. * library.make (INTERNAL_LIBRARIES_DEPEND_UPON): New variable. Define in terms of LIBRARIES_DEPEND_UPON, after filtering it via which_lib. ($(GNUSTEP_OBJ_DIR)/$(DLL_NAME)): Use INTERNAL_LIBRARIES_DEPEND_UPON, not LIBRARIES_DEPEND_UPON. * clibrary.make: Same changes as in library.make. * target.make: Replaced everywhere LIBRARIES_DEPEND_UPON with INTERNAL_LIBRARIES_DEPEND_UPON. Tue Jan 29 13:10:17 2002 Nicola Pero * application.make (ALL_GUI_LIBS): Make sure it's not evaluated - which causes a subprocess to be run - unless needed to link. * bundle.make (ALL_BUNDLE_LIBS): Idem. * ctool.make (ALL_TOOL_LIBS): Idem. * framework.make (ALL_FRAMEWORK_LIBS): Idem. * gswapp.make (ALL_GSW_LIBS): Idem. * objc.make (ALL_OBJC_LIBS): Idem. * service.make (ALL_SERVICE_LIBS): Idem. * test-library.make (ALL_TEST_LIBRARY_LIBS): Idem. * tool.make (ALL_TOOL_LIBS): Idem. Tue Jan 29 12:39:53 2002 Nicola Pero * objc.make (TTMP_LIBS): Fixed - was using ALL_TOOL_LIBS instead of ALL_OBJC_LIBS. * service.make (ALL_SERVICE_LIBS): Rename from ALL_GUI_LIBS. (TTMP_LIBS): Use ALL_SERVICE_LIBS instead of ALL_GUI_LIBS. ($(SERVICE_FILE)): Use ALL_SERVICE_LIBS when compiling. 2002-01-28 Adam Fedor * Documentation/README.MinGW: Update Sun Jan 27 11:39:38 2002 Gregory John Casamento * library.make: A minor correction was necessary. The definition of SOVERSION in library.make was missing a right paren which was causing the build to fail when creating shared libraries. Sat Jan 26 15:02:49 2002 Nicola Pero * library.make: Recognize xxx_SOVERSION to be used to override the default SOVERSION (From an idea by Helge Hess). Added explanation of why this is an interesting option to have. Sat Jan 26 14:29:26 2002 Nicola Pero * executable.template.in (appname): Minor tidyup of the sed code to extract the executable name. Fri Jan 25 12:08:30 2002 Nicola Pero * rules.make: Added long comment explaining the difference between ADDITIONAL_XXX and AUXILIARY_XXX. 2002-01-25 Richard Frith-Macdonald * GNUstep.sh.in: Add some quoting to make paths to user GNUstep.sh file and make_services files work when there are embedded spaces. Wed Jan 23 02:53:51 2002 Nicola Pero * GNUstep.csh.in: Fixed setting GNUSTEP_USER_ROOT when it's empty from configuration. Tue Jan 22 21:46:30 2002 Nicola Pero * names.make: Removed unused conditional for internal_name_clean. Tue Jan 22 21:45:26 2002 Nicola Pero Simplified: frameworks now install symlinks to their headers and libraries in the same directories where libraries install theirs. * framework.make: Replaced everywhere GNUSTEP_FRAMEWORK_HEADERS with GNUSTEP_HEADERS, and GNUSTEP_FRAMEWORK_LIBRARIES with GNUSTEP_LIBRARIES. * common.make (GNUSTEP_FRAMEWORKS_HEADERS): Removed. (GNUSTEP_FRAMEWORKS_LIBRARIES): Removed. (GNUSTEP_FRAMEWORKS_HEADERS_FLAGS): Removed. (GNUSTEP_FRAMEWORKS_LIBRARIES_FLAGS): Removed. * rules.make (ALL_OBJCFLAGS): Do not use the removed flags. (ALL_CFLAGS): Idem. * rules.make (ALL_LIB_DIRS): Added ADDITIONAL_FRAMEWORK_DIRS and AUXILIARY_FRAMEWORK_DIRS. (ALL_FRAMEWORK_DIRS): Removed. * application.make: Removed references to ALL_FRAMEWORK_DIRS. * bundle.make: Idem. * gswapp.make: Idem. * tool.make: Idem. * target.make (SHARED_FRAMEWORK_LINK_CMD): Removed ALL_FRAMEWORK_DIRS. * ld_lib_path.sh (lib_paths): Removed xxx/Library/Libraries/yyy paths. Added missing GNUSTEP_NETWORK/Libraries path. (guile_paths): Added missing GNUSTEP_NETWORK paths. * ld_lib_path.csh: Removed xxx/Library/Libraries/yyy paths. Fixed position of GNUSTEP_NETWORK/Libraries paths. (GUILE_LOAD_PATH): Added missing GNUSTEP_NETWORK paths. Tue Jan 22 00:20:12 2002 Nicola Pero * GNUstep.sh.in (cygpath): Moved code to search for cygpath so that it's executed only if it's needed. Mon Jan 21 23:59:06 2002 Nicola Pero * configure.in (--with-user-root): Improved help message. * configure: Regenerated * executable.template.in: Removed check that EXEEXT is empty. Mon Jan 21 23:57:28 2002 Nicola Pero * common.make (GNUSTEP_HEADERS_FND_FLAG): Fixed order of flags. For libFoundation, added missing network header flag. * common.make: Implemented sanity check on GNUSTEP_*_ROOT. Exit with an error if any of those variables is unset. Simplified all the code in the file by removing obsolete checks for empty GNUSTEP_*_ROOT and simplified even further by merging all settings of library and header flags for different GNUSTEP_*_ROOT into simple single commands. Mon Jan 21 20:34:03 2002 Nicola Pero * config.guess: Updated to latest version. Mon Jan 21 17:34:35 2002 Nicola Pero * MediaBook.sh: Removed. * MediaBook.func: Removed. * GNUmakefile.in: Removed all references to MediaBook.sh and MediaBook.func. Mon Jan 21 17:12:18 2002 Nicola Pero * ctool.make (internal-ctool-uninstall): Uninstall the wrapper script if not flattened. * GNUmakefile.in (uninstall): Remove executable.template and cygpath.sh. Mon Jan 21 16:44:09 2002 Nicola Pero Support for building gnustep-make in another directory. * configure.in (CFLAGS): Add -I$srcdir before the compilation test. (Version): Include the file from $srcdir, not ./. * configure: Regenerated. * GNUmakefile.in (VPATH): Define. Run clean_cpu.sh, clean_vendor.sh and clean_os.sh from $srcdir rather than ./. (which_lib): Use -I. when compiling which_lib. When installing, install configure generated files from ./, and other files from $srcdir. (Patch from Balaton Zoltan, modified). Mon Jan 21 16:36:58 2002 Nicola Pero * configure.in (objc_threaded): When printing out the results of the test, print the thread flags we found as well. * configure: Regenerated. Mon Jan 21 16:09:12 2002 Nicola Pero * executable.template.in (appname): Modified to extract the executable name from the Info-gnustep.plist by using a single sed command, for performance reasons (Idea by Balaton Zoltan). Sun Jan 20 03:47:03 2002 Nicola Pero * common.make: Further simplification - removed GNUSTEP_USER_FRAMEWORKS_HEADERS_FLAGS, GNUSTEP_USER_FRAMEWORKS_LIBRARIES_FLAGS, GNUSTEP_USER_HEADERS_FLAGS, GNUSTEP_USER_LIBRARIES_FLAGS and similar for LOCAL, NETWORK and ROOT, in favour of new GNUSTEP_FRAMEWORKS_HEADERS_FLAGS, GNUSTEP_FRAMEWORKS_LIBRARIES_FLAGS, GNUSTEP_HEADERS_FLAGS, GNUSTEP_LIBRARIES_FLAGS variables. * rules.make (ALL_OBJCFLAGS): Use the new variables. (ALL_CFLAGS): Idem. (ALL_FRAMEWORK_DIRS): Idem. (ALL_LIB_DIRS): Idem. (LIB_DIRS_NO_SYSTEM): Idem. Sun Jan 20 00:19:05 2002 Nicola Pero * common.make: Removed GNUSTEP_SYSTEM_HEADERS, GNUSTEP_LOCAL_HEADERS, GNUSTEP_USER_HEADERS, GNUSTEP_NETWORK_HEADERS variables. (GNUSTEP_HEADERS_FND_FLAG): For the fd foundation, use GNUSTEP_TARGET_DIR instead of GNUSTEP_TARGET_CPU/GNUSTEP_TARGET_OS. Sun Jan 20 00:02:17 2002 Nicola Pero * common.make: Got rid of the GNUSTEP_HEADERS_TARGET_FLAGS variable. * rules.make (ALL_OBJCFLAGS, ALL_CFLAGS): Do not include GNUSTEP_HEADERS_TARGET_FLAGS. Sat Jan 19 23:58:13 2002 Nicola Pero * common.make (GNUSTEP_FRAMEWORKS_LIBRARIES_ROOT): Removed. (GNUSTEP_LIBRARIES_ROOT): Removed. Sat Jan 19 23:35:13 2002 Nicola Pero * framework.make (ADDITIONAL_INCLUDE_DIRS): Do not add -I$(DERIVED_SOURCES). Tue Jan 15 00:42:23 2002 Nicola Pero * which_lib.c: Reorganized and rewritten most code again. * configure.in (AC_HAVE_HEADERS): Do not check for sys/errno.h. * configure: Regenerated. Mon Jan 14 20:06:37 2002 Nicola Pero * which_lib.c (search_for_library_with_type): Bug fix - check that the return value of opendir is not NULL. Mon Jan 14 19:45:50 2002 Nicola Pero * executable.template.in (appname): Fixed extracting executable name from Info-gnustep.plist. Mon Jan 14 14:33:12 2002 Nicola Pero * which_lib.c: Rewritten. The main user visible change is that the new version searches libraries in a different -- much more logical -- order, which should finally fix the recurrent bugs/problems in library searches reported for the old version. A show_all=yes flag is provided for helping people in debugging it. Mon Jan 14 10:01:07 2002 Nicola Pero * configure.in: Quoted most paths. * configure: Regenerated. Fri Jan 11 10:34:15 2002 Nicola Pero * GNUstep.sh.in (ac_word, ac_dummy, ac_dir, ac_save_ifs): Renamed to word, dummy, dir, save_ifs. Fri Jan 11 09:58:37 2002 Nicola Pero * GNUstep.sh.in (ac_word, ac_dummy, ac_dir, ac_save_ifs): Unset each variable after using it. * ld_lib_path.sh (host_os, guile_paths): Unset each variable after using it. Fri Jan 11 09:04:57 2002 Nicola Pero Patches by Balaton Zoltan , modified: * GNUmakefile.in: Do not include Version. (distclean): Remove config.h. * GNUstep.sh.in: Changed the first line so that it doesnt' run it using /bin/sh but it but rather uses /bin/echo to print out a message saying that you must source it. * GNUstep.csh.in: Idem. * GNUstep.sh.in (CYGPATH): Renamed to cygpath. (CONVERT_WIN_PATHS): Renamed to convert_win_paths. (tmpdir, cygpath, tmp_IFS, dir, temp_path, convert_win_paths, G_U_R, G_L_R, G_N_R, G_S_R, gnustep_class_path): Unset each variable after using it. Check and source $GNUSTEP_USER_ROOT/GNUstep.sh rather than ~/GNUstep/GNUstep.sh. Check that make_services is an executable file, not only a standard file, before executing it. * ld_lib_path.sh (last_path_part, tool_path_part, dir, additional, lib_paths, old_IFS): Unset each variable after using it. * GNUstep.csh.in (GNUSTEP_PATHPREFIX): Fixed to be GNUSTEP_PATHPREFIX_LIST. (tp): Renamed to temp_path. (temp_path, dir, gnustep_class_path, TDIR): Unset each variable after using it. Check that GNUSTEP_FLATTENED is empty by using == "". For Tools, add the LIBRARY_COMBO dir to PATH as well when GNUSTEP_FLATTENED. Only set PATH if it doesn't already contain temp_path. Use GNUSTEP_MAKEFILES. Only set the CLASSPATH if it doesn't already contain gnustep_class_path. Look for and source $GNUSTEP_USER_ROOT/GNUstep.csh rather than ~/GNUstep/GNUstep.csh. Check that make_services is executable, not only that it exists, before executing it. * ld_lib_path.csh (tool_path_part, last_path_part, host_os, additional, dir, lib_paths): Unset them after using them. Thu Jan 10 15:13:35 2002 Nicola Pero * configure.in: Do not source ../Version. * configure: Regenerated. Wed Jan 9 11:08:57 2002 Nicola Pero * config.guess: Updated to latest version. * config.sub: Idem. 2002-01-07 Adam Fedor * Version: 1.2.1 * Documentation/gnustep-howto.texi, install.texi, news.texi: Update. 2002-01-06 Richard Frith-Macdonald * documentation.make: quick hack for agsdoc install to ignore failure of the re-link operation. Sat Jan 5 06:55:54 2002 Nicola Pero * documentation.make (internal-doc-install, internal-doc-uninstall): New rules with support for xxx_INSTALL_FILES, which can be used for non-preprocessed files. 2002-01-05 Richard Frith-Macdonald * ld_lib_path.sh: Setup GUILE_LOAD_PATH * ld_lib_path.csh: ditto 2002-01-04 Richard Frith-Macdonald * documentation.make: revert to old autogsdoc rules as standard, keeping new ruleset as 'experimental' ... should allow people to use autogsdoc stuff reliably using the release Adam is planning to do real soon and pending us getting the new rules working properly. Retain checks for libxml for cleaner handling of case where it is not present. Modify experimental code to have html files depend on the igsdoc file so that their cross references get set up correctly. Outstanding requirements for experimental rules ... need to get dependency on .m files working and probably other things (certainly performance improvements needed). Fri Jan 4 15:37:19 2002 Nicola Pero * documentation.make: autogsdoc rules - rewritten. Fri Jan 4 08:09:26 2002 Nicola Pero * target.make (SHARED_LIBEXT): For HP-UX IA64, use .so rather than .sl as the shared library extension (Patch from Dominique Dumont ). 2001-12-29 Adam Fedor * Documentation/README.NetBSD: Typos. * Documentation/faq.texi: Update. * Documentation/machines.texi: Likewise. 2001-12-26 Adam Fedor * target.make (darwin1): Use NeXT Compiler when using NeXT runtime. Tue Dec 25 08:57:37 2001 Nicola Pero * which_lib.c (stripstr): Removed check for len == 0. Fri Dec 21 19:03:49 2001 Nicola Pero * documentation.make ($(INTERNAL_doc_NAME)): New target for AGSDOC_FILES. (generate-autogsdoc): Depend on it. Thu Dec 20 23:27:42 2001 Nicola Pero * common.make: Disable the check on PATH if we are running on an Apple system (Requested by Helge Hess). Mon Dec 17 11:10:23 2001 Nicola Pero * bundle.make (internal-bundle-install): Another tar option update for portability: create a temporary exclude file and use X old option instead of --exclude option. 2001-12-15 Richard Frith-Macdonald * documentation.make: added basic support for building documentation using the autogsdoc program. * rules.make: ditto 2001-12-14 Adam Fedor * application.make: Use pl2link to create a .desktop file. Install it in the app package. Fri Dec 14 12:32:45 2001 Nicola Pero * palette.make (internal-palette-install): If CHOWN_TO is defined, chown the installed dir. Fri Dec 14 12:22:44 2001 Nicola Pero Implemented strip=yes. * config.make.in (STRIP): New variable. * rules.make (INSTALL_PROGRAM): Add -s if strip=yes. (strip): Export if defined to be yes. * application.make (internal-app-install): Strip the installed executable if strip=yes. * bundle.make (internal-bundle-install): Idem. * framework.make (internal-framework-install): Idem. * gswapp.make (internal-gswapp-install): Idem. * gswbundle.make (internal-bundle-install): Idem. * palette.make (internal-palette-install): Idem. * service.make (internal-service-install): Idem. Thu Dec 13 12:27:18 2001 Nicola Pero * java-tool.make ($(GNUSTEP_INSTALLATION_DIR)/Tools/$(INTERNAL_java_tool_NAME)): Run chown on the installed executable template. Thu Dec 13 12:00:31 2001 Nicola Pero * GNUmakefile.in (install): Create more GNUSTEP_SYSTEM_ROOT and GNUSTEP_LOCAL_ROOT directories. Thu Dec 13 10:23:19 2001 Nicola Pero * rules.make (INSTALL_AS_USER, INSTALL_AS_GROUP): Export them if they are defined. 2001-12-12 Adam Fedor * common.make (ADDITIONAL_FLAGS): Defines for diagnose flag. Wed Dec 12 22:59:00 2001 Manuel Guesdon * gswapp.make: adding resource-dirs and webresource-dirs installation Wed Dec 12 17:12:54 2001 Nicola Pero * common.make: Moved all INSTALL_AS_USER and INSTALL_AS_GROUP related code to rules.make so that INSTALL_AS_USER and INSTALL_AS_GROUP can be safely defined in the GNUmakefile.preamble. Wed Dec 12 16:00:54 2001 Nicola Pero * common.make (AFTER_INSTALL_LIBRARY_CMD): Append AFTER_INSTALL_SHARED_LIB_CHOWN if we are creating shared libs and CHOWN_TO is defined. * target.make (AFTER_INSTALL_SHARED_LIB_CHOWN): New variable. Wed Dec 12 14:57:47 2001 Nicola Pero * tool.make ($(TOOL_INSTALLATION_DIR)): Use MKINSTALLDIRS, not MKDIRS. Wed Dec 12 14:44:16 2001 Nicola Pero * mkinstalldirs: Do not run chown if mkdir fails. Wed Dec 12 13:25:21 2001 Nicola Pero Implemented INSTALL_AS_USER and INSTALL_AS_GROUP. * config.make.in (CHOWN): New variable - define. * configure.in (CHOWN): Added test for chown. * configure: Regenerated. * common.make (INSTALL_AS): New variable - define. (INSTALL): Append INSTALL_AS at the end. (CHOWN_TO): New variable - define. (MKINSTALLDIRS): New variable - define. * mkinstalldirs: Modified to recognize a `-c CHOWN_TO' option, running chown as needed when that option is passed. * tool.make (install-tool): Use INSTALL_DATA, not cp, to install executable.template. * ctool.make (install-ctool): Idem. * application.make (internal-app-install): If CHOWN_TO is defined, run chown after installing, to set user and group. * bundle.make (internal-bundle-install): Idem. * documentation.make (internal-doc-install): Idem - for JAVADOC_FILES. * Documentation/makedoc.make: Idem. * framework.make (internal-framework-install): Idem. * gswapp.make (internal-gswapp-install): Idem. * gswbundle.make (internal-bundle-install): Idem. * service.make (internal-service-install): Idem. * application.make ($(GNUSTEP_APPS)): Use MKINSTALLDIRS, not MKDIRS, to create the installation directory. * bundle.make ($(BUNDLE_INSTALL_DIR)): Idem. (internal-bundle-install): Idem. * clibrary.make ($(FINAL_LIBRARY_INSTALL_DIR)): Idem. ($(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR)): Idem. ($(DLL_INSTALLATION_DIR)): Idem. ($(ADDITIONAL_INSTALL_DIRS)): Idem. * ctool.make ($(CTOOL_INSTALLATION_DIR)): Idem. * documentation.make ($(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR)): Idem. * framework.make ($(GNUSTEP_FRAMEWORKS_HEADERS)): Idem. ($(GNUSTEP_FRAMEWORKS_LIBRARIES)/$(GNUSTEP_TARGET_LDIR)): Idem. ($(FRAMEWORK_INSTALL_DIR)): Idem. ($(DLL_INSTALLATION_DIR)): Idem. (internal-framework-install): Idem. * gswapp.make (internal-gswapp-install): Idem. * gswbundle.make (internal-bundle-install): Idem. ($(GSWBUNDLE_INSTALL_DIR)): Idem. * java.make ($(JAVA_INSTALLATION_DIR)): Idem. (internal-install-java-dirs): Idem. * java-tool.make ($(JAVA_TOOL_INSTALLATION_DIR)): Idem. (internal-install-java_tool-dirs): Idem. * library.make ($(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR)): Idem. ($(FINAL_LIBRARY_INSTALL_DIR)): Idem. ($(ADDITIONAL_INSTALL_DIRS)): Idem. ($(DLL_INSTALLATION_DIR)): Idem. * objc.make ($(OBJC_PROGRAM_INSTALLATION_DIR)): Idem. * palette.make ($(PALETTE_INSTALL_DIR)): Idem. * service.make ($(GNUSTEP_SERVICES)): Idem. * subproject.make ($(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR)): Idem. ($(ADDITIONAL_INSTALL_DIRS)): Idem. * framework.make ($(FRAMEWORK_DIR_NAME)/Resources): Now a separate rule. Wed Dec 12 11:15:13 2001 Nicola Pero * bundle.make (internal-bundle-install): Added a '/' between GNUSTEP_HEADERS and HEADER_FILES_INSTALL_DIR. (internal-bundle-uninstall): Idem. * framework.make (internal-framework-uninstall): Idem. * gswbundle.make (internal-bundle-install): Idem. (internal-bundle-uninstall): Idem. * subproject.make ($(GNUSTEP_HEADERS)$(HEADER_FILES_INSTALL_DIR)): Idem. (internal-install-headers): Idem. (internal-subproject-install): Idem. (internal-subproject-uninstall): Idem. Wed Dec 12 11:07:41 2001 Nicola Pero * gswbundle.make (internal-bundle-install): Removed MKDIRS in excess. Wed Dec 12 11:04:29 2001 Nicola Pero * service.make (internal-service-clean): Unused target - removed. Wed Dec 12 11:02:14 2001 Nicola Pero * config.make.in (RCEXT): Unused variable - removed. (RESEXT): Unused variable - removed. (RC): Unused variable - removed. Mon Dec 10 23:18:52 2001 Nicola Pero * rules.make (%.h): Added rule to build %.h files from %.psw files, needed when installing %.h files generated from %.psw files in frameworks (Patch from Jay McCarthy ). Mon Dec 10 23:02:24 2001 Nicola Pero * bundle.make (internal-bundle-install): Do not attempt to make the Contents/Resources --> Resources symbolic link in the installation directory if Contents/Resources already exists and is a directory - so that we can hopefully work correctly even if tar is broken and passing the --exclude and/or h option to it doesn't work. Mon Dec 10 22:04:09 2001 Nicola Pero * bundle.make (internal-bundle-install): Yet another rephrasing of tar options to get wider portability. Mon Dec 10 17:32:52 2001 Nicola Pero * bundle.make (internal-bundle-install): Use `f -' instead of --to-stdout option to tar. Mon Dec 10 09:54:09 2001 Nicola Pero * application.make (internal-clean): Remove .c and .h files generated by pswrap. * clibrary.make (internal-clean): Idem. * bundle.make (internal-clean): Idem. * framework.make (internal-framework-clean): Idem. * library.make (internal-clean): Idem. * palette.make (internal-clean): Idem. * service.make (internal-clean): Idem. * subproject.make (internal-clean): Idem. * test-application.make (internal-clean): Idem. * test-library.make (internal-clean): Idem. Mon Dec 10 09:18:33 2001 Nicola Pero * Documentation/makedoc.make: Recreated from the top level documentation.make. * Documentation/makerules.make: Recreated from the top level rules.make. * Documentation/GNUmakefile.in (INSTALL, INSTALL_DATA, MKDIRS): Define. (DOCUMENT_TEXT_NAME): Added FAQ. (TOP_DOC_FILES): Added FAQ. (GNUstep-HOWTO_DOC_INSTALL_DIR): Define. (FAQ_DOC_INSTALL_DIR): Idem. (make_DOC_INSTALL_DIR): Idem. (faq_DOC_INSTALL_DIR): Idem. (machines_DOC_INSTALL_DIR): Idem. (gnustep-howto_DOC_INSTALL_DIR): Idem. (internals_DOC_INSTALL_DIR): Idem. (INSTALL_DOC_INSTALL_DIR): Idem. (NEWS_DOC_INSTALL_DIR): Idem. (README_DOC_INSTALL_DIR): Idem. (ANNOUNCE_DOC_INSTALL_DIR): Idem. (DESIGN_DOC_INSTALL_DIR): Idem. (GNUSTEP_PREFIX): Removed this unused variable. (regenerate): Depend on all. (after-install, after-uninstall): Added, to [un]install DESIGN. * FAQ: Regenerated. * GNUstep-HOWTO: Regenerated. Sat Dec 8 14:22:43 2001 Nicola Pero * library-combo.make (OBJC_RUNTIME_LIB, FOUNDATION_LIB, GUI_LIB): Modified code setting these variables to allow the user to override their definition manually. (runtime, foundation, gui): Variables removed - obsoleted - the user should set OBJC_RUNTIME_LIB, FOUNDATION_LIB and GUI_LIB directly. (library_combo, the_library_combo): Simplified code. Sat Dec 8 13:27:12 2001 Nicola Pero * brain.make: Renamed to library-combo.make. * GNUmakefile.in (MAKE_FILES): Updated for change. * common.make: Updated for change. Thu Dec 6 09:11:51 2001 Nicola Pero * bundle.make (internal-bundle-install): Use h option with tar to dereference symbolic links to external files if any; use --exclude Contents/Resources with tar; create the Contents/Resources --> Resources link manually after installing the bundle with tar. Mon Dec 3 10:09:08 2001 Nicola Pero * documentation.make ($(INTERNAL_doc_NAME).tar.gz): Bug fix: added missing z option to tar. Mon Dec 3 09:44:26 2001 Nicola Pero * target.make: New target - Mac OS X 10.1.1 darwin5.1 (Patch by Helge Hess ). Wed Nov 28 18:17:50 2001 Nicola Pero * clibrary.make (LIBRARY_FILE): Fixed typo for BUILD_DLL ... library_name being used instead of clibrary_name. Wed Nov 28 11:18:01 2001 Nicola Pero * configure.in (--with-user-root): New configure option allowing to ask for a different GNUSTEP_USER_ROOT to be used. * configure: Regenerated. * GNUstep.sh.in (GNUSTEP_USER_ROOT): Define from configure if needed. * GNUstep.csh.in: Idem. Wed Nov 28 11:08:07 2001 Nicola Pero * brain.make (WO_LDFLAGS, WO_LIBS, WO_DEFINE): Removed. (Suggested by Helge Hess ). 2001-11-26 Adam Fedor * Documentation/README.NetBSD: Update from jnqt@fbe.freeserve.ne.jp. Thu Nov 22 13:28:34 2001 Nicola Pero * configure.in (AUTO_DEPENDENCIES): New configure check which automatically sets AUTO_DEPENDENCIES to yes if the compiler is GCC => 3.x. * configure: Regenerated. * config.make.in (AUTO_DEPENDENCIES): Added. * rules.make (AUTO_DEPENDENCIES_FLAGS): Set them only if not already set. Thu Nov 22 10:41:39 2001 Nicola Pero * source-distribution.make (tgz): tgz target renamed to dist. (Suggestion by Dan Pascu ). * source-distribution.make (.PHONY): Updated for change. * rpm.make (rpm): Updated for change. * source-distribution.make (TGZ_MAKE_LOADED): Renamed to SOURCE_DISTRIBUTION_MAKE_LOADED. Thu Nov 22 03:05:33 2001 Nicola Pero Implemented support for auto dependencies. Only works with gcc => 3.x. * rules.make: Include appropriate .d dependency files if AUTO_DEPENDENCIES is yes. (AUTO_DEPENDENCIES_FLAGS): Define to be -MMD -MP if AUTO_DEPENDENCIES is yes. (ALL_CPPFLAGS): Add AUTO_DEPENDENCIES_FLAGS. (Idea by Malmberg ). Thu Nov 22 02:52:42 2001 Nicola Pero * depend.make: Obsolete file removed. Thu Nov 22 00:43:33 2001 Nicola Pero * rpm.make (check-RPM_TOPDIR): New target. (rpm): Code to check RPM_TOPDIR moved in the new check-RPM_TOPDIR target; if RELEASE_DIR is set, copy the .tar.gz file from there. (.PHONY): Added check-RPM_TOPDIR. Thu Nov 22 00:06:02 2001 Nicola Pero * source-distribution.make: Rewritten. Bug fixes; new features; all packages built using gnustep-make should now be able to take full advantage of its facilities. Wed Nov 21 15:34:15 2001 Nicola Pero * common.make (ADDITIONAL_JAVAFLAGS): Removed unused variable. (INTERNAL_JAVACFLAGS): Defined to be `-g -deprecation' if debug=yes, and `-O' otherwise. * rules.make (ALL_JAVACFLAGS): Add INTERNAL_JAVACFLAGS. Do not add -deprecation manually. 2001-11-19 Adam Fedor * Documentation/README.NetBSD: Update from jnqt@fbe.freeserve.ne.jp. 2001-11-11 Adam Fedor * Version: 1.2.0 Tue Nov 13 16:27:45 2001 Nicola Pero * rules.make (internal-check-install-permissions): Only check for permission to write if the installation directory exists. Tue Nov 13 14:02:06 2001 Nicola Pero * rpm.make: Fixed check for debug variable so that it correctly manages debug = no. Tue Nov 13 13:57:13 2001 Nicola Pero * common.make: In the check that GNUSTEP_SYSTEM_ROOT/Tools is in the PATH, for windows use cygpath not cygpath.sh (Suggested by Stephen Brandon). Fri Nov 9 13:34:50 2001 Nicola Pero * opentool.in: Fixed (again!) the fact that if there is both a local and an installed tool, the local one should be used, not the installed one. Rewritten checks for local tools - we now search in ./, then in ./obj, then in ./Tools/, then in ./Tools/obj, then look for an installed tool. 2001-11-08 Adam Fedor * configure.in (TAR): Undo last patch, add configure option to set name of tar command. Wed Nov 7 23:43:19 2001 Nicola Pero * common.make: Moved check that GNUSTEP_SYSTEM_ROOT/Tools is in PATH after including names.make. In the same check, for windows, when calling cygpath.sh, use the full path so it should find it even if PATH - which we are just checking - is messed up. Wed Nov 7 08:49:18 2001 Nicola Pero * rules.make ($(GNUSTEP_OBJ_DIR)/%${OEXT}): Put the $<_FILE_FLAGS after the other flags so that they take precendence over them. (%.class, %.h): Idem. Wed Nov 7 08:41:18 2001 Nicola Pero * rules.make ($(GNUSTEP_OBJ_DIR)/%${OEXT}): Implemented support for file specific compilation flags - xxx_FILE_FLAGS to add and xxx_FILE_FILTER_OUT_FLAGS to filter out flags when compiling file xxx. (%.class, %.h): Idem. 2001-11-06 Adam Fedor * configure.in: Use tar on freebsd (patch from kim@tinker.com). Tue Nov 6 20:35:23 2001 Nicola Pero * common.make: When checking that GNUSTEP_SYSTEM_ROOT/Tools is in the PATH, fix - if needed - the tools path on mingw before doing the check (Suggestion originally from Stephen Brandon ). 2001-11-03 Adam Fedor * bundle.make ($(BUNDLE_DIR_NAME)/Resources/Info-gnustep.plist): Add *Info.plist (suggestion from stefanurbanek@yahoo.fr). 2001-10-26 Adam Fedor * Documentation/news.texi: Update Thu Oct 25 10:41:04 2001 Nicola Pero * configure.in: Output a message displaying the version of gnustep-make we are compiling. * configure: Regenerated. * GNUmakefile.in (config.make, gnustep-make.spec): Depend on Version. Use the --recheck option for config.status to force the new Version to be used whenever it's changed. 2001-10-24 Adam Fedor * Version: 1.2.0pre1 * Documentation/README.MinGW: Update. * Documentation/machines.texi: Likewise. * Documentation/news.texi: Likewise. * Documentation/readme.texi: Likewise. * target.make (Solaris BUNDLE_LDFLAGS): Change flags to more modern version. Tue Oct 23 10:47:39 2001 Nicola Pero * clibrary.make (FINAL_LIBRARY_INSTALL_DIR): Define and use everywhere. * library.make (FINAL_LIBRARY_INSTALL_DIR): Idem. * target.make: Replaced everywhere $(LIBRARY_INSTALL_DIR)/$(GNUSTEP_TARGET_LDIR) with $(FINAL_LIBRARY_INSTALL_DIR). 2001-10-18 Richard Frith-Macdonald * rules.make: Use -deprecation for java compiles if debug=yes 2001-10-16 Adam Fedor * Make paths work correctly on Windows/MinGW * GNUmakefile.in: Add cygpath.sh * cygpath.sh: New file. * GNUstep.sh.in: Use Windows method of getting user dir, use cygpath to mangle PATHs. * framework.make (internal-framework-install): Windows (DLL) specific installation. (patches from stephen@brandonitconsulting.co.uk). * configure.in: Simple test for Windows - use C:/GNUstep for default if true. * Documentation/README.MinGW: Updated. * debugapp.in: Use argument with read. * executable.template.in: Print cpu/os on an error. 2001-10-15 Adam Fedor * bundle.make ($(BUNDLE_DIR_NAME)/Contents/Resources): Remove -f (Solaris ln -f doesn't work). * target.make (LIBRARY_INSTALL_DIR): Update for last change removing GNUSTEP_TARGET_DIR. Tue Oct 16 03:30:08 2001 Nicola Pero Warning - very minor backwards incompatible change in the API, which should only affect gnustep-objc. * library.make (LIBRARY_INSTALL_DIR): Changed not to include the GNUSTEP_TARGET_LDIR. All occurrences of LIBRARY_INSTALL_DIR updated for this change. * clibrary.make: New file derived from library.make. It does the same, but installs in a different way. * GNUmakefile.in (MAKE_FILES): Added clibrary.make. 2001-10-09 Adam Fedor * config.site: Fix for empty target. (suggested by Laurent.Julliard@xrce.xerox.com). Mon Oct 8 14:06:30 2001 Nicola Pero * service.make (CPP_FLAGS): Add the DLL flags for ALL_GUI_LIBS if WITH_DLL is yes (patch prepared with Stephen Brandon ). Mon Oct 1 03:16:05 2001 Nicola Pero Warning - backwards incompatible change in API. * common.make (GNUSTEP_LIBRARIES): Redefine to be what was called GNUSTEP_LIBRARIES_ROOT before. (GNUSTEP_FRAMEWORKS_LIBRARIES): Redefine to be what was called GNUSTEP_FRAMEWORKS_LIBRARIES_ROOT before. (GNUSTEP_LIBRARIES_ROOT): Deprecated. (GNUSTEP_FRAMEWORKS_LIBRARIES): Deprecated. (GNUSTEP_RESOURCES, GNUSTEP_JAVA): Define standalone without relying on GNUSTEP_LIBRARIES. * framework.make: Updated for change - all occurrences of $(GNUSTEP_FRAMEWORKS_LIBRARIES) replaced with $(GNUSTEP_FRAMEWORKS_LIBRARIES)/$(GNUSTEP_TARGET_LDIR). * library.make (LIBRARY_INSTALL_DIR): Updated for change - use $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) rather than $(GNUSTEP_LIBRARIES). Mon Oct 1 02:51:10 2001 Nicola Pero * common.make (GNUSTEP_TARGET_LIBRARIES): Variable removed. (GNUSTEP_LIBRARIES): Updated definition. (GNUSTEP_FRAMEWORKS_TARGET_LIBRARIES): Variable removed. (GNUSTEP_FRAMEWORKS_LIBRARIES): Updated definition. Sun Sep 30 14:50:13 2001 Nicola Pero * common.make (GNUSTEP_SYSTEM_LIBRARIES_ROOT): Variable removed. (GNUSTEP_SYSTEM_FRAMEWORKS_LIBRARIES_ROOT): Idem. (GNUSTEP_SYSTEM_FRAMEWORKS_HEADERS): Idem. (GNUSTEP_SYSTEM_LIBRARIES_FLAGS): Updated definition. (GNUSTEP_SYSTEM_FRAMEWORKS_LIBRARIES_FLAGS): Idem. (GNUSTEP_SYSTEM_FRAMEWORKS_HEADERS_FLAGS): Idem. (GNUSTEP_LOCAL_LIBRARIES_ROOT): Corresponding change. (GNUSTEP_LOCAL_FRAMEWORKS_LIBRARIES_ROOT): Idem. (GNUSTEP_LOCAL_FRAMEWORKS_HEADERS): Idem. (GNUSTEP_LOCAL_LIBRARIES_FLAGS): Idem. (GNUSTEP_LOCAL_FRAMEWORKS_LIBRARIES_FLAGS): Idem. (GNUSTEP_LOCAL_FRAMEWORKS_HEADERS_FLAGS): Idem. (GNUSTEP_USER_LIBRARIES_ROOT): Corresponding change. (GNUSTEP_USER_FRAMEWORKS_LIBRARIES_ROOT): Idem. (GNUSTEP_USER_FRAMEWORKS_HEADERS): Idem. (GNUSTEP_USER_LIBRARIES_FLAGS): Idem. (GNUSTEP_USER_FRAMEWORKS_LIBRARIES_FLAGS): Idem. (GNUSTEP_USER_FRAMEWORKS_HEADERS_FLAGS): Idem. (GNUSTEP_NETWORK_LIBRARIES_ROOT): Corresponding change. (GNUSTEP_NETWORK_FRAMEWORKS_LIBRARIES_ROOT): Idem. (GNUSTEP_NETWORK_FRAMEWORKS_HEADERS): Idem. (GNUSTEP_NETWORK_LIBRARIES_FLAGS): Idem. (GNUSTEP_NETWORK_FRAMEWORKS_LIBRARIES_FLAGS): Idem. (GNUSTEP_NETWORK_FRAMEWORKS_HEADERS_FLAGS): Idem. Sun Sep 30 14:22:16 2001 Nicola Pero * common.make (GNUSTEP_SYSTEM_FRAMEWORKS_LIBRARIES): Variable removed. (GNUSTEP_SYSTEM_FRAMEWORKS_LIBRARIES_FLAGS): Updated definition for removal of variable. (GNUSTEP_LOCAL_FRAMEWORKS_LIBRARIES): Corresponding change. (GNUSTEP_LOCAL_FRAMEWORKS_LIBRARIES_FLAGS): Corresponding change. (GNUSTEP_USER_FRAMEWORKS_LIBRARIES): Corresponding change. (GNUSTEP_USER_FRAMEWORKS_LIBRARIES_FLAGS): Corresponding change. (GNUSTEP_NETWORK_FRAMEWORKS_LIBRARIES): Corresponding change. (GNUSTEP_NETWORK_FRAMEWORKS_LIBRARIES_FLAGS): Corresponding change. Sun Sep 30 14:09:05 2001 Nicola Pero * common.make (GNUSTEP_SYSTEM_LIBRARIES): Variable removed. (GNUSTEP_SYSTEM_TARGET_LIBRARIES): Variable removed. (GNUSTEP_SYSTEM_LIBRARIES_FLAGS): Updated for removal of variables. Do not duplicate flags in case GNUSTEP_FLATTENED. (GNUSTEP_LOCAL_LIBRARIES): Corresponding change. (GNUSTEP_LOCAL_TARGET_LIBRARIES): Corresponding change. (GNUSTEP_LOCAL_LIBRARIES_FLAGS): Corresponding change. (GNUSTEP_NETWORK_LIBRARIES): Corresponding change. (GNUSTEP_NETWORK_TARGET_LIBRARIES): Corresponding change. (GNUSTEP_NETWORK_LIBRARIES_FLAGS): Corresponding change. (GNUSTEP_USER_LIBRARIES): Corresponding change. (GNUSTEP_USER_TARGET_LIBRARIES): Corresponding change. (GNUSTEP_USER_LIBRARIES_FLAGS): Corresponding change. Sun Sep 30 14:03:02 2001 Nicola Pero * common.make (GNUSTEP_LOCAL_TARGET_LIBRARIES_FLAGS): Variable removed. Flag moved into GNUSTEP_LOCAL_LIBRARIES_FLAGS. (GNUSTEP_USER_TARGET_LIBRARIES_FLAGS): Idem. (GNUSTEP_NETWORK_TARGET_LIBRARIES_FLAGS): Idem. * rules.make (ALL_LIB_DIRS, LIB_DIRS_NO_SYSTEM): No longer need to add GNUSTEP_LOCAL_TARGET_LIBRARIES_FLAGS as GNUSTEP_LOCAL_LIBRARIES_FLAGS is enough now. Similar for GNUSTEP_USER_TARGET_LIBRARIES_FLAGS and GNUSTEP_NETWORK_TARGET_LIBRARIES_FLAGS. Sun Sep 30 13:46:38 2001 Nicola Pero * test-library.make ($(SCRIPTS_DIRECTORY)/config/unix.exp): Do not use GNUSTEP_SYSTEM_LIBRARIES_ROOT or similar variables considered internal to common.make; use the obvious replacement $(GNUSTEP_SYSTEM_ROOT)/Libraries and similar instead. Sun Sep 30 13:36:43 2001 Nicola Pero * common.make: (GNUSTEP_SYSTEM_FRAMEWORKS_TARGET_LIBRARIES): Variable removed. (GNUSTEP_SYSTEM_FRAMEWORKS_LIBRARIES): Definition updated for removal of variable. (GNUSTEP_LOCAL_FRAMEWORKS_TARGET_LIBRARIES), (GNUSTEP_LOCAL_FRAMEWORKS_LIBRARIES): Similar changes. (GNUSTEP_USER_FRAMEWORKS_TARGET_LIBRARIES), (GNUSTEP_USER_FRAMEWORKS_LIBRARIES): Similar changes. (GNUSTEP_NETWORK_FRAMEWORKS_TARGET_LIBRARIES), (GNUSTEP_NETWORK_FRAMEWORKS_LIBRARIES): Similar changes. Sun Sep 30 13:22:39 2001 Nicola Pero * common.make (GNUSTEP_LOCAL_FRAMEWORKS_TARGET_LIBRARIES_FLAGS): Variable removed. (GNUSTEP_NETWORK_FRAMEWORKS_TARGET_LIBRARIES_FLAGS): Idem. (GNUSTEP_USER_FRAMEWORKS_TARGET_LIBRARIES_FLAGS): Idem. Sun Sep 30 13:10:43 2001 Nicola Pero * common.make (GNUSTEP_SYSTEM_HEADERS_FLAGS): New variable. (GNUSTEP_SYSTEM_FRAMEWORKS_HEADERS_FLAGS): Idem. (GNUSTEP_SYSTEM_LIBRARIES_FLAGS): Idem. (GNUSTEP_SYSTEM_FRAMEWORKS_LIBRARIES_FLAGS): Idem. * rules.make (ALL_OBJCFLAGS): Use the new variables. (ALL_CFLAGS): Idem. (LIB_DIRS_NO_SYSTEM): Idem. (ALL_LIB_DIRS): Idem. (ALL_FRAMEWORK_DIRS): Idem. Sun Sep 30 12:55:14 2001 Nicola Pero * common.make (GNUSTEP_LOCAL_LIBRARIES_FLAG): Renamed to GNUSTEP_LOCAL_LIBRARIES_FLAGS. (GNUSTEP_USER_LIBRARIES_FLAG): Similar change. (GNUSTEP_NETWORK_LIBRARIES_FLAG): Similar change. (GNUSTEP_LOCAL_TARGET_LIBRARIES_FLAG): Renamed to GNUSTEP_LOCAL_TARGET_LIBRARIES_FLAGS. (GNUSTEP_USER_TARGET_LIBRARIES_FLAG): Similar change. (GNUSTEP_NETWORK_TARGET_LIBRARIES_FLAG): Similar change. (GNUSTEP_LOCAL_FRAMEWORKS_LIBRARIES_FLAG): Renamed to GNUSTEP_LOCAL_FRAMEWORKS_LIBRARIES_FLAGS. (GNUSTEP_USER_FRAMEWORKS_LIBRARIES_FLAG): Similar change. (GNUSTEP_NETWORK_FRAMEWORKS_LIBRARIES_FLAG): Similar change. (GNUSTEP_LOCAL_FRAMEWORKS_TARGET_LIBRARIES_FLAG): Renamed to GNUSTEP_LOCAL_FRAMEWORKS_TARGET_LIBRARIES_FLAGS. (GNUSTEP_USER_FRAMEWORKS_TARGET_LIBRARIES_FLAG): Similar change. (GNUSTEP_NETWORK_FRAMEWORKS_TARGET_LIBRARIES_FLAG): Similar change. (GNUSTEP_LOCAL_HEADERS_FLAG): Renamed to GNUSTEP_LOCAL_HEADERS_FLAGS. (GNUSTEP_USER_HEADERS_FLAG): Renamed to (GNUSTEP_NETWORKS_HEADERS_FLAG): Renamed to (GNUSTEP_LOCAL_FRAMEWORKS_HEADERS_FLAG): Renamed to GNUSTEP_LOCAL_FRAMEWORKS_HEADERS_FLAGS. (GNUSTEP_USER_FRAMEWORKS_HEADERS_FLAG): Renamed to (GNUSTEP_NETWORKS_FRAMEWORKS_HEADERS_FLAG): Renamed to (GNUSTEP_HEADERS_TARGET_FLAG): Renamed to GNUSTEP_HEADERS_TARGET_FLAGS. * rules.make (ALL_OBJCFLAGS): Updated for variable name change. (ALL_CFLAGS): Idem. (ALL_FRAMEWORK_DIRS): Idem. (ALL_LIB_DIRS): Idem. (LIB_DIRS_NO_SYSTEM): Idem. Sun Sep 30 12:09:52 2001 Nicola Pero * common.make: (GNUSTEP_LOCAL_TARGET_LIBRARIES_FLAG): Define - fixing the bug that -L/opt/GNUstep/Local/Libraries/ix86/linux-gnu was missing on the link line. 2001-09-25 Adam Fedor * Documentation/README.MinGW: Update * Documentation/machines.texi: Likewise. * GNUstep-HOWTO: Regen. Fri Sep 21 13:39:08 2001 Nicola Pero * application.make ($(APP_FILE)): Added ALL_FRAMEWORK_DIRS to the link command. Wed Sep 19 18:40:00 2001 Nicola Pero * palette.make ($(PALETTE_FILE)): Fixed typo, OBJC_FILES_TO_LINK which should have been OBJ_FILES_TO_LINK Tue Sep 18 13:16:08 2001 Nicola Pero * library.make (internal-install-dirs): Depend on $(LIBRARY_INSTALL_DIR) rather than on $(GNUSTEP_LIBRARIES) and $(GNUSTEP_LIBRARIES_ROOT)/$(GNUSTEP_TARGET_DIR). ($(GNUSTEP_LIBRARIES_ROOT)/$(GNUSTEP_TARGET_DIR)): Target removed. ($(GNUSTEP_LIBRARIES)): Target removed. ($(LIBRARY_INSTALL_DIR)): New target. * tool.make (internal-tool-uninstall): Remove the shell script wrapper. * library.make (internal-uninstall-lib): When not using DLL, remove the $(SONAME_LIBRARY_FILE) as well. Mon Sep 17 14:23:03 2001 Nicola Pero * bundle.make ($(BUNDLE_FILE)): Added missing \ at the end of line. Sun Sep 16 17:32:29 2001 Nicola Pero * rules.make (CURRENT_FRAMEWORK_HEADERS_FLAG): New variable; define it to be -I$(DERIVED_SOURCES) if we are compiling as part of a framework. (ALL_OBJCFLAGS, ALL_CFLAGS): Added $(CURRENT_FRAMEWORK_HEADERS_FLAG) to the flags. Sat Sep 15 13:59:31 2001 Nicola Pero * rules.make (OBJ_FILES_TO_LINK): New variable holding all object files to be linked into the resulting app or lib or whatever. * application.make ($(APP_FILE)): Use the new variable rather than listing manually all different object files. * bundle.make ($(BUNDLE_FILE)): Idem. * framework.make ($(FRAMEWORK_FILE)): Idem. ($(DUMMY_FRAMEWORK_FILE)): Idem. * gswapp.make ($(GSWAPP_FILE)): Idem. * gswbundle.make ($(GSWBUNDLE_FILE)): Idem. * library.make ($(GNUSTEP_OBJ_DIR)/$(VERSION_LIBRARY_FILE)): Idem. * objc.make ($(GNUSTEP_OBJ_DIR)/$(INTERNAL_objc_program_NAME)$(EXEEXT)): Idem. * palette.make ($(PALETTE_FILE)): Idem. * service.make ($(SERVICE_FILE)): Idem. * subproject.make ($(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT)): Idem. * test-library.make ($(GNUSTEP_OBJ_DIR)/$(INTERNAL_testlib_NAME)): Idem. * tool.make ($(GNUSTEP_OBJ_DIR)/$(INTERNAL_tool_NAME)$(EXEEXT)): Idem. * library.make (DLL_OFILES): Replaced with OBJ_FILES_TO_LINK. Implemented support for C++ files. * rules.make (.SUFFIXES): Added .C, .cp, .cpp, .cxx, .cc. (ALL_CCFLAGS): New variable. ($(GNUSTEP_OBJ_DIR)/%${OEXT}): Added implicit rules for building object files from .C, .cp, .cpp, .cxx and .cc files. (%.variables): Extract CC_FILES from xxx_CC_FILES, and pass them down to the submake. (CC_OBJS, CC_OBJ_FILES): New variables. (OBJ_FILES_TO_LINK): Added CC_OBJ_FILES. 2001-09-14 Adam Fedor * debian/changelog: Minor fixes to get debian to build correctly (suggestions from James.Mills@tenzing.com). Thu Sep 13 23:20:36 2001 Nicola Pero * GNUmakefile.in (install): Do not install rootinstall.sh and rootuninstall.sh. (uninstall): Do not uninstall rootinstall.sh and rootuninstall.sh Thu Sep 13 23:17:52 2001 Nicola Pero * test-tool.make (internal-check): Removed. 2001-09-12 Adam Fedor * target.make (TARGET_SYSTEM_LIBS): Remove -lgcc from darwin/MacOSX/NeXT targets. 2001-09-11 Adam Fedor * brain.make: If nx-gnu-gnu, add -lobjc to OBJC_LIBS * target.make: Extend darwin1.1 rule to darwin1.x Tue Sep 11 12:19:24 2001 Nicola Pero * rules.make (before-install): Removed code to check installation permissions. (internal-check-install-permissions): New target with code to check installation permissions, extended to give more extensive help. (install): At makelevel 0, depend on internal-check-install-permissions before all. Tue Sep 11 10:44:11 2001 Nicola Pero * documentation.make (internal-doc-clean): Added a complete recursive cleaning of the INTERNAL_doc_NAME directory for javadoc. Tue Sep 11 10:39:39 2001 Nicola Pero * documentation.make (internal-doc-clean): Removed buggy `;' at the end of line which was causing the last files to be considered a command by the shell rather than arguments to `rm'. Mon Sep 10 15:40:06 2001 Nicola Pero * documentation.make (internal-doc-clean): Fixed make clean for gsdoc - removed old useless shell loop which was causing rm to be run unnecessarily many times. Mon Sep 10 11:25:58 2001 Nicola Pero * rootinstall.sh: Removed as obsolete. * rootuninstall.sh: Idem. Tue Sep 4 16:23:12 2001 Nicola Pero * bundle.make (bundle-localized-resource-files): Use -d instead of ! -f to check for existence of .lproj dirs; emit a warning if a required .lproj directory is not found; run the localizable resource copying code only if the .lproj directory actually exists. * application.make (app-localized-resource-files): Idem. * framework.make (framework-components): Idem (but no warning here). (framework-localized-resource-files): Idem. (framework-localized-webresource-files): Idem. * subproject.make (framework-components): Idem, plus fixed wrong dirs and missing fi. (framework-localized-resource-files): Idem, plus fixed misplaced fi. * gswapp.make (gswapp-components): Idem (no warning here), plus fixed wrong dir. (gswapp-localized-resource-files): Idem, plus fixed wrong dir. (gswapp-localized-webresource-files): Idem, plus fixed wrong dir. * gswbundle.make (gswbundle-components): Idem (no warning here), plus fixed wrong dir. (gswbundle-localized-resource-files): Idem, plus fixed wrong dir. (gswbundle-localized-webresource-files): Idem, plus fixed wrong dir. * framework.make (framework-localized-webresource-files): Rearranged code; always install the new localized webresource files over the old ones if any. * gswapp.make (gswapp-localized-webresource-files): Do not echo the full shell commands. (gswapp-localized-resource-files): Idem. (gswapp-resource-files): Idem. (gswapp-webresource-files): Idem (also removed final semicolon here). (gswapp-components): Idem. (gswapp-components): Depend on $(GSWAPP_DIR_NAME)/Resources rather than $(GSWAPP_DIR_NAME). * gswbundle.make (internal-clean): Use GSWBUNDLE_NAME rather than BUNDLE_NAME. (GSWBUNDLE_EXTENSION): Define as it wasn't defined anywhere. I used .gswbundle as a guess of what it should be. Mon Sep 3 17:24:43 2001 Nicola Pero * gswbundle.make (gswbundle-webresource-files): Fixed misplaced parenthesis in check for empty WEBSERVER_RESOURCE_FILES. (internal-bundle-install): Removed \ in excess. Mon Sep 3 15:13:49 2001 Nicola Pero * rules.make (before-install): If MAKELEVEL is 0, check that GNUSTEP_INSTALLATION_DIR is writable by us; if it isn't, abort with an error message. Fri Aug 31 15:33:30 2001 Nicola Pero * bundle.make (bundle-localized-resource-files): Bug fix - added missing ) at then end of command. 2001-08-21 Adam Fedor * configure.in (gs_cv_objc_libdir): Don't look for gcc's installed libobjc.so since it's usually in a standard dir anyway. Mon Aug 6 19:15:35 2001 Nicola Pero * library.make (internal-install-dirs): Insert a / between $(GNUSTEP_HEADERS) and $(HEADER_FILES_INSTALL_DIR). ($(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR)): Idem. (internal-install-headers): Idem. (internal-uninstall-headers): Idem. 2001-08-02 Adam Fedor * GNUstep.sh.in: Look for user script in ~/GNUstep. * GNUstep.csh.in: Likewise. Mon Jul 30 20:15:48 2001 Nicola Pero * documentation.make (HAS_LATEX2HTML): New variable to reduce the number of times that LATEX2HTML is evaluated. 2001-07-26 Adam Fedor * GNUstep.csh.in: Set GCC_SO_DIR * GNUstep.sh.in: Export GCC_SO_DIR * ld_lib_path.sh: Use it in library path. * ld_lib_path.csh: Likewise. * gnustep-make.spec.in: Remove csh rules so rpm won't depend on csh. * Documentation/README.MingW: Update. * Documentation/machines.texi: Likewise. Thu Jul 26 12:26:10 2001 Nicola Pero * Documentation/internals.tex: Revised and updated this document to describe the new gnustep-make internals. Tue Jul 24 13:48:24 2001 Nicola Pero * rules.make (ALL_JAVADOCFLAGS): Readded INTERNAL_JAVADOCFLAGS which had been removed by mistaked. 2001-07-19 Adam Fedor * documentation.make (LATEX2HTML): Filter out which error messages. * Documentation/makedoc.make: Likewise. * Documentation/readme.texi: Explain license more clearly. * Documentation/gnustep-howto.texi: Likewise. * Documentation/README.MinGW: Update. Thu Jul 19 10:35:22 2001 Nicola Pero * application.make: Removed annoying debugging message. Mon Jul 16 11:35:51 2001 Nicola Pero * bundle.make (internal-clean): Depend on .subprojects; make clean rules moved here; modified to remove all compiled bundles by using BUNDLE_NAME. (internal-distclean): Idem. (internal-bundle-clean, internal-bundle-distclean): Idem. * gswbundle.make: Same changes to the same rules. Fri Jul 13 18:31:26 2001 Nicola Pero * test-application.make (APP_EXTENSION): Set it, fixing the bug on make clean. Fri Jul 13 18:29:03 2001 Nicola Pero * application.make (internal-clean): Simplified by using GNUSTEP_OBJ_DIR. * gswapp.make (internal-clean): Idem. * service.make (internal-clean): Idem. * test-application.make (internal-clean): Idem. Fri Jul 13 17:55:45 2001 Nicola Pero * test-library.make (internal-clean): Depend on .subprojects; make clean rules moved here. (internal-distclean): Idem. (internal-testlib-distclean): Removed. (internal-testlib-clean): Removed. Fri Jul 13 17:53:38 2001 Nicola Pero * test-application.make (internal-clean, internal-distclean): Updated to changes in application.make. Fri Jul 13 17:48:55 2001 Nicola Pero * documentation.make (internal-doc-clean): Ignore problems in make clean. Fri Jul 13 17:35:13 2001 Nicola Pero * subproject.make (internal-clean): Commands to make clean moved here; depend on .subprojects. (internal-distclean): Idem. (internal-subproject-clean, internal-subproject-distclean): Removed. Fri Jul 13 17:26:49 2001 Nicola Pero * palette.make (internal-clean): Commands to make clean moved here; depend on .subprojects. (internal-palette-clean): Removed. (.PHONY): Removed internal-palette-clean. * service.make (internal-clean): Commands to make clean moved here; depend on .subprojects. (internal-svc-clean): Removed. (.PHONY): Removed internal-svc-clean. * service.make: All targets renamed by replacing `svc' with `service'. Fri Jul 13 17:19:05 2001 Nicola Pero * library.make (internal-clean): Commands to make clean moved here; depend on .subprojects. (internal-distclean): Idem. (internal-library-clean, internal-library-distclean): Removed. (.PHONY): Removed internal-library-clean and internal-library-distclean. * objc.make (internal-clean): Commands to make clean moved here; depend on .subprojects. (internal-distclean): Idem. (internal-objc_program-clean, internal-objc_program-distclean): Removed. (.PHONY): Removed internal-objc_program-clean and internal-objc_program-distclean. Fri Jul 13 16:48:29 2001 Nicola Pero * application.make (internal-clean): Commands to make clean moved here; depend on .subprojects. (internal-distclean): Idem. (internal-app-clean, internal-app-distclean): Removed. (.PHONY): Removed internal-app-clean and internal-app-distclean. * gswapp.make: Identical changes. Fri Jul 13 16:17:36 2001 Nicola Pero * tool.make (internal-clean): Short-cut the recursive make invocation, and clean immediately for all tools here. But depend on the .subprojects rule in order to make clean in eventual subprojects. (internal-distclean): Idem. (internal-tool-clean): Removed. (internal-tool-distclean): Removed. (.PHONY): Removed internal-tool-clean and internal-tool-distclean. * ctool.make: Exactly the same changes as in tool.make. * test-tool.make (internal-clean): Updated to mirror the change in tool.make. (internal-distclean): Idem. Fri Jul 13 13:45:54 2001 Nicola Pero * rules.make (%.variables, %.tools, %.subprojects): Removed usage of $(call ...) for backward compatibility with old versions of GNU make. Fri Jul 13 10:18:15 2001 Nicola Pero * rules.make (%.subprojects): Use the __done trick. (%.tools): Idem. Thu Jul 12 18:10:31 2001 Nicola Pero * subproject.make (.PHONY): Added. (localized-framework-resource-files): Renamed to framework-localized-resource-files for consistency. Thu Jul 12 17:26:40 2001 Nicola Pero * rules.make (%.variables): Depend on %.tools and %.subprojects. Corresponding code to build framework tools and subprojects moved into new %.tools and %.subprojects rules. (.PRECIOUS): Added %.variables, %.subprojects and %.tools to prevent make from trying to delete them as if they were temporary files. Thu Jul 12 16:54:01 2001 Nicola Pero * rules.make (%.variables): Pass TARGET down to submake so that the before-$(TARGET)-all and after-$(TARGET)-all rules actually work. Thu Jul 12 11:54:28 2001 Nicola Pero * rules.make: Removed PROCESS_SECOND_TIME. (%.variables, %.build): Merged the two rules, which removes a make invocation per operation. The new rule is called %.variables, so we no longer have a %.build rule. Wed Jul 11 19:18:57 2001 Nicola Pero * framework.make (framework-components): Use a makefile conditional. (framework-resource-files): Idem. (framework-localized-resource-files): Idem. (framework-localized-webresource-files): Idem. (framework-webresource-files): Idem (framework-webresource-files): Have two rules, include the one which depends on framework-webresource-dir only if we have WEBSERVER_RESOURCE_FILES. (framework-localized-webresource-files): Idem. (framework-webresource-dir): Reorganized to build directories only when needed. Remove the non-link file - if any - before making the link. (localized-framework-resource-files): Renamed to framework-localized-resource-files for consistency. (framework-webresource-files): Rewritten code. Wed Jul 11 18:36:14 2001 Nicola Pero * framework.make ($(DUMMY_FRAMEWORK_FILE)): Simplified, standardized looking for classes in object files. Wed Jul 11 18:17:43 2001 Nicola Pero * framework.make (before-$(TARGET)-all): Do not depend on FRAMEWORK_HEADER_FILES because build-headers already does that. (FRAMEWORK_HEADER_FILES): Use addprefix to manage also header files not ending in .h. (FRAMEWORK_RESOURCE_DIRS): Use addprefix. (FRAMEWORK_WEBSERVER_RESOURCE_DIRS): Idem. (FRAMEWORK_INSTALL_DIR): Use = rather than :=. Wed Jul 11 15:51:43 2001 Nicola Pero * subproject.make (internal-subproject-all): Only depend on framework rules if we are building in a framework. Include the framework rules only if building in a framework. (framework-components): Turned shell conditional into makefile conditional. (localized-framework-resource-files): Idem. (framework-webresource-dir): Idem. (framework-webresource-files): Idem. (framework-localized-webresource-files): Idem. (framework-resource-files): Idem; and do not build the framework resource directory here as it is already built by the framework build-header rules. Wed Jul 11 13:35:49 2001 Nicola Pero * framework.make (internal-framework-all): Do not depend on build-framework-dir as that is already done by before all. (build-framework-dir): Renamed to build-framework-dirs; depend on single separate rules building - only if needed! - the directories rather than building them directly in this rule. Create all the needed symbolic links in this rule. Remove files which are not symbolic links before creating the links. ($(FRAMEWORK_HEADER_FILES)): Do not create any symbolic link in this rule. * subproject.make (internal-install): If not inside a framework, run internal install to install the headers. (internal-uninstall): Idem. ($(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT)): Depend on SUBPROJECT_OBJ_FILES to account for sub-subprojects. ($(FRAMEWORK_HEADER_FILES)): Use makefile conditional; do not create the framework symbolic links which are done by the framework; depend on FRAMEWORK_HEADERS_DIR rather than building it here. ($(FRAMEWORK_HEADERS_DIR)): New rule. All internal installation/uninstallation rules are now included only if FRAMEWORK_NAME is empty. (HEADER_FILES_DIR): Set. (internal-install-subproject-dirs): Removed; added rules to build the single dirs instead. (internal-install-subproject-headers): Renamed to internal-install-headers, and simplified. Wed Jul 11 12:06:29 2001 Nicola Pero * framework.make (before-all): Run internal build-headers target rather than internal before-all target. (internal-framework-before-all): Renamed to internal-framework-build-headers; do not echo a message. * subproject.make (before-all): Renamed to build-headers. (internal-subproj-before-all): Renamed to internal-subproj-build-headers; do not echo a message. * rules.make (%.build): Use build-headers rather than before-all in the ifneq to avoid processing $*_TOOLS. * subproject.make: Changed `subproj' in all targets to the more readable `subproject'. Wed Jul 11 11:34:48 2001 Nicola Pero * rules.make (%.build): When passing xxx_SUBPROJECTS to a submake, call the passed variable _SUBPROJECTS to avoid conflicts with SUBPROJECTS as used by aggregate.make. (SUBPROJECT_OBJ_FILES): Set this variable using _SUBPROJECTS. 2001-07-10 Adam Fedor * configure.in: Quote $gcc_shared_libobjc in test. Tue Jul 10 18:13:51 2001 Nicola Pero * rules.make (%.build): Modified message when processing subprojects, as the operation might not necessarily be building. * subproject.make (internal-subproj-all): Do not depend on before-all and after-all. (build-framework-headers): Renamed to internal-subproj-before-all. Only include this rule for frameworks. (internal-subproj-before-all): Print a message saying that we are building the public headers. (before-all): New rule used only with frameworks. (before-$(TARGET)-all): Do not depend on $(FRAMEWORK_HEADER_FILES) because internal-subproj-before-all does it already. (after-all): Removed. ($(FRAMEWORK_HEADER_FILES)): Use makefile conditional on FRAMEWORK_NAME rather than shell one. Fixed bug: INTERNAL_framework_NAME was used instead of FRAMEWORK_NAME. Tue Jul 10 17:09:34 2001 Nicola Pero * framework.make (build-framework-headers): Renamed to internal-framework-before-all. (internal-framework-before-all): Print a message that we are building the framework public headers. (before-all): New rule. * rules.make (%.build): Removed code running manually a submake invocation to run the build-framework-headers operation. Do not process TOOLS when the operation is before-all. Fixed typo/bug - $ff was used insted of $$f in warning messages. Tue Jul 10 15:46:38 2001 Nicola Pero * rules.make (%.build): Reverted some makefile conditionals to shell conditionals. Tue Jul 10 15:28:21 2001 Nicola Pero * common.make: Protect from multiple inclusions (suggested by Richard). Tue Jul 10 12:13:09 2001 Nicola Pero * test-tool.make: Rewritten. * test-application.make: Idem. Tue Jul 10 11:32:12 2001 Nicola Pero * documentation.make (internal-doc-clean): Do not print clean commands. (internal-textdoc-clean): Idem. (internal-doc-distclean): Idem. Tue Jul 10 11:16:47 2001 Nicola Pero * GNUmakefile.in (MAKE_FILES): Removed woapp.make and wobundle.make. Tue Jul 10 11:13:47 2001 Nicola Pero * documentation.make (internal-doc-clean): Use a single rm command for removing most files. Remove *.aux when latex is used. (internal-doc-distclean): Do not remove *.aux for latex as it is done by clean now. Do not remove *~ as it is already done by clean in rules.make. If latex and latex2html are used, and if $(INTERNAL_doc_NAME) is a directory, then rm -rf it. Tue Jul 10 10:49:59 2001 Nicola Pero * woapp.make: Removed. * wobundle.make: Removed. Tue Jul 10 10:44:11 2001 Nicola Pero * aggregate.make: Do not include rules.make if RULES_MAKE_LOADED is not empty. * application.make: Idem. * bundle.make: Idem. * ctool.make: Idem. * documentation.make: Idem. * framework.make: Idem. * gswapp.make: Idem. * gswbundle.make: Idem. * java-tool.make: Idem. * java.make: Idem. * library.make: Idem. * objc.make: Idem. * palette.make: Idem. * service.make: Idem. * subproject.make: Idem. * test-application.make: Idem. * test-library.make: Idem. * test-tool.make: Idem. * tool.make: Idem. Tue Jul 10 10:17:59 2001 Nicola Pero * rules.make (%.build): Removed doubled code to compute subprojects list. Use extensively makefile conditionals to improve performance and readability. Added more verbose messages about what we are doing when building frameworks. Tue Jul 10 10:08:18 2001 Nicola Pero * java-tool.make (.PHONY): Added _FORCE. 2001-07-09 Adam Fedor * aggregate.make: Propogate GNUSTEP_INSTALLTION_DIR to subprojects. * configure.in: Look for gcc's libobjc.so library. Use it to run tests. * GNUstep.sh.in (GCC_SO_DIR): Holds location of libobjc.so from gcc (Need to pass this along so it is put in LD_LIBRARY_PATH). Mon Jul 9 18:46:59 2001 Nicola Pero * rpm.make (.PHONY): Added. ($(SPEC_FILE)): Use makefile conditionals instead of shell conditionals. * source-distribution.make (.PHONY): Added. Mon Jul 9 18:30:02 2001 Nicola Pero * service.make (internal-svc-install): Depend on $(GNUSTEP_SERVICES). ($(GNUSTEP_SERVICES)): Create the directory if it doesn't exist. (.PHONY): Added. (svc-resource-dir): Removed. (svc-resource-files): Use makefile conditional. (internal-svc-install): Run the commands in a single subshell. Mon Jul 9 18:15:26 2001 Nicola Pero * palette.make (.PHONY): Added. (palette-resource-files): Use makefile conditional. Mon Jul 9 17:58:33 2001 Nicola Pero * objc.make (.PHONY): Added. (internal-install-objc-dirs): Removed. (internal-objc_program-clean): Do not remove $(OBJC_PROGRAM_NAME) because it is not built. Mon Jul 9 17:46:02 2001 Nicola Pero * library.make (.PHONY): Added. (internal-uninstall-import-lib): Unused rule removed. (import-library): Idem. (internal-library-uninstall): Removed duplicated dependency on before-uninstall, after-uninstall. (before-uninstall, after-uninstall): Removed. (internal-install-headers): Turned shell conditional into makefile conditional. (internal-uninstall-lib): Use a single rm command. Mon Jul 9 17:19:17 2001 Nicola Pero * java.make (.PHONY): Added. (internal-java_package-install): Do not depend on internal-java_package-all. (internal-install-java-dirs): Turned shell conditional into makefile conditional. (install-java_package): Idem. (internal-java_package-clean): Use a single rm command. Mon Jul 9 17:02:22 2001 Nicola Pero * java-tool.make (.PHONY): Added. (internal-java_tool-install): Do not depend on internal-java_tool-all. (internal-install-java_tool-dirs): Turned shell conditional into makefile conditional. ($(GNUSTEP_INSTALLATION_DIR)/Tools/$(INTERNAL_java_tool_NAME)): Force rebuilding always to take into account changes in PRINCIPAL_CLASS. (install-java_tool): Turned shell conditionals into makefile ones; strip the variables when checking, and don't use the __done trick. (internal-java_tool-clean): Use a single rm command. * java-executable.template (java_vm): Fixed bug in evaluating shell variables. Mon Jul 9 16:45:09 2001 Nicola Pero * gswbundle.make (localized-gswbundle-resource-files): Renamed to gswbundle-localized-resource-files for consistency with the other makefiles. (.PHONY): Added. (gswbundle-components): Turned shell conditional into makefile conditional. (gswbundle-webresource-files): Idem. (gswbundle-localized-webresource-files): Idem. (gswbundle-resource-files): Idem. (gswbundle-localized-resource-files): Idem. (internal-bundle-install): Idem. (internal-bundle-uninstall): Idem. Mon Jul 9 16:23:19 2001 Nicola Pero * gswapp.make (.PHONY): Added. (internal-gswapp-install): Do not depend on internal-gswapp-all. Run the rule commands in a single subshell. (gswapp-components): Turned shell conditional into makefile conditional. (gswapp-webresource-files): Idem. (gswapp-localized-webresource-files): Idem. (gswapp-resource-files): Idem. (gswapp-localized-resource-files): Idem. Mon Jul 9 16:05:06 2001 Nicola Pero * documentation.make (.PHONY): Added. (internal-textdoc-check, internal-doc-check): Removed. (internal-install-dirs): Removed. (internal-textdoc-install, internal-doc-install): Depend directly on $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR) rather than internal-install-dirs. Mon Jul 9 15:53:54 2001 Nicola Pero * ctool.make (.PHONY): Added. (internal-install-dirs): Removed. (internal-ctool-install): Depend directly on $(CTOOL_INSTALLATION_DIR) rather than internal-install-dirs. (install-ctool): Reorganized for readability. * tool.make (install-tool): Reorganized for readability. Mon Jul 9 14:32:37 2001 Nicola Pero * bundle.make (.PHONY): Added. (bundle-resource-files): Turned shell conditional into makefile conditional; strip RESORCE_FILES. (localized-bundle-resource-files): Idem. (RESOURCE_FILES, LOCALIZED_RESOURCE_FILES): Do not override them to "" if they contain only spaces. (internal-bundle-install): Turned shell conditionals into makefile conditionals. (internal-bundle-uninstall): Idem. (localized-bundle-resource-files): Renamed to bundle-localized-resource-files for consistency with other makefiles. Mon Jul 9 12:49:02 2001 Nicola Pero * application.make (.PHONY): Added. (app-resource-files): Turned shell conditional into makefile conditional; use strip on RESOURCE_FILES. (app-localized-resource-files): Idem. (RESOURCE_FILES, LOCALIZED_RESOURCE_FILES): Do not override them to "" if they contain only spaces. Mon Jul 9 12:26:59 2001 Nicola Pero * application.make (internal-install-dirs): Removed. (internal-app-install): Depend on $(GNUSTEP_APPS) directly. (app-resource-dir): Removed. (app-resource-files, app-localized-resource-files): Depend on $(APP_RESOURCE_DIRS) directly. ($(APP_DIR_NAME)/$(INTERNAL_app_NAME), internal-app-install): Run the shell commands in a single subshell. Mon Jul 9 11:54:20 2001 Nicola Pero * tool.make (.PHONY): Added. (internal-tool-all): Simplified. (install-tool): Turned shell conditional into makefile conditional. Mon Jul 9 11:35:48 2001 Nicola Pero * rules.make ($(GNUSTEP_OBJ_DIR)): Do not protect this rule against multiple inclusions as the whole file is already protected. Mon Jul 9 11:30:21 2001 Nicola Pero * rules.make ($(GNUSTEP_OBJ_DIR)): Send the three shell commands in this rule together. Mon Jul 9 11:08:55 2001 Nicola Pero * rules.make ($(GNUSTEP_MAKEFILES)/*.make): New empty rule. ($(GNUSTEP_MAKEFILES)/$(GNUSTEP_TARGET_DIR)/config.make): Idem. ($(GNUSTEP_MAKEFILES)/Additional/*.make): Idem. * rules.make (%.build): Turned shell `if' conditional for framework into makefile `if[n]eq' conditionals. Fri Jul 6 10:22:46 2001 Nicola Pero * target.make (LD_LIB_PATH): Removed. This old unused variable was seriously degrading performance. Thu Jul 5 11:19:46 2001 Nicola Pero * documentation.make (internal-textdoc-all): Do not depend on before-all and after-all. (internal-doc-clean): Use $(GSDOC_OBJECT_FILES) when installing gsdoc files. (internal-textdoc-clean): Removed gsdoc related code from here. (internal-doc-all): for building gsdoc, depend on $(GSDOC_OBJECT_FILES) rather than $(INTERNAL_doc_NAME).html. ($(INTERNAL_doc_NAME).html): Replaced this rule for gsdoc with a rule for $(GSDOC_OBJECT_FILES). Thu Jul 5 10:28:11 2001 Nicola Pero * rules.make (INTERNAL_CLASSPATHFLAGS): Moved ADDITIONAL_CLASSPATH before CLASSPATH. Wed Jul 4 14:37:36 2001 Nicola Pero * common.make (INTERNAL_JAVACFLAGS, INTERNAL_JAVAHFLAGS): Removed. * rules.make (INTERNAL_CLASSPATHFLAGS): New flags; add ADDITIONAL_CLASSPATH to the -classpath option as well. (ALL_JAVACFLAGS, ALL_JAVAHFLAGS): Use INTERNAL_CLASSPATHFLAGS rather than INTERNAL_JAVACFLAGS and INTERNAL_JAVAHFLAGS. (ALL_JAVADOCFLAGS): Added INTERNAL_CLASSPATHFLAGS. (%.build): Pass ADDITIONAL_CLASSPATH to subprocesses. Fri Jun 29 14:53:51 2001 Nicola Pero * Documentation/.latex2html-init: New file. * Documentation/internals.tex: New document. * Documentation/GNUmakefile.in: Define TAR. Compile internals. Fri Jun 29 14:22:33 2001 Nicola Pero * java.make: Removed old obsolete JAVA_PACKAGE_PREFIX support. 2001-06-28 Adam Fedor * common.make (GNUSTEP_USER_FRAMEWORKS_LIBRARIES_FLAG): Typo fix (was previously overriding GNUSTEP_USER_LIBRARIES_FLAG. 2001-06-22 Adam Fedor * Documentation/gnustep-howto.texi: Update. * Documentation/machines.texi: Update. Thu Jun 21 12:51:34 2001 Nicola Pero * java.make (install-java_package), (internal-java_package-clean): Fixed, simplified, and optimized management of nested classes. * java-tool.make (install-java_tool), (internal-java_tool-clean), (internal-java_tool-uninstall): Idem. Thu Jun 21 10:13:55 2001 Nicola Pero * rules.make (.PHONY): Fixed typo ('=' was used instead of ':') which was causing the phony target declaration to be ignored. * rules.make (install): Depend on `all' target at makelevel 0. * application.make (internal-app-install): Do not depend on internal-app-all. * bundle.make (internal-install): Do not depend on all. * ctool.make (internal-ctool-install): Do not depend on internal-ctool-all. * documentation.make (internal-install): Do not depend on all. * framework.make (internal-install): Do not depend on all. * gswbundle.make (internal-install): Do not depend on all. * library.make (internal-install): Do not depend on all. * objc.make (internal-objc_program-install): Do not depend on internal-objc_program-all. * palette.make (internal-install): Do not depend on all. * subproject.make (internal-install): Do not depend on all. * tool.make (internal-tool-install): Do not depend on internal-tool-all. * wobundle.make (internal-install): Do not depend on all. Wed Jun 20 12:24:35 2001 Nicola Pero * rules.make (.PHONY): Added internal-after-install. Tue Jun 19 10:00:06 2001 Nicola Pero * java-tool.make (install-java_tool): Install nested classes as well. (internal-java_tool-clean): Remove nested classes as well. 2001-06-18 Richard Frith-Macdonald * java.make: Added code to cope with install and clean for inner classes (extra class files generated from .java files) 2001-05-29 Adam Fedor * Version: 1.0.1 2001-05-28 Adam Fedor * config.site: Check GNUSTEP_FLATTENED when setting bindir,libdir. * Documentation/README.MinGW: Update * Documentation/news.texi: Likewise. 2001-05-18 Mirko Viviani * framework.make ($(DUMMY_FRAMEWORK_FILE)): added missed fi. Fri May 18 01:41:03 2001 Nicola Pero * debugapp.in, openapp.in, opentool.in: Fixed adding EXEEXT at the end. 2001-05-12 Mirko Viviani * framework.make ($(DUMMY_FRAMEWORK_FILE)): does not append NULL if classlist does not contains classes. (patch by Stephen Brandon ) 2001-05-10 Mirko Viviani * target.make (SHARED_FRAMEWORK_LINK_CMD): fix framework soname for FreeBSD ELF. * framework.make (internal-framework-install): handle symlink for libxxx.so.n files. (patches by Kim Shrier ) 2001-05-08 Adam Fedor * bundle.make ($(BUNDLE_DIR_NAME)/Contents/Resources): Remove link before making it (Solaris ln -f doesn't work). * openapp.in: Add linefeed at end (Solaris sed doesn't work well without it). 2001-05-05 Mirko Viviani * target.make: fix library soname for FreeBSD ELF. (patch by Kim Shrier ) Sat May 5 12:40:39 2001 Nicola Pero * GNUstep.sh.in (CLASSPATH): Set classpath before the user initialization code is executed, and before running make_services, so that the classpath is safely set even if they fail. * GNUstep.csh.in: Idem. 2001-05-03 Adam Fedor * target.make: Rm -lm from default TARGET_SYSTEM_LIB Fri Apr 27 10:53:50 2001 Nicola Pero Implemented support for Java tools. * java-tool.make: New file. * java-executable.template: New file. * GNUmakefile.in: Install the new files. 2001-04-26 Adam Fedor * configure.in (with-thread-lib): New option to specify alternate thread library. * Documenation/install.texi: Update. Thu Apr 26 12:48:27 2001 Nicola Pero * documentation.make (JAVADOC_BUILD_ALWAYS): New variable to allow asking gnustep-make to rebuild javadoc documentation each time it is run. 2001-04-25 Adam Fedor * configure.in: Check OBJC_RUNTIME_LIB from library_combo and set NeXT_RUNTIME if appropriate (only for thread test). * config_thread.m: Don't include NSConstStr if NeXT_RUNTIME. 2001-04-25 Richard Frith-Macdonald * documentation.make: Revert last change ... it broke javadoc makes for targets like gnu.gnustep.base ... So how do we write proper makefile dependency rules for javadoc? Wed Apr 25 14:01:32 2001 Nicola Pero * java.make (JAVA_INSTALLATION_DIR): New variable to configure where to install. JAVA_PACKAGE_PREFIX has been deprecated. Wed Apr 25 11:05:49 2001 Nicola Pero * Version: Use the standard names GNUSTEP_MAKE_MAJOR_VERSION, GNUSTEP_MAKE_MINOR_VERSION, GNUSTEP_MAKE_SUBMINOR_VERSION rather than MAKE_MAJOR_VERSION, MAKE_MINOR_VERSION and MAKE_SUBMINOR_VERSION. * configure.in: Substitute the new variables; do not output GNUSTEP_VERSION any longer. * configure: Regenerated. * config.make.in: Define GNUSTEP_MAKE_VERSION, GNUSTEP_MAKE_MAJOR_VERSION, GNUSTEP_MINOR_VERSION, GNUSTEP_SUBMINOR_VERSION so that client code can easily get the version of gnustep-make which is used by reading these variables in their makefiles. 2001-04-25 Richard Frith-Macdonald * documentation.make: For Java, $(INTERNAL_doc_NAME)/index.html depends on *any* of the Java source files used. Rebuilds entire javadoc tree if any file is changed. 2001-04-21 Mirko Viviani * framework.make ($(DUMMY_FRAMEWORK_FILE)): fix for empty $classlist. 2001-04-21 Mirko Viviani * target.make (SHARED_LIB_LINK_CMD): fixed NeXT target. 2001-04-14 Adam Fedor * GNUstep.sh.in: Put Tools directory first in search path so it will find scripts first. * GNUstep.csh.in: Likewise. 2001-04-14 Mirko Viviani * target.make: fixed target for FreeBSD aout. 2001-04-13 Mirko Viviani * target.make: check for freebsd instead of freebsdelf. * clean_os.sh: likewise. 2001-04-13 Adam Fedor * GUI Backend built as bundle by default. Remove backend component of LIBRARY_COMBO throughout makefiles and scripts. * configure.in: Add enable-backend-bundle. * config.make.in: Define BACKEND_BUNDLE. * Documenation/DESIGN,gnustep-howto.texi,install.texi: Update. * openapp.in: Simplify - use executable.template script for work. * opentool.in: Likewise. (patches from Jeff Teunissen ). Wed Apr 11 12:03:55 2001 Nicola Pero * documentation.make [TEXI_FILES] ($(INTERNAL_doc_NAME)_toc.html): Do not abort if command fails (presumably because texi2html could not be found). (internal-doc-install): Install html only if it has been generated. 2001-04-09 Adam Fedor * Merge 1.0 branch back into main. 2001-03-23 Jonathan Gapen * configure.in: Also look for 'gnutar' tar program. * configure: Re-generate. 2001-04-05 Adam Fedor * Version: 1.0.0 * GNUstep-HOWTO, NEWS: Regenerated. * Documentation/machines.texi: Update 2001-04-04 Adam Fedor * config.guess: Update to latest version * config.sub: Likewise. * configure.in: Quote $host_os * Documentation/*texi: Update 2001-03-31 Adam Fedor * target.make (TARGET_SYSTEM_LIBS): Set default libs. 2001-03-30 Adam Fedor * target.make: Define TARGET_SYSTEM_LIBS for cygwin. 2001-03-29 Adam Fedor * Documentation/GNUmakefile.in: Use standard rules for documentation. * Documentation/*texi: Update * GNUstep-HOWTO, INSTALL, README: Regen. 2001-03-28 Adam Fedor * configure.in: Remove spurious ','. * which_lib.c (search_for_library_in_directory): Translate Windows //c paths to c: so MingW functions can find them. 2001-03-27 Adam Fedor * target.make: Add darwin target. * Documentation/machines.texi: Update. * Documentation/faq.texi: Likewise. * Documentation/gnustep-howto.texi: Likewise Mon Mar 19 14:30:01 2001 Nicola Pero * rules.make (install): Depend on internal-after-install after all the other rules. (internal-after-install): Added empty rule. * rpm.make (after-install): Rule moved to (internal-after-install). This makes sure the file list is always generated *after* all application installation code, after-install included, has been run. Mon Mar 19 14:09:08 2001 Nicola Pero * GNUmakefile.in (test-RPM_TOPDIR): New target to test that RPM_TOPDIR is set before attempting to generate the RPM, and exit with an error if not. (rpm): Depend on the new target. Mon Mar 19 00:14:24 2001 Nicola Pero * transform_paths.sh: Fixed, rewritten. Sun Mar 18 17:49:59 2001 Nicola Pero * application.make ($(APP_DIR_NAME)/Resources/Info-gnustep.plist): Micro optimization: replaced sed call with subst. * palette.make ($(PALETTE_DIR_NAME)/Resources/palette.table): Idem. * bundle.make ($(BUNDLE_DIR_NAME)/Resources/Info.plist), ($(BUNDLE_DIR_NAME)/Resources/Info-gnustep.plist): Idem, plus strip .gorm and .nib extensions as well as .gmodel. * gswapp.make ($(GSWAPP_DIR_NAME)/Resources/Info-gnustep.plist): Idem. Sun Mar 18 16:47:05 2001 Nicola Pero * opentool.in: Do not run sed to attempt remove slashes at the end of tool name. This makes sense for apps, but not for tools. Sun Mar 18 16:19:49 2001 Nicola Pero * service.make: Define GNUSTEP_MAKE_SERVICES to be make_services if not yet set. ($(SERVICE_DIR_NAME)/Resources/Info-gnustep.plist): Use $(GNUSTEP_MAKE_SERVICES) rather than `opentool make_services' to run make_services. * application.make: Do not use opentool when running plmerge. * common.make: Warn the user if PATH is not set up correctly. Sun Mar 18 14:49:31 2001 Nicola Pero * GNUmakefile.in (generated-files): Added opentool, executable.template and gnustep-make.spec which were missing; added missing rules for executable.template and gnustep-make.spec. * opentool.in (case $tool in */*): Fixed case of relative path. Sat Mar 17 00:11:52 2001 Nicola Pero * application.make ($(APP_FILE)): Micro optimization: Replace sed with subst. * gswapp.make ($(GSWAPP_FILE)): Idem. * woapp.make ($(WOAPP_FILE)): Idem. Fri Mar 16 20:01:58 2001 Nicola Pero * rules.make (before-all): Do not create the symbolic link obj->$(GNUSTEP_OBJ_DIR). ($(GNUSTEP_OBJ_DIR)): Create the link in this rule, so that it is only created when/if the object directory is created. (internal-clean): Remove the obj symbolic link too. Fri Mar 16 14:48:51 2001 Nicola Pero * configure.in: Fixed syntax of some new tests. * configure: Regenerated. 2001-03-15 Adam Fedor * configure.in: Use autoconf tests to detect CYGWIN, MINGW32, EXEEXT, and OBJEXT. Add threading test for Mingw. * config.make.in (OEXT): Use OBJEXT. Thu Mar 15 00:55:19 2001 Nicola Pero * GNUstep.sh.in, GNUstep.csh.in: Compute GNUSTEP_HOST_CPU, GNUSTEP_HOST_OS, GNUSTEP_HOST_VENDOR only if not yet set. Wed Mar 14 19:16:01 2001 Nicola Pero * aggregate.make: Micro optimization: Replace sed with subst. Wed Mar 14 18:49:53 2001 Nicola Pero * GNUstep.sh.in, GNUstep.csh.in: Removed references to the old variable GNUSTEP_BUILD_ROOT. Wed Mar 14 11:48:10 2001 Nicola Pero * application.make: Optimization: rearranged targets as not to run mkdirs to create directories if the directories already exists. * bundle.make: Idem. * documentation.make: Idem. * library.make: Idem. * java.make: Idem. * tool.make: Idem. * ctool.make: Same optimization but I had not the opportunity to test it. Please anybody having, do and fix it if needed. * gswapp.make: Idem. * gswbundle.make: Idem. * objc.make: Idem. * palette.make: Idem. * service.make: Idem. 2001-03-14 Richard Frith-Macdonald * rules.make: Quicks hack in before-all... create a symbolic link from 'obj' to the directory in which we store object files ... purely as a convenience. Probably can get cleaner code for this but I'm not a makefiles expert. Wed Mar 14 10:40:45 2001 Nicola Pero * rules.make (%.variables): Bug fix: rewritten the rule as it was not able to manage names containing dots. Wed Mar 14 09:14:22 2001 Nicola Pero * library.make (SOVERSION): Minor optimization: Replace awk call with simple subt and word calls. Wed Mar 14 00:15:15 2001 Nicola Pero Huge speed up. As an example of the order of magnitude, on my home system these optimizations reduce the time taken by gnustep to install the base library to 40% of the original time. * common.make (GNUSTEP_OBJ_PREFIX): Major optimization: replace invocation of sed with invocation of the make internal function subst. * rules.make (%.variables): Optimization: replaced three sed calls with subst and word. 2001-03-13 Adam Fedor * configure.in (objc_thread_lib): Correct test for threading on non GNU/Linux, no bsd systems - actually add -lthread to link line. Don't set -lthread when cross-compiling. Also add extra_LIBS to objc_thread_lib. * target.make (solaris/TARGET_SYSTEM_LIBS): Don't add posix4 (should be in objc_thread_lib if needed. 2001-03-10 Adam Fedor * Version 0.9.2 * objc.make (WITH_DLL): Add DLL defs when WITH_DLL=yes 2001-03-08 Adam Fedor * clean_cpu.sh: Make all alpha variants the same. 2001-03-07 Adam Fedor * GNUstep.sh.in: Switch PATH back to the way it was so GNUstep paths are first. 2001-03-06 Adam Fedor * GNUmakefile.in: Remove extra '/' from GNUSTEP_..._ROOT paths. 2001-03-01 Richard Frith-Macdonald * GNUstep.sh.in: Added check to ensure we don't add the same info to the path twice. 2001-02-28 Adam Fedor * rules.make (LIBRARIES_DEPEND_UPON): Use ALL_LIB_DIRS not LIB_DIRS_NO_SYSTEM. * Documentation/README.NetBSD: New file. 2001-02-27 Adam Fedor * rules.make (LIBRARIES_DEPEND_UPON): Switch order of -L flags so additional flags are first. * target.make (SHARED_LIB_LINK_CMD): Remove redundant -L flags. Tue Feb 27 04:45:42 2001 Nicola Pero * configure.in (Version): source it as ./Version rather than just Version (suggested by Juliusz Chroboczek ). * configure: Regenerated. 2001-02-26 Adam Fedor * Documenation/makedoc.make: New file mostly copied from documentation.make. * Documenation/makerules.make: New mostly copied from rules.make * Documenation/gnustep-howto.texi: Moved from core/Documenation * Documenation/faq.texi: Likewise. * Documenation/machines.texi: Likewise. * GNUstep-HOWTO, FAQ: Regenerated. * README.MinGW: Moved from core 2001-02-25 Adam Fedor * configure.in: Separate def of LD_LIBRARY_PATH from export. 2001-02-24 Nicola Pero * configure.in (GNUSTEP_NETWORK_ROOT): Fixed typo. * configure: Regenerated. 2001-02-22 Adam Fedor * which_lib.c (main): Add back the -L paths. 2001-02-23 Nicola Pero * opentool.in: If a local tool is found, do not search further in other directories. 2001-02-21 Adam Fedor * Documentation/make.texi: Update * Documentation/news.texi: Likewise * Documentation/install.texi: Likewise * NEWS, INSTALL: Regenerate 2001-02-19 Nicola Pero * configure.in: Accept --with-local-root and --with-network-root options to specify special placement of GNUSTEP_LOCAL_ROOT and GNUSTEP_NETWORK_ROOT. * configure: Regenerated. * GNUmakefile.in (GNUSTEP_LOCAL_ROOT), (GNUSTEP_NETWORK_ROOT): * GNUstep.sh.in (GNUSTEP_LOCAL_ROOT), (GNUSTEP_NETWORK_ROOT): * GNUstep.csh.in (GNUSTEP_LOCAL_ROOT), (GNUSTEP_NETWORK_ROOT): Substitute values from configure. * GNUmakefile.in: Updated to work with the new arrangement. In particular, to install in special directories when building binary packages, you now use make install special_prefix=xxx. * gnustep-make.spec.in: Use the new special_prefix instead of prefix. * debian/rules: Idem. * GNUmakefile.in (tgz): New target. 2001-02-14 Adam Fedor * GNUmakefile.in (cvs-tag): New targete for maintainance * source-distribution.make (cvs-tag): Likewise. 2001-02-13 Adam Fedor * Version: 0.9.1 2001-02-12 Mirko Viviani * target.make (OBJC_CLASS_SECTION): define class section in obj file. * framework.make: fixed to support various object section. 2000-02-11 Manuel Guesdon * common.make: added $(FOUNDATION_LIBRARY_DEFINE) to AUXILIARY_CPPFLAGS 2001-02-08 Richard Frith-Macdonald Fix by David Wetzel to framework.make if($$2 == "R") changed to if($$2 == "D") Tue Feb 6 16:59:20 2001 Nicola Pero Javadoc support added. * common.make (JAVADOC): Set it. * rules.make (ALL_JAVADOCFLAGS): Set it. (%.build): Pass JAVADOC_FILES and JAVADOC_SOURCEPATH down. * documentation.make: Added support for javadoc documentation. Sun Feb 4 23:19:38 2001 Nicola Pero * debian/*: Applied patches by Matthias Klose to make it more debian compliant. 2001-01-30 Adam Fedor * configure.in: Redo setting prefix again! set root_prefix to base directory (typically /usr/GNUstep) * GNUmakefile.in: Update for new prefix, root_prefix, GNUSTEP_ROOT * GNUstep.csh.in: Likewise. * GNUstep.sh.in: Likewise. Mon Jan 29 23:38:25 2001 Nicola Pero * debian: New directory. * debian/changelog: New file. * debian/control: New file. * debian/copyright: New file. * debian/rules: New file. 2001-01-29 Adam Fedor * configure.in: Correct setting of prefix and GNUSTEP_ROOT. * GNUmakefile.in: Replace GNUSTEP_PREFIX with GNUSTEP_ROOT Mon Jan 29 16:57:53 2001 Nicola Pero * GNUmakefile.in (install): Create the $GNUSTEP_MAKEFILES/Additional directory. * brain.make: Moved base, gui, xgps and xdps specific code into makefiles created and installed into $GNUSTEP_MAKEFILES/Additional by the base, gui, xgps and xdps packages themselves. * common.make: Include all makefiles found in $GNUSTEP_LOCAL_ADDITIONAL_MAKEFILES and $GNUSTEP_MAKEFILES/Additional. * config.make.in: (GRAPHIC_LIBS), (GRAPHIC_CFLAGS), (GRAPHIC_LFLAGS), (X_PRE_LIBS): Removed. (CONFIG_SYSTEM_DEFS): Removed SYSTEM_DEFS and DPS_DEFINE. * configure.in: Moved base, gui, xgps and xdps specific code into the configure.in inside each library. 2001-01-25 Richard Frith-Macdonald * configure.in: Added check for recent versions of GMP * configure: Regenerated. Mon Jan 22 12:55:13 2001 Nicola Pero * configure.in (LD_LIBRARY_PATH): set it before running the tests to fix problems in executing tests against a shared libobjc. * configure: Regenerated. 2001-01-19 Nicola Pero * spec-debug-rules.template: Bug fix: removed a '/' at the end of INSTALL_ROOT_DIR. 2001-01-18 Adam Fedor * opentool.in: Fix typo in setting GNUSTEP_HOST_LDIR Thu Jan 18 18:07:36 2001 Nicola Pero * spec-debug-rules.template: Speed up filtering. 2001-01-18 Mirko Viviani * tool.make: modified to build framework tools. (installed in the framework resource dir) * rules.make (%.build): build framework tools. * framework.make: updated docs. Thu Jan 18 12:15:11 2001 Nicola Pero * gnustep-make.spec.in: Do a make distclean before running configure. 2001-01-17 Adam Fedor * library.make: Revert last change, add LIBRARY_INSTALL_DIR which replaces GNUSTEP_LIBRARIES. * target.make: Replace GNUSTEP_LIBRARIES with LIBRARY_INSTALL_DIR. * source-distribution.make: Add cvs-dist and cvs-snapshot targets Wed Jan 17 17:19:58 2001 Nicola Pero * rpm.make: GNUSTEP_BASE_INSTALL changed to INSTALL_ROOT_DIR since this variable is already used in gnustep-base to do the same job. * spec-rules.template, spec-debug-rules.template, spec-debug-alone-rules.template: Updated for change. 2001-01-17 Adam Fedor * library.make (LIBRARY_OBJ_DIR): New redefinable var to specify where libraries go. Some packages can specify backend independant libs to go in library_combo/.. * configure.in: Check for libobjc in new dir. Avoid referencing problem by just always including the GNUstep Headers and Libraries directory in search paths. Wed Jan 17 16:49:54 2001 Nicola Pero * rpm.make (rpm): Fixed typo in copying tar gz file. ($(SPEC_FILE)): Fixed typo in checking RPM_DISABLE_RELOCATABLE and in PACKAGE_NEEDS_CONFIGURE. Wed Jan 17 13:58:34 2001 Nicola Pero * GNUmakefile.in (cvs-snapshot), (rpm): New targets. * source-distribution.make (tgz): Generate .tar.gz rather than .tgz. * rpm.make: Modified example to use .tar.gz source rather than .tgz. * gnustep-make.spec.in: Heavily simplified, rewritten. Wed Jan 17 10:29:22 2001 Nicola Pero * rpm.make ($(SPEC_FILE)): Add line to set %{gs_configure} to YES or NO in the rpm spec file according to PACKAGE_NEEDS_CONFIGURE variable. * spec-rules.template: Run configure if %{gs_configure} is YES. * spec-debug-rules.template: Idem. * spec-debug-alone-rules.template: Idem. * source-distribution.make (tgz): Added a dependency of `tgz' from `distclean'. * rpm.make (rpm): Build tgz - which involves a make distclean - before specfile. * spec-debug-rules.template (%install): Fixed generation of non debugging file list; fixed and uncommented filtering of debugging file list through the non debugging one. * rpm.make ($(PACKAGE_NAME)-debug.spec.in): Do not any longer generate it from the non debugging one. Tue Jan 16 19:52:58 2001 Nicola Pero * aggregate.make: Fixed to work with empty $(SUBPROJECTS) as well. Tue Jan 16 19:01:21 2001 Nicola Pero RPM support redesigned and rewritten from scratch. * source-distribution.make: New file. * rpm.make: Rewritten from scratch. * spec-rules.template: New file. * spec-debug-rules.template: New file. * spec-debug-alone-rules.template: New file. * template-spec.in: Removed. * rules.make: Include source-distribution.make. * common.make: Removed the new variables for installation. * application.make, bundle.make, framework.make, target.make: Reverted to old code. * file-list.make: Removed. * rules.make: Do not include file-list.make * log_install_dir.sh.in: Removed. * log_install_ln_s.sh: Removed. * log_install.sh: Removed. * install-complete-dir.sh.in: Removed. * GNUmakefile.in: Updated for added/removed files. * configure.in (AC_OUTPUT): Removed install-complete-dir.sh and log_install_dir.sh. * configure: Regenerated. Mon Jan 15 16:45:48 2001 Nicola Pero * common.make (REMOVE_INSTALLED_DIR): New variable to be used to remove an installed dir. * application.make (internal-app-install): Use it. * bundle.make (internal-bundle-install): Idem. * framework.make (internal-framework-install): Idem. * framework.make (internal-framework-install): Use REMOVE_INSTALLED_LN_S. * file-list.make (REMOVE_INSTALLED_DIR): Redefine to do nothing. Made file list rpm specific - so it is now suitable to be included directly with `%file -f' directives into rpm spec files. * file-list.make: Add an `%attr (-, root, root)' at the beginning of the file list. * log_install_dir.sh.in: Rpm specific fix - output `%dir' before the directory name. * file-list.make (FILE_LIST): Output different file list for debugging and non-debugging cases. 2001-01-13 Adam Fedor * openapp.in (additional_library_paths): Set for FLATTENED structure * debugapp.in: Add FLATTENED structure support. (fix from Frederic ). * GNUmakefile.in: Add target to make dist file. Fri Jan 12 17:38:06 2001 Nicola Pero * configure.in (AC_OUTPUT): Added install-complete-dir.sh and log_install_dir.sh. * configure: Regenerated. * log_install_sh: New file. * log_install_ln_s.sh: New file. * log_install_dir.sh.in: New file. * install-complete-dir.sh.in: New file. * GNUmakefile.in (MAKE_FILES): Added file-list.make. * GNUmakefile.in (install): Install log_install.sh, log_install_ln_s.sh, log_install_dir.sh, install-complete-dir.sh. * rules.make: Include file-list.make. * file-list.make: New file. * target.make (AFTER_INSTALL_SHARED_LIB_COMMAND): Use $(REMOVE_INSTALLED_LN_S) rather than rm -f, and $(INSTALL_LN_S) rather than $(LN_S). * common.make: Define INSTALL_LN_S to be the same as LN_S; REMOVE_INSTALLED_LN_S to be rm -f; INSTALL_COMPLETE_DIR to point to the install-complete-dir.sh script. * application.make: Use INSTALL_COMPLETE_DIR when installing. * bundle.make: Idem. * framework.make: Idem. 2001-01-10 Adam Fedor * Version: Prerelease version 0.9.0 * Documentation/GNUmakfile.in: New targets to make documentation. * Documentation/make.texi: New file * aclocal.m4: Set CPPFLAGS not CFLAGS 2001-01-08 Adam Fedor * GNUmakefile.in (MAKE_FILES): Add rpm.make and template.spec.in * rules.make: Include rpm.make * rpm.make: New file * template.spec.in: New file. * config.make.in: Set CONFIG_SYSTEM_INCL to CPPFLAGS (since most CPPFLAGS are really include directives). * brain.make (SYSTEM_INCLUDES): Include CONFIG_SYSTEM_INCL. This makes sure these includes can be overriden in GNUmakefiles * config_thread.m: Include impl of NXConstantString for shared libobjc that doesn't include it. * configure.in: Check for alternate shared libobjc library also. Compile config_thread.m as objective-c program. Set enable-ffcall to be yes by default (unless libs aren't installed). * Version: New file. 2001-01-03 Adam Fedor * configure.in: Change test for objc forwarding hook to match gcc patch. 2001-01-02 Adam Fedor * bundle.make (BUNDLE_FILE): Use INTERNAL_bundle_NAME. ($(BUNDLE_DIR_NAME)/Contents/Info.plist): Likewise. ($(BUNDLE_DIR_NAME)/Resources/Info.plist): Likewise. (Fixes building of multiple bundles in one directory). 2000-01-02 Mirko Viviani * target.make (SHARED_LIB_LINK_CMD, SHARED_FRAMEWORK_LINK_CMD): removed TARGET_SYSTEM_LIBS. * ld_lib_path.sh, ld_lib_path.csh: fixed path for framework libraries. 2000-12-26 Adam Fedor * configure.in: Look for libxml2 (patch from Kim Shrier ). Mon Dec 25 01:20:25 2000 Nicola Pero * library.make (internal-library-all): Bug fix: removed duplicated before-all and after-all. They are already in rules.make and so they were executed twice. 2000-12-18 Nicola Pero * bundle.make ($(BUNDLE_DIR_NAME)/Resources/Info.plist): Readded rule which had been accidentally deleted. 2000-12-18 Richard Frith-Macdonald * bundle.make: Add a couple of missing backslashes as reported by enrico@imago.ro 2000-12-14 Adam Fedor * configure.in (CFLAGS): Strip -g (debug=yes adds that automatically). 2000-12-13 Adam Fedor * configure: Fix mistaken setting of CPPFLAGS from CFLAGS. 2000-12-12 Adam Fedor * bundle.make (build-macosx-bundle): Build suitable files for MacOSX bundle (fixes from Helge Hess ). * GNUmakefile.in (install): Make Tools ...LDIR (For win32 machines). * setlocaltz.sh: Correct location of NSTimeZones (fixes from Tomas Hurka .). 2000-12-08 Adam Fedor * configure.in: Add check for --enable-ffcall * Documentation/GNUmakefile.in: New file. * Documentation/install.texi: New file. * Documentation/readme.texi: New file. * README, INSTALL: Regenerate. 2000-12-06 Richard Frith-Macdonald * openapp.in: * opentool.in: Updated for flattened directory structure. * application.make: * gswapp.make: * service.make: * woapp.make: * wobundle.make: Fix 'clean' for flattened structure. 2000-12-04 Georg Fleischmann * subproject.make: workaround for empty list in for loops added. 2000-12-05 Richard Frith-Macdonald * GNUmakefile.in: * GNUstep.csh.in: * GNUstep.sh.in: * MediaBook.func: * README: * application.make: * brain.make: * bundle.make: * common.make: * configure: * configure.in: * ctool.make: * framework.make: * gswapp.make: * gswbundle.make: * ld_lib_path.csh: * ld_lib_path.sh: * library.make: * palette.make: * service.make: * target.make: * tool.make: * woapp.make: * wobundle.make: Updated for flattened directory structure - use GNUSTEP_XXX_DIR and GNUASTEP_XXX_LDIR for referring to directories with and without the library combo. Localise changes as much as possible. Mon Nov 27 16:28:12 2000 Nicola Pero * documentation.make (internal-doc-clean): Ignore errors when removing the HTML generated from latex - because the error could be caused by a CVS subdir. (internal-doc-distclean): for latex, don't remove HTML document directory (might contain CVS subdir). (internal-doc-install): For latex2html, install only html and css files and not the full latex2html output. (internal-doc-uninstall): For latex2html, uninstall only html and css files. 2000-11-18 Richard Frith-Macdonald * configure.in: Check for GMP Thu Nov 16 14:56:35 2000 Nicola Pero * documentation.make (internal-doc-all): Fixed dependency of LaTeX output on all LATEX_FILES. (internal-doc-clean): Remove generated .aux files if LaTeX is involved. (internal-doc-distclean): Remove any .aux files in the directory if LaTeX is involved. 2000-11-15 Richard Frith-Macdonald * configure.in: Check for OpenSSL Tue Nov 14 23:47:11 2000 Adam Fedor * GNUstep.sh.in: Use grep instead of fgrep. Some OSs (Solaris) can't deal with fgrep -v * ld_library_path.sh: Likewise 2000-11-06 Adam Fedor * documentation.make: Remove conversion of tmpl.texi files to texi files (no longer necessary). Mon Nov 6 16:43:22 2000 Nicola Pero * GNUmakefile.in (install): Create the System/Documentation/Developer and System/Documentation/User directories. * common.make (GNUSTEP_DOCUMENTATION): Changed to be $(GNUSTEP_INSTALLATION_DIR)/Documentation rather than $(GNUSTEP_INSTALLATION_DIR)/Libraries * rules.make: Added DOC_INSTALL_DIR and LATEX_FILES. * documentation.make: Major improvement. Implemented installation and uninstallation of documentation, and support for LaTeX based documentation projects. 2000-11-04 Mirko Viviani * configure.in: fixed gtar checking. 2000-10-29 Mirko Viviani * framework.make (FRAMEWORK_WEBSERVER_RESOURCE_DIRS), (framework-components), (framework-webresource-dir): (framework-webresource-files), (framework-localized-webresource-files): new specific gsweb targets. * subproject.make (framework-components), (framework-webresource-dir), (framework-webresource-files), (framework-localized-webresource-files): likewise. * rules.make (SUBPROJECT_ROOT_DIR): new variable. * gswapp.make ($(GSWAPP_FILE)): added ALL_FRAMEWORK_DIRS 2000-10-28 Mirko Viviani * configure.in: added --with-libxml-include, --with-libxml-library and --with-libiconv-library. Added -I/usr/local/include and -L/usr/local/lib for FreeBSD. * framework.make: new file. * common.make: added common frameworks defines (library, header paths). * bundle.make: added ALL_FRAMEWORKS_DIRS * rules.make: added frameworks headers flags. Prebuild framework header dir. Set framework name/dir/version. * subproject.make: build framework headers and resource files. * target.make: added SHARED_FRAMEWORK_LINK_CMD * tool.make: added ALL_FRAMEWORKS_DIRS * ld_lib_path.csh: added paths for frameworks. * ld_lib_path.sh (lib_paths): added paths for frameworks. * GNUmakefile.in (MAKE_FILES): added framework.make Thu Oct 19 15:46:02 2000 Nicola Pero * opentool.in: Fix for passing arguments protected by quote. * openapp.in: Idem. 2000-10-17 Adam Fedor * target.make (OpenBSD): Add -fpic to SHARED_CFLAGS. Fri Oct 13 11:26:49 2000 Nicola Pero * service.make (internal-svc-distclean): Remove the service directory when making a distclean. 2000-10-02 Adam Fedor * configure.in: Work even if $av_cv_lib_iconv_main not defined. 2000-09-29 Richard Frith-Macdonald * configure.in: Check for libxml 2.2.3 or later Tue Sep 26 10:21:51 2000 Nicola Pero * application.make: Use opentool when running plmerge. * service.make: Use opentool when running make_services. 2000-09-25 Adam Fedor * common.make (JAVA_HOME): Revert previous change. 2000-09-20 Adam Fedor * bundle.make (internal-bundle-install): Fix previous fix. * target.make: Don't define BUILD_DLL if shared=no. 2000-09-18 Adam Fedor * configure.in: Check for mingw also * bundle.make (internal-bundle-install): Correct tar command. 2000-09-14 Adam Fedor * configure.in: Check for iconv support. 2000-09-13 Adam Fedor * config.make.in: Add CPPFLAGS 2000-09-11 Adam Fedor * library.make (DLL_INSTALLATION_DIR): New default location for installing DLLs. * common.make (JAVA_HOME): Check if 'which' returns a path. 2000-09-11 Richard Frith-Macdonald * configure.in: Added test for libxml so we link with it if it is available. 2000-08-30 Mirko Viviani * configure.in: Check for gtar. * config.make.in: New definition for TAR. Thu Aug 17 09:28:22 2000 Adam Fedor * configure.in: Use CC_FOR_BUILD when checking for mingw32. Wed Aug 16 18:24:13 2000 Adam Fedor * mkinstalldirs: Test if mkdir accepts -p arg. 2000-08-06 Adam Fedor * Version 0.6.6 released. 2000-08-02 Adam Fedor * GNUstep.sh.in: Add GNUSTEP_NETWORK_ROOT back into prefix list. * GNUstep.csh.in: Likewise. (patches from Jeff Teunissen ). Sat Jul 29 22:49:23 2000 Nicola Pero * rules.make: Added again rule for APPLICATION_ICON which had been lost. Fri Jul 28 14:45:21 2000 Nicola Pero * jni.make: New file to be included when compiling JNI projects. * GNUmakefile.in (MAKE_FILES): Added jni.make. Fri Jul 28 12:17:02 2000 Nicola Pero * common.make: Set INTERNAL_JAVACFLAGS and INTERNAL_JAVAHFLAGS to specify classpath adding ./ at the beginning. * rules.make: Changed ALL_JAVAFLAGS to ALL_JAVACFLAGS. Thu Jul 27 18:03:34 2000 Nicola Pero * common.make (JAVA_HOME): Set JAVA_HOME if not set, guessing if appropriate; set JAVAC and JAVAH from JAVA_HOME if needed. Tue Jul 25 15:01:43 2000 Nicola Pero Added support to build jni headers from java classes. * rules.make: Added rules to build jni headers from java classes using JAVAH; added JAVA_JNI_OBJ_FILES, JAVA_JNI_OBJS; added ALL_JAVAHFLAGS. * java.make (internal-java_package-all): Build also JAVA_JNI_FILES (internal-java_package-clean): Remove the jni headers too. 2000-07-21 Richard Frith-Macdonald * GNUmakefile.in: Use C version of which_lib exclusively. 2000-07-18 Richard Frith-Macdonald * ctool.make: Changed installation dir to be CTOOL_INSTALLATION_DIR and fixed it to install above the objc library based directory. 2000-07-16 Adam Fedor * palette.make (PALETTE_INSTALL_DIR): Default to GNUSTEP_PALETTES if not set. * GNUmakefile.in: Use C version of which_lib exclusively. 2000-07-14 Adam Fedor * common.make (GNUSTEP_HEADERS_GUI_FLAG): Remove. 2000-06-30 Adam Fedor * GNUstep.sh.in: Add .../${LIBRARY_COMBO} dir back into path (for DLL search). * configure.in: Always run search for libwraster. * bundle.make: Filter '-' out of defines. * ctool.make: Likewise. * rules.make: Likewise. * tool.make: Likewise. * woapp.make: Likewise. * wobundle.make: Likewise. 2000-06-27 Adam Fedor * common.make (OPTFLAG): Remove -fno-strict-aliasing (Doesn't work on old gcc2.8.0). * target.make (solaris/TARGET_SYSTEM_LIBS): Re-add posix4 when threaded (Solaris/BUNDLE_LDFLAGS): Go back to old flags - new ones don't work with gcc 2.8.0. * configure.in: Cache search for libwraster, fix searching for other graphics libs. * GNUstep.csh.in: Shorted GNUSTEP_PATHPREFIX_LIST since length of variable breaks some csh's. Check if CALSSPATH exists before setting. 2000-06-22 Adam Fedor * configure.in: Fix for exporting vars on old sh's. Thu Jun 22 18:58:41 2000 Nicola Pero * common.make (JAVAH): Set it to 'javah' if null. 2000-06-21 Adam Fedor * configure.in: Check for alternate objc libraries * library.make: Clean the library_name of '-' so it can be used in a define. * target.make: Target for cygwin Wed Jun 21 12:35:43 2000 Nicola Pero Rewritten and simplified java support. * GNUstep.sh.in: Only append to the CLASSPATH if not already there. * GNUstep.csh.in: Simplified java classpath. * brain.make (SYSTEM_INCLUDES): Removed JAVA_INCLUDES. * common.make (JAVAC): Set it to 'javac' only if it is null, so it can be overridden. * common.make (GNUSTEP_JAVA): New variable. * config.make.in: Removed old java code. * configure.in: Idem. * configure: Rebuilt. * openapp.in: Removed old java code. * rules.make: Completely remanaged java stuff. * GNUmakefile.in (MAKE_FILES): Added java.make. * java.make: New makefile for compiling not-GNUstep java packages. Tue Jun 20 19:59:19 2000 Nicola Pero * objc.make (internal-objc_program-install): Depend on building the program first. 2000-06-19 Adam Fedor * bundle.make (bundle-resource-files): Remove dependancy on RESOURCE_FILES, which may not exist * configure.in: Add test for cygwin 2000-06-12 Adam Fedor Patches from Helge Hess for Windows/DLL support * GNUmakefile.in: Use perl which_lib script on machines that have it. * GNUstep.csh.in: Remove GNUSTEP_NETWORK_ROOT from PATHPREFIX_LIST. * GNUstep.sh.in: Likewise. * common.make: Add some new default directories. Support for runtime with GC. * config.guess: Add check for mingw32. * configure.in: Likewise. Check for perl. * brain.make: Add flags for libFoundation with GC. Add WO library flags. * bundle.make: Add support for DLLs on Windows. * ctool.make: Likewise. * library.make: Likewise. * rules.make: Likewise. Handle subdirs better. WO Resources * tool.make: Likewise. * target.make: Handle mingw32. * which_lib.c: Handle \r\n on Windows. (pathes from Helge Hess , modified by fedor@gnu.org). Wed May 3 18:07:54 2000 Nicola Pero * library.make: Use 'override' flag to force substitution of variable which otherwise was not taking place. 2000-05-01 Mirko Viviani * clean_os.sh: removed os version number for FreeBSD-elf 2000-04-21 Jonathan Gapen * application.make: Incorporate appnameInfo.plist into Info.plist using plmerge tool. 2000-04-20 Adam Fedor * configure.in (libwraster): Make sure we have version 2.0. 2000-04-13 Adam Fedor * gswapp.make: Remove common.make include. * gswbundle.make: Likewise. 2000-04-06 Richard Frith-Macdonald * target.make: If 'shared=no' is specified, link with '-static' to force static link. Add library fixes for HPUX * ld_lib_path.sh: Added setup for HPUX * ld_lib_path.ssh: ditto 2000-03-27 Adam Fedor * documentation.make: Correct cp typo. 2000-03-20 Adam Fedor * gswapp.make: include common.make for TAR * gswbundle.make: Likewise. * GNUstep.sh.in: Replace pushd/popd with cd equivalent since not all OS's have it. * bundle.make: Include localization support (from gswbundle.make) (Patch from Jonathan Gapen ) * documentation.make: Take out sed of @email and @url since texinfo has them now. * configure.in (GRAPHIC_LIBS): Check for libXmu if libwraster not found. Add X libs if libwraster not found. 2000-03-19 Richard Frith-Macdonald * rules.make: added rule for GSDOC * documentation.make: added gsdoc make rules. 2000-03-11 Adam Fedor * brain.make: Use new GRAPHIC_ variables. Remove old TIFF, JPEG and X varialbles. * config.make.in: Likewise. * configure.in: Check for wraster library. Avoid checking for tiff, jpeg, etc, if found. 2000-03-06 Adam Fedor * config.guess: Better guess of NetBSD systems. * target.make: Support for shared libs on NetBSD. (patch from Peter Cooper ). * makeinstalldirs: Add '-p' option to mkdir, which prevents race condition when running make with the '-j' option. Some makes may not have this option, so we'll see if this works. Fri Feb 25 13:32:00 2000 Richard Frith-Macdonald * rules.make: replace rule for PALETTE_ICON that somehow got lost. Thu Feb 24 21:12:00 2000 Richard Frith-Macdonald * bundle.make: fixes to permit use of BUNDLE_INSTALL_DIR variable. patch by jagapen@whitewater.chem.wisc.edu 2000-02-23 Adam Fedor * configure.in: Make separate sytem root the default. Disable by using --without-system-root when configuring. * rules.make: Change compilation rule so filename is at beginning of line (patch from David Relson ). 2000-02-20 Matthias Klose * names.make: GNUSTEP_HOST: Use value of GNUSTEP_HOST_GUESS. * GNUstep.csh.in: Use GNUSTEP_MAKEFILES. 2000-02-18 Adam Fedor * GNustep.sh.in: Use pushd/popd to changes dirs. 2000-01-26 Adam Fedor * rules.make: Revert previous change of parens around tmp. 2000-02-18 Adam Fedor * Version: 0.6.5 Released. 2000-02-16 Adam Fedor * GNUmakefile.in: Standardize prefix/GNUSTEP_INSTALLATION_DIR settings. * gnustep-make.spec: Newfile * common.make: Add default installation dirs. * bundle.make: Use default installation dir. * ctool.make: Likewise. * objc.make: Likewise. * palette.make: Likewise. * tool.make: Likewise. * GNUstep.csh.in: Use pushd/popd to changes dirs. 2000-02-08 Adam Fedor * config.guess: New version * config.sub: Likewise. 2000-01-24 Adam Fedor * names.make (GNUSTEP_HOST_GUESS): New variable. Evaluate config.guess and config.sub separately. 2000-01-22 Manuel Guesdon * gswapp.make, gswbundle.make: tar options changed 2000-01-22 Manuel Guesdon * GNUmakefile: add gswapp.make and gswbundle.make 2000-01-22 Manuel Guesdon * rules.make and bundle.make: changes for GNUstepWeb * gswapp.make and gswbundle.make: added 2000-01-14 Adam Fedor * GNUstep.csh.in (GNUSTEP_LOCAL_ROOT): Use correct quotes. Sun Jan 9 00:16:15 2000 Nicola Pero * GNUmakefile.in (install): Create directory $(prefix)/Library/Colors to store color lists. Fri Jan 7 6:05:00 2000 Richard Frith-Macdonald * application.make: use xxx_PRINCIPAL_CLASS to override the value of NSExecutable in Info.plist so we can have callses other than NSApplication as the app class. * palette.make: use PRINCIPAL_CLASS rather than PALETTE_CLASS * rules.make: remove PALETTE_CLASS 1999-12-09 Adam Fedor * rules.make: Remove paren's from around tmp to stop spurious evaluation (suggested by Jonathan Gapen ). Tue Dec 7 5:24:00 1999 Richard Frith-Macdonald * rules.make: Escape some dollar signs - patch by Jonathon Gapen for an earlier fix somehow reverted. 1999-12-02 Adam Fedor * GNUstep.csh.in: Run GNUSTEP_HOST through config.sub to get correct CPU, etc. * GNUstep.sh.in: Likewise. * debugapp.in: Likewise. * executable.template.in: Likewise. * names.make: Likewise. * openapp.in: Likewise. * opentool.in: Likewise. Fri Nov 12 11:52:14 1999 Lyndon Tremblay * rules.make: Moved some Java rules into gstep-java. Fri Nov 12 7:43:00 1999 Richard Frith-Macdonald * GNUstep.sh.in: Fix error in exporting CLASSPATH Fri Nov 12 6:36:00 1999 Richard Frith-Macdonald * which_lib.c: Fix for bug reported by Pascal Bourguignon. If 'shared=no' and 'debug=yes', but no debug library exists, then find a static library. Thu Nov 11 12:22:00 1999 Richard Frith-Macdonald * GNUstep.csh.in: Fix for typo reported by Pascal Bourguignon. 1999-11-11 David Lazaro Saz * configure.in (objc_thread_lib): Added support for FreeBSD native POSIX threads (from libc_r). Made this the first option to test as this is the best working one. * configure: New build to support the above mentioned. Wed Nov 10 12:05:16 1999 Lyndon Tremblay * library.make: Added some uninstalling commands, specifically, when the 'LIBRARY_NAME.so' file links to 'LIBRARY_NAME_d.so', remove that stale link. (using if [ ! -e ' script as well as the real tool binary. Mon Nov 08 11:41:00 1999 Richard Frith-Macdonald * names.make: Fix to run config scripts in /tmp in order to avoid directory permission problems in current directory. Sun Nov 07 14:00:00 1999 Richard Frith-Macdonald * common.make: define GSWARN unless 'warn=no' is on command line. Fri Nov 05 11:23:00 1999 Richard Frith-Macdonald * application.make: Added comment about including info.plist stuff. * bundle.make: Added support for inclusion of info.plist stuff. 1999-10-03 Lyndon Tremblay * GNUstep.sh.in: Added CLASSPATH settings. * GNUstep.csh.in: Likewise, untested. 1999-10-02 Lyndon Tremblay * target.make: Links LIBNAME.so to LIBNAME_d.so, so you can build applications without debug, but using the GNUstep debug libraries. Needs to be added for other systems, I don't want to risk it, I don't have any besides Linux ELF. * rules.make: Added Java classpath, and working Java dependency per Java package name; (org.gnu.gnustep.HiClass -> GNUSTEP_SYSTEM_ROOT/Java/org/gnu/gnustep/HiClass.class, etc) 1999-10-01 Lyndon Tremblay * openapp.in: Added working Java application support * rules.make: Likewise, and general Java changes. 1999-10-01 Lyndon Tremblay * java-wrapper.make: Removed. * java-application.make: Removed. * java-executable.template: Removed. These will be added in gstep-java. 1999-10-30 Lyndon Tremblay * brain.make: Added Java support. * common.make: Likewise * config.make.in: Added JAVA_INCLUDE/JAVAC vars. * configure: New build for Java support. * configure.in: Added JAVA_INCLUDE/JAVAC vars. * java-application.make: Added, but not worked on yet. * java-executable.template: Added basics, not complete. * java-wrapper.make: Working as close to Apple's bridget tool as I know. * rules.make: Added Java support. NOTE: building a java wrapper right now is basically useless now, until I commit the bridging library and tools, which are in the works. 1999-10-23 Adam Fedor * debugapp: Allow debugger to be set from environment (patch from ). * depend.make: New file - first try at dependency processing from Kai Henningsen . 1999-10-17 Adam Fedor * target.make (OSF): Set SHARED_LIBRARIES to yes. * configure.in (GNUSTEP_PREFIX): Was set in wrong place for separate system root. 1999-10-14 Adam Fedor * target.make (AUXILIARY_CPPFLAGS): Change from ADDITIONAL... so it doesn't get reset by other Makefiles 1999-10-11 Lyndon Tremblay * debugapp: Added support for core files, if found 1999-10-11 Adam Fedor * Allow for separate System root directory and other changes suggested by Dennis Leeuw . * configure.in: Add test for separate system root directory. * GNUmakefile.in (GNUSTEP_PREFIX): Absolute GNUstep root. Move man and info dirs to separate Documentation dir. * GNUstep.csh.in: (GNUSTEP_ROOT): Absolute root. Define Local dir interms of this. Add Network dir. * GNUstep.sh.in: Likewise. * common.make: Move documentation dirs. Add Network dir info. Look for gui Headers in gnustep/AppKit. * rules.make: Add Network dir info. Tue Sep 28 19:05:00 1999 Richard Frith-Macdonald * brain.make: Define GS_WITH_GC and link with gc version of objc runtime if 'gc=yes' on command line. Fri Sep 24 19:30:00 1999 Richard Frith-Macdonald * GNUstep.csh.in: Fix so that paths are set up correctly again. * GNUstep.sh.in: Fix so that paths are set up correctly again and add checks to try to avoid duplicating information in paths. * ld_lib_path.sh: Add checks to try to avoid duplication in path. Mon Sep 20 9:40:00 1999 Richard Frith-Macdonald Patch from cls@seawood.org - * GNUstep.sh.in: avoid multiple GNUstep entries in path * GNUstep.csh.in: avoid multiple GNUstep entries in path Sun Sep 19 1999 Nicola Pero * bundle.make (internal-bundle-distclean): Added $(BUNDLE_DIR_NAME) so that the bundle is removed on distclean. Fri Sep 17 1999 Nicola Pero * rules.make (distclean): added test, so that distclean invokes clean only in the top dir. This avoids having 'make clean' executed uselessly a lot of times in subdirs. 1999-09-14 Adam Fedor * common.make, config.make.in: Remove -o from LDFLAGS. * application.make, bundle.make, ctool.make, objc.make, service.make, target.make, test-library.make, tool.make: Add -o in LD command. 1999-09-11 Adam Fedor * target.make: Remove two erronous newlines in the MacOSX section. 1999-09-07 Adam Fedor * Version: 0.6.0 * GNUstep.csh.in: Don't set GNUSTEP_HOST if already set. * GNUstep.sh.in: Likewise. * configure.in: Add test for solaris libraries * target.make: Use -lposix for Solaris (regardless of threaded). 1999-09-07 David Lazaro Saz * configure.in: Added threading support for FreeBSD. * target.make: Likewise. 1999-08-15 Adam Fedor * subproject.make (internal-subproj-all): Make sure files from subprojects of subprojects get linked. (Patch from Pedro Ivo Andrade Tavares ). * target.make: Add partial OSF support. 1999-08-09 Adam Fedor * GNUstep.csh.in: Fix the setting of GNUSTEP_MAKEFILES (patch from Christopher Seawood ). * target.make: Change freebsd3 to freebsd to find all versions, except put freebsd2 first so it is still unique. 1999-08-09 Richard Frith-Macdonald Fixes so that things don't bomb out if you don't have write access to your current directory. * GNUstep.csh.in: Run config.guess in /tmp * GNUstep.sh.in: ditto * executable.template.in: ditto * openapp.in: ditto * opentool: ditto * opentool.in: ditto 1999-08-03 Richard Frith-Macdonald * application.make: Make installation directory if necessary. 1999-08-01 Richard Frith-Macdonald Fix suggested by beppu@rigel.oac.uci.edu * GNUstep.sh.in: Put GNUSTEP_MAKEFILES in the environment. * GNUstep.csh.in: Likewise 1999-07-29 Adam Fedor * config.guess: Updated from latest version + fix for Netwinder. * config.sub: Likewise. * subproject.make: Add install targets for headers (Patch from Pedro Ivo Andrade Tavares ). * target.make: Add MacOSX target (from Helge Hess ). 1999-07-26 Richard Frith-Macdonald * GNUstep.sh.in: Safe and restor value of IFS as suggested by prashant singh 1999-07-15 Adam Fedor * application.make: Force Info-gnustep.plist to be remade everytime * GNUstep.sh.in: Add $GNUSTEP_SYSTEM_ROOT/Libraries/man to MANPATH * GNUstep.csh.in: Likewise. 1999-07-14 Richard Frith-Macdonald * target.make: Patch for threads on Solaris by bgg@itga.com.au 1999-07-05 Adam Fedor * configure.in: Fix prefix check. 1999-06-28 Richard Frith-Macdonald * GNUstep.csh.in: Include Tools/host-cpu/host-os in path for any utilities that are installed without a startup script. * GNUstep.sh.in: ditto. 1999-06-24 Richard Frith-Macdonald * common.make: include -Wall when building for debug 1999-06-16 Adam Fedor * executable.template.in: Add double quotes around $@ to quote arguments properly (Suggested by Roman Puttkammer ). Fri Jun 11 17:23:59 1999 Adam Fedor * executable.template.in: Fixes to work on Solaris 1999-06-03 Adam Fedor * ctool.make: New file for making C tools. * GNUmakefile.in: Install it. * whichlib.pl.in: Bug fixes. * GNUstep.csh.in: Fix up PATHPREFIX expansion (patches and files from from Helge Hess ) * GNustep.sh.in: Insert GNUstep path before PATH. 1999-06-01 Adam Fedor * executable.template.in: New file to be used as shell script application/tool starter. * configure.in: Configure it. * GNUmakefile.in: Install it. * GNUstep.sh.in: Use simpler path and add GNUSTEP_PATHPREFIX_LIST * GNUstep.csh.in: Likewise. * openapp.in: Use GNUSTEP_PATHPREFIX_LIST and simpler path search * debugapp.in: Likewise. * application.make: Copy it to main app directory (using app name). * tool.make: Install it to main Tool directory when installing. Fri May 28 6:10:00 1999 Richard Frith-Macdonald * application.make: Incorporate appnameInfo.plist into the Info.plist if it exists. Wed May 19 10:20:00 1999 Richard Frith-Macdonald * rules.make: Add APPLICATION_ICON * application.make: Use APPLICATION_ICON to add icon name to plist 1999-04-27 Adam Fedor * congif.site (includedir): Put include files in Headers, not in OS/CPU specific dir. 1999-04-22 Adam Fedor * GNUstep.csh.in: Don't define LIBRARY_COMBO if already set. * GNUstep.sh.in: Likewise. * configure.in: Check to see if -lz is needed by -ltiff. * target.make (SHARED_CFLAGS): Use +z on HP when CC=cc Wed Apr 7 21:35:00 1999 Richard Frith-Macdonald * brain.make: Add extension X lib for xgps. 1999-04-01 Adam Fedor * configure.in: Handle cross-platform compilation better by finding programs with proper prefix for target. Look for extra X libs needed by dps. * config.make.in (X_PRE_LIBS): Define extra X libs * brain.make: Use them. Wed Mar 31 01:24:50 1999 Masatake Yamato * application.make (ALL_GUI_LIBS): Put BACKEND_LIBS after GUI_LIBS. This causes a problem when building a static library. The patch is provided by Takaaki MORIYAMA . 1999-03-17 Adam Fedor * Fix include/includes problem. Use autoconf 2.13 1999-03-14 Adam Fedor * configure.in: Add check for cygwin32 1999-03-12 Adam Fedor * target.make: Turn off shared libs for FreeBSD 2.x Wed Mar 10 15:23:00 1999 Richard Frith-Macdonald * configure.in: Fix configure to set up installation directory correctly when the user doesn't specify the system root directory. 1999-03-08 Adam Fedor * Merge dawn branch into main. Tue Mar 2 08:57:00 1999 Richard Frith-Macdonald * make/target.make: Include GNUSTEP_SYSTEM_LIBRARIES in link list to fix shared-lib linking error on linux elf. Tue Mar 2 08:04:00 1999 Richard Frith-Macdonald * Merge in 'dawn' CVS branch. 1999-02-22 Scott Christley * opentool: New file. 1999-02-19 Scott Christley * MediaBook.sh (MB_GNUSTEP_SOURCE, MB_FINANCE_SOURCE): New variables. (MB.init): Renamed to MBinit.sh and put under GNUSTEP_USER_ROOT. * setlocaltz.sh: New file. * MediaBook.func: Add help for new commands. 1999-03-08 Adam Fedor * Version 0.5.5 Released. 1999-03-05 Adam Fedor * brain.make: Switch order of TIFF_INCLUDE and X_INCLUDE. 1999-03-04 Adam Fedor * configure.in: Check if tiff libary nees jpeg. Rearrange tiff and jpeg checks so they exit if not found and compiling core libraries. * config.make.in (JPEG): New variable to hold "-ljpeg" if needed. * brain.make: Use it. Switch order of TIFF_LIB and X_LIBS (For solaris). Wed Mar 3 06:56:00 1999 Richard Frith-Macdonald * configure.in: Fix to detect jpeglib.h on redhat Tue Mar 2 17:05:57 1999 Adam Fedor * configure.in: Make AC_ERROR into AC_WARN (since make could be used with non-gui libs). 1999-03-01 Adam Fedor * configure.in: New search for DPS libraries. 1999-02-27 Matthias Klose * make/target.make: Link shared libs against other libs (Linux only, should be possible for all ELF targets). 1999-02-28 Adam Fedor * GNUmakefile.in: Use CFLAGS from configure rather than setting our own. * config.make.in (OPTFLAG): Use CFLAGS from configure. * common.make (OPTFLAG): Remove -O if debugging * debugapp.in: Remove basename so debugapp can be used to run programs in other directories. (patches submitted by Christopher Seawood ). Thu Feb 25 20:25:04 1999 Masatake Yamato * service.make ($(SERVICE_DIR_NAME)/Resources/Info-gnustep.plist:): Added contents of SYSTEM_LIB_DIR to LD_LIBRARY_PATH. * configure.in (AC_ARG_WITH(jpeg_library)): Fix a typo. (DIS->DIR). 1999-02-25 Adam Fedor * target.make (IRIX/SHARED_LIB_LINK_CMD): Fix typo. Thu Feb 25 03:01:48 1999 Masatake Yamato * configure.in: Added macros to check existence of jpeg and tiff. Stolen from gimp-1.0.0/configure.in. * config.make.in (TIFF_INCLUDE): New variable definitions. (TIFF_LIB): Likewise. (JPEG_INCLUDE): Likewise. (JPEG_LIB): Likewise. * brain.make (SYSTEM_INCLUDES): Added $(TIFF_INCLUDE) $(JPEG_INCLUDE) (SYSTEM_LIB_DIR): Added $(TIFF_LIB) $(JPEG_LIB). 1999-02-24 Matthias Klose * Makefiles/rules.make (%.build): evaluate LIBRARIES_DEPEND_UPON in this target, not when the file is read, else library names in foo_LIBRARIES_DEPEND_UPON macros are not transformed. 1999-02-22 Adam Fedor * configure.in: Substitute version info. * config.make.in: Include version info. * brain.make: Define GNUSTEP if using GNUstep libraries. * common.make (AUXILARY_CPPFLAGS): Include GNUSTEP and Version defines. Sun Feb 21 15:01:48 1999 Masatake Yamato * target.make (Solaris::AFTER_INSTALL_SHARED_LIB_COMMAND): Removed two duplicated lines. Sun Feb 21 13:49:55 1999 Masatake Yamato * rules.make (%.build): Check the length of string, $($*_SUBPROJECTS). 1999-02-19 Adam Fedor * subproject.make: New file. * common.make (SUBPROJECT_PRODUCT): New variable so all makefiles agree on the name of the object a subproject produces. * rules.make: Added recursive invokation of subproject makefiles in the %.build target. * application.make, library.make, ... (SUBPROJECT_OBJ_FILES): New dependency. * target.make (OBJ_MERGE_CMD): For merging subproject files. (patches from Jonathan Gapen ). Wed Feb 17 17:15:47 1999 Adam Fedor * bundle.make (PRINCIPAL_CLASS): Override if not set (Report from Julian van Greunen ). 1999-02-17 Scott Christley * opentool.in: New file. * rootinstall.sh: New file. * rootuninstall.sh: New file. * openapp.in: Add help text. * debugapp.in: Add help text. * configure.in: Add opentool.in. * configure: Regenerate. * GNUmakefile.in: Install/uninstall new files. Tun Feb 16 16:26:00 1999 Richard Frith-Macdonald * services.make: Tidied with removal of some unneccessary dependencies. 1999-02-14 Scott Christley * ld_lib_path.sh (DYLD_LIBRARY_PATH, LD_LIBRARY_PATH): Add the tool library path. * ld_lib_patch.csh (DYLD_LIBRARY_PATH, LD_LIBRARY_PATH): Likewise. Mon Feb 15 1999 Michael Hanni * Added IRIX to target.make as requested. Mon Feb 15 8:48:00 1999 Richard Frith-Macdonald * aggregate.make: Strip space from name variable before use. * application.make: ditto * bundle.make: ditto * documentation.make: ditto * library.make: ditto * objc.make: ditto * service.make: ditto * test-application.make: ditto * test-library.make: ditto * test-tool.make: ditto * tool.make: ditto Mon Feb 8 08:24:39 1999 Masatake Yamato * ld_lib_path.csh: Rename additional_library_paths to additional_lib_paths. It was too long for solaris2. 1999-02-01 Adam Fedor * target.make: Add openbsd target (Patch from Michael Hanni ). Add Irix support. (SHARED_LIB_LINK_CMD): Add /usr/lib/c++rt0.o to *BSD commands. Thu Jan 28 10:20:00 1999 Richard Frith-Macdonald * target.make: use '-lm' for freebsd and osf Thu Jan 7 16:16:36 1999 Adam Fedor * brain.make: Add support for xgps library. Thu Jan 7 18:00:00 1999 Richard Frith-Macdonald * GNUstep.sh.in: Run make_services to rebuild caches. * GNUstep.csh.in: ditto Sat Jan 2 12:26:20 1999 Adam Fedor * configure.in: Check for DPS/dpsNXargs.h header. Wed Dec 30 15:08:14 1998 Adam Fedor * target.make (TARGET_SYSTEM_LIBS): Add FreeBSD specific libs. Use $(objc_threaded) when adding thread lib to Solaris. Mon Dec 21 11:04:45 1998 Matthias Klose * common.make: New macros MAJOR_VERSION (0), MINOR_VERSION (5), SUBMINOR_VERSION (0) forming VERSION. * library.make: internal-uninstall-lib: rm SONAME_LIBRARY_FILE. Rename VERSION_MAJOR_LIBRARY_FILE to SONAME_LIBRARY_FILE. New macro SOVERSION. * target.make: define -D_REENTRANT for linux-gnu objc_threaded. For Solaris define AFTER_INSTALL_SHARED_LIB_COMMAND and set shared object name for library. Mon Dec 21 11:04:45 1998 Matthias Klose * aggregate.make: Exit with original exit status from submakes. Sat Dec 19 01:26:06 1998 Matthias Klose * config.make.in: New macro MKDIRS defaults to $(GNUSTEP_MAKEFILES)/mkinstalldirs. * application.make: Use macro MKDIRS. * bundle.make: likewise * library.make: likewise * documentation.make: likewise * objc.make: likewise * rules.make: likewise * service.make: likewise * tool.make: likewise * test-library.make: likewise Sat Dec 19 10:57:22 1998 Adam Fedor * aggregate.make: Look for Makefile. Thu Dec 17 11:42:06 1998 Adam Fedor * test-library.make (ALL_TEST_LIBRARY_LIBS): Remove duplicate lib. Wed Dec 16 13:46:09 1998 Adam Fedor * target.make (AFTER_INSTALL_SHARED_LIB_COMMAND): New macro for Linux (patch from Matthias Klose ). Tue Dec 15 12:36:52 1998 Adam Fedor * GNUmakefile.in: Add $(EXEEXT) to which_lib * objc.make (INTERNAL_objcprogram_NAME): Add $(EXEXT) to executable. * tool.make (INTERNAL_tool_NAME): Likewise. * target.make (BUNDLE_LD): Change to $(CC). (SHARED_LIB_LINK_CMD): Set shared name using major version num. * library.make (VERSION_MAJOR_LIBRARY_FILE): name using major version number. * configure.in (ac_cv_objc_threaded): Put the result of objc_threaded conftest in config.cache file (patch from Matthias Klose ). Mon Dec 7 09:58:01 1998 Adam Fedor * target.make: Add FreeBSD target for shared libs. * config.make.in (EXEEXT): Set from program_suffix. * openapp.in (EXEEXT): Likewise. * debugapp.in (EXEEXT): Likewise. * application.make (APP_FILE): Add $(EXEEXT). * aggregate.make (internal-all): Break if subproject make fails. Mon Dec 7 16:10:00 1998 Richard Frith-Macdonald * service.make: Applied patch supplied by to find make_services if it hasn't been installed. Mon Dec 7 6:45:00 1998 Richard Frith-Macdonald * openapp.in: Removed dependency on xargs - don't see how it could have caused the recent problems reported of openapp silently failing but it's a possibility. Wed Nov 25 16:25:09 1998 Adam Fedor * configure.in (ac_cv_library_combo): Take old value if not set. Mon Nov 23 14:00:00 1998 Richard Frith-Macdonald * GNUmakefile.in: mod for services * services.make: new build target for services bundle. * application.make: Improved generation of Info-gnustep.plist * bundle.make: Improved generation of Info-gnustep.plist 1998-11-19 14:20 Lyndon Tremblay * GNUmakefile.in: Added model (un)installation (SavePanel.gmodel), model files install in GNUSTEP_ROOT/Library/Model/ * SavePanel.gmodel: More GUI elements, nearing completion Wed Nov 18 17:20:02 1998 Adam Fedor * brain.make (SYSTEM_LIBS): Remove dps libs from xraw compilation. Mon Nov 16 15:09:47 1998 Adam Fedor * application.make: Change RESOURCE_FILES="none" to "" * bunlder.make: Likewise. * target.make: Second try on NetBSD. Thu Nov 12 1998 Felipe A. Rodriguez * test-application.make add support for building individual subprojects using the typical command line of "make mySubproject". * application.make revert resource copying to original 0.5.0 in order to fix resource copy bug in xraw/Workspace example. Wed Nov 11 23:30:00 1998 Richard Frith-Macdonald * configure.in: Added checks for thread library on linux * configure: generated from configure.in * config.make.in: Set thread library value * target.make: understand thread library option Mon Nov 9 23:13:28 1998 Ovidiu Predescu * debugapp.in: Added support for fd-xraw. * openapp.in: Likewise. * test-library.make: Use :: for the $(TEST_LIBRARY_NAME) target. * test-tool.make: Likewise for the $(TEST_TOOL_NAME) target. Fri Jun 5 02:40:11 1998 Ovidiu Predescu * GNUstep.csh.in: Use braces around variables. * target.make: Added support for AIX 4.1. Tue May 26 16:01:37 1998 Ovidiu Predescu * bundle.make (internal-bundle-install): Don't remove the installed bundle if it exists to avoid removing other binaries already installed. * test-tool.make (internal-testtool-uninstall): New target. Mon Nov 9 16:34:20 1998 Adam Fedor * configure.in: Don't assume . in path (Fix from Christopher Seawood ). Fri Nov 6 13:15:00 1998 Richard Frith-Macdonald * target.make: If objc library built with threads, assume we need to link with -lpthread on linux. Tue Nov 3 10:30:12 1998 Adam Fedor * target.make (netbsd): New (attempt at) shared lib target. Wed Oct 21 21:00:00 1998 Richard Frith-Macdonald * target.make: Add -rdynamic to ld flags on linux so that bundles work correctly. Mon Oct 5 09:12:41 1998 Adam Fedor * GNUstep.csh.in: Fix up syntax problems (from Don Bottstein ). Mon Sep 14 11:28:26 1998 Adam Fedor * ld_lib_path.sh: Add quotes around *_LIBRARY_PATH (patch from doko@cs.tu-berlin.de (Matthias Klose)). Thu Sep 3 15:19:57 1998 Adam Fedor * configure.in: Check for DPS. * config.make.in: Add DPS_DEFINE. Tue Aug 25 10:02:03 1998 Adam Fedor * openapp.in, debugapp.in: Fix typo. (patch from doko@cs.tu-berlin.de (Matthias Klose)). * GNUstep.csh.in: Add GNUSTEP_BUILD_ROOT for building GNUstep. * GNUstep.sh.in: Likewise. * config_threaded.m: New config check. * configure.in: Use it. * config.make.in (objc_threaded): New variable. * target.make: Specify thread library and other flags based on objc_threaded. Thu Aug 20 11:41:48 1998 Adam Fedor * openapp.in, debugapp.in: Set LIBRARY_COMBO only if not set. * brain.make: Likewise for library_combo. * GNUstep.csh.in: Add braces around some variables (Changes from Christopher Seawood ). * ld_lib_path.sh,ld_lib_path.csh: Check if variables set before changing. * whichlib.c: Fixup dirent includes. Wed Aug 12 15:25:00 1998 Richard Frith-Macdonald * openapp.in: export LIBRARY_COMBO. Tue Aug 4 16:43:55 1998 Adam Fedor * application.make: Correct resource installation when RESOURCE_FILES not defined. * bunlde.make: Likewise. Tue Aug 4 12:50:00 1998 Richard Frith-Macdonald * brain.make: use -ldps even with xraw library. Tues Aug 4 1998 Felipe A. Rodriguez * test-application.make set $(TEST_APP_NAME) to be a double colon target. Sat Jul 31 21:20:00 1998 Richard Frith-Macdonald * common.make: Modified to set LDFLAGS to use '-pg' when compiling with 'profile=yes' and LD == CC Fri Jul 31 15:08:25 1998 Richard Frith-Macdonald * brain.make: Fixed to use the command-line specification of 'library_combo' (if given) rather than the default library combo. Mon Jul 20 10:38:25 1998 Adam Fedor * application.make (app-resource-files): Use For loop to copy files. * bundle.make (app-resource-files): Likewise. Fri Jul 10 21:46:19 1998 Adam Fedor * target.make (HP_UX SHARED_LINK): Fix up including *.o files. Wed Jun 17 10:00:20 1998 Adam Fedor * brain.make: Add xraw library combo option * library.make: Add --no-keep-going MAKE option. * tool.make: Likewise. Fri Jun 12 22:15:00 1998 Richard Frith-Macdonald * which_lib.c Fixed generation of library suffix and logic for shared libraries to get debug-profiled libraries chosen correctly. Fri May 29 13:31:36 1998 Adam Fedor * common.make (ADDITIONAL_FLAGS): Add -DDEBUG for debug=yes. * target.make (HP-UX SHARED_LINK): Add */*.o files. Tue Apr 14 22:45:38 1998 Ovidiu Predescu * test-tool.make (internal-testtool-check): New target. Wed Apr 1 19:37:26 1998 Ovidiu Predescu * bundle.make (xxx_PRINCIPAL_CLASS): New variable to support specifying the principal class of a bundle. * rules.make: Pass PRINCIPAL_CLASS down in the recursive make. * test-tool.make (internal-testtool-install): New empty rule. Wed Mar 11 23:28:11 1998 Ovidiu Predescu * brain.make: New makefile variable 'gc' used to specify the Boehm's garbage collector (currently works only with libFoundation). * Added emacs variables at the end of makefile fragments. * Added the missing /bin/sh line in the shell scripts (bug report from Helge Hess ). Wed Mar 4 22:48:04 1998 Ovidiu Predescu * tool.make: Don't pass LIBFOUNDATION_GC_LIBRARY when linking the program. * test-library.make: Likewise. * brain.make (OBJC_LIBS): If working with libFoundation compiled with Boehm's garbage collector support, use a special Objective-C runtime library (libobjc_gc) and link against the gc library. Fri May 15 12:00:27 1998 Adam Fedor * application.make (APP_RESOURCE_DIRS): New variable. (app-resource-dir): New target. (app-resource-files): Include full RESOURCE_FILES path in cp to-file. Wed May 13 16:00:37 1998 Adam Fedor * GNUmakefile.in: Create GNUSTEP_LIB_COMBO directory. * brain.make (GUI_LIBS): Include -lgnustep-gui twice. * target.make (OPENSTEP 4.X): Fix libtool flags. * tool.make (TOOL_INSTALLATION_DIR): Conditionally set this. Sun Apr 5 20:06:03 1998 Scott Christley * documentation.make: Have html rule be based upon the table of contents file. Sun Apr 5 19:07:54 1998 Scott Christley * GNUmakefile.in: install/uninstall new files; create full target subdirectories. * GNUstep.sh.in: Add shell magic name. * MediaBook.sh: Likewise. * clean_cpu.sh: Likewise. * clean_os.sh: Likewise. * clean_vendor.sh: Likewise. * Add csh support. * GNUstep.csh.in: New file. * ld_lib_path.csh: New file. * configure.in: Add GNUstep.csh.in to output files * configure: Regenerate. * Add documentation support. * documentation.make: New file. * common.make: Define documentation variables. * rules.make: Pass documentation variables to sub-makes. Tue Mar 24 15:54:55 1998 Adam Fedor * bundle.make (BUNDLE_RESOURCE_DIRS): Make all dirs a subdirectory of Resources. (bundle-resource-files): Include full RESOURCE_FILES path in cp to-file. * target.make: Add specifications for HP-UX. Sat Feb 14 16:32:14 1998 Scott Christley * tool.make (TOOL_INSTALLATION_DIR): Move definition outside of if clause so that it is always defined. 1998-02-09 Ovidiu Predescu * common.make (GNUSTEP_MAKEFILES): Moved the definition to the top of the file because it is needed to include several files. Mon Feb 9 00:23:33 1998 Ovidiu Predescu * brain.make: Added the initial support for the integration of Boehm's garbage collector into libFoundation. Include libFoundation.make in case it's present and add the Boehm's GC library to the list of Foundation libraries. * library.make (internal-library-uninstall): Added the before-uninstall and after-uninstall. * test-library.make: Added LIBFOUNDATION_GC_LIBRARY to the list of files used when linking. * tool.make: Likewise. * which_lib.c: Collect the rest of flags and output them at the end. We should change this mechanism to keep the order in which the flags appear on the command line. Fri Feb 6 12:25:51 1998 Adam Fedor * common.make (GNUSTEP_MAKEFILES): Set only if not already set. * *.make: Use GNUSTEP_MAKEFILES in place of $(GNUSTEP_SYSTEM_ROOT)/Makefiles. 1998-02-05 Ovidiu Predescu * brain.make (GUI_LIBS): Changed the order of the gui and gmodel libraries. * library.make (internal-library-all): Added before-all and after-all in the list of dependencies. The same thing should be added in the other makefile fragments, maybe using a more general way. * rules.make (internal-clean): Remove directories that have been changed too. * tool.make (internal-tool-install): Add internal-tool-all to the list of dependencies. Wed Feb 4 09:01:16 1998 Adam Fedor * target.make: Add TARGET_SYSTEM_LIBS for irix OS. Tue Feb 3 22:47:38 1998 Ovidiu Predescu * brain.make: Include libFoundation.make which is now installed by libFoundation to support Boehm's garbage collector. * target.make (OPENSTEP): Add LIBRARIES_FOUNDATION_DEPEND_UPON to the list of libraries to link against when building a shared library. Sun Feb 1 04:05:07 1998 Ovidiu Predescu * test-library.make: Force the creation of unix.exp file. Fri Jan 30 14:14:40 1998 Ovidiu Predescu * application.make: Create the Resources/Info-gnustep.plist to keep information about the application resources. Copy the resource file in the Resources directory. (internal-app-install): Remove first the target. * brain.make: Add to GUI_LIBS the extensions library. * bundle.make: Add support for building the bundle wrapper. Create the Info-gnustep.plist file automatically to keep information about the main bundle class and executable. New target for uninstalling a bundle. * library.make (internal-uninstall-headers): Change to support empty HEADER_FILES variables. * rules.make (%.build): Pass in the BUNDLE_LIBS variable the global libraries beside those required by a given bundle. Also pass the bundle's installation directory. * bundle.make (Solaris/BUNDLE_LDFLAGS): Revert the changes made by Adam to support bundles with 2.7.2.1; these changes also work with 2.8. Tue Jan 27 15:38:12 1998 Adam Fedor * target.make (Solaris/BUNDLE_LDFLAGS): New flags for gcc2.8.0 Sun Jan 11 13:00:46 1998 Scott Christley * GNUmakefile.preamble: Add additional flags. * MediaBook.func (c): Display library combo setting and move display of the CVS root. * application.make: Correct comment. * config.make.in (X_INCLUDE, X_LIBS): Define to be empty if not using the X Window System. * rules.make (%.build): Pass additional flags. * target.make (nextstep4): Use ALL_LIB_DIRS instead of specifying the individual user, local, and system dirs. (nextstep3): Add system specific settings for NEXTSTEP 3.x Fri Jan 9 12:16:19 1998 Ovidiu Predescu * aggregate.make: Run the recursive make using the makefile specified in the MAKEFILE_NAME variable. * bundle.make: Likewise. * library.make: Likewise. * objc.make: Likewise. * rules.make: Likewise. * test-application.make: Likewise. * test-library.make: Likewise. * test-tool.make: Likewise. * tool.make: Likewise. * application.make: Likewise. Copy the resource files into the Resources directory inside the app wrapper. Added rule to generate the Info-gnustep.plist file. * brain.make: Add the gmodel library to the list of GUI libraries. * common.make: Define the default value of MAKEFILE_NAME to be GNUmakefile. * target.make: Added flag to libtool so that we don't treat undefined symbols as errors when building a shared library under OPENSTEP. Tue Jan 6 11:06:27 1998 Ovidiu Predescu * target.make (target OPENSTEP): Added -undefined warning to the libtool command line to make possible the creation of shared libraries that include symbols defined in the startup object files. Wed Dec 17 10:40:02 1997 Ovidiu Predescu * ld_lib_path.sh: Don't treat Solaris' LD_LIBRARY_PATH different (patch from Matthias Klose ). Fri Nov 28 10:47:11 1997 Scott Christley * common.make (GNUSTEP_INSTALLATION_DIR): If the default GNUSTEP_LOCAL_ROOT is empty then use GNUSTEP_SYSTEM_ROOT. (GNUSTEP_LOCAL_HEADERS_FLAG, GNUSTEP_USER_HEADERS_FLAG): New variable. (GNUSTEP_LOCAL_TARGET_LIBRARIES_FLAG): New variable. (GNUSTEP_LOCAL_LIBRARIES_FLAG): New variable. (GNUSTEP_USER_TARGET_LIBRARIES_FLAG): New variable. (GNUSTEP_USER_LIBRARIES_FLAG): New variable. In places where GNUSTEP_LOCAL_ROOT and GNUSTEP_USER_ROOT are used, check to see if they are not blank before using them. (GNUSTEP_FND_DIR): Change to just gnustep. * objc.make (OBJC_PROGRAM_INSTALLATION_DIR): Add the target subdirectory path. (objc-program): Change to objc_program for target names. * rules.make (ALL_OBJCFLAGS, ALL_CFLAGS): Use flag variables for local and user header directories in case they are blank. (ALL_LIB_DIRS, LIB_DIRS_NO_SYSTEM): Likewise. Wed Nov 19 13:07:37 1997 Scott Christley * COPYING: New file. * config.site: Escape $ characters. Wed Nov 19 10:58:28 1997 Ovidiu Predescu * debugapp.in: Changed library_combo variable to LIBRARY_COMBO. * tool.make: When installing take the tool from GNUSTEP_OBJ_DIR. Mon Nov 17 13:05:44 1997 Ovidiu Predescu * application.make: Output the file containing the paths for the dynamic linker for each library combo instead of a global file for all the combinations. * openapp.in: Support the above change. * debugapp.in: Likewise. * rules.m (ALL_OBJCFLAGS, ALL_CFLAGS): Remove unnecessary -I. Fri Nov 14 12:51:16 1997 Scott Christley * test-application.make: New file. * test-tool.make: New file. * GNUmakefile.in: Install new files. * aggregate.make: Prevent multiple inclusions. * application.make: Likewise. * bundle.make: Likewise. * library.make: Likewise. * objc.make: Likewise. * rules.make: Likewise. * test-library.make: Likewise. * tool.make: Likewise. Fri Nov 14 09:53:50 1997 Ovidiu Predescu * brain.make: Added defines for the GUI and backend libraries. * configure.in: Set the executable flag for openapp and debugapp. * openapp.in: Added support for target abbreviations. * debugapp.in: Likewise. * rules.make: Removed the debugging comments. Fri Nov 14 09:31:47 1997 Scott Christley * config.make.in (library_combo): Rename to default_library_combo. * brain.make: Use the default library combo as an initial setting. Thu Nov 13 15:08:13 1997 Scott Christley * rules.make: Replace dash with underscore for type not target. * openapp.in: Determine host information if necessary. * debugapp.in: Determine host information if necessary. * MediaBook.sh: Save original variables. * config.site (bindirtop): Define. * MediaBook.func (hostinfo, assignpaths): New functions. (librarycombo, systemroot, localroot, userroot): New functions. * GNUmakefile.in (GNUSTEP_INSTALLATION_DIR): Define. Thu Nov 13 11:35:31 1997 Scott Christley * GNUstep.sh.in: Add user and local to PATH. Make user root be GNUstep directory in home directory. * GNUmakefile.in (uninstall): Only uninstall files that we have installed. Thu Nov 13 09:27:33 1997 Ovidiu Predescu * test.make: Renamed to test-library.make. Wed Nov 12 19:12:20 1997 Ovidiu Predescu * bundle.make: Changed to work with the new rules.make rules. * library.make: Make the install target depend on all. * test.make: Reworked for the new rules.make. * rules.make: Removed the definitions needed by test.make. Wed Nov 12 13:29:24 1997 Ovidiu Predescu * common.make (OBJCFLAGS): Removed the -Wno-implicit flag since it could hide some programming errors. Tue Nov 11 14:43:56 1997 Adam Fedor * target.make (Solaris/BUNDLE_LDFLAGS): Change the flags. Fri Nov 7 16:33:22 1997 Ovidiu Predescu Reworked a bunch of files to be more general and faster. * clean.make: File removed. * GNUmakefile.in: Removed the clean.make. * rules.make: Reworked to be simpler and faster. * library.make: Reworked for the new rules.make. * names.make: Likewise. * objc.make: Likewise. * tool.make: Likewise. * application.make: Likewise. Wrote the install target support. * config.make.in: New definition for TAR. * test.make (testbundle-resource-files): Added __done at the end of the for list command so the shell doesn't crash if the list is empty. * brain.make: Small changes on the OPENSTEP support. * target.make: Added LIBRARIES_DEPEND_UPON to the list of libraries for OPENSTEP. Sat Nov 1 13:17:07 1997 Scott Christley * brain.make: Export LIBRARY_COMBO. * common.make: Target and GUI header include flags should contain user, local, and system roots. Rename GNUSTEP_TARGET_HEADERS to GNUSTEP_HEADERS_TARGET_FLAG. * rules.make: Rename GNUSTEP_TARGET_HEADERS to GNUSTEP_HEADERS_TARGET_FLAG. Add AUXILIARY macros for auxiliary libraries to add flags (e.g. gnustep-db). * test.make: Put additional_library_paths outside of for loop. Thu Oct 31 11:30:00 1997 Richard Frith-Macdonald * which_lib.c: Modified for systems where realloc() doesn't handle nul pointers correctly. * target.make: Fixed for creation/installation of static libraries now that they don't have version numbers again. Thu Oct 30 17:22:13 1997 Ovidiu Predescu * rules.make: Don't use an additional variable for specifying the dynamic linker paths, use the normal linker paths. * test.make: Likewise. Correctly process the additional library paths so it contains only absolute paths. Thu Oct 30 15:49:53 1997 Scott Christley * rules.make: Fix variables when building test applications. * test.make: Fix rules for building test applications. Thu Oct 30 13:23:31 1997 Scott Christley * objc.make: New file. * GNUmakefile.in: Install new file. Add targets to regenerate automatically generated files. * aggregate.make: Have make stop when error occurs. * bundle.make: Elminate stamp files. * config.make.in: Save any LIBS specified by user. * configure.in: Correct default library combo. * configure: Regenerate for configure.in changes. * rules.make: Add ObjC program support. Have make stop when error occurs. Correct variables that are being passed to recursive makes. * target.make: Do not specify the thread library; instead the user should define it when running configure with the LIBS environment variable. * test.make: Eliminate stamp files. Correct bundle rules. Thu Oct 30 09:35:34 1997 Ovidiu Predescu * common.make: Add the cpu/os/runtime include flag only for libFoundation since only it requires this for the exception files. * debugapp.in: Support for GDBbundle under OPENSTEP. * rules.make: Don't show the recursive make command. Wed Oct 29 09:32:26 1997 Ovidiu Predescu * core.make: Renamed to brain.make to avoid removing it accidentally by the configure script. Wed Oct 29 10:02:37 1997 Adam Fedor * GNUstep.sh.in: Use -f to find user's GNUstep.sh. * configure.in (ac_cv_library_combo): Use dashes instead of underlines. * target.make (TARGET_SYSTEM_LIBS): Add -lthread for Solaris. Tue Oct 28 09:32:23 1997 Ovidiu Predescu * common.make: Define the system, local and user headers variables. Also define the compilation flags based upon these variables. * ld_lib_path.sh: Use LIBRARY_COMBO instead of library_combo because the first one is automatically exported by both GNUmake and the shell. No longer use the export_variable to print out the name of the dynamic linker environment variable. * openapp.in: Changed underscores to dashes in the library combo names. * debugapp.in: Likewise. * rules.make: Add search paths for include files to the user, local and system header directories. The same with the libraries. * test.make: Create the unix.exp file to search for the configuration files in all the user, local and system directories. Use ld_library_path.sh to setup the dynamic linker's environment variable since we can't rely on how different paths are separated in this variable. Mon Oct 27 18:01:38 1997 Ovidiu Predescu * Makefile: Renamed to GNUmakefile. * Makefile.preamble: Renamed to GNUmakefile.preamble. * Makefile.postamble: Renamed to GNUmakefile.postamble. Mon Oct 27 17:18:39 1997 Ovidiu Predescu * core.make: Use dashes instead of underscores in the library combo. * DESIGN: Updated. Mon Oct 27 15:46:56 1997 Ovidiu Predescu * library.make: Don't append the version to a static library (bug fix from Gregor Hoffleit ). * core.make: Added support for library_combo abbreviations. Mon Oct 27 14:50:06 1997 Ovidiu Predescu * library.make: Make it recursive so you can build several libraries in the same directory. * common.make: Added GNUSTEP_INSTALLATION_DIR, the directory where all stuff gets installed; by defaults is setup to the local root. Changed all the variables accordingly. Removed definitions of INSTALL programs since they are in config.make. * GNUstep.sh.in: Add the LIBRARY_COMBO variable. Setup the PATH to also point to the tools directory. * rules.make: New implicit rules %.buildlib and %.installlib to support the recursive building of libraries. * tool.make: Install the tools in the proper directory. Fri Oct 24 20:26:41 1997 Ovidiu Predescu Added support for the OPENSTEP Foundation library in the testing related makefiles. * bundle.make: Replace LD with BUNDLE_LD. * common.make: Define a directory for the extensions under OPENSTEP. * core.make: Change the definition of NeXT_foundation_LIBRARY to NeXT_Foundation_LIBRARY. * rules.make (ALL_TEST_LIBRARY_LIBS): Include an additional variable AUXILIARY_LIBS. * target.make: Set HAVE_BUNDLES to yes only for NeXT runtime. Define BUNDLE_LD appropriate for all the targets. * test.make: Use BUNDLE_LD when building a bundle. Define the Foundation and the runtime used when running DejaGnu. Tue Oct 21 17:31:27 1997 Ovidiu Predescu * application.make (app-resource-files): Check to see if the RESOURCE_FILES variable is defined so we don't get sh parse errors. * target.make (OPENSTEP targets): Also search for libraries when building a shared library in ADDITIONAL_LIB_DIRS. Mon Oct 20 08:48:02 1997 Scott Christley * rules.make: (%.tool): Rename to %.buildtool. * tool.make: Eliminate use of stamp file. Mon Oct 20 08:26:01 1997 Scott Christley * debugapp is like openapp except it runs gdb for the app. * debugapp.in: New file. * Makefile.in: Install debugapp. * configure.in (AC_OUTPUT): Add debugapp. * configure: Regenerate for configure.in changes. * application.make: Copy resource files into application. * rules.make (AUXILIARY_TOOL_LIBS, AUXILIARY_GUI_LIBS)): Add new variables which auxiliary library makefile fragments can modify so as to have their libraries linked in. Fri Oct 17 14:17:40 1997 Scott Christley * test.make: Add comment about variable. Fri Oct 17 11:32:24 1997 Ovidiu Predescu * application.make: Don't print the commands for building the .iconheader file on OS systems. Thu Oct 16 17:31:43 1997 Scott Christley * names.make: New file. * target.make: Move determination of host and target system to names.make file. * Makefile.in: Install names.make. * common.make: Include names.make and set the host and target directory variables before including config.make. Thu Oct 16 12:04:32 1997 Ovidiu Predescu * common.make: Turn off the optimizations when compiling with debug enabled. Thu Oct 16 11:23:05 1997 Ovidiu Predescu * ld_lib_path.sh: Set IFS to blank and newline to make the for loop run correctly. Remove double quotes around $additional_library_paths in the for loop. * openapp.in: Put double quotes around the cat command when obtaining the value for additional_library_paths. * transform_paths.sh: Search through all the directories in $@, not in "$*". Wed Oct 15 12:14:42 1997 Ovidiu Predescu Better support for building applications. * application.make: Reworked to eliminate the need of timestamp files which cause weird behavior when building. Also it is possible to have different extensions for the application directory based upon the debug and profile variables (.app, .debug and .profile). * rules.make: Changed the name of the implicit rule %.app to %.buildapp to make possible creation of applications with different extensions. * core.make: Removed targets from the OS 4.x specific section. Better support of shared libraries in openapp. * openapp.in: Read in the library_paths.openapp file from the application directory; this file contains additional directories that should be added to the dynamic libraries search paths. * ld_lib_path.sh: Support adding additional library paths from an environment variable. This is set by openapp from a file inside the application. * application.make: Output an additional file in the application directory containing additional library search paths. * common.make: New variable TRANSFORM_PATHS. * library.make: First install the library and then the headers. * rules.make: Change the order of GUI and Foundation LDFLAGS. * openapp.in: Remove the slashed from the end of the application name. * DESIGN: Fixed typos. Document how the application's directory extension is chosen. Tue Oct 14 15:28:52 1997 Ovidiu Predescu * DESIGN: Wrote about the naming conventions for libraries and how they are chosen by the package. * Makefile.preamble: Use += instead of =. * application.make (stamp-app-% rule): Added before-link target to support building of OPENSTEP 4.x applications. (internal-distclean): New target. * common.make: Changed the order in which target.make gets included. More support for building a native OPENSTEP 4.x application added. * core.make: Write the correct linking flags for building an application under OPENSTEP 4.x. Create the .iconheader file automatically. * openapp.in: Check to see if the application really exists before checking for the binary. Correctly check for the binary under OS 4.x. * target.make: On OS 4.x systems with NeXT's Foundation, use the native compiler. If we don't use the native compiler don't pass the GNU ObjC runtime library and libgcc to libtool. * which_lib.c: Correctly skip the libraries with the same suffix. Tue Oct 14 11:26:15 1997 Ovidiu Predescu * openapp.in: Add the possibility of passing arguments to the application. Tue Oct 14 10:03:04 1997 Scott Christley * README: Update installation instructions. * bundle.make (BUNDLE_DIR_NAME): Elminate period. * config.make.in (YACC, BISON, FLEX, LEX): New variables. * which_lib.c (search_for_library_with_type_in_directory): Correct testing of filename so that only legitimate combinations of name suffixes are recognized. Mon Oct 13 16:06:12 1997 Ovidiu Predescu * openapp.in: New file. * GNUstep.sh.in: Added $GNUSTEP_SYSTEM_ROOT/Tools to the PATH. * Makefile.in: Install openapp in $GNUSTEP_SYSTEM_ROOT/Tools. * configure.in: Create openapp. * ld_lib_path.sh: Changed to export the library path for different systems. Mon Oct 13 12:21:59 1997 Ovidiu Predescu * configure.in: Check to see if a DPS directory exists inside the X11 headers tree. Wed Oct 8 11:57:48 1997 Ovidiu Predescu * library.make: Define the `before-install' target to depend on `all'. * rules.make: `install' no longer depends on all. Tue Oct 7 15:59:28 1997 Ovidiu Predescu * common.make: New FOUNDATION_LIBRARY_NAME, FOUNDATION_LIBRARY_DEFINE and RUNTIME_DEFINE make variables. Correctly handle the suffix of a library name (using LIBRARY_NAME_SUFFIX). * library.make: Append to the name of the library the suffix which identifies its type. Output the library in the object files directory. * rules.make: Move INTERNAL_LDFLAGS to the end of ALL_LDFLAGS definition. Removed unnecessary passing of TARGET_LIB_DIR to shell scripts. Process the libraries used to create a test using the which_lib program. New variable SCRIPTS_DIRECTORY which identifies the location of the dejagnu scripts (it can be not defined in which case the current directory is assumed). * target.make: For OS 4.x: don't hard code the location to libobjc and libgcc, pass -L flags to libtool that point to the various GNUstep directories. Define ADDITIONAL_LDFLAGS with a flag to linker that disables warning for common symbols. * test.make: Assume the driver program is located under the object files directory. Create the unix.exp file in the config directory where the test scripts are located. Compressed the internal-check-* targets into a single target. * rules.make: Work with the new internal-check-* targets. * which_lib.c: Fixed a bug when two libraries that have the same prefix were matching. Sun Oct 5 20:30:01 1997 Ovidiu Predescu * common.make: Take the which_lib script from the host_cpu/host_os directory. * target.make: Create the target library to be a link to the versioned one for OS 4.x. Sat Oct 4 23:08:01 1997 Ovidiu Predescu * target.make: Set the extension of shared libraries under OS 4.x to be .a because the compiler/linker does not handle other extensions. * library.make: Output the library in the current directory to be able to solve problems with different library paths under systems with shared libraries. Fri Oct 3 14:48:15 1997 Ovidiu Predescu * Support the host install program if any. * Makefile.in: Added definitions for INSTALL variable. Delete the which_lib program in the clean target. * config.make.in: Define INSTALL to be the value of HOST_INSTALL instead of INSTALL. * configure.in: Check if the INSTALL program is the install-sh script. If so define HOST_INSTALL to be the install script; otherwise it is the host install program. * which_lib.c: Include limits.h. Fri Oct 3 13:43:18 1997 Ovidiu Predescu * Added support for linking with different types of a library, depending on the flags you specify at the make time. * which_lib.c: New file. * config.h.in: New file. * Makefile.in: Added rule to build and install the which_lib program. * common.make: Added definition for WHICH_LIB_SCRIPT. * rules.make: Added rules to process the libraries list and obtain a new one based upon the debug, profile and shared variables. * configure.in: Added checks for various header files needed to compile the which_lib program. * library.make: Added new variable LIBRARY_FILE_EXT. * application.make: Replaced foreach with :.something=.someotherthing. * bundle.make: Likewise. * test.make: Likewise. * tool.make: Likewise. * config.make.in: Changed the hard-coded definition of ld to be $(CC). Added definitions for INSTALL programs. * configure.in: Added check for the INSTALL program. * library.make: New target internal-distclean. * rules.make: internal-distclean does not make first the clean target. * target.make: Shared libraries under OS 4.x have the .so extension. Thu Oct 2 14:56:08 1997 Scott Christley * ld_lib_path.sh: New file. * common.make: Add variables which define explicit paths to the system, local, and user library directories. * rules.make (ALL_LD_LIB_DIRS): Variable which specifies the standard GNUstep and the user's specific directories of where the dynamic loader can find shared libraries. * target.make (LD_LIB_PATH): Call shell script which returns the name of the environment variable used by the dynamic loader. * test.make: Set the dynamic loader environment variable when running tests. * test.make: New file. * rules.make: Add test building and check rules. * Makefile.in: Install test.make. Thu Oct 2 10:21:41 1997 Ovidiu Predescu * common.make.in: Remove the default library combo for OPENSTEP 4.x. * configure.in: Add a default library combo for OS 4.x here. Wed Oct 1 18:04:25 1997 Ovidiu Predescu * configure.in: Added the --with-library-combo to support specifying a default library combination. * core.make: Removed logic that defines a default library combination. * config.make.in: Add little logic for library combo. Wed Oct 1 17:03:56 1997 Ovidiu Predescu * common.make: Added -I compile flag when compiling using gnustep-base and libFoundation to get the files specific for cpu/os/runtime. * core.make: Allow the user to specify a set of variables different than the library combo. This is needed when compiling basic libraries that don't use the whole library combo (like libFoundation). Also define OBJC_RUNTIME that holds the name of the runtime, useful in make, and RUNTIME_DEFINE that defines for the runtime, useful while compiling. The last one should be added to the additional C/ObjC flags. * library.make: Define HEADER_FILES_DIR to be . by default. Changed the rule for building the library to build it into the object files directory. Cleaned the internal-clean rule. * rules.make: Remove newlines in compilation rules. Added the 'all' target in the list of dependencies for install. * target.make: Cleaned the rules for building a shared library under OPENSTEP 4.x. Added flags to linker to disable printing of warnings for read only relocation symbols. Wed Oct 1 11:15:22 1997 Scott Christley * bundle.make: Add install and uninstall targets. Use bundle extension variable. (BUNDLE_LIBS): Libraries to link against when building a bundle. * rules.make (BUNDLE_EXTENSION): Allow the user to specify a different extension for the bundle directory name. Tue Sep 30 14:24:20 1997 Scott Christley * Add bundle support. * bundle.make: Define rules and variables. * rules.make: Add main bundle rule. Surround complete file with if to prevent multiple inclusion. * target.make: Define bundle variables. * application.make: Delete old code. Tue Sep 30 08:27:28 1997 Scott Christley * Makefile.preamble (ADDITIONAL_TOOL_LIBS, ADDITIONAL_GUI_LIBS): Add template variables for additional libraries when linking. * application.make (internal-app-all): Build object directory. * common.make (GNUSTEP_HEADERS_FND): New variable. (GNUSTEP_OBJ_PREFIX): New variable. (GNUSTEP_TARGET_LIBRARIES): New variable. * library.make: Add uninstall targets. * rules.make (ALL_LIB_DIRS): Search GNUSTEP_TARGET_LIBRARIES. * tool.make (internal-clean): Remove object directory. Fri Sep 26 13:16:03 1997 Scott Christley * Makefile.in: Define install script. * application.make: Correct name of stamp file. * common.make: Define install script. * config.make.in: Do not define install script. * configure.in: Do not check for install script. * configure: Regenerate for configure.in changes. * library.make: Use -f instead of -e. * target.make: Customize alpha-linux system libraries. Thu Sep 25 23:31:30 1997 Scott Christley * library.make (internal-install-lib): Install correct file. * common.make (GNUSTEP_TARGET_HEADERS): New variable. * rules.make (ALL_OBJCFLAGS, ALL_CFLAGS): Add target header directory to include directories. Thu Sep 25 20:20:50 1997 Scott Christley * Makefile.in (config.site): Install in share directory not the makefile package directory. Thu Sep 25 18:22:43 1997 Ovidiu Predescu * DESIGN: A word about building different types of a project. Thu Sep 25 17:32:37 1997 Ovidiu Predescu * DESIGN: Updated to contain the latest changes in the package. * Makefile.in: Use a for loop to install the files. * aggregate.make: Commpress all the internal-* targets into a single rule to make the maintanance easier. * rules.make: Add rule for creating the object files directory here instead of having the same rule in several files. * application.make: Remove creation of the object files directory. Just add the dependency to the targets. * tool.make: Likewise. * clean.make: Optimize cannonicalization of host/target cpu/os/vendor by adding a flag that says if they are already cannoical or not. * target.make: Use the variable defined above to speed up the building process. * common.make: Added support for building separate versions of libraries for debugging, profiling and/or static or shared. Use different object file directories instead of using a suffix to the file name. Building a shared library is now the default for systems that support shared libraries. * library.make: Removed the two variables for specifying the shared library and the static one. Added two new target variables which define commands to be run after the installation of either the static or of the shared library. * target.make: Define the two new variables above for the different supported systems. * common.make: Added a partial support for the NeXT compiler. We also need a way to determine what compiler is used, which is simple because our tools only partially work with the NeXT runtime/compiler. * core.make: Support for the NeXT Foundation and AppKit added. * rules.make: Use flags to specify the include paths while compiling to support NeXT frameworks. Cleanup in the shared libraries support. * rules.make: .PRECIOUS target added to disable removing of intermediate files (Scott's idea). Thu Sep 25 11:25:36 1997 Ovidiu Predescu * Makefile.in: Include config.make to get the definition for the INSTALL program. Use INSTALL program instead of cp. * aclocal.m4: Remove unnecessary file. * configure.in: Remove checks for unnecessary X libraries. * application.make: Added newline at the end of file. * library.make: Likewise. * rules.make: Likewise. * tool.make: Likewise. * common.make: Define SHELL to be /bin/sh to avoid possible problems. Wed Sep 24 17:54:41 1997 Scott Christley * target.make: Correct settings for solaris. Wed Sep 24 14:00:03 1997 Scott Christley * Makefile.in: Run scripts in current directory. * config.site: For autoconf packages in the GNUstep directory structure, the headers and libraries must go into the appropriate target subdirectory. Tue Sep 23 15:18:08 1997 Scott Christley * application.make: Utilize object directory. * tool.make (object_dir): Rename to object-dir. * library.make (object_dir): Rename to object-dir. Tue Sep 23 13:48:02 1997 Scott Christley * DESIGN: New file. * README: New file. * common.make: Add variable for the Resources directory. * library.make: Properly install the shared library. * rules.make: Delete temporary files. * target.make: Remove unneeded code. * tool.make: Put the stamps in the object directory. Mon Sep 22 17:57:50 1997 Scott Christley * common.make: Add support for putting object files in a different directory. * tool.make: Likewise. * rules.make: Likewise. * library.make: Add support for shared libraries. * target.make: Likewise. Mon Sep 22 15:12:14 1997 Scott Christley * ChangeLog: New file. gnustep-make-2.7.0/java.make0000664000175000017500000000161610711636501015520 0ustar richardrichard# # java.make # # Makefile rules to build GNUstep-based javas. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/java.make else ifeq ($(GNUSTEP_TYPE),java_package) include $(GNUSTEP_MAKEFILES)/Instance/java.make endif endif gnustep-make-2.7.0/service.make0000664000175000017500000000162010711636501016232 0ustar richardrichard# # service.make # # Makefile rules to build GNUstep services. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/service.make else ifeq ($(GNUSTEP_TYPE),service) include $(GNUSTEP_MAKEFILES)/Instance/service.make endif endif gnustep-make-2.7.0/config-install-p-test/0000775000175000017500000000000013074115160020055 5ustar richardrichardgnustep-make-2.7.0/config-install-p-test/run-test.sh0000775000175000017500000000567311141620311022200 0ustar richardrichard#! /bin/sh # # Test for '-p' flag in 'install' program # # Copyright (C) 2009 Free Software Foundation, Inc. # # Author: Nicola Pero # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Check if 'install' program supports the '-p' flag. # You should execute this shell scripts after setting the following # environment variables: # # INSTALL # # ./configure at the top-level will set them for us; you need to # set them manually if you want to run the test manually. # We simply try executing # # ${INSTALL} -p test-file test-file2 # # and then check that test-file2 exists # The script will execute and: # return 0 if install supports '-p' # return 1 if install does not support '-p' # The script takes a single argument, which is the directory where # the temporary files and the log file will be written. If there # is no argument specified, ./ will be used. # This is the file where everything will be logged gs_builddir="$1" if test "$gs_builddir" = ""; then gs_builddir="." fi gs_logfile="$gs_builddir/config-install-p-test.log" # Clear logs rm -f "$gs_logfile" # Clear test results rm -f "$gs_builddir/config-install-p-test-file2" echo "** Environment" >>"$gs_logfile" 2>&1 echo " INSTALL: $INSTALL" >>"$gs_logfile" 2>&1 echo "" >>"$gs_logfile" 2>&1 echo " current directory: `pwd`" >>"$gs_logfile" 2>&1 echo " log file: $gs_logfile" >>"$gs_logfile" 2>&1 echo "" >>"$gs_logfile" 2>&1 echo "" >>"$gs_logfile" 2>&1 if test "$INSTALL" = ""; then echo "INSTALL is not set: failure" >>"$gs_logfile" 2>&1 exit 1 fi # Try to install config-install-p-test-file using '-p'. echo "** Run $INSTALL -p" >>"$gs_logfile" 2>&1 echo "$INSTALL -p config-install-p-test-file \"$gs_builddir/config-install-p-test-file2\"" >>"$gs_logfile" 2>&1 $INSTALL -p config-install-p-test-file "$gs_builddir/config-install-p-test-file2" >>"$gs_logfile" 2>&1 if test ! "$?" = "0"; then echo "Failure" >>"$gs_logfile" 2>&1 rm -f "$gs_builddir/config-install-p-test-file2" exit 1 fi echo "No error reported by $INSTALL" >>"$gs_logfile" 2>&1 echo "" >>"$gs_logfile" 2>&1 # Now check that the copied file is identical to the original one. echo "** Checking that the installed file exists" >>"$gs_logfile" 2>&1 if test ! -f "$gs_builddir/config-install-p-test-file2"; then echo "Failure - file \"$gs_builddir/config-install-p-test-file2\" missing" >>"$gs_logfile" 2>&1 exit 1 fi echo "Success" >>"$gs_logfile" 2>&1 # Everything looks OK. exit 0 gnustep-make-2.7.0/config-install-p-test/config-install-p-test-file0000664000175000017500000000002211141620311025022 0ustar richardrichardSome text. Thanksgnustep-make-2.7.0/nsi-app.template0000664000175000017500000000762610732515576017066 0ustar richardrichard; @gs_name@.app installer script ; !define PRODUCT_NAME "@gs_name@" !define PRODUCT_VERSION "@gs_version@" !define PRODUCT_PUBLISHER "GNUstep" !define PRODUCT_WEB_SITE "http://www.gnustep.org" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\GNUstep" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" !define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir" ; MUI 1.67 compatible ------ !include "MUI.nsh" ; MUI Settings !define MUI_ABORTWARNING !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" ; Welcome page !insertmacro MUI_PAGE_WELCOME ; Directory page !insertmacro MUI_PAGE_DIRECTORY ; Start menu page var ICONS_GROUP !define MUI_STARTMENUPAGE_NODISABLE !define MUI_STARTMENUPAGE_DEFAULTFOLDER "GNUstep\Apps" !define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}" !insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP ; Instfiles page !insertmacro MUI_PAGE_INSTFILES ; Finish page !define MUI_FINISHPAGE_RUN_NOTCHECKED !define MUI_FINISHPAGE_RUN "$INSTDIR\GNUstep\@gs_domain@\Applications\${PRODUCT_NAME}.app\${PRODUCT_NAME}.exe" !insertmacro MUI_PAGE_FINISH ; Uninstaller pages !insertmacro MUI_UNPAGE_INSTFILES ; Language files !insertmacro MUI_LANGUAGE "English" ; Reserve files !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ; MUI end ------ Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "@gs_name@-${PRODUCT_VERSION}-setup.exe" InstallDir "C:\GNUstep" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" ShowInstDetails show ShowUnInstDetails show Var DOMDIR Section "Main" SEC01 SetOverwrite try StrCpy $DOMDIR "$INSTDIR\GNUstep\@gs_domain@" ;@file_list@ SectionEnd Section Uninstall StrCpy $DOMDIR "$INSTDIR\GNUstep\@gs_domain@" ;@delete_list@ ;@rmdir_list@ Delete "$INSTDIR\Uninstall${PRODUCT_NAME}.exe" !insertmacro MUI_STARTMENU_GETFOLDER Application $ICONS_GROUP Delete "$SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME}.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall\Uninstall${PRODUCT_NAME}.lnk" RMDir "$SMPROGRAMS\$ICONS_GROUP\Uninstall" RMDir "$SMPROGRAMS\$ICONS_GROUP" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" SetAutoClose true SectionEnd Section -AdditionalIcons !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" CreateDirectory "$SMPROGRAMS\$ICONS_GROUP\Uninstall" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME}.lnk" "$DOMDIR\Applications\${PRODUCT_NAME}.app\${PRODUCT_NAME}.exe" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall\Uninstall${PRODUCT_NAME}.lnk" "$INSTDIR\Uninstall${PRODUCT_NAME}.exe" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section -Post WriteUninstaller "$INSTDIR\Uninstall${PRODUCT_NAME}.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\Uninstall${PRODUCT_NAME}.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\m.ico" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" SectionEnd Function un.onUninstSuccess HideWindow MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." FunctionEnd Function un.onInit MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2 Abort FunctionEnd gnustep-make-2.7.0/java-executable.template0000664000175000017500000000273210645647744020556 0ustar richardrichard#!/bin/sh # # Copyright (C) 2001 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: April 2001 # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 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 # CLASSPATH and LD_LIBRARY_PATH for it. # # The name of the script # tool=$0 # # The directory we are in # tool_dir=`dirname $tool` # # The java class to execute - harcoded when the template is intalled # by java-tool.make. This should be the full Java classname (eg, # gnu.gnustep.base.xxx) # java_obj_file=JAVA_OBJ_FILE # # Load up all the GNUstep environment. # . "$GNUSTEP_MAKEFILES/GNUstep.sh" # # Find java # java_vm=java if [ ! -z "$JAVA_HOME" ]; then java_vm=${JAVA_HOME}/bin/java else if [ ! -z "$JDK_HOME" ]; then java_vm=${JDK_HOME}/bin/java fi fi # # Run java on the object file. The class will be looked up in the classpath. # exec $java_vm $java_obj_file "$@" gnustep-make-2.7.0/opentool.in0000664000175000017500000001327712733427351016144 0ustar richardrichard#! /bin/sh # # @configure_input@ # # Copyright (C) 1997 - 2007 Free Software Foundation, Inc. # # Author: Scott Predescu # Author: Ovidiu Predescu # Author: Nicola Pero # Date: 1997 - 2007 # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # 'opentool' is obsolete. You can invoke your tools directly, just # put them in your PATH :-) # Try to execute the GNUstep tool passed as argument. The tool is # searched through the GNUstep directories if a complete or relative path name # is not specified. The arguments passed after the tool name are passed # unmodified to the tool. if [ -z "$1" ]; then echo usage: `basename "$0"` [--library-combo=...] tool [arguments...] echo `basename "$0"` --help for help exit 1 fi # Try to determine GNUSTEP_MAKEFILES to source GNUstep.sh if [ -z "$GNUSTEP_CONFIG_FILE" ]; then GNUSTEP_CONFIG_FILE=@GNUSTEP_CONFIG_FILE@ fi if [ -z "$GNUSTEP_USER_CONFIG_FILE" ]; then GNUSTEP_USER_CONFIG_FILE=@GNUSTEP_USER_CONFIG_FILE@ fi if [ -f "$GNUSTEP_CONFIG_FILE" ]; then . "$GNUSTEP_CONFIG_FILE" fi GNUSTEP_HOME=~ if [ -n "$GNUSTEP_USER_CONFIG_FILE" ]; then case "$GNUSTEP_USER_CONFIG_FILE" in /*) # An absolute path if [ -f "$GNUSTEP_USER_CONFIG_FILE" ]; then . "$GNUSTEP_USER_CONFIG_FILE" fi;; *) # Something else if [ -f "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" ]; then . "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" fi;; esac fi if [ -z "$GNUSTEP_MAKEFILES" ]; then GNUSTEP_MAKEFILES=@GNUSTEP_MAKEFILES@ fi # OK, we now have GNUSTEP_MAKEFILES, source GNUstep.sh. # Also, we'd like to get the GNUSTEP_*_TOOLS directories so we can # search them, so tell GNUstep.sh to export all variabes. GNUSTEP_SH_EXPORT_ALL_VARIABLES=yes . $GNUSTEP_MAKEFILES/GNUstep.sh unset GNUSTEP_SH_EXPORT_ALL_VARIABLES if [ -z "$EXEEXT" ]; then EXEEXT=@EXEEXT@ fi # traps the parameters while true do case "$1" in --library-combo=*) tmp_makefiles="$GNUSTEP_MAKEFILES" . "$tmp_makefiles/GNUstep-reset.sh" LIBRARY_COMBO=`echo "$1" | sed 's/--library-combo=//'` . "$tmp_makefiles/GNUstep.sh" echo "Switched to library combo $LIBRARY_COMBO" shift ;; --help) echo usage: `basename "$0"` [--library-combo=...] tool [arguments...] echo echo tool is the complete or relative name of the tool executable echo without any extension, like defaults echo echo [arguments...] are the arguments to the tool. exit 0 ;; *) break;; esac done tool="$1"; shift; if [ -n "$EXEEXT" ]; then tool="$tool$EXEEXT" fi case "$tool" in /*) # An absolute path. full_toolname="$tool";; */*) # A relative path tool_dir=`dirname "$tool"`; tool_dir=`(cd "$tool_dir"; pwd)`; tool_name=`basename "$tool"`; full_toolname="${tool_dir}/${tool_name}";; *) # A path that should be searched into GNUstep tool paths # Search for a local tool # We used to scan all ./*/$(GNUSTEP_HOST_LDIR)/ directories, # but this facility was removed (GNUSTEP_HOST_LDIR is no # longer even defined in this file), now we perform a much # simpler search. # The really important one is looking into ./obj, anyway here # is the order in which we search local directories - # First, we search in ./ # Second, we search in ./obj # Third, we search in ./Tools/ # Fourth, we search in ./Tools/obj for dir in . obj Tools Tools/obj; do # echo "$dir/$tool"; if [ -x "$dir/$tool" ]; then full_toolname="$dir/$tool" # echo "Found: $dir/$tool"; break; fi done if [ -z "$full_toolname" ]; then # Local tool not found - Search for an installed one # we search in the order in: # GNUSTEP_USER_TOOLS # GNUSTEP_LOCAL_TOOLS # GNUSTEP_NETWORK_TOOLS # GNUSTEP_SYSTEM_TOOLS # # We look in the GNUSTEP_HOST_CPU-GNUSTEP_HOST_OS/LIBRARY_COMBO # subdirectory first, then the GNUSTEP_HOST_CPU-GNUSTEP_HOST_OS # subdirectory, then the top-level directory. # (For flattened systems we skip the first two options. # # TODO: Also search Admin Tools directories if appropriate for dir in "$GNUSTEP_USER_TOOLS" "$GNUSTEP_LOCAL_TOOLS" "$GNUSTEP_NETWORK_TOOLS" "$GNUSTEP_SYSTEM_TOOLS" ; do if [ "$GNUSTEP_IS_FLATTENED" = "no" ]; then tmpgnudir="$dir/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS" tmplibdir="$dir/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS/$LIBRARY_COMBO" # echo "$tmplibdir/$tool"; if [ -x "$tmplibdir/$tool" ]; then # echo "Found: $tmplibdir/$tool"; full_toolname="$tmplibdir/$tool" break; fi if [ -x "$tmpgnudir/$tool" ]; then # echo "Found: $tmpgnudir/$tool"; full_toolname="$tmpgnudir/$tool" break; fi fi # echo "$dir/$tool"; if [ -x "$dir/$tool" ]; then # echo "Found: $dir/$tool"; full_toolname="$dir/$tool" break; fi done unset tmpgnudir unset tmplibdir fi ;; esac if [ -z "$full_toolname" ]; then echo "Can't find the required tool: $tool!" exit 1 fi "$full_toolname" "$@" gnustep-make-2.7.0/clibrary.make0000664000175000017500000000163410711636501016406 0ustar richardrichard# # clibrary.make # # Makefile rules to build GNUstep-based clibraries. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/clibrary.make else ifeq ($(GNUSTEP_TYPE),clibrary) include $(GNUSTEP_MAKEFILES)/Instance/clibrary.make endif endif gnustep-make-2.7.0/filesystem.csh.in0000664000175000017500000003472311542136221017232 0ustar richardrichard# This file must be sourced inside csh using: source # # @configure_input@ # # Sets up the GNUstep filesystem paths for shell scripts # # Copyright (C) 2007 Free Software Foundation, Inc. # # Author: Nicola Pero , # # Date: February 2007 # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # This does the same as filesystem.sh, but for csh. # # IMPORTANT: tcsh v6.12 has a maximum variable size of 30 characters. # So all variables should have names that are below that size. # # Location of Users directories ... never used by gnustep-make. # if ( ! ${?GNUSTEP_SYSTEM_USERS_DIR} ) then setenv GNUSTEP_SYSTEM_USERS_DIR "@GNUSTEP_SYSTEM_USERS_DIR@" endif if ( ! ${?GNUSTEP_NETWORK_USERS_DIR} ) then setenv GNUSTEP_NETWORK_USERS_DIR "@GNUSTEP_NETWORK_USERS_DIR@" endif if ( ! ${?GNUSTEP_LOCAL_USERS_DIR} ) then setenv GNUSTEP_LOCAL_USERS_DIR "@GNUSTEP_LOCAL_USERS_DIR@" endif # # SYSTEM domain # if ( ! ${?GNUSTEP_SYSTEM_APPS} ) then setenv GNUSTEP_SYSTEM_APPS "@GNUSTEP_SYSTEM_APPS@" endif if ( ! ${?GNUSTEP_SYSTEM_ADMIN_APPS} ) then setenv GNUSTEP_SYSTEM_ADMIN_APPS "@GNUSTEP_SYSTEM_ADMIN_APPS@" endif if ( ! ${?GNUSTEP_SYSTEM_WEB_APPS} ) then setenv GNUSTEP_SYSTEM_WEB_APPS "@GNUSTEP_SYSTEM_WEB_APPS@" endif if ( ! ${?GNUSTEP_SYSTEM_TOOLS} ) then setenv GNUSTEP_SYSTEM_TOOLS "@GNUSTEP_SYSTEM_TOOLS@" endif if ( ! ${?GNUSTEP_SYSTEM_ADMIN_TOOLS} ) then setenv GNUSTEP_SYSTEM_ADMIN_TOOLS "@GNUSTEP_SYSTEM_ADMIN_TOOLS@" endif if ( ! ${?GNUSTEP_SYSTEM_LIBRARY} ) then setenv GNUSTEP_SYSTEM_LIBRARY "@GNUSTEP_SYSTEM_LIBRARY@" endif if ( ! ${?GNUSTEP_SYSTEM_HEADERS} ) then setenv GNUSTEP_SYSTEM_HEADERS "@GNUSTEP_SYSTEM_HEADERS@" endif if ( ! ${?GNUSTEP_SYSTEM_LIBRARIES} ) then setenv GNUSTEP_SYSTEM_LIBRARIES "@GNUSTEP_SYSTEM_LIBRARIES@" endif if ( ! ${?GNUSTEP_SYSTEM_DOC} ) then setenv GNUSTEP_SYSTEM_DOC "@GNUSTEP_SYSTEM_DOC@" endif if ( ! ${?GNUSTEP_SYSTEM_DOC_MAN} ) then setenv GNUSTEP_SYSTEM_DOC_MAN "@GNUSTEP_SYSTEM_DOC_MAN@" endif if ( ! ${?GNUSTEP_SYSTEM_DOC_INFO} ) then setenv GNUSTEP_SYSTEM_DOC_INFO "@GNUSTEP_SYSTEM_DOC_INFO@" endif # # NETWORK domain # if ( ! ${?GNUSTEP_NETWORK_APPS} ) then setenv GNUSTEP_NETWORK_APPS "@GNUSTEP_NETWORK_APPS@" endif if ( ! ${?GNUSTEP_NETWORK_ADMIN_APPS} ) then setenv GNUSTEP_NETWORK_ADMIN_APPS "@GNUSTEP_NETWORK_ADMIN_APPS@" endif if ( ! ${?GNUSTEP_NETWORK_WEB_APPS} ) then setenv GNUSTEP_NETWORK_WEB_APPS "@GNUSTEP_NETWORK_WEB_APPS@" endif if ( ! ${?GNUSTEP_NETWORK_TOOLS} ) then setenv GNUSTEP_NETWORK_TOOLS "@GNUSTEP_NETWORK_TOOLS@" endif if ( ! ${?GNUSTEP_NETWORK_ADMIN_TOOLS} ) then setenv GNUSTEP_NETWORK_ADMIN_TOOLS "@GNUSTEP_NETWORK_ADMIN_TOOLS@" endif if ( ! ${?GNUSTEP_NETWORK_LIBRARY} ) then setenv GNUSTEP_NETWORK_LIBRARY "@GNUSTEP_NETWORK_LIBRARY@" endif if ( ! ${?GNUSTEP_NETWORK_HEADERS} ) then setenv GNUSTEP_NETWORK_HEADERS "@GNUSTEP_NETWORK_HEADERS@" endif if ( ! ${?GNUSTEP_NETWORK_LIBRARIES} ) then setenv GNUSTEP_NETWORK_LIBRARIES "@GNUSTEP_NETWORK_LIBRARIES@" endif if ( ! ${?GNUSTEP_NETWORK_DOC} ) then setenv GNUSTEP_NETWORK_DOC "@GNUSTEP_NETWORK_DOC@" endif if ( ! ${?GNUSTEP_NETWORK_DOC_MAN} ) then setenv GNUSTEP_NETWORK_DOC_MAN "@GNUSTEP_NETWORK_DOC_MAN@" endif if ( ! ${?GNUSTEP_NETWORK_DOC_INFO} ) then setenv GNUSTEP_NETWORK_DOC_INFO "@GNUSTEP_NETWORK_DOC_INFO@" endif # # LOCAL domain # if ( ! ${?GNUSTEP_LOCAL_APPS} ) then setenv GNUSTEP_LOCAL_APPS "@GNUSTEP_LOCAL_APPS@" endif if ( ! ${?GNUSTEP_LOCAL_ADMIN_APPS} ) then setenv GNUSTEP_LOCAL_ADMIN_APPS "@GNUSTEP_LOCAL_ADMIN_APPS@" endif if ( ! ${?GNUSTEP_LOCAL_WEB_APPS} ) then setenv GNUSTEP_LOCAL_WEB_APPS "@GNUSTEP_LOCAL_WEB_APPS@" endif if ( ! ${?GNUSTEP_LOCAL_TOOLS} ) then setenv GNUSTEP_LOCAL_TOOLS "@GNUSTEP_LOCAL_TOOLS@" endif if ( ! ${?GNUSTEP_LOCAL_ADMIN_TOOLS} ) then setenv GNUSTEP_LOCAL_ADMIN_TOOLS "@GNUSTEP_LOCAL_ADMIN_TOOLS@" endif if ( ! ${?GNUSTEP_LOCAL_LIBRARY} ) then setenv GNUSTEP_LOCAL_LIBRARY "@GNUSTEP_LOCAL_LIBRARY@" endif if ( ! ${?GNUSTEP_LOCAL_HEADERS} ) then setenv GNUSTEP_LOCAL_HEADERS "@GNUSTEP_LOCAL_HEADERS@" endif if ( ! ${?GNUSTEP_LOCAL_LIBRARIES} ) then setenv GNUSTEP_LOCAL_LIBRARIES "@GNUSTEP_LOCAL_LIBRARIES@" endif if ( ! ${?GNUSTEP_LOCAL_DOC} ) then setenv GNUSTEP_LOCAL_DOC "@GNUSTEP_LOCAL_DOC@" endif if ( ! ${?GNUSTEP_LOCAL_DOC_MAN} ) then setenv GNUSTEP_LOCAL_DOC_MAN "@GNUSTEP_LOCAL_DOC_MAN@" endif if ( ! ${?GNUSTEP_LOCAL_DOC_INFO} ) then setenv GNUSTEP_LOCAL_DOC_INFO "@GNUSTEP_LOCAL_DOC_INFO@" endif # # USER domain # if ( ! ${?GNUSTEP_USER_DIR_APPS} ) then setenv GNUSTEP_USER_DIR_APPS "@GNUSTEP_USER_DIR_APPS@" endif if ( ! ${?GNUSTEP_USER_DIR_ADMIN_APPS} ) then setenv GNUSTEP_USER_DIR_ADMIN_APPS "@GNUSTEP_USER_DIR_ADMIN_APPS@" endif if ( ! ${?GNUSTEP_USER_DIR_WEB_APPS} ) then setenv GNUSTEP_USER_DIR_WEB_APPS "@GNUSTEP_USER_DIR_WEB_APPS@" endif if ( ! ${?GNUSTEP_USER_DIR_TOOLS} ) then setenv GNUSTEP_USER_DIR_TOOLS "@GNUSTEP_USER_DIR_TOOLS@" endif if ( ! ${?GNUSTEP_USER_DIR_ADMIN_TOOLS} ) then setenv GNUSTEP_USER_DIR_ADMIN_TOOLS "@GNUSTEP_USER_DIR_ADMIN_TOOLS@" endif if ( ! ${?GNUSTEP_USER_DIR_LIBRARY} ) then setenv GNUSTEP_USER_DIR_LIBRARY "@GNUSTEP_USER_DIR_LIBRARY@" endif if ( ! ${?GNUSTEP_USER_DIR_HEADERS} ) then setenv GNUSTEP_USER_DIR_HEADERS "@GNUSTEP_USER_DIR_HEADERS@" endif if ( ! ${?GNUSTEP_USER_DIR_LIBRARIES} ) then setenv GNUSTEP_USER_DIR_LIBRARIES "@GNUSTEP_USER_DIR_LIBRARIES@" endif if ( ! ${?GNUSTEP_USER_DIR_DOC} ) then setenv GNUSTEP_USER_DIR_DOC "@GNUSTEP_USER_DIR_DOC@" endif if ( ! ${?GNUSTEP_USER_DIR_DOC_MAN} ) then setenv GNUSTEP_USER_DIR_DOC_MAN "@GNUSTEP_USER_DIR_DOC_MAN@" endif if ( ! ${?GNUSTEP_USER_DIR_DOC_INFO} ) then setenv GNUSTEP_USER_DIR_DOC_INFO "@GNUSTEP_USER_DIR_DOC_INFO@" endif # # Now, for all the GNUSTEP_USER_DIR_xxx variables above, replace: # # %i with the userid # %u with the username # %% with % # # This allows you to, for example, specify the GNUSTEP_USER_TOOLS # should be /GNUstep/Users/%u/bin/, and that would mean # /GNUstep/Users/nicola/bin for user 'nicola' and # /GNUstep/Users/richard/bin for user 'richard'. # # Check if any of the strings contain %i ... switch ("${GNUSTEP_USER_DIR_APPS}\ ${GNUSTEP_USER_DIR_ADMIN_APPS}\ ${GNUSTEP_USER_DIR_WEB_APPS}\ ${GNUSTEP_USER_DIR_TOOLS}\ ${GNUSTEP_USER_DIR_ADMIN_TOOLS}\ ${GNUSTEP_USER_DIR_LIBRARY}\ ${GNUSTEP_USER_DIR_HEADERS}\ ${GNUSTEP_USER_DIR_LIBRARIES}\ ${GNUSTEP_USER_DIR_DOC}\ ${GNUSTEP_USER_DIR_DOC_MAN}\ ${GNUSTEP_USER_DIR_DOC_INFO}") case *%i*: # ... and if so, do the replacement. setenv GNUSTEP__USERID `id -u` setenv GNUSTEP_USER_DIR_APPS `echo ${GNUSTEP_USER_DIR_APPS} | sed -e "s/%i/${GNUSTEP__USERID}/g"` setenv GNUSTEP_USER_DIR_ADMIN_APPS `echo ${GNUSTEP_USER_DIR_ADMIN_APPS} | sed -e "s/%i/${GNUSTEP__USERID}/g"` setenv GNUSTEP_USER_DIR_WEB_APPS `echo ${GNUSTEP_USER_DIR_WEB_APPS} | sed -e "s/%i/${GNUSTEP__USERID}/g"` setenv GNUSTEP_USER_DIR_TOOLS `echo ${GNUSTEP_USER_DIR_TOOLS} | sed -e "s/%i/${GNUSTEP__USERID}/g"` setenv GNUSTEP_USER_DIR_ADMIN_TOOLS `echo ${GNUSTEP_USER_DIR_ADMIN_TOOLS} | sed -e "s/%i/${GNUSTEP__USERID}/g"` setenv GNUSTEP_USER_DIR_LIBRARY `echo ${GNUSTEP_USER_DIR_LIBRARY} | sed -e "s/%i/${GNUSTEP__USERID}/g"` setenv GNUSTEP_USER_DIR_HEADERS `echo ${GNUSTEP_USER_DIR_HEADERS} | sed -e "s/%i/${GNUSTEP__USERID}/g"` setenv GNUSTEP_USER_DIR_LIBRARIES `echo ${GNUSTEP_USER_DIR_LIBRARIES} | sed -e "s/%i/${GNUSTEP__USERID}/g"` setenv GNUSTEP_USER_DIR_DOC `echo ${GNUSTEP_USER_DIR_DOC} | sed -e "s/%i/${GNUSTEP__USERID}/g"` setenv GNUSTEP_USER_DIR_DOC_MAN `echo ${GNUSTEP_USER_DIR_DOC_MAN} | sed -e "s/%i/${GNUSTEP__USERID}/g"` setenv GNUSTEP_USER_DIR_DOC_INFO `echo ${GNUSTEP_USER_DIR_DOC_INFO} | sed -e "s/%i/${GNUSTEP__USERID}/g"` unsetenv GNUSTEP__USERID breaksw endsw # Check if any of the strings contain %u ... switch ("${GNUSTEP_USER_DIR_APPS}\ ${GNUSTEP_USER_DIR_ADMIN_APPS}\ ${GNUSTEP_USER_DIR_WEB_APPS}\ ${GNUSTEP_USER_DIR_TOOLS}\ ${GNUSTEP_USER_DIR_ADMIN_TOOLS}\ ${GNUSTEP_USER_DIR_LIBRARY}\ ${GNUSTEP_USER_DIR_HEADERS}\ ${GNUSTEP_USER_DIR_LIBRARIES}\ ${GNUSTEP_USER_DIR_DOC}\ ${GNUSTEP_USER_DIR_DOC_MAN}\ ${GNUSTEP_USER_DIR_DOC_INFO}") case *%u*: # ... and if so, do the replacement. setenv GNUSTEP__USERNAME `id -u -n` setenv GNUSTEP_USER_DIR_APPS `echo ${GNUSTEP_USER_DIR_APPS} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` setenv GNUSTEP_USER_DIR_ADMIN_APPS `echo ${GNUSTEP_USER_DIR_ADMIN_APPS} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` setenv GNUSTEP_USER_DIR_WEB_APPS `echo ${GNUSTEP_USER_DIR_WEB_APPS} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` setenv GNUSTEP_USER_DIR_TOOLS `echo ${GNUSTEP_USER_DIR_TOOLS} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` setenv GNUSTEP_USER_DIR_ADMIN_TOOLS `echo ${GNUSTEP_USER_DIR_ADMIN_TOOLS} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` setenv GNUSTEP_USER_DIR_LIBRARY `echo ${GNUSTEP_USER_DIR_LIBRARY} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` setenv GNUSTEP_USER_DIR_HEADERS `echo ${GNUSTEP_USER_DIR_HEADERS} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` setenv GNUSTEP_USER_DIR_LIBRARIES `echo ${GNUSTEP_USER_DIR_LIBRARIES} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` setenv GNUSTEP_USER_DIR_DOC `echo ${GNUSTEP_USER_DIR_DOC} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` setenv GNUSTEP_USER_DIR_DOC_MAN `echo ${GNUSTEP_USER_DIR_DOC_MAN} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` setenv GNUSTEP_USER_DIR_DOC_INFO `echo ${GNUSTEP_USER_DIR_DOC_INFO} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` unsetenv GNUSTEP__USERNAME breaksw endsw # Check if any of the strings contain %% ... switch ("${GNUSTEP_USER_DIR_APPS}\ ${GNUSTEP_USER_DIR_ADMIN_APPS}\ ${GNUSTEP_USER_DIR_WEB_APPS}\ ${GNUSTEP_USER_DIR_TOOLS}\ ${GNUSTEP_USER_DIR_ADMIN_TOOLS}\ ${GNUSTEP_USER_DIR_LIBRARY}\ ${GNUSTEP_USER_DIR_HEADERS}\ ${GNUSTEP_USER_DIR_LIBRARIES}\ ${GNUSTEP_USER_DIR_DOC}\ ${GNUSTEP_USER_DIR_DOC_MAN}\ ${GNUSTEP_USER_DIR_DOC_INFO}") case *%%*: # ... and if so, replace %% with % setenv GNUSTEP_USER_DIR_APPS `echo ${GNUSTEP_USER_DIR_APPS} | sed -e 's/%%/%/g'` setenv GNUSTEP_USER_DIR_ADMIN_APPS `echo ${GNUSTEP_USER_DIR_ADMIN_APPS} | sed -e 's/%%/%/g'` setenv GNUSTEP_USER_DIR_WEB_APPS `echo ${GNUSTEP_USER_DIR_WEB_APPS} | sed -e 's/%%/%/g'` setenv GNUSTEP_USER_DIR_TOOLS `echo ${GNUSTEP_USER_DIR_TOOLS} | sed -e 's/%%/%/g'` setenv GNUSTEP_USER_DIR_ADMIN_TOOLS `echo ${GNUSTEP_USER_DIR_ADMIN_TOOLS} | sed -e 's/%%/%/g'` setenv GNUSTEP_USER_DIR_LIBRARY `echo ${GNUSTEP_USER_DIR_LIBRARY} | sed -e 's/%%/%/g'` setenv GNUSTEP_USER_DIR_HEADERS `echo ${GNUSTEP_USER_DIR_HEADERS} | sed -e 's/%%/%/g'` setenv GNUSTEP_USER_DIR_LIBRARIES `echo ${GNUSTEP_USER_DIR_LIBRARIES} | sed -e 's/%%/%/g'` setenv GNUSTEP_USER_DIR_DOC `echo ${GNUSTEP_USER_DIR_DOC} | sed -e 's/%%/%/g'` setenv GNUSTEP_USER_DIR_DOC_MAN `echo ${GNUSTEP_USER_DIR_DOC_MAN} | sed -e 's/%%/%/g'` setenv GNUSTEP_USER_DIR_DOC_INFO `echo ${GNUSTEP_USER_DIR_DOC_INFO} | sed -e 's/%%/%/g'` breaksw endsw switch ("${GNUSTEP_USER_DIR_APPS}") case /*: # An absolute path setenv GNUSTEP_USER_APPS "${GNUSTEP_USER_DIR_APPS}" breaksw default: # Something else setenv GNUSTEP_USER_APPS "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_APPS}" breaksw endsw switch ("${GNUSTEP_USER_DIR_ADMIN_APPS}") case /*: # An absolute path setenv GNUSTEP_USER_ADMIN_APPS "${GNUSTEP_USER_DIR_ADMIN_APPS}" breaksw default: # Something else setenv GNUSTEP_USER_ADMIN_APPS "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_ADMIN_APPS}" breaksw endsw switch ("${GNUSTEP_USER_DIR_WEB_APPS}") case /*: # An absolute path setenv GNUSTEP_USER_WEB_APPS "${GNUSTEP_USER_DIR_WEB_APPS}" breaksw default: # Something else setenv GNUSTEP_USER_WEB_APPS "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_WEB_APPS}" breaksw endsw switch ("${GNUSTEP_USER_DIR_TOOLS}") case /*: setenv GNUSTEP_USER_TOOLS "${GNUSTEP_USER_DIR_TOOLS}" breaksw default: setenv GNUSTEP_USER_TOOLS "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_TOOLS}" breaksw endsw switch ("${GNUSTEP_USER_DIR_ADMIN_TOOLS}") case /*: setenv GNUSTEP_USER_ADMIN_TOOLS "${GNUSTEP_USER_DIR_ADMIN_TOOLS}" breaksw default: setenv GNUSTEP_USER_ADMIN_TOOLS "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_ADMIN_TOOLS}" breaksw endsw switch ("${GNUSTEP_USER_DIR_LIBRARY}") case /*: setenv GNUSTEP_USER_LIBRARY "${GNUSTEP_USER_DIR_LIBRARY}" breaksw default: setenv GNUSTEP_USER_LIBRARY "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_LIBRARY}" breaksw endsw switch ("${GNUSTEP_USER_DIR_HEADERS}") case /*: setenv GNUSTEP_USER_HEADERS "${GNUSTEP_USER_DIR_HEADERS}" breaksw default: setenv GNUSTEP_USER_HEADERS "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_HEADERS}" breaksw endsw switch ("${GNUSTEP_USER_DIR_LIBRARIES}") case /*: setenv GNUSTEP_USER_LIBRARIES "${GNUSTEP_USER_DIR_LIBRARIES}" breaksw default: setenv GNUSTEP_USER_LIBRARIES "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_LIBRARIES}" breaksw endsw switch ("${GNUSTEP_USER_DIR_DOC}") case /*: setenv GNUSTEP_USER_DOC "${GNUSTEP_USER_DIR_DOC}" breaksw default: setenv GNUSTEP_USER_DOC "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_DOC}" breaksw endsw switch ("${GNUSTEP_USER_DIR_DOC_MAN}") case /*: setenv GNUSTEP_USER_DOC_MAN "${GNUSTEP_USER_DIR_DOC_MAN}" breaksw default: setenv GNUSTEP_USER_DOC_MAN "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_DOC_MAN}" breaksw endsw switch ("${GNUSTEP_USER_DIR_DOC_INFO}") case /*: setenv GNUSTEP_USER_DOC_INFO "${GNUSTEP_USER_DIR_DOC_INFO}" breaksw default: setenv GNUSTEP_USER_DOC_INFO "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_DOC_INFO}" breaksw endsw unsetenv GNUSTEP_USER_DIR_APPS unsetenv GNUSTEP_USER_DIR_ADMIN_APPS unsetenv GNUSTEP_USER_DIR_WEB_APPS unsetenv GNUSTEP_USER_DIR_TOOLS unsetenv GNUSTEP_USER_DIR_ADMIN_TOOLS unsetenv GNUSTEP_USER_DIR_LIBRARY unsetenv GNUSTEP_USER_DIR_HEADERS unsetenv GNUSTEP_USER_DIR_LIBRARIES unsetenv GNUSTEP_USER_DIR_DOC unsetenv GNUSTEP_USER_DIR_DOC_MAN unsetenv GNUSTEP_USER_DIR_DOC_INFO gnustep-make-2.7.0/config-precomp-test/0000775000175000017500000000000013074115163017622 5ustar richardrichardgnustep-make-2.7.0/config-precomp-test/config-precomp-test.m0000664000175000017500000000021610730641436023667 0ustar richardrichard#include "config-precomp-test.h" @implementation TestClass + (int) test { return 0; } @end int main (void) { return [TestClass test]; } gnustep-make-2.7.0/config-precomp-test/run-test.sh0000775000175000017500000001035610730641436021752 0ustar richardrichard#! /bin/sh # # Test for Objective-C precompiled headers # # Copyright (C) 2007 Free Software Foundation, Inc. # # Author: Nicola Pero # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Check if GCC supports precompiled headers for Objective-C or not. # You should execute this shell scripts after setting the following # environment variables: # # CC, CFLAGS, CPPFLAGS, LDFLAGS, LIBS # # ./configure at the top-level will set them for us; you need to # set them manually if you want to run the test manually. # The script will execute and: # return 0 if gcc supports ObjC precompiled headers # return 1 if gcc does not # The script takes a single argument, which is the directory where # the temporary files and the log file will be written. If there # is no argument specified, ./ will be used. # This is the file where everything will be logged gs_builddir="$1" if test "$gs_builddir" = ""; then gs_builddir="." fi gs_logfile="$gs_builddir/config-precomp-test.log" # Clear logs rm -f "$gs_logfile" # Clear compilation results rm -f "$gs_builddir/config-precomp-test.h.gch" "$gs_builddir/config-precomp-test.out" echo "** Environment" >>"$gs_logfile" 2>&1 echo " CC: $CC" >>"$gs_logfile" 2>&1 echo " CFLAGS: $CFLAGS" >>"$gs_logfile" 2>&1 echo " CPPFLAGS: $CPPFLAGS" >>"$gs_logfile" 2>&1 echo " LDFLAGS: $LDFLAGS" >>"$gs_logfile" 2>&1 echo " LIBS: $LIBS" >>"$gs_logfile" 2>&1 echo "" >>"$gs_logfile" 2>&1 echo " current directory: `pwd`" >>"$gs_logfile" 2>&1 echo " log file: $gs_logfile" >>"$gs_logfile" 2>&1 echo "" >>"$gs_logfile" 2>&1 # Get rid of '-x objective-c' in CFLAGS that we don't need and would # prevent our '-x objective-c-headers' flag from working. CFLAGS=`echo $CFLAGS | sed -e 's/-x objective-c//'` echo " CFLAGS without -x objective-c: $CFLAGS" >>"$gs_logfile" 2>&1 echo "" >>"$gs_logfile" 2>&1 if test "$CC" = ""; then echo "CC is not set: failure" >>"$gs_logfile" 2>&1 exit 1 fi # Try to compile the file first. echo "** Compile the file without precompiled headers" >>"$gs_logfile" 2>&1 echo "$CC -o \"$gs_builddir/config-precomp-test.out\" $CFLAGS $CPPFLAGS $LDFLAGS $LIBS config-precomp-test.m" >>"$gs_logfile" 2>&1 $CC -o "$gs_builddir/config-precomp-test.out" $CFLAGS $CPPFLAGS $LDFLAGS $LIBS config-precomp-test.m >>"$gs_logfile" 2>&1 if test ! "$?" = "0"; then echo "Failure" >>"$gs_logfile" 2>&1 rm -f "$gs_builddir/config-precomp-test.out" exit 1 fi echo "Success" >>"$gs_logfile" 2>&1 echo "" >>"$gs_logfile" 2>&1 # Now try to preprocess the header echo "** Preprocess the header" >>"$gs_logfile" 2>&1 echo "$CC -o \"$gs_builddir/config-precomp-test.h.gch\" -c -x objective-c-header $CFLAGS $CPPFLAGS $LDFLAGS config-precomp-test.h" >>"$gs_logfile" 2>&1 $CC -o "$gs_builddir/config-precomp-test.h.gch" -c -x objective-c-header $CFLAGS $CPPFLAGS $LDFLAGS config-precomp-test.h >>"$gs_logfile" 2>&1 if test ! "$?" = "0"; then echo "Failure" >>"$gs_logfile" 2>&1 rm -f "$gs_builddir/config-precomp-test.out" "$gs_builddir/config-precomp-test.h.gch" exit 1 fi echo "Success" >>"$gs_logfile" 2>&1 echo "" >>"$gs_logfile" 2>&1 # Now try to compile again with the preprocessed header. It might get ignored - which is fine. echo "** Compile the file with precompiled headers" >>"$gs_logfile" 2>&1 echo "$CC -o \"$gs_builddir/config-precomp-test.out\" $CFLAGS $CPPFLAGS $LDFLAGS $LIBS -I\"$gs_builddir\" config-precomp-test.m" >>"$gs_logfile" 2>&1 $CC -o "$gs_builddir/config-precomp-test.out" $CFLAGS $CPPFLAGS $LDFLAGS $LIBS -I"$gs_builddir" config-precomp-test.m >>"$gs_logfile" 2>&1 if test ! "$?" = "0"; then echo "Failure" >>"$gs_logfile" 2>&1 rm -f "$gs_builddir/config-precomp-test.out" "$gs_builddir/config-precomp-test.h.gch" exit 1 fi echo "Success" >>"$gs_logfile" 2>&1 # Everything looks OK. exit 0 gnustep-make-2.7.0/config-precomp-test/config-precomp-test.h0000664000175000017500000000005010730641436023656 0ustar richardrichard@interface TestClass + (int) test; @end gnustep-make-2.7.0/aggregate.make0000664000175000017500000000333011335347545016532 0ustar richardrichard# -*-makefile-*- # aggregate.make # # Makefile rules to build a set of GNUstep-base subprojects. # # Copyright (C) 2002 - 2010 Free Software Foundation, Inc. # # Author: Nicola Pero # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # This header used to be the only way to build subdirectories before # gnustep-make 2.4.0 (February 2010). You can still use it (for now) # to maintain backwards compatibility with older versions of # gnustep-make. It will be deprecated in February 2012, and removed # in February 2015. # To use it, set the SUBPROJECTS variable to the list of your # subdirectories, and include it. To request parallel building (if # available), set "GNUSTEP_USE_PARALLEL_AGGREGATE = yes", else serial # building will be assumed. # prevent multiple inclusions ifeq ($(AGGREGATE_MAKE_LOADED),) AGGREGATE_MAKE_LOADED=yes ifeq ($(GNUSTEP_INSTANCE),) ifeq ($(GNUSTEP_USE_PARALLEL_AGGREGATE), yes) PARALLEL_SUBDIRECTORIES = $(SUBPROJECTS) include $(GNUSTEP_MAKEFILES)/Master/parallel-subdirectories.make else SERIAL_SUBDIRECTORIES = $(SUBPROJECTS) include $(GNUSTEP_MAKEFILES)/Master/serial-subdirectories.make endif endif endif # aggregate.make loaded gnustep-make-2.7.0/clean_vendor.sh0000775000175000017500000000141410711636501016732 0ustar richardrichard#!/bin/sh # # clean_vendor.sh # # Clean up the target vendor name. # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Scott Christley # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Nothing to clean right now echo $1 gnustep-make-2.7.0/FAQ0000664000175000017500000005502611123543630014274 0ustar richardrichard1 GNUstep Frequently Asked Questions with Answers ************************************************* Last updated 20 December 2008. Please send corrections to . Also look at the user FAQ for more user oriented questions. 1.1 Compatibility ================= 1.1.1 Is it easy to port OPENSTEP programs to GNUstep? ------------------------------------------------------ It is probably easy for simple programs. There are some portability tools to make this easier, or rewrite the Makefiles yourself. You will also have to translate the NIB files (if there are any) to GNUstep model files using the nib2gmodel program (from `ftp://ftp.gnustep.org/pub/gnustep/dev-apps'). 1.1.2 How about porting between Cocoa and GNUstep? -------------------------------------------------- It's easier from GNUstep to Cocoa than Cocoa to GNUstep. Cocoa is 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: * Use #ifndef GNUSTEP for Apple only code. * Do not use CoreFoundation * Do not use Objective-C++ (except with gcc 4.1 or later) * Do not use Quicktime or other proprietary extension * GNUstep should be able to read Cocoa nib files automatically, so there is no need to port these, although you might want to have GNUstep specific versions of them anyway. See also `http://mediawiki.gnustep.org/index.php/Writing_portable_code' for more information. 1.1.3 Tools for porting ----------------------- While the programming interface should be almost transparent between systems (expect for the unimplemented parts, of course), there are a variety of other files and tools that are necessary for porting programs. `nib2gmodel' This program coverts nib files from any system, such as OPENSTEP to a gmodel format file. Gmodel can be read directly by GNUstep or you can convert this to a more GNUstep-native gorm format (using the Gorm interface modeller). Note this is not necessary for Cocoa nibs - GNUstep can read these directly. `Renaissance' GNUstep Renaissance allows you to describe your user interfaces (that is, the windows in your application, and the buttons, boxes, textfields, etc in the windows) in simple and intuitive XML files, using an open, standard format describing the logic of the interface. It has a number of advantages over the proprietary nib 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. They probably work only for OPENSTEP systems and are a little out-of-date. `StepTalk' A portable scripting environment that lets your do scripting in almost any language you like. 1.1.4 Can I transfer archived data from GNUstep to Cocoa? --------------------------------------------------------- Apple's archiving format is proprietary and not documented, so this poses a problem for anyone wanting to implement compatibility with it. However, even if we reverse engineered the format, there are enough differences between the class and ivar layouts to make this sort of compatibility difficult. Not to mention the fact that we would constantly have to keep up with the changes Apple made. The new keyed archiving using XML file formats is much more portable, and GNUstep is trying to maintain compatibility with Apple with this type of archiving. 1.1.5 Does distributed objects work between GNUstep and Cocoa? -------------------------------------------------------------- See the answer to the previous question (on archive compatibility) for why this won't work either. 1.1.6 Is there an Interface Builder for GNUstep? ------------------------------------------------ There is an Interface Builder for GNUstep called Gorm. A lot of work has been put into it and it works very well. You can download it from the ftp site or via http. The Project Manager ProjectCenter is also available. 1.1.7 Can I use my original NIB files? -------------------------------------- No - NeXT/Apple never documented their nib format, so GNUstep supports both the 'gmodel' format (which stores information as text (property-lists) and can therefore be edited 'by hand') and binary archive format (which can be edited by Gorm). There IS a conversion tool called nib2gmodel that can be compiled under OPENSTEP to convert nib files to GNUstep gmodel files. The current version of gui supports reading nib files created as of 10.2. If you have nib files which are older than this, you can convert them by loading them into Interface Builder, going to the "file" second and saving the nib using the "10.2 or later format." 1.1.8 Can one use the hybrid "Objective-C++" -------------------------------------------- Yes gcc 4.1 has support for this. 1.1.9 Is there a plan to support the Java/YellowBox Bindings? ------------------------------------------------------------- Yes. The GNUstep Java library/bridge called JIGS is available now. JIGS is a free (LGPL) Java Interface for GNUstep; it can automatically wrap Objective-C libraries based on GNUstep, making them accessible directly to the Java programmer as if they were Java libraries. As a side effect, it is also possible to use the whole engine in the reverse way: JIGS provides a high level API to allow Objective-C programmers to start java virtual machines inside GNUstep Objective-C code and access java objects in the java virtual machine transparently, as if they were objective-C objects. 1.1.10 What if I compile GNUstep under OPENSTEP/MacOS X? -------------------------------------------------------- GNUstep uses different backends to provide the same functionality as Display Postscript. While someone could write a backend library to provide the interface, nobody has bothered to date. You can, however, use a GNUstep program with an X11 server running on MacOSX. 1.1.11 Is the Objective C API for GTK related? ---------------------------------------------- No. GNUstep applications provide their GUI via the OpenStep API, which provides fully object-oriented access to GUI manipulation. The object-oriented nature of the libraries and language make it much easier for new users to create their own subclasses rather than simply using the supplied widgets as in other frameworks. 1.1.12 How about implementing parts of the Application Kit with GTK? -------------------------------------------------------------------- Yes and No - The GNUstep architecture provides a single, platform-independent, API for handling all aspects of GUI interaction (implemented in the gstep-gui library), with a backend architecture that permits you to have different display models (display postscript, X-windows, win32, berlin ...) while letting you use the same code for printing as for displaying. Use of GTK in the frontend gui library would remove some of those advantages without adding any. That being said, a backend library could be implemented using gtk if anyone wanted to do so. Since the frontend library handles most of the work involved in implementing the OpenStep API, the backend is a relatively thin layer and the advantages of GTK over direct xlib or win32 calls is likely to be minimal. If/when GTK is ported to more systems, a backend written using it could be a valuable asset - volunteers are, as always, welcome. 1.2 Compiling and Developing ============================ 1.2.1 How can I get started programming? ---------------------------------------- Good question. Read the tutorials at the GNUstep web site. Also look at Apple's documentation (pointers in the Resources section on the GNUstep web site.) 1.2.2 How can I help with GNUstep? ---------------------------------- 1. Write/debug library code 2. Write documentation 3. Update the task list and library headers 4. Write applications Let people know what you are doing. Break your project up into the smallest units you can. Feed back frequent updates to the 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 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 as possible with incremental changes that don't break anything - that way you can make those incremental changes available to the rest of the community at frequent intervals. Don't be afraid to give up - there is no shame in finding out that you have take on too large/complex a project. It's much better to 'resign' and take on a smaller job than to just stop without telling anyone. Please document the code you add or change (using autogsdoc comments that begin with a slash and two asterices). But PLEASE, do not copy from the Apple documentation or any other copyrighted documentation. 1.2.3 Helping develop GNUstep ----------------------------- There is plenty of unimplemented stuff in the gui library and backend libraries that volunteers can work on - just browse through the code and see if it conforms to the documentation. Specific tasks are noted in the developers section on the GNUstep website. Once you have coded something, you could always write a testcase and documentation for it :-) 1.2.4 Helping document GNUstep ------------------------------ All class documentation is written directly in the source code itself and translated using the autogsdoc program. See the source code and documentation for autogsdoc for information on documenting the classes. Newcomers could write documentation for individual classes by comparing the OpenStep specification, the MacOS-X documentation, and the GNUstep source. Documentation should clearly note where individual methods are specific to OpenStep, MacOS-X or are GNustep extensions. More experienced people could write documentation on general programming topics, and tutorials for new users. Anyone willing to write documentation, either tutorials for using GNUstep, or reference documentation for individual classes, should either write it in gsdoc or as plain ascii text for someone else to format into gsdoc. GNUstep documentation should have copyright assigned to the Free Software Foundation. 1.2.5 How do I assign my contribution? -------------------------------------- Everyone who contributes more than 20 lines of code or so needs to sign a copyright assignment so that the FSF can have legal control of the copyright. This makes it easier to defend against any copyright infringement suits. Contact the GNUstep maintainer for instructions on how to do this or download and fill out the form `http://www.gnustep.org/resources/request-assign.future' (instructions are included). 1.2.6 How do I update the task list? ------------------------------------ The task list (`http://savannah.gnu.org/pm/?group_id=99') is supposed to tell people what jobs are waiting to be done. Feel free to add to it or update the tasks that are there (you need to create a login for yourself first). One job of major importance that pretty much anyone can do is to look for jobs to add to the task list. In the case of methods from the OpenStep specification or the MacOS-X documentation not being present in the GNUstep libraries, it is also helpful to add the method prototypes to the library header files. Send any changes or additions to . A beginner can look through the MacOS-X documentation, the OpenStep specification and the GNUstep source and contribute task items. If a class or method is in MacOS-X and OpenStep but is not in GNUstep - it's a high priority TODO and should at least be added to the GNUstep headers and a dummy version added to the source with a FIXME comment. If a class or method is in MacOS-X but not OpenStep or GNUstep - it's a low priority TODO. It should be added to the GNUstep headers bracketed in `#ifndef STRICT_OPENSTEP' If a class or method is in OpenStep but not in MacOS-X or GNUstep - it's a low priority TODO. It should be added to the GNUstep headers bracketed in `#ifndef STRICT_MACOS_X' There are a couple of people working on this already, so it's a good idea to get in touch with Greg, Adam or Richard to coordinate efforts. 1.2.7 How do I start writing tests? ----------------------------------- You can write testcases - where the libraries fail tests, you could either fix the problem, or add it to the task list. To write testcases, you need to use svn to install the latest GNUstep sourcecode you can find. Then checkout the 'gnustep/tools/testsuite' module from svn. 1.2.8 How do I start writing applications? ------------------------------------------ You can either look at the links on the GNUstep website for applications that have been started, and email their owners to volunteer to help, or you can start your own project. 1.2.9 How can I help with the GNUstep website? ---------------------------------------------- Talk to Adam Fedor , the maintainer. The GNUstep website is kept as a CVS module, but the largest portions of it (the FAQ and the Documentation) are actually generated from files in the individual GNUstep packages. Many highly changeable portions are kept on the Wiki, so anyone can change these (first you need to get write access, though). If you want to update the FAQ or documentation - grab the latest snapshot of the GNUstep core you can find, update it from the svn repository, and work with the contents of the appropriate documentation directory. If you want to work on other parts of the website, you can grab a copy of the website via anonymous CVS. See `http://savannah.gnu.org/cvs/?group_id=99' for instructions on how to do that. The main task with the website is to figure out which bits are out-of-date (or wrong) and update/mark-as-outdated as required. 1.2.10 Why doesn't GDB support Objective-C? ------------------------------------------- As of GDB 6.0, gdb supports debugging of Objective-C code. 1.3 GNU Objective C Compiler and Runtime ======================================== 1.3.1 What is the Objective C Runtime? -------------------------------------- The Objective C Runtime Library provides C functions and data structures required to execute an Objective C program. The GNU Objective C Runtime Library offers everything NeXT's runtime does, including Categories, Protocols, `+poseAs:', thread-safety, class initialization on demand, delayed loading of classes, and initialization of static instances (such as @""-style string objects). It also has several differences over NeXT's implementation: * GNU's runtime provides "selector-types" along with each selector; NeXT's does not. A selector-type is a string that describes the C variable types for the method's return and argument values. Among other uses, selector-types is extremely helpful for fast distributed objects implementations, (see GNUstep Base Library Section, below). * Many of the GNU functions have different names than their corresponding NeXT functions; the GNU names conform to the GNU coding standards. The GNUstep base library contains a compatibility header that works with both runtimes. You should use functions there or use OpenStep Foundation methods/functions instead of the basic runtime functions so that you code can run with either system. Apple has recently added new functionality to their runtime, including built-in exception handling, etc. Hopefully these will be ported to the GNU runtime in the future. 1.4 GNUstep Base Library ======================== 1.4.1 What is the GNUstep Base Library? --------------------------------------- The GNUstep Base Library is a library of general-purpose, non-graphical Objective C objects. For example, it includes classes for strings, object collections, byte streams, typed coders, invocations, notifications, notification dispatchers, moments in time, network ports, remote object messaging support (distributed objects), and event loops. It provides functionality that aims to implement the non-graphical portion of the OpenStep standard (the Foundation library). 1.4.2 What is its current state of development? ----------------------------------------------- GNUstep base is currently stable and, to the best of our knowledge, implements all of the OpenStep functionality (except for a few classes that we feel are not useful). It also implements most all of the new Cocoa classes. However we do some things, like scripting, differently, so we don't implement all the Cocoa classes. 1.4.3 What are the features of GNU Distributed Objects? ------------------------------------------------------- GNU Distributed Objects has many of the features of other distributed objects implementations, but, since it is free software, it can be ported to platforms for which other distributed objects implementations are not available. [ NOTE: The GNU distributed object facilities have the same ease-of-use as Apple's; be warned, however, that they are not compatible with each other. They have different class hierarchies, different instance variables, different method names, different implementation strategies and different network message formats. You cannot communicate with a Apple NSConnection using a GNU NSConnection. Here are some differences between GNU distributed objects and Apple's distributed objects: Apple NSDistantObject asks it's remote target for the method encoding types and caches the results; GNU NSDistantObject gets the types directly from the local GNU "typed selector" mechanism if the information is known locally and only queries the remote target or caching encoding types when using a method that is not known to the local process. The NSProxy for the remote root object always has name and, once set, you cannot change the root object of a NSConnection; the GNU Proxy for the remote root object has a target address value just like all other Proxy's, and you can change the root object as many times as you like. ]. 1.5 GNUstep GUI Library ======================= 1.5.1 What is the GUI Library? ------------------------------ The GNUstep GUI Library is a library of objects useful for writing graphical applications. For example, it includes classes for drawing and manipulating graphics objects on the screen: windows, menus, buttons, sliders, text fields, and events. There are also many peripheral classes that offer operating-system-independent interfaces to images, cursors, colors, fonts, pasteboards, printing. There are also workspace support classes such as data links, open/save panels, context-dependent help, spell checking. It provides functionality that aims to implement the `AppKit' portion of the OpenStep standard. However the implementation has been written to take advantage of GNUstep enhancements wherever possible. 1.5.2 Explain the organization of the front- and back-ends ---------------------------------------------------------- The GNUstep GUI Library is divided into a front- and back-end. The front-end contains the majority of implementation, but leaves out the low-level drawing and event code. A back-end can override whatever methods necessary in order to implement low-level drawing event receiving. Different back-ends will make GNUstep available on various platforms. The default GNU back-end will run on top of X Windows. Other back-ends could allow GNUstep to run on OpenGL and WIN32 graphics/event platforms. Much work will be saved by this clean separation between front- and back-end, because it allows different platforms to share the large amount of front-end code. 1.5.3 What is the current state of development of the front-end? ---------------------------------------------------------------- Many of the classes are well implemented, if not thoroughly tested. See the GNUstep web sites and read status information contained in the distribution for the most up-to-date information. 1.5.4 What is the current state of development of the back-ends? ---------------------------------------------------------------- There are several backends currently available: `xlib' This backend runs on X11 and uses standard xlib calls for implementing drawing. It works well, but is limited in many areas due to the limitations of xlib drawing. `art' This is a very good backend that draws using the libart package and freetype with near PostScript quality and functionality. It is currently the standard backend (as long as the required libraries are installed). `w32' This backend works on Windows and uses basic Windows drawing `cairo' An up-and-coming backend. It still relies on unpublished functions in the cairo library so using it is not for the beginner. 1.6 GNUstep DisplayGhostScript Server ===================================== 1.6.1 What is the Display Ghostscript Server? --------------------------------------------- It is a free implementation of a Display PostScript server based on the GNU Ghostscript program developed by Aladdin Enterprises and now owned by artofcode LLC. At one point, GNUstep was using this for display purposes. However the development of DGS has stopped as it is too difficult to maintain and no one wanted to work on it. Now we are using other means of drawing. 1.6.2 What is its current state of development? ----------------------------------------------- GNU contracted with Aladdin Enterprises to add some key features to GNU Ghostscript so it could be used as a DPS server. This work has mostly been done, although Aladdin did not completely finish the work that they were contracted for. (Because the work took longer than specified and was not completed, Aladdin agreed to waive approximately $10,000 in promised fees for the work that was actually done and delivered.) DGS works fairly well with a single context. Alpha channel and compositing doesn't work. Currently, further development on DGS has been abandoned. The library based approach using libart, cairo, etc works much better. 1.6.3 What is the relationship between the Display Ghostscript Server and X Windows? ------------------------------------------------------------------------------------ Display Ghostscript runs on top of X Windows. gnustep-make-2.7.0/subproject.make0000664000175000017500000000173610711636501016762 0ustar richardrichard# # subproject.make # # Makefile rules to build GNUstep-based subprojects (which is not the # same thing as aggregate projects!). # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/subproject.make else ifeq ($(GNUSTEP_TYPE),subproject) include $(GNUSTEP_MAKEFILES)/Instance/subproject.make endif endif gnustep-make-2.7.0/executable.template.in0000775000175000017500000001601610711636501020226 0ustar richardrichard#!/bin/sh # # @configure_input@ # # Copyright (C) 1999-2002 Free Software Foundation, Inc. # # Author: Adam Fedor # Date: May 1999 # # Author: Nicola Pero # Date: 2001, 2002,2007 # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 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. # This is installed inside the application directory in the # non-flattened case. In the flattened case, we install the binary # directly in the application directory and no wrappers are used. if [ -z "$EXEEXT" ]; then EXEEXT=@EXEEXT@ fi if [ -z "$LIBRARY_COMBO" ]; then LIBRARY_COMBO=@ac_cv_library_combo@ fi # Try to determine GNUSTEP_MAKEFILES to source GNUstep.sh if [ -z "$GNUSTEP_CONFIG_FILE" ]; then GNUSTEP_CONFIG_FILE=@GNUSTEP_CONFIG_FILE@ fi if [ -z "$GNUSTEP_USER_CONFIG_FILE" ]; then GNUSTEP_USER_CONFIG_FILE=@GNUSTEP_USER_CONFIG_FILE@ fi if [ -f "$GNUSTEP_CONFIG_FILE" ]; then . "$GNUSTEP_CONFIG_FILE" fi GNUSTEP_HOME=~ if [ -n "$GNUSTEP_USER_CONFIG_FILE" ]; then case "$GNUSTEP_USER_CONFIG_FILE" in /*) # An absolute path if [ -f "$GNUSTEP_USER_CONFIG_FILE" ]; then . "$GNUSTEP_USER_CONFIG_FILE" fi;; *) # Something else if [ -f "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" ]; then . "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" fi;; esac fi if [ -z "$GNUSTEP_MAKEFILES" ]; then GNUSTEP_MAKEFILES=@GNUSTEP_MAKEFILES@ fi # OK, we now have GNUSTEP_MAKEFILES, we later can source GNUstep.sh. # Process arguments this_script="$0" show_available_platforms=0 show_relative_path=0 show_full_path=0 while true do case "$1" in --script-help) echo usage: `basename "$0"` [--library-combo=...] echo " [--available-platforms][--full-executable-path]" echo " [--relative-executable-path] [arguments...]" echo echo " --library-combo=... specifies a GNUstep backend to use." echo " It overrides the default LIBRARY_COMBO environment variable." echo echo " --available-platforms displays a list of valid exec hosts" echo " --full-executable-path displays full path to executable" echo " --relative-executable-path displays subdirectory path" echo " arguments... are the arguments to the application." exit 0 ;; --library-combo=*) tmp_makefiles="$GNUSTEP_MAKEFILES" . "$tmp_makefiles/GNUstep-reset.sh" LIBRARY_COMBO=`echo "$1" | sed 's/--library-combo=//'` GNUSTEP_MAKEFILES="$tmp_makefiles" shift ;; --available-platforms) show_available_platforms=1 exit 0 ;; --full-executable-path) show_full_path=1 break ;; --relative-executable-path) show_relative_path=1 break ;; *) break;; esac done if [ "$LIBRARY_COMBO" = nx ]; then LIBRARY_COMBO=nx-nx-nx elif [ "$LIBRARY_COMBO" = gnu ]; then LIBRARY_COMBO=gnu-gnu-gnu elif [ "$LIBRARY_COMBO" = fd ]; then LIBRARY_COMBO=gnu-fd-gnu elif [ "$LIBRARY_COMBO" = apple ]; then LIBRARY_COMBO=apple-apple-apple fi export LIBRARY_COMBO # We now have determined both GNUSTEP_MAKEFILES and LIBRARY_COMBO. # Source GNUstep.sh to make sure all the environment is setup # to work in this LIBRARY_COMBO. . "$GNUSTEP_MAKEFILES/GNUstep.sh" # Find path to directory containing ourselves. This directory is # the .app directory. dir="`dirname \"$this_script\"`" # Find the absolute path of the directory. This will be something like # /home/nicola/testing/Applications/Gorm.app full_appname="`(cd \"$dir\"; pwd)`" if [ -z "$full_appname" ]; then echo "Can't find absolute path for $this_script! Please specify full path when" echo "invoking executable" exit 1 fi # # Get base app name (eg, Gorm in the case of Gorm.app, but crazy people might # configure it differently by using a different NSExecutable setting in # Info-gnustep.plist). # appname= if [ -f "$full_appname/Resources/Info-gnustep.plist" ]; then # -n disable auto-print (for portability reasons) # /^ *NSExecutable *=/ matches every line beginning with # zero or more spaces, followed by 'NSExecutable', followed by zero or # more spaces, followed by '=' # to this line we apply the following commands: # s/"//g; which deletes all " in the line. # s/^ *NSExecutable *= *\([^ ;]*\) *;.*/\1/p; # which replaces 'NSExecutable = Gorm; ' with 'Gorm', then, because # of the 'p' at the end, prints out the result # q; which quits sed since we know there must be only a single line # to replace. appname=`sed -n -e '/^ *NSExecutable *=/ \ {s/"//g; s/^ *NSExecutable *= *\([^ ;]*\) *;.*/\1/p; q;}' \ "$full_appname/Resources/Info-gnustep.plist"` fi if [ -z "$appname" ]; then appname="`basename \"$this_script\"`" fi appname="$appname$EXEEXT" if [ $show_available_platforms = 1 ]; then cd "$full_appname" #TODO: show available_platforms exit 0 fi # # Make sure the executable is there # if [ -x "$full_appname/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$LIBRARY_COMBO/$appname" ]; then relative_path="$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$LIBRARY_COMBO/$appname" elif [ -x "$full_appname/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$appname" ]; then relative_path="$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$appname" elif [ -x "$full_appname/$GNUSTEP_HOST_CPU/$appname" ]; then relative_path="$GNUSTEP_HOST_CPU/$appname" elif [ "$full_appname/$appname" != "$0" -a -x "$full_appname/$appname" ]; then relative_path="$appname" else # Search for a binary for this machine but a different library combo if [ -d "$full_appname/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS" ]; then tmp_path="`pwd`" cd "$full_appname/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS"; found=no for lib_combo in * ; do if [ "$lib_combo" != '*' ]; then if [ -x "$lib_combo/$appname" ]; then # Switch LIBRARY_COMBO on the fly tmp_makefiles="$GNUSTEP_MAKEFILES" . "$tmp_makefiles/GNUstep-reset.sh" LIBRARY_COMBO="$lib_combo" . "$tmp_makefiles/GNUstep.sh" # Use the found executable relative_path="$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$LIBRARY_COMBO/$appname" found=yes break fi fi done cd "$tmp_path" if [ "$found" != yes ]; then echo "$full_appname application does not have a binary for this kind of machine/operating system ($GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS)." exit 1 fi fi fi if [ $show_relative_path = 1 ]; then echo "$relative_path" exit 0 fi if [ $show_full_path = 1 ]; then echo "$full_appname/$relative_path" exit 0 fi exec "$full_appname/$relative_path" "$@" gnustep-make-2.7.0/config-noarch.make.in0000664000175000017500000001410112737722775017735 0ustar richardrichard# # config-noarch.make.in # # The settings required by the makefile package that are determined # by configure but that are independent of the platform that we # are working on (keep in mind we can support multiple platforms # being used at the same time!). # # In practice, this file should containg global gnustep-make options # (like GNUSTEP_IS_FLATTENED or GNUSTEP_SYSTEM_ROOT), as opposed to # config info needed to build or compile or do things on a certain # platform (like CC or OPTFLAG), which should go into config.make # # Copyright (C) 1997-2006 Free Software Foundation, Inc. # # Author: Scott Christley # Author: Ovidiu Predescu # Author: Nicola Pero # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The GNUstep Make Package Version # GNUSTEP_MAKE_MAJOR_VERSION=@GNUSTEP_MAKE_MAJOR_VERSION@ GNUSTEP_MAKE_MINOR_VERSION=@GNUSTEP_MAKE_MINOR_VERSION@ GNUSTEP_MAKE_SUBMINOR_VERSION=@GNUSTEP_MAKE_SUBMINOR_VERSION@ GNUSTEP_MAKE_VERSION=@GNUSTEP_MAKE_VERSION@ # Enable or disable strict gnustep-make v2 mode. In strict # gnustep-make v2 mode, we actively try to be backwards-incompatible # with gnustep-make v1. This dangerous option is useful in # test/development builds when you want to make sure your software has # been properly updated to gnustep-make v2. # # If this option is set to 'yes', we enable strict gnustep-make v2 # mode. Else, it's ignored. # GNUSTEP_MAKE_STRICT_V2_MODE=@GNUSTEP_MAKE_STRICT_V2_MODE@ # The default library combination default_library_combo = @ac_cv_library_combo@ # # Location of GNUstep's config file for this installation # # Warning - the base library's configure.in will extract the GNUstep # config file location from the following line using grep/sed - so if # you change the following lines you *need* to update the base library # configure.in too. # # PS: At run-time, this can be overridden on the command-line, or # via an environment variable. ifeq ($(GNUSTEP_CONFIG_FILE),) GNUSTEP_CONFIG_FILE = @GNUSTEP_CONFIG_FILE@ endif # # Now we set up the environment and everything by reading the GNUstep # configuration file(s). # # These are the defaults value ... they will be used only if they are # not set in the config files (or on the command-line or in # environment). ifeq ($(GNUSTEP_MAKE_STRICT_V2_MODE),yes) GNUSTEP_SYSTEM_ROOT = $(error GNUSTEP_SYSTEM_ROOT is obsolete) GNUSTEP_LOCAL_ROOT = $(error GNUSTEP_LOCAL_ROOT is obsolete) GNUSTEP_NETWORK_ROOT = $(error GNUSTEP_NETWORK_ROOT is obsolete) GNUSTEP_USER_DIR = $(error GNUSTEP_USER_DIR is obsolete) else GNUSTEP_SYSTEM_ROOT = @GNUSTEP_SYSTEM_ROOT@ GNUSTEP_LOCAL_ROOT = @GNUSTEP_LOCAL_ROOT@ GNUSTEP_NETWORK_ROOT = @GNUSTEP_NETWORK_ROOT@ GNUSTEP_USER_DIR = @GNUSTEP_USER_DIR@ endif # This includes the GNUstep configuration file, but only if it exists -include $(GNUSTEP_CONFIG_FILE) # FIXME: determining GNUSTEP_HOME GNUSTEP_HOME = $(HOME) # Read the user configuration file ... unless it is disabled (ie, set # to an empty string) ifneq ($(GNUSTEP_USER_CONFIG_FILE),) # FIXME - Checking for relative vs. absolute paths! ifneq ($(filter /%, $(GNUSTEP_USER_CONFIG_FILE)),) # Path starts with '/', consider it absolute -include $(GNUSTEP_USER_CONFIG_FILE) else # Path does no start with '/', try it as relative -include $(GNUSTEP_HOME)/$(GNUSTEP_USER_CONFIG_FILE) endif endif # GNUSTEP_FLATTENED is obsolete, please use GNUSTEP_IS_FLATTENED # instead ifeq ($(GNUSTEP_MAKE_STRICT_V2_MODE),yes) GNUSTEP_FLATTENED = $(error GNUSTEP_FLATTENED is obsolete) else GNUSTEP_FLATTENED = @GNUSTEP_FLATTENED@ endif GNUSTEP_IS_FLATTENED = @GNUSTEP_IS_FLATTENED@ GNUSTEP_HAS_PKGCONFIG = @GNUSTEP_HAS_PKGCONFIG@ ifeq ($(GNUSTEP_MAKE_STRICT_V2_MODE),yes) GNUSTEP_USER_ROOT = $(error GNUSTEP_USER_ROOT is obsolete) else # # Set GNUSTEP_USER_ROOT from GNUSTEP_USER_DIR; GNUSTEP_USER_ROOT is # the variable used in practice # ifneq ($(filter /%, $(GNUSTEP_USER_DIR)),) # Path starts with '/', consider it absolute GNUSTEP_USER_ROOT = $(GNUSTEP_USER_DIR) else # Path does no start with '/', try it as relative GNUSTEP_USER_ROOT = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR) endif endif # FIXME: Shouldn't the following go into config.make ? They are # arch-specific. # If multi-platform support is disabled, just use the hardcoded cpu, # vendor and os determined when gnustep-make was configured. The # reason using the hardcoded ones might be better is that config.guess # and similar scripts might even require compiling test files to # determine the platform - which is horribly slow (that is done in # names.make if GNUSTEP_HOST is not yet set at that stage). To # prevent this problem, unless we were configured to determine the # platform at run time, by default we use the hardcoded values of # GNUSTEP_HOST*. ifeq ("@GNUSTEP_MULTI_PLATFORM@","") GNUSTEP_HOST = @target@ GNUSTEP_HOST_CPU = @clean_target_cpu@ GNUSTEP_HOST_VENDOR = @clean_target_vendor@ GNUSTEP_HOST_OS = @clean_target_os@ endif # Enables of disables parallel building support. When parallel # building support is disabled, the target .NOTPARALLEL: is used in # all make invocations of gnustep-make to make sure a traditional non # parallel build is always performed. When parallel building support # is enabled, all make invocations are still .NOTPARALLEL except for # an additional make invocation which is performed when compiling an # executable or library; that invocation does not use .NOTPARALLEL and # will compile all the files of the executable or library in parallel. GNUSTEP_MAKE_PARALLEL_BUILDING = @GNUSTEP_MAKE_PARALLEL_BUILDING@ gnustep-make-2.7.0/.cvsignore0000664000175000017500000000031110503635247015734 0ustar richardrichardconfig.log config.make config-noarch.make config.cache GNUmakefile GNUstep.sh GNUstep.csh config.h config.status openapp debugapp executable.template opentool gnustep-make.spec fixpath.sh GNUstep.conf gnustep-make-2.7.0/README.Packaging0000664000175000017500000004003512666310455016511 0ustar richardrichardDate: 18-Dec-2008 Author: Nicola Pero PURPOSE ------- This document is intended to provide background information useful to successfully package GNUstep. It particularly applies to GNU/Linux packages such as RPMs and DEBs, but the general concepts would apply to most type of packaging. If you're packaging for other systems, such as Microsoft Windows, you should read carefully the instructions for that system as well as there will be significant differences. GETTING HELP ------------ If you need help with packaging GNUstep or a GNUstep package, please contact the help GNUstep mailing lists , or the more general GNUstep mailing list . DESTDIR ------- gnustep-make and all the GNUstep software supports the standard variable DESTDIR to relocate the installation into a packaging directory. You need to pass it when running a 'make install', as in make install DESTDIR=/tmp/package/ this example will cause all the software to be installed in subdirectories of /tmp/package; for example, a config file that would normally be installed into /etc/GNUstep/GNUstep.conf will be installed into /tmp/package/etc/GNUstep/GNUstep.conf. To create a package, you then only need to package all the files that were installed into that directory. GNUSTEP-MAKE ------------ When packaging GNUstep, you should start by packaging gnustep-make (you should at least have read the INSTALL document to give you an overview of how gnustep-make is installed). GNUstep-make includes both the basic filesystem layout configuration files and scripts that are used by all the other GNUstep software, and makefiles and scripts that are used to build GNUstep software. It would make sense to have them as separate packages (eg, a "gnustep-filesystem" for all users and a "gnustep-make" package for developers), but at this stage for simplicity we recommend just having a single package that includes both. All your GNUstep packages should depend on gnustep-make (which includes the filesystem layout infrastructure) and gnustep-base (which includes the basic Objective-C foundation library that everything else uses). GNUstep-make has a number of configure options. Most of them affect all other GNUstep software. The defaults should be fine in most situations, except for the filesystem layout which you really need to review. If you are confused by an option and it's not mentioned in this document, we recommend using whatever default is automatically selected by gnustep-make. The minimal set of configure options that you need is probably just ./configure --with-layout={FILE} Read the section 1. FILESYSTEM LAYOUT for a bit of help on choosing your filesystem layout. If you have a bit more time, it's probably worth checking the other available options as well and thinking if you need or want to change any of them to better suit your environment. You probably don't, but we document here the major options that you may want to change. 1. FILESYSTEM LAYOUT ==================== The first and most important configuration option is the filesystem layout one: ./configure --with-layout={FILE} Where {FILE} is the name of a file from the FilesystemLayouts directory (eg, ./configure --with-layout=gnustep). This option controls where GNUstep applications, tools, libraries, and everything else GNUstep is installed. There are two major options here: 1. ./configure --with-layout=gnustep The "standard" GNUstep layout, where all the GNUstep software is installed into a separate directory tree located by default in /usr/GNUstep. You can change the default location by using --prefix=xxx, as in ./configure --with-layout=gnustep --prefix=/opt/GNUstep to install everything into /opt/GNUstep instead of /usr/GNUstep. This directory tree is organized with directories such as Applications, Library, Tools and it looks very much like a NeXTSTEP or an Apple Mac OS X filesystem. The main disadvantage of this layout is that it doesn't blend so well with the native Unix filesystem so it requires additional handling of executable and library paths to get the system to find the executables and the libraries. 2. ./configure --with-layout=fhs-system The "FHS" layout, where the GNUstep software is installed into the standard Unix directories such as /usr/bin and /usr/lib. This blends very well with the native Unix filesystem, but you lose the special allure of the GNUstep layout. We don't have a particular recommendation on what filesystem to use; you should pick the one that best suits your system's philosophy. If it's a GNUstep-based system, you are likely to want to use the GNUstep layout; if it's a more general Unix system, you may want to use the FHS layout and have the GNUstep packages install into the standard Unix directories just like every other package, since this might feel more natural to your users. If you're packaging things for Apple, it's also possible to use the Apple filesystem layout, but extra care is required in that situation to avoid conflicting with the Apple software itself. This works best if packaging a single piece of software (eg, Renaissance). In some special cases you may be unhappy with the existing filesystem layouts and may want to create your own. This is possible and easy by creating a new FilesystemLayouts file; for more information, please refer to the gnustep-make documentation. Once you pick a filesystem layout and configure gnustep-make using it, all of the GNUstep software will automatically use it. 2. FLATTENED AND MULTI-PLATFORM =============================== Here it is very likely that the defaults (flattened layout, and no multi-platform support) are exactly what you want, since they remove a lot of complication for end-users. In case you wonder what these options do, here's a quick summary. If you disable the flattened layout GNUstep uses a "fat" directory structure that can accomodate binaries for multiple architectures in the same filesystem; by turning on the "multi-platform" support you can then make it to choose which one to use at runtime, allowing you to mount a single fat directory structure from the network on machines with different architectures. This works best with the GNUstep filesystem layout. 3. LIBRARY-COMBOS ================= The library-combo defines the main components of your Objective-C environment. The default is currently "gnu-gnu-gnu", which means that the system is using the GNU Objective-C runtime library, the GNU foundation/base library, and the GNU app/gui library. You may well wish to use "ng-gnu-gnu", which means that the runtime library is the GNUstep runtime for ObjectiveC-2, and also means that the latest language features are expected with the compiler. To use this you must ship the GNUstep runtime and clang-3.1 or later. 4. CONFIGURATION FILE ===================== GNUstep has a system-wide configuration file that is used by both gnustep-make and gnustep-base to learn about the current filesystem layout in the system and locate the various resources. By default, this configuration file is installed by gnustep-make into /etc/GNUstep/GNUstep.conf This location can be changed as in ./configure --with-config-file=/etc/GNUstep.conf Please note that this configuration file is generally not meant to be edited after it's been installed by gnustep-make. The configuration file merely records the filesystem layout that was chosen at configure time and is used by all the software. Finally, changing the location of the configuration file can introduce an additional complication since you later need to make sure the new config file is found in its new location. This should be easy and is explained below, but it might depend on your setup. If you don't have a serious reason to change its location, we recommend just leaving the configuration file in the default /etc/GNUstep/GNUstep.conf location which is guaranteed to work with no additional setup work. 5. USER DEFAULTS DIRECTORY ========================== User defaults are used by GNUstep applications and tools to store your user preferences and other user-specific information. These user defaults are stored in a directory inside the user's home directory, which by default is ~/GNUstep/Defaults/ You can change this to something else, for example ./configure --with-user-defaults-dir=.GNUstep/Defaults would store the defaults into the directory ~/.GNUstep/Defaults. If you change this, it might be worth testing it later; after you install GNUstep-base, you can test where the user defaults get written by using the command-line tool 'defaults' which allows you to read or write user defaults. 6. GLOBAL DEFAULTS DATABASE =========================== You may define global (ie for all applications and all users) default values by placing them in the GlobalDefaults.plist file in the same directory as the GNUstep.conf configuration file. This file should contain data as keys and values in a dictionary using the text property list format (the gnustep-base command 'defaults plist' will give you a summary of the syntax of a text property list). It is recommended that, if there are multiple packages wiching to set global defaults, the values for each package are stored in a separate file and the 'plmerge' command (also available with gnustep-base) is used to merge those separate files into Globaldefaults.plist when any package is installed or removed. 7. SUMMARY OF CONFIGURE OPTIONS =============================== If you've followed us up to here, probably your gnustep-make's configure command now looks something like ./configure --with-layout={FILE} Or, if you really wanted to change a lot of things, it might look like ./configure --with-layout={FILE} --with-library-combo=ng-gnu-gnu --with-config-file={LOCATION} --with-user-defaults-dir={DEFAULTS_DIR} 8. USER ENVIRONMENT =================== GNUstep will install applications, tools and libraries into the filesystem of your choice. If this filesystem is different from the native system filesystem, it's likely that: * executables won't be found because they are not in the user's PATH * libraries won't be found because they are not in the user's LD_LIBRARY_PATH (or in /etc/ld.so.conf or similar variables/configuration depending on the type of system) In that case you need to make sure that when the gnustep-make package is installed, these paths will be added as appropriate. One option is to use the GNUstep.sh script that comes with GNUstep-make. You should execute it every time a user logs in, for example by adding . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh to your /etc/profile (or appropriate corresponding setup for your system). The other option is to add manually the paths; check the documentation for your filesystem layout for the paths that you need to add (see FilesystemLayouts/ for the documentation of the various layouts). 9. DEVELOPER ENVIRONMENT ======================== To compile software that uses gnustep-make, you also need to set the GNUSTEP_MAKEFILES shell variable: GNUSTEP_MAKEFILES=/usr/GNUstep/System/Library/Makefiles export GNUSTEP_MAKEFILES (the actual location depends on your filesystem layout; please check the output of gnustep-make's ./configure to see the location on your chosen layout). If you're using GNUstep.sh, this variable is automatically set by it; otherwise you need to make sure that after installing your gnustep-make package, this variable is set in the environment whenever a user logs in. This is important because then users can download any GNUstep software and compile it by just typing 'make'. And, of course, you can compile the software yourself and create GNUstep packages. :-) GNUSTEP_INSTALLATION_DOMAIN --------------------------- Once you have packaged gnustep-make, you are ready to start packaging all other GNUstep software, starting with gnustep-base (or perhaps with the gnustep-make documentation). To build/package GNUstep software, you should normally install the gnustep-make package you just built, but you may use another gnustep-make installation as long as you ensure that the GNUstep.conf file used by that installation contains paths matching those in your new gnustep-make package. By default, all GNUstep software will install into the "LOCAL" domain if you compile it from source. Depending on your filesystem layout, this is mapped to different directories on disk; with a GNUstep filesystem layout it would typically be mapped to /usr/GNUstep/Local and subdirectories, and with a FHS (Unix) filesystem layout it would typically be mapped to /usr/local and subdirectories. This is inappropriate for packages though; you want all of your packages to install into the "SYSTEM" domain. Again, depending on your filesystem layout, the "SYSTEM" domain is mapped to different directories on disk; with a GNUstep filesystem layout it would typically be mapped to /usr/GNUstep/System and subdirectories, and with a FHS (Unix) filesystem layout it would typically be mapped to /usr, /var and subdirectories. To install software into the SYSTEM domain, you should use the variable GNUSTEP_INSTALLATION_DOMAIN, as in make install GNUSTEP_INSTALLATION_DOMAIN=SYSTEM You can also set the variable in the shell (recommended), as in GNUSTEP_INSTALLATION_DOMAIN=SYSTEM export GNUSTEP_INSTALLATION_DOMAIN make make install If you're packaging, you're likely to be also using the DESTDIR variable, so your package build command sequence would probably look like DESTDIR=/tmp/my-package export DESTDIR GNUSTEP_INSTALLATION_DOMAIN=SYSTEM export GNUSTEP_INSTALLATION_DOMAIN make make install and then you have all the compiled software files inside /tmp/my-package ready to be packaged. Obviously some packages (but not all of them) require an initial 'configure' before the 'make' step, or require other minor changes around this basic set of commands. DOCUMENTATION ------------- Once you have packaged gnustep-make and installed the package, you can package the gnustep-make documentation. cd Documentation DESTDIR=/tmp/my-package export DESTDIR GNUSTEP_INSTALLATION_DOMAIN=SYSTEM export GNUSTEP_INSTALLATION_DOMAIN make make install A similar process may be used to package documentation for each of the gnustep core libraries. As a special case in gnustepmake, you can use special commands to build and install the documentation. To build and install the gnustep-make documentation from the top level: make install-docs To build and install the gnustep-make documnentation with gnustep-make: make install-all GNUSTEP-BASE ------------ Your next step is to package gnustep-base. gnustep-base has a number of configure options that you may want to check; most of them have to do with locating the various libraries on your platform. One special thing about gnustep-base is that in some special cases (most notably on MinGW) it needs to know the installation domain at configure time. So make sure to set GNUSTEP_INSTALLATION_DOMAIN in the environment *before* running configure. The package build command sequence is the standard one and so would look something like DESTDIR=/tmp/my-package export DESTDIR GNUSTEP_INSTALLATION_DOMAIN=SYSTEM export GNUSTEP_INSTALLATION_DOMAIN ./configure {maybe some options here} make make install The only configure options that are really specific to GNUstep are the ones controlling the location of the configuration file. If you changed the location of the configuration file when you configured gnustep-make by using the option --with-config-file as in ./configure --with-config-file=/etc/GNUstep.conf then you need to make sure that gnustep-base's configure has found the configuration file in its new location. Check the output of gnustep-base's configure; it should mention your special configuration file location. If it doesn't, you may need to configure gnustep-base using the --with-config-file option, as in ./configure --with-config-file=/etc/GNUstep.conf to make sure the correct file is used. OTHER GNUSTEP PACKAGES ---------------------- At this stage, all the GNUstep-specific issues should have been sorted out and packaging GNUstep software should be quite easy. You just need to use DESTDIR and GNUSTEP_INSTALLATION_DOMAIN=SYSTEM. gnustep-make-2.7.0/objc.make0000664000175000017500000000266411550664743015533 0ustar richardrichard# # objc.make # # Makefile rules to build ObjC (but not GNUstep) tools. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # objc.make is deprecated because we want gnustep-make to be # independent of the Objective-C runtime, so that you can replace the # Objective-C runtime without reconfiguring gnustep-make. Once that's # the case, the flags to link against the runtime won't be determined # by gnustep-make, but will be determined and set by gnustep-base (or # equivalent). objc.make is meant to build and link without # gnustep-base (or equivalent), but that won't be possible any more. $(warning objc.make is deprecated. Please use tool.make instead) ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/objc.make else ifeq ($(GNUSTEP_TYPE),objc_program) include $(GNUSTEP_MAKEFILES)/Instance/objc.make endif endif gnustep-make-2.7.0/INSTALL0000664000175000017500000003064113074115002014762 0ustar richardrichard1 GNUstep makefile package installation *************************************** 1.1 Introduction ================ If you are installing this package as part of the GNUstep core libraries, read the file GNUstep-HOWTO for more complete instructions on how to install the entire GNUstep package (including this package). GNUstep-HOWTO comes with this distribution. This should be the first GNUstep package you install. Before installing this package, install ffcall or libffi and any other libraries that GNUstep may need (see the GNUstep-HOWTO). Read and follow the instructions on setting up the GNUstep environement below. Then install gnustep-base. Make sure you've read the machine-specific instructions for your particular operating system and CPU. These instructions come with the GNUstep-HOWTO and are also located at the GNUstep web site at . Quick installation instructions: ./configure make make install This will use the default 'FHS' filesystem layout rooted in /usr/local (in other words, all of GNUstep will end up installed into /usr/local in a Unix fashion). Another popular option is ./configure --with-layout=gnustep make make install which will use the GNUstep filesystem (in other words, all of GNUstep will end up installed into /usr/GNUstep using a GNUstep-tailored filesystem layout). To make and install the documentation: cd Documentation make make install 1.2 Configuration ================= The GNUstep packages uses the Autoconf mechanism for configuration; it checks some host capabilties which are used by all GNUstep software. To configure just type: ./configure The GNUstep makefile package needs to know which filesystem layout to use when installing; this determines the way that various directories in the GNUstep domains (SYSTEM, NETWORK, LOCAL, USER) are mapped to local directories on disk. In the FilesystemLayouts/README file you can find detailed information on filesystem layouts. To specify a filesystem layout, use the -with-layout=xxx option. The default is ./configure --with-layout=fhs which installs GNUstep in /usr/local using the FHS layout (that is, /usr/local/bin, /usr/local/lib, etc). Another popular option is '-with-layout=gnustep' which installs gnustep-make into a GNUstep layout based on /usr/GNUstep (inside /usr/GNUstep/System, /usr/GNUstep/Local). Check the FilesystemLayouts for more options. If you want to install the same layout but in a different location (for example, /opt/gnustep), you can use -prefix=xxx, ./configure --prefix=/opt/gnustep If you're confused and want to see exactly what directories will be used for a certain choice of ./configure flags, you can check the output of ./configure or even have a look at the GNUstep.conf file that is generated by ./configure. It will list the full paths to all the relevant GNUstep directories that would be used if you install the software with that configuration. To see more options you can use with configure, type ./configure --help Look particularly at the end of the list that configure gives, as these options are specific to GNUstep. Some of these are described below. With the GNUstep packages you can use various switches, such as shared and debug, to control compilation. for example, "make shared=no debug=yes" compiles using static libraries with debugging information. (Make sure you use the same switches for every package you compile, and also when you install). 1.2.1 Backend Bundles --------------------- By default, the gnustep-make package specifies that GUI backends are built as a bundle and loaded in at runtime. This allows one to switch backends by simply redefining a user default. If you do not want this behavior (for instance, if bundles do not work on your platform), it can be disabled using --disable-backend-bundle in the arguments to configure. 1.2.2 Alternate Library Setup ----------------------------- You can specify compilation of alternate libraries by using the with-library-combo option. ./configure --with-library-combo=apple-gnu-gnu to compile with Apple's runtime on Darwin, for example. See the DESIGN document for more examples of the variety of library combos. 1.2.3 Alternate Thread Library ------------------------------ You can specify compilation of an alternate thread library from the one that is normally used (or if GNUstep does not know what your normal library is) with the with-thread-lib option. ./configure --with-thread-lib="-L/usr/local/lib -lgthread -lglib" to use libgthread as your threading library. Note that the Objective-C runtime (libobjc) must have a compatible threading backend in order to use this threading library and you must set the appropriate threading backend by hand in the GNUmakefile if you are using gnustep-objc. If you also need to set compiler flags, use the CPPFLAGS variable when calling configure: CPPFLAGS="-I/usr/local/include" ./configure --with-thread-lib="-L/usr/local/lib -lgthread -lglib" 1.2.4 Configuring for a non-flattened structure ----------------------------------------------- GNUstep is normally configured to support a single target/combo. If you are interested in supporting more than one target and/or combo, it's possible to configure GNUstep to use a non-'flattened' directory structure. You do this by supplying the '--disable-flattened' argument to configure. You might also want to supply the '--enable-multi-platform' option. In a flattened structure, files are stored at the top-level rather than in a '$(GNUSTEP_CPU)/$(GNUSTEP_OS)/$(LIBRARY_COMBO)' subdirectory. 1.2.5 Configuring for a cross-compile target -------------------------------------------- By default when you run configure, it assumes that you want to create executables for the same host that you are compiling on; however, the GNUstep makefile package has been designed to support cross-compiling just as easily as normal compiling. In order to add a cross-compile target to the GNUstep makefile package, you must rerun configure for that target and reinstall the makefile package. By rerunning configure, the appropriate target settings are determined, and reinstalling the makefile package installs the appropriate files for that target. The target parameter is used to specify the target platform for cross-compiling: ./configure --target=i386-mingw32 make install GNUstep normally is configured to work with only one target. To work with multiple targets, you'll need to add '--disable-flattened' and '--enable-multi-platform' to the configure flags. Files for the different targets will not be overwritten when you configure and install the make package several times. ./configure --disable-flattened --enable-multi-platform --target=i386-mingw32 make install ./configure --disable-flattened --enable-multi-platform --target=sparc-solaris2.5 make install ./configure --disable-flattened --enable-multi-platform --target=alpha-linux-gnu make install 1.3 Installation ================ After you configure the GNUstep makefile package, you can go straight into installation (there is nothing to compile): make install After you have installed the GNUstep makefile package, there might still be some minor administration to be performed, depending on your configuration. 1.4 Setting up the GNUstep environment ====================================== GNUstep-make will install all programs and libraries in the directories specified by the filesystem layout that you choose. In here we explain how to set up your environment so that the operating system can find the programs and libraries in these directories. The procedure depends on the type of layout (flattened or non-flattened), and on the amount of advanced options that you want to use. 1.4.1 Flattened (default) Setup ------------------------------- In a flattened setup (the default unless you use the -disable-flattened configure argument), you can use a simple setup where you just need to make sure that the few program and library directories are found by the shell/linker. Check the description of your filesystem in FilesystemLayouts to find precise simplified instructions for your layout. In general, you need to your GNUSTEP_SYSTEM_TOOLS, GNUSTEP_NETWORK_TOOLS and GNUSTEP_LOCAL_TOOLS to your PATH, and add your GNUSTEP_SYSTEM_LIBRARIES, GNUSTEP_NETWORK_LIBRARIES and GNUSTEP_LOCAL_LIBRARIES to your linker paths (which is /etc/ld.so.conf on GNU/Linux). To build software, you also need to set GNUSTEP_MAKEFILES. (PS: This requirement is likely to go away soon) 1.4.2 Non-Flattend (fat binary) Setup ------------------------------------- (Advanced configuration) If the setup is non-flattened (ie, fat binary support is enabled) programs and libraries will be installed in appropriate subdirectories so that binaries for different machines/library-combos can coexist. This is the case only if you configure gnustep-make with the option -disable-flattened. It is recommended that this option is used with the GNUstep filesystem layout; and that the GNUstep environment is set up by sourcing the GNUstep.sh file. . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh (change the path to be the path to your GNUstep.sh file on disk. Common cases include /usr/GNUstep/System/Library/Libraries/Makefiles and /usr/local/share/GNUstep/Makefiles) You can run this command in your shell every time, or you may want to add the command to your shell startup scripts - either the ones for your own user (for example, '.bash_profile' for Bash) or the ones for the whole system (for example, '/etc/profile' on GNU/Linux). Please note that you need to execute this command both to build software using gnustep-make and to run software installed by gnustep-make. 1.5 Setting up your GNUstep User domain ======================================= (Advanced configuration) The USER domain is generally expected to be in your home directory; you can use the USER domain to install programs or libraries in your home directory without affecting other users. If you want to access programs or libraries installed in your USER domain, then you really need to source GNUstep.sh in all cases (both flattened and non-flattened), as explained in the Non-Flattened section. If you want to change the filesystem layout of your USER domain (without reinstalling gnustep-make or affecting other people's USER domains), you can do so at runtime by creating a file called ~/.GNUstep.conf (this might have a different name if your filesystem layout specifies otherwise). In that file, you can set all the GNUSTEP_USER_* variables set in GNUstep.conf. Check your GNUstep.conf for a full description. Here is an example in which all the GNUstep domain is moved into ~/Test/GNUstep instead of ~/GNUstep: GNUSTEP_USER_DIR=Test/GNUstep 1.6 Having multiple gnustep-makes installed at the same time ============================================================ (Advanced configuration) You can install gnustep-make multiple times in different directories by using a different config file for each. But if you do, then you must make sure that you can easily switch the operating system paths from one installation to the other. An easy way to do this is to configure your GNUstep by using GNUstep.sh as explained in the non-flattened instructions. Your default gnustep-make installation is the one described in the default GNUstep.conf file for the system; on GNU/Linux this is '/etc/GNUstep/GNUstep.conf'. You can create a second one that uses a different config file; for example: ./configure --prefix=/opt/mytest --with-config-file=/etc/GNUstep-mytest.conf --with-layout=gnustep When you install, this second instance of gnustep-make will reside in '/opt/mytest', and have '/etc/GNUstep-mytest.conf' as config file. To use this second installation instead of the first one, you only need to set the GNUSTEP_CONFIG_FILE variable to point to the next config file and source GNUstep.sh: export GNUSTEP_CONFIG_FILE=/etc/GNUstep-mytest.conf . /opt/mytest/System/Library/Makefies/GNUstep.sh To stop using a GNUstep installation, reset your GNUstep environment with the GNUstep-reset.sh script and destroy the variable GNUSTEP_CONFIG_FILE - . /opt/mytest/System/Library/Makefies/GNUstep-reset.sh unset GNUSTEP_CONFIG_FILE After this, you are ready to start using a new one (by setting a new GNUSTEP_CONFIG_FILE and then sourcing the GNUstep.sh of the new one). gnustep-make-2.7.0/messages.make0000664000175000017500000002136012737722775016427 0ustar richardrichard# # messages.make # # Prepare messages # # Copyright (C) 2002, 2009 Free Software Foundation, Inc. # # Author: Nicola Pero # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Helpful messages which are always printed # Instance/Shared/strings.make ALWAYS_ECHO_NO_FILES = @(echo " No files specified ... nothing done.") ALWAYS_ECHO_NO_LANGUAGES = @(echo " No LANGUAGES specified ... nothing done.") # Instance/Documentation/texi.make. This is special because as it # doesn't have the initial '@(' for technical reasons. We use # 'INSIDE_ECHO_' instead of 'ECHO_' to mark the difference. ALWAYS_INSIDE_ECHO_MISSING_DOCUMENTATION = echo " Nothing to install because nothing was built (usually because makeinfo is not available)"; # Eventual translation of the ALWAYS_ECHO_XXX messages should be done # here ... ifneq ($(messages),yes) # General messages ECHO_PREPROCESSING = @(echo " Preprocessing file $< ..."; ECHO_PRECOMPILING = @(echo " Precompiling header file $< ..."; ECHO_COMPILING = @(echo " Compiling file $< ..."; # The following two are special as they don't have the initial '@(' for technical reasons. # We use 'INSIDE_ECHO_' instead of 'ECHO_' to mark the difference. INSIDE_ECHO_JAVA_COMPILING = echo "Compiling file $< ..."; INSIDE_ECHO_JAVA_BATCH_COMPILING = echo " Compiling Java files for $(GNUSTEP_INSTANCE) ..."; ECHO_LINKING = @(echo " Linking $(GNUSTEP_TYPE) $(GNUSTEP_INSTANCE) ..."; ECHO_JAVAHING = @(echo " Running javah on $< ..."; ECHO_INSTALLING = @(echo " Installing $(GNUSTEP_TYPE) $(GNUSTEP_INSTANCE)..."; ECHO_UNINSTALLING = @(echo " Uninstalling $(GNUSTEP_TYPE) $(GNUSTEP_INSTANCE)..."; ECHO_COPYING_INTO_DIR = @(echo " Copying $(GNUSTEP_TYPE) $(GNUSTEP_INSTANCE) into $(COPY_INTO_DIR)..."; ECHO_CREATING = @(echo " Creating $@..."; ECHO_CHOWNING = @(echo " Fixing ownership of installed file(s)..."; ECHO_STRIPPING = @(echo " Stripping object file..."; # ECHO_NOTHING is still better than hardcoding @(, because ECHO_NOTHING # prints nothing if messages=no, but it prints all messages when # messages=yes, while hardcoding @( never prints anything. ECHO_NOTHING = @( # Instance/framework.make ECHO_UPDATING_VERSION_SYMLINK = @(echo " Updating Version/Current symlink..."; # Instance/Shared/bundle.make ECHO_COPYING_RESOURCES = @(echo " Copying resources into the $(GNUSTEP_TYPE) wrapper..."; ECHO_COPYING_LOC_RESOURCES = @(echo " Copying localized resources into the $(GNUSTEP_TYPE) wrapper..."; ECHO_CREATING_LOC_RESOURCE_DIRS = @(echo " Creating localized resource dirs into the $(GNUSTEP_TYPE) wrapper..."; ECHO_COPYING_RESOURCES_FROM_SUBPROJS = @(echo " Copying resources from subprojects into the $(GNUSTEP_TYPE) wrapper..."; ECHO_COPYING_WEBSERVER_RESOURCES = @(echo " Copying webserver resources into the $(GNUSTEP_TYPE) wrapper..."; ECHO_COPYING_WEBSERVER_LOC_RESOURCES = @(echo " Copying localized webserver resources into the $(GNUSTEP_TYPE) wrapper..."; ECHO_CREATING_WEBSERVER_LOC_RESOURCE_DIRS = @(echo " Creating localized webserver resource dirs into the $(GNUSTEP_TYPE) wrapper..."; ECHO_INSTALLING_BUNDLE = @(echo " Installing bundle directory..."; ECHO_COPYING_BUNDLE_INTO_DIR = @(echo " Copying bundle directory into $(COPY_INTO_DIR)..."; # Instance/Shared/headers.make ECHO_INSTALLING_HEADERS = @(echo " Installing headers..."; # Instance/Shared/java.make ECHO_INSTALLING_CLASS_FILES = @(echo " Installing class files..."; ECHO_INSTALLING_ADD_CLASS_FILES = @(echo " Installing nested class files..."; ECHO_INSTALLING_PROPERTIES_FILES = @(echo " Installing property files..."; ECHO_CREATING_JAR_FILE = @(echo " Creating jar file..."; # Instance/Shared/pkgconfig.make ECHO_INSTALLING_PKGCONFIG = @(echo " Installing pkg-config files..."; # Instance/Shared/stamp-string.make ECHO_CREATING_STAMP_FILE = @(echo " Creating stamp file..."; # Instance/Shared/strings.make ECHO_MAKING_STRINGS = @(echo " Making/updating strings files..."; # Instance/Documentation/autogsdoc.make ECHO_AUTOGSDOC = @(echo " Generating reference documentation..."; # Instance/Documentation/javadoc.make ECHO_JAVADOC = @(echo " Generating javadoc documentation..."; END_ECHO = ) # # Translation of messages: # # In case a translation is appropriate (FIXME - decide how to # determine if this is the case), here we will determine which # translated messages.make file to use, and include it here; this file # can override any of the ECHO_XXX variables providing new definitions # which print out the translated messages. (if it fails to provide a # translation of any variable, the original untranslated message would # then be automatically print out). # else ECHO_PREPROCESSING = ECHO_PRECOMPILING = ECHO_COMPILING = INSIDE_ECHO_JAVA_COMPILING = INSIDE_ECHO_JAVA_BATCH_COMPILING = ECHO_LINKING = ECHO_JAVAHING = ECHO_INSTALLING = ECHO_UNINSTALLING = ECHO_COPYING_INTO_DIR = ECHO_CREATING = ECHO_NOTHING = ECHO_UPDATING_VERSION_SYMLINK = ECHO_CHOWNING = ECHO_STRIPPING = ECHO_COPYING_RESOURCES = ECHO_COPYING_LOC_RESOURCES = ECHO_CREATING_LOC_RESOURCE_DIRS = ECHO_COPYING_RESOURCES_FROM_SUBPROJS = ECHO_COPYING_WEBSERVER_RESOURCES = ECHO_COPYING_WEBSERVER_LOC_RESOURCES = ECHO_CREATING_WEBSERVER_LOC_RESOURCE_DIRS = ECHO_INSTALLING_BUNDLE = ECHO_COPYING_BUNDLE_INTO_DIR = ECHO_INSTALLING_HEADERS = ECHO_INSTALLING_CLASS_FILES = ECHO_INSTALLING_ADD_CLASS_FILES = ECHO_INSTALLING_PROPERTIES_FILES = ECHO_CREATING_JAR_FILE = ECHO_CREATING_STAMP_FILE = ECHO_MAKING_STRINGS = ECHO_AUTOGSDOC = ECHO_JAVADOC = END_ECHO = endif # The following are warnings that are always displayed, no matter if # messages=yes or messages=no # Instance/tool.make WARNING_EMPTY_LINKING = @(echo " Warning! No files to link. Please check your GNUmakefile! Make sure you set $(GNUSTEP_INSTANCE)_OBJC_FILES (or similar variables)") # Instance/bundle.make NOTICE_EMPTY_LINKING = @(echo " Notice: No files to link - creating a bundle with no object file and only resources") # Instance/application.make, Instance/bundle.make, Instance/framework.make WARNING_INFO_GNUSTEP_PLIST = @(echo "Warning! You have specified Info-gnustep.plist in $(GNUSTEP_INSTANCE)_RESOURCE_FILES"; \ echo " Unfortunately, it will not work because Info-gnustep.plist is automatically generated."; \ echo " To customize Info-gnustep.plist, please create a $(GNUSTEP_INSTANCE)Info.plist file with your custom entries."; \ echo " $(GNUSTEP_INSTANCE)Info.plist will be automatically merged into Info-gnustep.plist.") WARNING_INFO_PLIST = @(echo "Warning! You have specified Info.plist in $(GNUSTEP_INSTANCE)_RESOURCE_FILES"; \ echo " Unfortunately, it will not work because Info.plist is automatically generated."; \ echo " To customize Info.plist, please create a $(GNUSTEP_INSTANCE)Info.plist file with your custom entries."; \ echo " $(GNUSTEP_INSTANCE)Info.plist will be automatically merged into Info.plist.") # The following are messages that are related to the recursive make invocations. # Most users will never want to see the recursive make invocations, so we use the messages # are always displayed unless internalmessages=yes is used. ifneq ($(internalmessages),yes) # ECHO_NOTHING_RECURSIVE_MAKE should be used instead of ECHO_NOTHING # shell code that does recursive make invocations. It prints nothing, unless # internalmessages=yes is passed. In that case we display the recursive # invocation commands. ECHO_NOTHING_RECURSIVE_MAKE = @( END_ECHO_RECURSIVE_MAKE = ) # Important - the following are special in that it's inside the shell # code, not at the beginning. INSIDE_ECHO_MAKING_OPERATION = echo "Making $$operation for $$type $$instance..."; INSIDE_ECHO_MAKING_OPERATION_IN_DIRECTORY = echo "Making $$operation in $$directory ..."; INSIDE_ECHO_MAKING_OPERATION_IN_SUBPROJECTS = echo "Making $$operation in subprojects of $$type $$instance..."; else ECHO_NOTHING_RECURSIVE_MAKE = END_ECHO_RECURSIVE_MAKE = INSIDE_ECHO_MAKING_OPERATION = INSIDE_ECHO_MAKING_OPERATION_IN_DIRECTORY = INSIDE_ECHO_MAKING_OPERATION_IN_SUBPROJECTS = endif gnustep-make-2.7.0/gnustep-make-help0000664000175000017500000000573511336101653017216 0ustar richardrichard# # gnustep-make-help # # GNUstep make help message # # Copyright (C) 2007-2008 Free Software Foundation, Inc. # # Author: Nicola Pero # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # This file is printed by the print-gnustep-make-help target. # All lines beginning with '#' are stripped from the output. # gnustep-make is the GNUstep building system. It's a makefile library that allows you to write powerful, robust and portable makefiles very quickly. Traditionally it is used to build and install GNUstep software. Most common targets: _MAKE_ all (builds) _MAKE_ install (builds and installs) _MAKE_ uninstall (uninstalls) _MAKE_ clean (deletes built files) _MAKE_ distclean (deletes all built files) _MAKE_ dist (creates a .tar.gz of the software sources) Most common options that can be used with any of the targets: messages=yes (prints verbosely all commands being executed) debug=no (turns off generation of debug symbols) strip=yes (strips executables and objects before installing) shared=no (builds static executable and objects) GNUSTEP_INSTALLATION_DOMAIN=SYSTEM/LOCAL/NETWORK/USER (installs in the specified domain; the default is LOCAL) MAKEFILE_NAME=xxx (uses makefiles called 'xxx'; the default is 'GNUmakefile'. Note that usually you'd use this option as in '_MAKE_ -f xxx MAKEFILE_NAME=xxx'.) internalmessages=yes (prints verbosely all the recursive make invocations. Useful for debugging gnustep-make itself.) You can use multiple of these options at the same time. Examples: _MAKE_ messages=yes Builds the software and prints verbosely the commands that are being used (useful for debugging) _MAKE_ install GNUSTEP_INSTALLATION_DOMAIN=USER Builds the software and installs it into your user domain (normally in the GNUstep directory of your home directory). Note that you need to source GNUstep.sh to be able to use software installed in your user domain. _MAKE_ install strip=yes messages=yes Builds and installs the software and strips executables and object files before installing. It also prints verbosely the commands being executed. If you think that this help message is missing something important, please report it to http://wiki.gnustep.org/index.php/Report_Bugs. # TODO: # For more information, please check ... ? # # We really need a proper user-facing manual that explains how # to use GNUmakefiles from a user/packager point of view. Then # we could link it from here. # gnustep-make-2.7.0/java-tool.make0000664000175000017500000000163610711636501016475 0ustar richardrichard# # java-tool.make # # Makefile rules to build Java command-line tools. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/java-tool.make else ifeq ($(GNUSTEP_TYPE),java_tool) include $(GNUSTEP_MAKEFILES)/Instance/java-tool.make endif endif gnustep-make-2.7.0/RELEASENOTES0000664000175000017500000010106113074115002015540 0ustar richardrichard1 GNUstep Make Release Notes **************************** The release notes include descriptions of API changes, behavior changes and other information that might help developers and users migrate to using a newer version of the make system. 1.1 Version 2.7.0 ================= When building non-flattened, the subdirectory name for libraries/binaries is changed for Debian compatibility (and simplicity) to use a directory whose name is of the form architecture/library-combo rather than nested directories of the form cpu/os-abi/library-combo. The architecture name format is a sanitised triplet cpu-os-abi (where previously we had cpu/os-abi). When building non-flattened, header files are now installed in an architecture and library-combo dependent subdirectory in the same way that binary libraries are installed. This removes an inconsistency and makes sense with Debian multiarch support which puts headers in an architecture specific subdirectory. The long since deprecated GNUSTEP_INSTALLATION_DIR is removed. Various bugfixes and minor improvements. 1.2 Version 2.6.8 ================= Configure option '-with-library-combo=ng-gnu-gnu' to use the 'Next Generation' setup of the latest ObjectiveC-2 runtime and compiler features rather than traditional runtime. Requires the new runtime and a recent clang compiler. With the 'ng' runtime in use, you can define GS_WITH_ARC=1 at the start of a makefile, or in your environment, or in the command line arguments to have objC code built using ARC. Command line option 'documentation=no' to suppress builds of documentation. Integration of testsuite for regression/unit testing of libraries using the 'check' target. In your makefile define libraryname_TEST_DIR = TestsSubdirectory Various minor bugfixes, documentation spelling corrections etc. The '-enable-strict-v2-mode' option is now, after eight years, turned on by default (in anticipation of finally removing backward compatibility with version one). WARNING; Packagers please ensure that you update any old gnustep-make version one makefiles. Garbage collection support to be removed at the next release. 1.3 Version 2.6.7 ================= Improved package building support Improved environment variable support Improved Java support Various minor bugfixes, documentation spelling corrections etc. 1.4 Version 2.6.6 ================= Debian packagge generation support added. Bug fixes 1.5 Version 2.6.5 ================= Bugfix for non-fragile ABI test Bugfix order if include diorectories for system includes Bugfix equality test for prorocol testing Added minimal test support for .c and .cc files. 1.6 Version 2.6.4 ================= Test framework enhancement (extended equality tests) Android build target 1.7 Version 2.6.3 ================= Bug fixes 1.8 Version 2.6.2 ================= 'Added standalone filesystem layout for putting everything in' one directory for easy deployment of relocatable 'Other bug fixes' 1.9 Version 2.6.1 ================= Bug fixes 1.10 Version 2.6.0 ================== 'The default filesystem layout is now the 'fhs' layout' Before version 2.6.0, the default filesystem layout was the 'gnustep' layout. Starting with 2.6.0, the default filesystem layout has changed and is now the 'fhs' layout. To get the old default layout, configure gnustep-make using ./configure -with-layout=gnustep. Note that this change does not affect gnustep-make when used with the apple-apple-apple library combo, in which case the default filesystem layout remains the 'apple' one. The change in the default filesystem layout means that the location of the GNUstep.sh file in a default installation has changed from /usr/GNUstep/System/Library/Makefiles/GNUstep.sh to /usr/local/share/GNUstep/Makefiles/GNUstep.sh. If you use the default layout and execute the GNUstep.sh script on startup, you need to change the command from . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh to . /usr/local/share/GNUstep/Makefiles/GNUstep.sh 'The default location of the configuration file changed' Before version 2.6.0, the configuration file was always by default /etc/GNUstep/GNUstep.conf no matter what filesystem layout and prefix were used. Starting with version 2.6.0, that is the default location of the configuration file only when installing system-wide, that is with a prefix set to /, /usr or /usr/GNUstep. In all other cases, the configuration file is by default located in $prefix/etc/GNUstep/GNUstep.conf. In particular, this means that if ./configure is invoked with no options specified, the default location of the configuration file is now /usr/local/etc/GNUstep/GNUstep.conf (and no longer /etc/GNUstep/GNUstep.conf). Please note that the -with-config-file=xxx option allow you to specify whatever location for the configuration file that you want; the default is only used if no such option is specified and gnustep-make has to pick a reasonable default location for the configuration file. Finally, also note that the default location of the configuration file on Darwin has not changed and is still /Library/GNUstep/GNUstep.conf regardless of the prefix selected. 'Removed the --with-system-root, --with-local-root and --with-network-root options' These configure options were obsolete and are ignored by all releases in the past 4 years and have now finally been removed. 'Removed obsolete variables' Some very old variables that were deprecated 4 years ago have now been removed. This includes xxx_RESOURCE_FILES_INSTALL_DIR in resource-set.make (you should use xxx_INSTALL_DIR instead) and GNUSTEP_GSWAPPS in gswapp.make (you should use GNUSTEP_WEB_APPS instead). 'New Test Framework' GNUstep-make now includes a test framework that can be used to easily write testcases for Objective-C software. The new releases of GNUstep-base and GNUstep-gui include regression test suites that use this test framework. Please check the README in the TestFramework directory for more information on how it works or how to use it. 'objc.make is deprecated' The file objc.make, which is used to compile Objective-C command-line tools without a Foundation library such as GNUstep base, is now deprecated. Please use tool.make instead. '--enable-absolute-install-paths is now the default on Darwin' This makes it easier to use GNUstep with the gnu-gnu-gnu library combo on Apple Mac OS X. 1.11 Version 2.4.0 ================== 'You can enable the use of the non-fragile ivar ABI' The -enable-objc-nonfragile-abi flag can be used to enable the non-fragile ivar ABI for compilers (such as clang) that support it. '-Wall is now used by default unless 'make warn=no' is specified' Before version 2.4.0, 'make debug=yes' would not only build object files particularly suited for debugging, but would also add the -Wall flag on the compiler command line when compiling C/ObjC/C++/ObjC++. Starting with 2.4.0, the -Wall flag is controlled by a separate warn flag, so you can turn it on and off indipendentely by doing 'make warn=yes' or 'make warn=no'. Since warn=yes is the default, the default behaviour also changed; starting with 2.4.0, gnustep-make will use -Wall by default. You can turn it off by using 'make warn=no'. A similar change occurred for Java compilations, where the flag -deprecation, which used to be enabled by debug=yes, is now enabled by warn=yes. As a consequence, Java code is now compiled by default with the -deprecation flag. You can turn it off by compiling with 'make warn=no'. 'PACKAGE_NEEDS_CONFIGURE and JAVADOC_BUILD_ALWAYS now support 'yes' and 'no'' gnustep-make boolean variables traditionally use the values 'yes' and 'no', with the unfortunate exception of PACKAGE_NEEDS_CONFIGURE and JAVADOC_BUILD_ALWAYS which used to only recognize the values 'YES' and 'NO'. For consistency with everything else, starting with gnustep-make 2.4.0 these two variables recognize the values 'yes' and 'no' too. 'Versions of GNU make older then 3.79.1 (June 2000) are no longer supported' The .NOTPARALLEL pseudo-target is only available in GNU make 3.79 and is essential for parallel builds to work. Starting with version 2.4.0, gnustep-make recommends using GNU make 3.79.1 or greater; a warning will be issued during configure if an older GNU make is detected. Older versions of GNU make are likely to work (except for parallel building) but are no longer supported. As 3.79.1 was released about 10 years ago, this should not be a particular problem. 'new internalmessages=yes option' Starting with version 2.4.0, gnustep-make recognized the new internalmessages=yes option (separate from messages=yes) which prints all the recursive make invocations that are used. This is mostly useful to understand how gnustep-make internally works and is not meant for end-users. 'javadoc is run in quiet mode' Starting with version 2.4.0, javadoc is by default executed with the -quiet option (unless messages=yes is specified), and a "Generating javadoc documentation..." is printed instead. 'new API to build subdirectories' Before version 2.4.0, aggregate.make was used to step into subdirectories and build them. It did not support parallel building. Starting with version 2.4.0, two new makefile fragments have been introduced: serial-subdirectories.make and parallel-subdirectories.make. These can be used to build subdirectories, and encourage (indeed, force) the developer to explicitly decide if the subdirectories are to be built serially, or in parallel. Using parallel-subdirectories.make often produces massively faster builds (or installs or cleans) during a parallel build on a multicore machine. But if you use parallel-subdirectories.make, you need to make sure the different subdirectories are completely independent of each other. The operations that are executed in parallel are 'all', 'clean', 'distclean', 'check' and 'strings'. 'install' and 'uninstall' are still executed in serial order to prevent any concurrency problems when creating (or removing) common installation directories. aggregate.make is still available if you want or need to be backwards-compatible with older versions of gnustep-make. It is normally a wrapper around serial-subdirectories.make, but if you specify 'GNUSTEP_USE_PARALLEL_AGGREGATE = yes' in your GNUmakefile, it becomes a wrapper around parallel-subdirectories.make. aggregate.make will be deprecated in 2012 and removed in 2015, but for the next couple of years it might be a good solution while you wait for your users to upgrade their gnustep-make installations. 'each instance stores object files in its own subdirectory' Before version 2.4.0, there was a single object directory where all object files where stored. In the most common case, this directory was simply ./obj, so if you compiled file source.m, you'd end up with ./obj/source.m.o. Starting with version 2.4.0, different instances store their object files in different subdirectories; for example, if the file was compiled as part of tool ToolA, it would end up in ./obj/ToolA.obj/source.m.o, while if compiled as part of ToolB, it would end up in ./obj/ToolB.obj/source.m.o. This allows ToolA and ToolB to be built in parallel with no race conditions, even if they share some source files. There are a number of side effects of this change. First of all, in the unlikely event that your GNUmakefile depends on the location of the object files (bad idea by the way), you'll have to update it. Second, if you are reusing a single source file in multiple instances in the same project, this will now be compiled multiple times instead of one (on the plus side, you can fully parallelize the build by just using 'make -j N', without having to change anything in your GNUmakefile. On a machine with multiple cpus/cores this can massively speed up the build). Finally, the rules to compile C/ObjC/C++/ObjC++/Windres files are no longer available in the Master invocation - they are only available when compiling a specific instance. It's hard to imagine a situation where this change of private internals would affect any user; but people with their own private gnustep-make forks or advanced extensions might be affected. 'the order in which instances are built is no longer guaranteed' If you build more than one tool in the same GNUmakefile by listing them all in TOOL_NAME as in "TOOL_NAME = ToolA ToolB', you need to be aware that the way the instances are built changed in version 2.4.0. This change affects applications, bundles, ctools, clibraries, libraries, services, palettes, test-applications, test-libraries, test-tools, tools. It does not affect Java, resource sets or documentation. [FIXME: frameworks ?] Before version 2.4.0, instances were always built one after the other one, exactly in the order specified. So, in the example ToolA would be built before ToolB. Starting with 2.4.0, the instances might be built completely in parallel if parallel building is enabled. So, the order in which they are built is no longer defined and your GNUmakefile should not depend on the order in which instances are specified in the GNUmakefile. Most GNUmakefiles should be unaffected because they rarely rely on the order in which instances are built. If your GNUmakefile does depend on the order, you have a few options. The preferred option is to identify the code or steps that need to be executed before some of the instances are built and put them into a before-all:: rule, which is guaranteed to be executed before anything else. In this way your serialized code is executed first, and the build can continue in a completely parallel fashion afterwards. Another option is to move your instances into separate subdirectories, and use serial-subdirectories.make to build them. serial-subdirectories.make will respect the order and always build them in the order you require. If you want to disable parallel building altogether, you can add GNUSTEP_MAKE_PARALLEL_BUILDING=no just after including common.make to prevent a specific GNUmakefile from doing a parallel build. Please note that this does not affect the relationship between instances of different types; if you include library.make before tool.make, for example, the library (or libraries) will still be built before the tool (or tools). It is the order in which the libraries (or tools) are built that is no longer guaranteed. 'support for having source files in subdirectories' Starting with version 2.4.0, it is possible to put source files in subdirectories by specifiying them as in xxx_OBJC_FILES = Source/Beauty.m. This syntax does not work on versions before 2.4.0 so you should not use it if you want to support older versions of gnustep-make; previously you had to create a subproject and add a GNUmakefile in the subdirectory using subproject.make. You can now spread your source files in multiple subdirectories without using subprojects. 'support for having header files in subdirectories' Starting with version 2.4.0, it is possible to put header files in subdirectories by specifiying them as in xxx_HEADER_FILES = Beauty/Beauty.h. This syntax does not work on versions before 2.4.0 so you should not use it if you want to support older versions of gnustep-make. When headers are put in subdirectories specified in this way, corresponding subdirectories are created when the header files are installed. For example Beauty/Beauty.h would be automatically installed into GNUSTEP_HEADERS/HEADER_FILES_INSTALL_DIR/Beauty/Beauty.h. To get the same result in versions before 2.4.0 you would have had to manually create the header installation subdirectories. 'support for HEADER_FILES_DIR in framework subproject' Before version 2.4.0, specifying xxx_HEADER_FILES_DIR in a framework subproject would have no effect. Starting with version 2.4.0, the variable is now recognized and can be used to have the files in a subdirectory. You should avoid using the variable in framework subprojects if you want to support older versions of gnustep-make. 'info files renamed adding a gnustep- prefix' To prevent conflicts with other documentation, all the gnustep-make info files have been renamed adding a gnustep- prefix. For example, to access the GNUstep faq using info, you now need to type 'info gnustep-faq' instead of 'info faq'. Please note that this info documentation is in the core/make/Documentation subdirectory and at the moment is not automatically installed unless you explicitly go in that subdirectory and install it. 'better cleaning for texinfo documentation' When you build html documentation from texinfo files, the local directory containing the html files was not being removed when doing a 'make clean'. Starting with version 2.4.0, 'make clean' removes the directory too. 'debug=no made the default' gnustep-make now builds using debug=no by default. As a consequence, on most platforms C/Objective-C/C++ code is now built by default using -g -O2 instead of just -g. If you do not want the -O2 flag, you can simply build using 'make debug=yes'. You can also use the new ./configure -enable-debug-by-default option to make 'debug=yes' the default flag that is always used when compiling if nothing else is specified. If you do not want the debugging symbols, remember that you can use the 'make strip=yes' option to have them stripped out from all object files when they are installed. 'batch-compilation of Java files' gnustep-make used to compile Java files one by one. In most Java compilers this is very suboptimal. Starting from release 2.4.0, gnustep-make will compile all Java files in a Java project with a single Java compiler invocation. This can significantly speed up compilation of large projects. To disable it and get the behaviour of gnustep-make 2.2.0, please set the variable BATCH_COMPILE_JAVA_FILES to 'no' (or the variable xxx_BATCH_COMPILE_JAVA_FILES to 'no' to disable it for a single instance). Please note that if you are using the xxx_FILE_FLAGS or xxx_FILE_FILTER_OUT_FLAGS functionality for Java files, which allows you to customize the compilation flags for each Java file, then batch compilation is automatically disabled and all files are compiled separately. 'library resources always installed in directory without 'lib'' This change only applies to libraries where LIBRARY_NAME starts with 'lib' and that install resources. Due to a bug, versions of gnustep-make before 2.4.0 would in this case install the resources into the wrong directory, without removing 'lib' from the library name. For example, if LIBRARY_NAME is libgnustep-base, the resources would have been installed into GNUSTEP_LIBRARY/Libraries/libgnustep-base/Versions/1.14/Resources/ instead of the correct GNUSTEP_LIBRARY/Libraries/gnustep-base/Versions/1.14/Resources/. In gnustep-make 2.4.0, this bug has been fixed and the library name, without 'lib', will always be used in the resource installation directory, no matter if LIBRARY_NAME includes 'lib' or not. If you have a makefile which is affected and you need to support older versions of gnustep-make, you could remove 'lib' from the LIBRARY_NAME. That should install resources in the same directory on all gnustep-make versions that support library resources (ie, gnustep-make >= 2.0.x). 1.12 Version 2.2.0 ================== 'libobjc library' You can now specify a particular libobjc library to use with the -with-objc-lib-flag in configure. Make now also automatically uses -lobjc_gc when using garbage collection. 'parallel building' Parallel building is supported now. You can build using the normal make mechanism, e.g. 'make -j 2'. 'install -p' gnustep-make now uses 'install -p' by default when installing headers and other files. This preserves the file timestamps and can in some cases reduce spurious rebuilds triggered by reinstalling headers that have not been modified. You can use the gnustep-make configure option -disable-install-p to disable this behaviour and go back to always using a standard 'install'. 'uninstallation of resources' gnustep-make now is more careful and accurate when uninstalling resources, which means that 'make uninstall' will do a better job at removing directories that were created during by 'make install'. 1.13 Version 2.0.7 ================== 'default installation' New configuration file that allows hardcore developers building everything from source to specify arbitrary default installation domains for the software. You just need to copy the installation-domains.conf file to the same directory as the GNUstep.conf file, and edit it to customize the default installation domain (Thanks to Richard for the idea). '--no-print-directory' gnustep-make now uses the -no-print-directory flag when invoking make recursively, so the output has changed - starting from 2.0.7 it should be shorter and more readable. 'change to intermediate object file names' gnustep-make now supports having in the same project source files with the same name, but a different extension - for example file.c and file.m. The names of intermediate object files have been internally changed (for example, from file.o to file.c.o) to support this. 'change in path checking algorithm in GNUstep.sh and GNUstep.csh' GNUstep.sh and GNUstep.csh perform more careful checks for duplicate paths when adding paths to PATH and other path variables. Now they check each path separately before adding it, which in some cases will produce smaller and less intrusive additions to PATH; in particular, on FHS filesystem layout, they will never add /usr/bin or other system paths if they are already there. If you are in a situation where there is an overlap between GNUstep paths and system paths and you are using GNUstep.sh or GNUstep.csh, you may want to check the new values of PATH, CLASSPATH, GUILE_LOAD_PATH, INFOPATH, LD_LIBRARY_PATH and similar variables since they may be different from the old ones. 'test applications linked against gnustep-gui by default' Test applications (that is, applications created using test-application.make) are now linked against gnustep-gui by default. 1.14 Version 2.0.6 ================== 'GNUSTEP_ABSOLUTE_INSTALL_PATHS' Added the -enable-absolute-install-paths option to configure on Darwin. Enabling this option modifies the process for building dynamic libraries so the install_name stored within a library is an absolute path. Dynamic libraries with an absolute install_name can be placed in non-standard locations, but may not be moved from their designated location. 'default location of GNUstep.conf on BSD systems' This has been changed to /etc/GNUstep/GNUstep.conf to be consistent across all Unix systems (except for Apple Mac OS X where it is installed in /Library/GNUstep/GNUstep.conf). To install in a different location, use the -with-config-file=PATH option, as in -with-config-file=/usr/pkg/etc/GNUstep.conf. 'make.info renamed to gnustep-make.info' To prevent conflicts with the standard GNU 'make' info documentation, the gnustep-make one has been renamed. Now you can access it as in 'info gnustep-make' instead of 'info make', avoiding any conflicts and confusion. Please note that this info documentation is in the core/make/Documentation subdirectory and at the moment is not automatically installed unless you explicitly go in that subdirectory and install it. 1.15 Version 2.0.5 ================== 'default filesystem layout on apple-apple-apple' The default filesystem layout when using the apple-apple-apple library-combo has been changed from 'gnustep' to the new 'apple' filesystem layout, and on darwin the configuration file is by default installed in /Library/GNUstep/GNUstep.conf instead of /etc/GNUstep/GNUstep.conf. Using the 'gnustep' filesystem layout with the apple-apple-apple library-combo did not make much sense; in gnustep-make version 2.0.5 and newer, a ./configure on Apple Mac OS X automatically chooses the right library-combo and filesystem layout to compile and install Apple native frameworks and applications. '~/GNUstep/GNUstep.sh' This script used to be automatically sourced whenever the main GNUstep.sh file was sourced. In gnustep-make version 2 (starting with 2.0.5) the file is no longer sourced. If you are sourcing GNUstep.sh at start-up and have a custom shell script that you'd like to source in addition to GNUstep.sh, please source it in your shell init script before or after sourcing GNUstep.sh. The same applies to ~/GNUstep/GNUstep.csh. 'xxx_NEEDS_GUI' This new variable can be used to specify that a project needs to be linked against the gui library (or not). If set to yes, the gui library will be linked; if set to no, the gui library will not be linked. If unspecified, the generic variable NEEDS_GUI is used; if that is also unspecified, the behaviour depends on the project type (and is backwards-compatible): applications, bundles, frameworks, palettes and libraries link automatically against the gui library; other project types do not. It is recommended that you set xxx_NEEDS_GUI for all bundles, frameworks and libraries to clarify how the linking should be done. 'NEEDS_GUI' This new variable can be used to specify that all projects built by this GNUmakefile need to be linked against the gui library (or not). If set to yes, the gui library will be linked; if set to no, the gui library will not be linked. This behaviour can be overridden for specific project targets by using the xxx_NEEDS_GUI variable (see above). 1.16 Version 2.0.0 ================== Version 2.0.0 is a new major release of gnustep-make which includes a number of major changes compared to previous 1.x releases. Most of the changes are backwards compatible in the sense that old GNUmakefiles will work with gnustep-make version 1 or 2 when used in the same conditions (traditional GNUstep filesystem layout). But GNUmakefiles might need updating to work with the new filesystem layout configurations that are allowed by gnustep-make version 2. 'GNUSTEP_INSTALLATION_DIR' This variable is deprecated in gnustep-make version 2; you should never use it. gnustep-make version 2 supports installation domains that are mapped to filesystem locations in arbitrary ways; for this reason, specifying a GNUSTEP_INSTALLATION_DIR no longer makes sense. If you need to relocate the whole installation (for example, installing into /tmp to prepare a binary package) you should use DESTDIR, as in 'make install DESTDIR=/tmp'. To choose an installation domain, you should use GNUSTEP_INSTALLATION_DOMAIN, as in 'make install GNUSTEP_INSTALLATION_DOMAIN=LOCAL'. It's particularly important that you remove any reference to GNUSTEP_INSTALLATION_DIR inside your own GNUmakefiles. If your GNUmakefiles contains references to GNUSTEP_INSTALLATION_DIR (or similar), you should remove them by replacing them with references to the actual logical directory into which you want to install. For example, if your GNUmakefile is trying to install something into GNUSTEP_INSTALLATION_DIR/Library/Libraries, you need to replace it with GNUSTEP_LIBRARIES. This is important for non-GNUstep filesystem layouts (where, eg, GNUSTEP_LIBRARIES should be set to /usr/lib or /usr/local/lib or /home/nicola/GNUstep/Library/Libraries depending on the installation domain); in that case, gnustep-make will manage GNUSTEP_LIBRARIES for you. Please check the file 'filesystem' for more information on the available variables. 'GNUSTEP_xxx_ROOT' The variables GNUSTEP_SYSTEM_ROOT, GNUSTEP_LOCAL_ROOT, GNUSTEP_NETWORK_ROOT, GNUSTEP_USER_ROOT and GNUSTEP_ROOT are deprecated in gnustep-make version 2 and you should never use them. gnustep-make version 2 supports installation domains that are mapped to filesystem locations in arbitrary ways; for this reason, a variable like GNUSTEP_SYSTEM_ROOT has no longer any use. If your GNUmakefiles contains references to GNUSTEP_SYSTEM_ROOT (or similar), you should remove them by replacing them with references to the actual logical directory into which you want to install. For example, if your GNUmakefile is trying to install something into GNUSTEP_SYSTEM_ROOT/Library/Libraries, you need to replace it with GNUSTEP_SYSTEM_LIBRARIES. Please check the file 'filesystem' for more information on the available variables. 'gnustep-make ./configure and install options' The options to configure (and make install), particularly the ones to determine the filesystem layout, have been radically changed in gnustep-make version 2. If you have a building or packaging script for gnustep-make, you need to make sure you replace your old ./configure options with the new ones. In particular, the -with-system-root, -with-local-root and -with-network-root configure options have been replaced by the more powerful -with-layout configure option. Also, configure no longer imports an existing configuration file so you need to make sure that you pass all the options every time. 'make install special_prefix=xxx' has been replaced by 'make install DESTDIR=xxx'. 'make debug=yes is now the default' The default used to be 'make debug=no'; this has now been changed to be 'make debug=yes'. To get the traditional behaviour, please use 'make debug=no'. 'RPM support rewritten' The RPM support has been rewritten so if you're using gnustep-make to automatically generate RPM packages for your software, you may want to review the process. In particular, there is no longer a distinction between debug and non-debug packages. 'xxx_PREPROCESS_INFO_PLIST' This variable is now obsolete and can be removed; gnustep-make version 2 can automatically detect plists that need preprocessing. 'Framework default version' The default framework resource version changed from 'A' to INTERFACE_VERSION (which is set, by default, to '0'). 'Microsoft Windows updates' If you are using Microsoft Windows, you probably want to check the new installation instructions and reinstall everything. 'Java tools location changed' Java tools are now installed into GNUSTEP_JAVA rather than in a subdirectory of GNUSTEP_TOOLS. 'resource-set.make install directory' The variable xxx_RESOURCE_FILES_INSTALL_DIR for resource-set.make has been deprecated in favour of xxx_INSTALL_DIR. For backwards compatibility, you may want to set them both: xxx_INSTALL_DIR = $(GNUSTEP_LIBRARY)/Libraries/Resources/xxx xxx_RESOURCE_FILES_INSTALL_DIR = /Library/Libraries/Resources/xxx 'INSTALL_ROOT_DIR' All instances of INSTALL_ROOT_DIR in user's makefiles should be replaced with DESTDIR. 'GNUSTEP_FLATTENED' All checks for GNUSTEP_FLATTENED should be updated to check the new variable GNUSTEP_IS_FLATTENED instead, and to compare it explicitly to 'yes' and 'no', and assume that " means 'yes'. './shared_obj' The ./shared_obj, ./shared_debug_obj directories and similar are no longer created. You can use ./obj instead. 'library names' All libraries now have the same name. 'application names' All applications now have the same name. Copyright (C) 2007 Free Software Foundation Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. gnustep-make-2.7.0/relative_path.sh0000775000175000017500000001547210741203754017136 0ustar richardrichard#!/bin/sh # relative_path.sh # # Copyright (C) 2001 - 2007 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: April 2001, January 2007 # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 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 # precisely, the path of minimum length with this property. # # A third optional parameter controls the type of output; if it's set # to 'strict' it outputs "strict" relative paths that always start # with the exact sequence of characters './'. If set to 'short' it # outputs "short" relative paths that might start with './' or with # '../'. Here are examples: # # strict: ./ # short: ./ # # strict: ./../System # short: ../System # # strict: ./System # short: ./System # # Inside shell scripts (eg, in framework.make) we use the 'short' mode # because it prevents ugly unnecessary path fragments to get into all # paths. Inside the configuration system we traditionally use the # 'strict' mode because NSPathUtilities detects relative paths by # checking that they start with './'. The 'short' mode might # become the one used for the configuration system in the future if # NSPathUtilities learns to detect that '../' also starts a relative # path. # # If no this parameter is provided, 'strict' is assumed for backwards # compatibility (even if gnustep-make v1 used to default to 'short'). # This might change in the future, so if you are depending on a # specific behaviour, it's important that you specify the type of # output you want. # # # # for example, # # $GNUSTEP_MAKEFILES/print_relative_path.sh /usr/GNUstep/Local /usr/GNUstep/System short # # returns ../System (and not ../../GNUstep/System which is not the minimum). # # This is needed by `ln -s' to properly create symlinks between # directories which are related ... but we don't know how. We only # need this for frameworks, which are particularly complex and # delicate. For example, to create the link # # /usr/GNUstep/System/Library/Libraries/ix86/linux-gnu/gnu-gnu-gnu/libnicola.so # --> ../../../../Frameworks/nicola.framework/Versions/Current/ix86/linux-gnu/gnu-gnu-gnu/libnicola.so # # (and where the paths are actually computed by make variables which # might depend on variables in user makefiles outside our control, so # it's not obvious what the relationship is between the two paths, and # you only have the absolute paths) we do - # # cd /usr/GNUstep/System/Library/Libraries/ix86/linux-gnu/gnu-gnu-gnu/ # $(LN_S) `$(RELATIVE_PATH_SCRIPT) /usr/GNUstep/System/Frameworks/nicola.framework/Versions/Current/ix86/linux-gnu/gnu-gnu-gnu/libnicola.so /usr/GNUstep/System/Library/Libraries/ix86/linux-gnu/gnu-gnu-gnu/ short` libnicola.so # # which creates the link. We need to use the minimum path because # that is the most relocatable possible path. I consider all this a # trick and a hack and recommend to use libraries and bundles instead # of frameworks, since libraries and bundles are much more portable # and stable, anyway here we are. # # This script is also used to create relative paths in the # configuration system for cases where the location of things is # relative to the location of something (eg, base library). # Unfortunately in that case because of limitations in gnustep-base's # NSPathUtilities, we have to always output a './' at the beginning of # the result so that gnustep-base recognizes the result as a relative # path. This means we use the 'strict' output in that case. # mode=strict means we always need to start our output with './'. # mode=short means we always start our output with '../' or './'. mode=strict if [ "$#" != 2 ]; then if [ "$#" != 3 ]; then exit 1 else mode="$3" fi fi a="$1"; b="$2"; if [ "$a" = "" ]; then exit 1 fi if [ "$b" = "" ]; then exit 1 fi # # Our first argument is a path like /xxx/yyy/zzz/ccc/ttt # Our second argument is a path like /xxx/yyy/kkk/nnn/ppp # # Step zero is normalizing the paths by removing any /./ component # inside the given paths (these components can occur for example when # enable-flattened is used). tmp_IFS="$IFS" IFS=/ # Normalize a by removing any '.' path component. normalized_a="" for component in $a; do if [ -n "$component" ]; then if [ "$component" != "." ]; then normalized_a="$normalized_a/$component" fi fi done a="$normalized_a" # Normalize b by removing any '.' path component. normalized_b="" for component in $b; do if [ -n "$component" ]; then if [ "$component" != "." ]; then normalized_b="$normalized_b/$component" fi fi done b="$normalized_b" IFS="$tmp_IFS" # Step one: we first want to remove the common root -- we want to get # into having /zzz/ccc/tt and /kkk/nnn/ppp. # We first try to match as much as possible between the first and the second # So we loop on the fields in the second. The common root must not contain # empty path components (/./) for this to work, but we have already filtered # those out at step zero. tmp_IFS="$IFS" IFS=/ partial_b="" partial_match="" for component in $b; do if [ -n "$component" ]; then partial_b="$partial_b/$component" case "$a" in "$partial_b"*) partial_match="$partial_b";; *) break;; esac fi done IFS="$tmp_IFS" if [ "$partial_match" != "" ]; then # Now partial_match is the substring which matches (/xxx/yyy/) in the # example. Remove it from both a and b. a=`echo $a | sed -e "s#$partial_match##"` b=`echo $b | sed -e "s#$partial_match##"` fi # Ok - now ready to build the result result="." # Special note - if a is now empty, the second directory was a # subdirectory of the first; we will end up outputting ./$b # Now add as many ../ as there are components in a tmp_IFS="$IFS" IFS=/ for component in $a; do if [ -n "$component" -a "$component" != "." ]; then if [ "$mode" = "strict" ]; then # In strict mode, ./../../xxx is required result="$result/.." else # In short mode, it's not, we prefer ../../xxx if [ "$result" = "." ]; then result=".." else result="$result/.." fi fi fi done IFS="$tmp_IFS" # Then, append b if [ -n "$result" ]; then result="$result$b" else result="$b" fi if [ "$mode" = "strict" ]; then # Make sure the result always starts with './' in strict mode if [ "$result" = "." ]; then result="./" fi fi echo "$result" gnustep-make-2.7.0/gnustep-config.in0000775000175000017500000002104412733427351017227 0ustar richardrichard#! /bin/sh # # @configure_input@ # # Script that outputs GNUstep filesystem configuration; Primarily to # provide information about the default/current GNUstep installation, # but may be used by non-gnustep-make building/config systems to ask # gnustep-make how GNUstep is configured on this machine # # Copyright (C) 2007 Free Software Foundation, Inc. # # Author: Nicola Pero # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Check that we are given a valid option. if [ -z "$1" ]; then echo "usage: gnustep-config argument" echo "gnustep-config --help for more help" exit 1 fi case "$1" in --variable=*) ;; --help) ;; --debug-flags) ;; --objc-flags) ;; --objc-libs) ;; --base-libs) ;; --gui-libs) ;; --host-dir) ;; --host-ldir) ;; --installation-domain-for=*) ;; --target-dir-for=*) ;; --target-ldir-for=*) ;; *) # An unrecognized option echo "Unrecognized option: $1" echo "usage: gnustep-config argument" echo "gnustep-config --help for more help" exit 1;; esac # Process --help if [ "$1" = "--help" ]; then echo "usage: gnustep-config [option]" echo echo "This program prints information on the current gnustep" echo "installation. [option] determines what is printed. Here" echo "is the list of options:" echo echo "--variable=xxx: prints the value of the specified" echo " variable. Here is a list of possible" echo " variables:" echo echo " --variable=CC" echo " --variable=CPP" echo " --variable=CXX" echo " --variable=OBJCXX" echo " --variable=LDFLAGS" echo " --variable=GNUMAKE" echo " --variable=GNUSTEP_MAKEFILES" echo " --variable=GNUSTEP_USER_DEFAULTS_DIR" echo " --variable=GNUSTEP_HOST" echo " --variable=GNUSTEP_HOST_CPU" echo " --variable=GNUSTEP_HOST_VENDOR" echo " --variable=GNUSTEP_HOST_OS" echo " --variable=GNUSTEP_IS_FLATTENED" echo " --variable=GNUSTEP_xxx_APPS" echo " --variable=GNUSTEP_xxx_TOOLS" echo " --variable=GNUSTEP_xxx_LIBRARY" echo " --variable=GNUSTEP_xxx_HEADERS" echo " --variable=GNUSTEP_xxx_LIBRARIES" echo " --variable=GNUSTEP_xxx_DOC" echo " --variable=GNUSTEP_xxx_DOC_MAN" echo " --variable=GNUSTEP_xxx_DOC_INFO" echo " where 'xxx' could be any of 'SYSTEM', 'NETWORK', 'LOCAL' and 'USER'." echo echo " For example, you could get the value of GNUSTEP_SYSTEM_TOOLS to find" echo " where command-line system programs are located on this system." echo echo "--debug-flags: prints all the flags required to compile an ObjC file for debug" echo echo "--objc-flags: prints all the flags required to compile an ObjC file" echo echo "--objc-libs: prints all the flags required to link a pure ObjC program (no foundation/gui)" echo echo "--base-libs: prints all the flags required to link a command-line ObjC program (no gui)" echo echo "--gui-libs: prints all the flags required to link a GUI ObjC program" echo echo "--host-dir: prints the host architecture name" echo echo "--host-ldir: prints the host architecture and library combo name" echo echo "--installation-domain-for=xxx: prints the value of the default installation domain" echo " for the package xxx. The result could be 'SYSTEM', 'NETWORK', 'LOCAL'" echo " or 'USER'. This command always returns LOCAL unless the system has been" echo " personalized using an installation-domains.conf file." echo "--target-dir-for=xxx: prints the standardised target architecture directory" echo echo "--target-ldir-for=xxx: prints the target architecture and library combo name" echo exit 0 fi # Any other option requires determining the config first. # # Important - keep the following in sync with GNUstep.sh.in # # # Read our configuration files. We only do that to locate # GNUSTEP_MAKEFILES, so that we can execute GNUstep.sh and # access any variable that we might ever need. # # Determine the location of the system configuration file if [ -z "$GNUSTEP_CONFIG_FILE" ]; then GNUSTEP_CONFIG_FILE=@GNUSTEP_CONFIG_FILE@ fi # Determine the location of the user configuration file if [ -z "$GNUSTEP_USER_CONFIG_FILE" ]; then GNUSTEP_USER_CONFIG_FILE=@GNUSTEP_USER_CONFIG_FILE@ fi # Read the system configuration file if [ -f "$GNUSTEP_CONFIG_FILE" ]; then . "$GNUSTEP_CONFIG_FILE" fi # FIXME: determining GNUSTEP_HOME GNUSTEP_HOME=~ # Read the user configuration file ... unless it is disabled (ie, set # to an empty string) if [ -n "$GNUSTEP_USER_CONFIG_FILE" ]; then case "$GNUSTEP_USER_CONFIG_FILE" in /*) # An absolute path if [ -f "$GNUSTEP_USER_CONFIG_FILE" ]; then . "$GNUSTEP_USER_CONFIG_FILE" fi;; *) # Something else if [ -f "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" ]; then . "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" fi;; esac fi if [ -z "$GNUSTEP_MAKEFILES" ]; then GNUSTEP_MAKEFILES=@GNUSTEP_MAKEFILES@ fi export GNUSTEP_MAKEFILES # # If all they want to know if GNUSTEP_MAKEFILES or anything that # we can compute only using GNUSTEP_MAKEFILES, we can print it out # case "$1" in --variable=CC) echo "@CC@" exit 0;; --variable=CPP) echo "@CPP@" exit 0;; --variable=CXX) echo "@CXX@" exit 0;; --variable=OBJCXX) echo "@OBJCXX@" exit 0;; --variable=CPPFLAGS) echo "@CPPFLAGS@" exit 0;; --variable=LDFLAGS) echo "@LDFLAGS@" exit 0;; --variable=GNUSTEP_MAKEFILES) echo "$GNUSTEP_MAKEFILES" exit 0;; --variable=GNUMAKE) echo "@GNUMAKE@" exit 0;; --debug-flags) @GNUMAKE@ --no-print-directory -s -f "$GNUSTEP_MAKEFILES/empty.make" print-gnustep-make-objc-flags quiet=yes debug=yes 2>/dev/null exit 0;; --objc-flags) @GNUMAKE@ --no-print-directory -s -f "$GNUSTEP_MAKEFILES/empty.make" print-gnustep-make-objc-flags quiet=yes 2>/dev/null exit 0;; --objc-libs) @GNUMAKE@ --no-print-directory -s -f "$GNUSTEP_MAKEFILES/empty.make" print-gnustep-make-objc-libs quiet=yes 2>/dev/null exit 0;; --base-libs) @GNUMAKE@ --no-print-directory -s -f "$GNUSTEP_MAKEFILES/empty.make" print-gnustep-make-base-libs quiet=yes 2>/dev/null exit 0;; --gui-libs) @GNUMAKE@ --no-print-directory -s -f "$GNUSTEP_MAKEFILES/empty.make" print-gnustep-make-gui-libs quiet=yes 2>/dev/null exit 0;; --host-dir) @GNUMAKE@ --no-print-directory -s -f "$GNUSTEP_MAKEFILES/empty.make" print-gnustep-make-host-dir quiet=yes 2>/dev/null exit 0;; --host-ldir) @GNUMAKE@ --no-print-directory -s -f "$GNUSTEP_MAKEFILES/empty.make" print-gnustep-make-host-ldir quiet=yes 2>/dev/null exit 0;; --installation-domain-for=*) gs_package_name=`echo "$1" | sed -e 's/--installation-domain-for=//'` @GNUMAKE@ --no-print-directory -s -f "$GNUSTEP_MAKEFILES/empty.make" print-gnustep-make-installation-domain PACKAGE_NAME="$gs_package_name" quiet=yes 2>/dev/null exit 0;; --target-dir-for=*) gs_target=`echo "$1" | sed -e 's/--target-dir-for=//'` @GNUMAKE@ --no-print-directory -s -f "$GNUSTEP_MAKEFILES/empty.make" print-gnustep-make-target-dir target="$gs_target" quiet=yes 2>/dev/null exit 0;; --target-ldir-for=*) gs_target=`echo "$1" | sed -e 's/--target-ldir-for=//'` @GNUMAKE@ --no-print-directory -s -f "$GNUSTEP_MAKEFILES/empty.make" print-gnustep-make-target-ldir target="$gs_target" quiet=yes 2>/dev/null exit 0;; esac # # Else, now read all the standard GNUstep config # GNUSTEP_SH_EXPORT_ALL_VARIABLES=yes . $GNUSTEP_MAKEFILES/GNUstep.sh unset GNUSTEP_SH_EXPORT_ALL_VARIABLES # # Now print whatever variable they asked for # gs_variable_name=`echo "$1" | sed -e 's/--variable=//'` gs_variable_value=`eval echo '$'"$gs_variable_name"` if [ "$gs_variable_value" != "" ]; then echo "$gs_variable_value" fi gnustep-make-2.7.0/mkinstalldirs0000775000175000017500000000164010377003773016552 0ustar richardrichard#!/bin/sh # Make directory hierarchy. # Written by Noah Friedman # Public domain. # Modified by Adam Fedor, Nicola Pero if test "$1" = "-c"; then CHOWN_TO="$2" shift 2 else CHOWN_TO="" fi MKDIR="mkdir" defaultIFS=' ' IFS="${IFS-${defaultIFS}}" errstatus=0 for file in ${1+"$@"} ; do oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${file} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' for d in ${1+"$@"} ; do pathcomp="${pathcomp}${d}" if test ! -d "${pathcomp}"; then #echo "$MKDIR $pathcomp" 1>&2 if test ! -z "${CHOWN_TO}"; then #echo "chown $CHOWN_TO $pathcomp" 1>&2 ($MKDIR "${pathcomp}" && chown $CHOWN_TO "${pathcomp}") || errstatus=$? else $MKDIR "${pathcomp}" || errstatus=$? fi; fi pathcomp="${pathcomp}/" done done exit $errstatus # eof gnustep-make-2.7.0/strip_makefiles.sh0000775000175000017500000000313610711636501017457 0ustar richardrichard#!/bin/sh # strip_makefiles.sh # # Copyright (C) 2003 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: October 2003 # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # This script "strips" the makefiles and shell scripts. # By "stripping" a makefile we mean removing all comments, and all # empty lines. This reduces considerably the size of makefiles and # the amount of data that each make invocation has to read; the # makefiles execute slightly faster. You shouldn't over-estimate the # performance issue though - stripped makefiles execute only 5% faster # on my machine. # The disadvantage of stripped makefiles is that we remove comments # and makefiles become almost unreadable. for makefile in *.make Master/*.make Instance/*.make Instance/Shared/*.make Instance/Documentation/*.make; do sed -e '/^ *#/d' -e '/^$/d' ${makefile} > ${makefile}.stripped; mv ${makefile}.stripped ${makefile}; done for shell_script in *.sh *.csh; do sed -e '/^ *#/d' -e '/^$/d' ${shell_script} > ${shell_script}.stripped; mv ${shell_script}.stripped ${shell_script}; chmod 755 ${shell_script}; done gnustep-make-2.7.0/GNUstep.conf.in0000664000175000017500000001506311444422320016536 0ustar richardrichard# This is the GNUstep configuration file. # Any line starting with a '#' is a comment. # Empty lines are ignored. # Every other line in this file must be of the form # XXX=YYY # where there should be no spaces around the '=' (this is because we # include this file in shell scripts and makefiles, and sh syntax # requires no spaces around the '='). # # Standard sh quotes can be used in YYY but only at runtime; they can # not be used while building. # GNUstep can use up to 4 domains at the same time. They are System, # Local, Network and User. You can install your programs / resources # in any of these domains. This file mostly deals with configuring # how the domains map to your filesystem. # IMPORTANT: Don't delete lines from this file unless you want # the values hardcoded in the packages to be used. If you want # to suppress the network domain, set all its paths to be the same # as the system domain. If you want to suppress the local domain, # set all its paths to be the same as the network domain. If you # want to suppress the user domain, set its paths to be the same # as the local domain. You can not suppress the system domain. # The paths should not include a '/' at the end. # These GNUSTEP_*_ROOT variables are obsolete, and will be removed. GNUSTEP_SYSTEM_ROOT=@GNUSTEP_SYSTEM_ROOT@ GNUSTEP_LOCAL_ROOT=@GNUSTEP_LOCAL_ROOT@ GNUSTEP_NETWORK_ROOT=@GNUSTEP_NETWORK_ROOT@ # The name of the user config file. This file can override # some settings in this file. Usually used by users that want # to install things into their GNUstep user domain and/or have # many such domains. GNUSTEP_USER_CONFIG_FILE=@GNUSTEP_USER_CONFIG_FILE@ # The name of the user directory, if any. This is obsolete, # and will be removed. GNUSTEP_USER_DIR=@GNUSTEP_USER_DIR@ # The name of the user directory where defaults (eg, preferences) are # stored. If it does not start with a '/', it will be considered # relative to the user home directory. GNUSTEP_USER_DEFAULTS_DIR=@GNUSTEP_USER_DEFAULTS_DIR@ # This is where the gnustep-make Makefiles are installed. # Traditionally, this is /usr/GNUstep/System/Library/Makefiles GNUSTEP_MAKEFILES=@GNUSTEP_MAKEFILES@ # This is where the user home directories are. Only used to provide # NSUserDirectory in gnustep-base. Never used anywhere else. GNUSTEP_SYSTEM_USERS_DIR=@GNUSTEP_SYSTEM_USERS_DIR@ GNUSTEP_NETWORK_USERS_DIR=@GNUSTEP_NETWORK_USERS_DIR@ GNUSTEP_LOCAL_USERS_DIR=@GNUSTEP_LOCAL_USERS_DIR@ # This is where System GUI Applications get installed. # Traditionally it is /usr/GNUstep/System/Applications. GNUSTEP_SYSTEM_APPS=@GNUSTEP_SYSTEM_APPS@ # This is where System GUI Applications that only the # Administrator can use get installed. # Traditionally it is /usr/GNUstep/System/Applications/Admin. GNUSTEP_SYSTEM_ADMIN_APPS=@GNUSTEP_SYSTEM_ADMIN_APPS@ # This is where System Web Applications (GSWeb, SOPE) get # installed. # Traditionally it is /usr/GNUstep/System/Library/WebApplications. GNUSTEP_SYSTEM_WEB_APPS=@GNUSTEP_SYSTEM_WEB_APPS@ # This is where System Command-Line Tools get installed. # Traditionally it is /usr/GNUstep/System/Tools. GNUSTEP_SYSTEM_TOOLS=@GNUSTEP_SYSTEM_TOOLS@ # This is where System Command-Line Tools that only the # Administrator can use get installed. Important: this # should not be in the PATH of normal users. # Traditionally it is /usr/GNUstep/System/Tools/Admin. GNUSTEP_SYSTEM_ADMIN_TOOLS=@GNUSTEP_SYSTEM_ADMIN_TOOLS@ # This is where System resources get installed. This directory will # contain a lot of executable code since *step traditionally likes to # bundle executables and resources together. # Traditionally it is /usr/GNUstep/System/Library. GNUSTEP_SYSTEM_LIBRARY=@GNUSTEP_SYSTEM_LIBRARY@ # This is where System headers get installed. They are the # library .h headers. # Traditionally it is /usr/GNUstep/System/Library/Headers. GNUSTEP_SYSTEM_HEADERS=@GNUSTEP_SYSTEM_HEADERS@ # This is where System libraries get installed. By libraries we mean # the shared/static object files that you can link into programs. # Traditionally it is /usr/GNUstep/System/Library/Libraries. GNUSTEP_SYSTEM_LIBRARIES=@GNUSTEP_SYSTEM_LIBRARIES@ # This is where System documentation get installed. This is known # not to contain any executable, so we keep it separate. # Traditionally it is /usr/GNUstep/System/Library/Documentation. GNUSTEP_SYSTEM_DOC=@GNUSTEP_SYSTEM_DOC@ # This is where System man pages get installed. # Traditionally it is /usr/GNUstep/System/Library/Documentation/man. GNUSTEP_SYSTEM_DOC_MAN=@GNUSTEP_SYSTEM_DOC_MAN@ # This is where System info pages get installed. # Traditionally it is /usr/GNUstep/System/Library/Documentation/info. GNUSTEP_SYSTEM_DOC_INFO=@GNUSTEP_SYSTEM_DOC_INFO@ GNUSTEP_NETWORK_APPS=@GNUSTEP_NETWORK_APPS@ GNUSTEP_NETWORK_ADMIN_APPS=@GNUSTEP_NETWORK_ADMIN_APPS@ GNUSTEP_NETWORK_WEB_APPS=@GNUSTEP_NETWORK_WEB_APPS@ GNUSTEP_NETWORK_TOOLS=@GNUSTEP_NETWORK_TOOLS@ GNUSTEP_NETWORK_ADMIN_TOOLS=@GNUSTEP_NETWORK_ADMIN_TOOLS@ GNUSTEP_NETWORK_LIBRARY=@GNUSTEP_NETWORK_LIBRARY@ GNUSTEP_NETWORK_HEADERS=@GNUSTEP_NETWORK_HEADERS@ GNUSTEP_NETWORK_LIBRARIES=@GNUSTEP_NETWORK_LIBRARIES@ GNUSTEP_NETWORK_DOC=@GNUSTEP_NETWORK_DOC@ GNUSTEP_NETWORK_DOC_MAN=@GNUSTEP_NETWORK_DOC_MAN@ GNUSTEP_NETWORK_DOC_INFO=@GNUSTEP_NETWORK_DOC_INFO@ GNUSTEP_LOCAL_APPS=@GNUSTEP_LOCAL_APPS@ GNUSTEP_LOCAL_ADMIN_APPS=@GNUSTEP_LOCAL_ADMIN_APPS@ GNUSTEP_LOCAL_WEB_APPS=@GNUSTEP_LOCAL_WEB_APPS@ GNUSTEP_LOCAL_TOOLS=@GNUSTEP_LOCAL_TOOLS@ GNUSTEP_LOCAL_ADMIN_TOOLS=@GNUSTEP_LOCAL_ADMIN_TOOLS@ GNUSTEP_LOCAL_LIBRARY=@GNUSTEP_LOCAL_LIBRARY@ GNUSTEP_LOCAL_HEADERS=@GNUSTEP_LOCAL_HEADERS@ GNUSTEP_LOCAL_LIBRARIES=@GNUSTEP_LOCAL_LIBRARIES@ GNUSTEP_LOCAL_DOC=@GNUSTEP_LOCAL_DOC@ GNUSTEP_LOCAL_DOC_MAN=@GNUSTEP_LOCAL_DOC_MAN@ GNUSTEP_LOCAL_DOC_INFO=@GNUSTEP_LOCAL_DOC_INFO@ # Important: settings in the User should normally be relative paths, # and will be interpreted as relative to the user's directory. This # allows each user to have their own domain to install things. You # can set them to be absolute, mostly if you want to disable them # by setting them equal to the ones in the Network domain. GNUSTEP_USER_DIR_APPS=@GNUSTEP_USER_DIR_APPS@ GNUSTEP_USER_DIR_ADMIN_APPS=@GNUSTEP_USER_DIR_ADMIN_APPS@ GNUSTEP_USER_DIR_WEB_APPS=@GNUSTEP_USER_DIR_WEB_APPS@ GNUSTEP_USER_DIR_TOOLS=@GNUSTEP_USER_DIR_TOOLS@ GNUSTEP_USER_DIR_ADMIN_TOOLS=@GNUSTEP_USER_DIR_ADMIN_TOOLS@ GNUSTEP_USER_DIR_LIBRARY=@GNUSTEP_USER_DIR_LIBRARY@ GNUSTEP_USER_DIR_HEADERS=@GNUSTEP_USER_DIR_HEADERS@ GNUSTEP_USER_DIR_LIBRARIES=@GNUSTEP_USER_DIR_LIBRARIES@ GNUSTEP_USER_DIR_DOC=@GNUSTEP_USER_DIR_DOC@ GNUSTEP_USER_DIR_DOC_MAN=@GNUSTEP_USER_DIR_DOC_MAN@ GNUSTEP_USER_DIR_DOC_INFO=@GNUSTEP_USER_DIR_DOC_INFO@ gnustep-make-2.7.0/Documentation/0000775000175000017500000000000013074115163016546 5ustar richardrichardgnustep-make-2.7.0/Documentation/end.texi0000664000175000017500000000001210377003773020206 0ustar richardrichard@bye \bye gnustep-make-2.7.0/Documentation/news.texi0000664000175000017500000005045213074115002020413 0ustar richardrichard@c -*-texinfo-*- @ifclear ANNOUNCE-ONLY @chapter NEWS @ifset TEXT-ONLY @include version.texi @end ifset The currently released version is @samp{@value{GNUSTEP-MAKE-VERSION}}. @end ifclear @section Changes in version @samp{2.7.0} Garbage collection support removed ARC enabled by default if the ng runtime is used Multi-architecture directory layout adjusted to be more Debian compatible Framework support fixes Various other minor bugfixes @ifclear ANNOUNCE-ONLY @section Changes in version @samp{2.6.8} Configure option '--with-library-combo=ng-gnu-gnu' to use the 'Next Generation' setup of the latest ObjectiveC-2 runtime and compiler features rather than traditional runtime. Requires the new runtime and a recent clang compiler. With the 'ng' runtime in use, you can define GS_WITH_ARC=1 at the start of a makefile, or in your environment, or in the command line arguments to have objC code built using ARC. Command line option 'documentation=no' to suppress builds of documentation. Integration of testsuite for regression/unit testing of libraries using the 'check' target. In your makefile define libraryname_TEST_DIR = TestsSubdirectory Various minor bugfixes, documentation spelling corrections etc. The '--enable-strict-v2-mode' option is now, after eight years, turned on by default (in anticipation of finally removing backward compatibility with version one). WARNING; Packagers please ensure that you update any old gnustep-make version one makefiles. Garbage collection support to be removed at the next release. @section Changes in version @samp{2.6.7} Improved package building support Improved environment variable support Improved Java support Various minor bugfixes, documentation spelling corrections etc. @section Changes in version @samp{2.6.6} Debian packaging support Minor bugfixes. @section Changes in version @samp{2.6.5} Bugfix for non-fragile ABI test Bugfix order if include diorectories for system includes Bugfix equality test for prorocol testing Added minimal test support for .c and .cc files. @section Changes in version @samp{2.6.4} Test framework extended equality tests. Android build target @section Changes in version @samp{2.6.3} Minor bugfix release. @section Changes in version @samp{2.6.2} Added standalone filesystem layout for putting everything in one directory for easy deployment of relocatable. Other bug fixes. @section Changes in version @samp{2.6.1} Bug fix release. Most notably to fix a problem compiling GNUstep with clang. @section Changes in version @samp{2.6.0} @itemize @bullet @item The default filesystem layout is now the 'fhs' layout @item The default location of the configuration file changed when not installing system-wide @item Removed the --with-system-root, --with-local-root and --with-network-root options @item Removed obsolete variables (deprecated 4 years ago). @item A new test framework is included in the pacakge @item objc.make deprecated. Use tool.make instead @item --enable-absolute-install-paths is now the default on Darwin @end itemize @section Changes in version @samp{2.4.0} @itemize @bullet @item Add --enable-objc-nonfragile-abi flag @item New serial-subdirectories.make and parallel-subdirectories.make. @item Support for parallel building of subdirectories. @item Support for parallel building of different instances. @item Support source files in subdirectories without using a subproject. @item Support header files in sub-subdirectories. @item Batch-compile Java files (much faster). @item Changed default compilation flags to -O2 -g. @item Fixes for building documentation. @item Renamed info files to prevent conflicts. @item Updated cygwin support. @end itemize @section Changes in version @samp{2.2.0} @itemize @bullet @item New --with-objc-lib-flag for specifying libobjc. @item Automatically uses -lobjc_gc with configured with garbage collection @item Parallel building supported using e.g. make -j 2 @item Use install -p if available. @item make uninstall works better now. @end itemize @section Changes in version @samp{2.0.8} Minor bug fix to deal with installing in different domains @section Changes in version @samp{2.0.7} @itemize @bullet @item New configuration file to set default installation @item gnustep-make now uses the --no-print-directory flag when invoking make @item Files make have same name but different extensions (.c and .m) @item Change in path checking algorithm in GNUstep.sh and GNUstep.csh @item Test applications linked against gnustep-gui by default @end itemize @section Changes in version @samp{2.0.6} @itemize @bullet @item Fixed some spurious rebuilds of plists, and framework headers. @item Added the --enable-absolute-install-paths option for Darwin systems. @item Install GNUstep.conf in /etc/GNUstep/GNUstep.conf on all systems. @end itemize @section Changes in version @samp{2.0.5} @itemize @bullet @item Update C++ and ObjC++ support so that g++ and proper flags are automatically used. @item Added a new filesystem layout for Apple Mac OS X and use this by default on this system. @item NEEDS_GUI variable added to determine linking behavior against gui library. @item New option --enable-strict-v2-mode to test for obsolete variables. @item ~/GNUstep/GNUstep.sh is no longer sourced. @end itemize @section Changes in version @samp{2.0.4} Fixed a bug finding relative paths on Windows (during configuration). @section Changes in version @samp{2.0.3} New man pages for tools. Better uninstallation of files Add Windows installer makefile for Applications. @section Changes in version @samp{2.0.2} Update license to GPLv3. @section Changes in version @samp{2.0.1} Bug fixes in filesystem layout and framework installation. @section Changes in version @samp{2.0.0} The Makefile package has had a major makover which befits a major version update. The most user-visible change of this is customized filesystem support. GNUstep can now be configured and installed using any of many typical filesystem layouts, including FHS, Mac, and the traditional GNUstep layout. Due to this change a number of variable names have been changed or deprecated. If you are a developer maintaining makefiles, you should check your makefiles for these variables. Most notibly, variables such as @samp{GNUSTEP_SYSTEM_ROOT} no longer make any sense, as various directories that were previously in a traditional GNUstep system root directory exist accross multiple directories in disparate places in other filesystem layouts. If you are a user or developer that is just installing GNUstep, read the @file{GNUstep-HOWTO} and @file{INSTALL} documents to find out new information about configuring and installing make. If you are a developer, read the files @file{filesystem} and @file{make} for information on new and changed variables. Read the @file{RELEASENOTES} file for specific changes in this release and updates you will need to make with this version of make. Various changes include (See @file{RELEASENOTES} for more information): @itemize @bullet @item New configure option @samp{--with-layout} to choose different filesystem layouts. @item All applications use the @samp{.app} extension even when compiled with debugging or profiling. @item Precompiled header support added using xxx_OBJC_PRECOMPILED_HEADERS. @item gnustep-config is a program which prints out information on the GNUstep filesystem and variables (Similar to programs like pkg-config). @item Better inline messages/help, including printing the version of gnustep-make that is being used @item Applications can be started now just using their name (by installing a wrapper in the tools directory). @item Versioning of Microsoft Windows DLLs implemented. @item Use of @samp{GNUSTEP_SYSTEM_ROOT} and similar variables deprecated. @item Implement use of GNU standard @samp{DESTDIR} variable. @item Object files are now placed in the @file{obj} directory. @item Static and profile libraries have the same name as normal libraries. @item Support for Admin Tools and Admin Apps directories @item RPM support rewritten @item Microsoft Windows support updated and extended @item Easy consistent way to link non-installed frameworks by using -Lpath_to_framework/xxx.framework/$GNUSTEP_TARGET_LDIR @item Versioning of library resources @item Fixed rebuilding .plist and .palette files @end itemize @section Changes in version @samp{1.13.0} Debug libraries now have the same name as normal libraries (i.e. no "_d" suffix). This reduces the possiblity of multiple libraries being loaded into the same executable. Added dragonfly OS to make targets. Spaces and backslashes are no longer allowed in paths used by the make package (e.g. with Windows OS). The libraries can still use native paths. @section Changes in version @samp{1.12.0} Minor fixes. @section Changes in version @samp{1.11.2} The @file{GNUstep.conf} file is now viewed as the essential determination of the install location for GNUstep libraries, tools and other files. During configuration, this file is read, if it exists, to determine this information. This can still be overriden with environment and command line options, however. See the filesystem documentation in the GNUstep Make Documentation directory for more information. You no longer need to source GNUstep.sh in order to compile GNUstep programs. All that is needed is the definition of GNUSTEP_MAKEFILES. You should also have the GNUstep system tools directory in your path. All netbsd systems are assumed to use ELF libraries. Support for the old static libs version of netbsd was removed. Serveral new options were added to configure to change the location of basic dir locations and basic configuration files. Also, the help was greatly improved. Note that --prefix=/usr/GNUstep/System no longer works. Please use --prefix=/usr/GNUstep or --with-system-root=/usr/GNUstep/System. A few more fixes for cygwin are included as well as Windows resource rules. Support for ObjC++ has been added. You should list the ObjC++ .mm files in the xxx_OBJCC_FILES variable, and put extra ObjC++ flags in xxx_OBJCCFLAGS or ADDITIONAL_OBJCCFLAGS. @section Changes in version @samp{1.11.1} Part of the previous change was reversed. Now libobjc is still linked with individual applications (as well as the base library), since some operating systems require this to resolve external symbols. However, there is no need to recompile all applications again. Compilation of GNUstep on cygwin was revampled and fixed due to a lot of work by Tom MacSween. @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 @section Changes in version @samp{1.10.0} @itemize @bullet @item 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 @code{--with-user-root} argument to configure, or by modifying GNUsteprc after configuration.) @item make_services is not run by GNUstep.sh anymore. You must run this manually now (see the gnustep-gui documentation). @item Palettes use a plist instead of a strings format file now for the palette.table file. @item You can use the @code{--enable-native-objc-exceptions} argument to configure to enable use of built in objc exceptions with compilers that support it. @end itemize @section Changes in version @samp{1.9.2} @itemize @bullet @item Application and Bundles use the latest convention on Apple. @item Improve/Simplify dependency checking when making docs @end itemize @section Changes in version @samp{1.9.1} @itemize @bullet @item Remove @code{--disable-import} option @item README.Darwin for darwin/MacOSX install @item Framework version and naming clarified. @end itemize @section Changes in version @samp{1.9.0} @itemize @bullet @item Support for building in a separate build dir. @item Add @code{--enable-strip-makefiles} option to configure @item List of classes in a framework gets written to the plist file. @end itemize @section Changes in version @samp{1.8.0} Read the NEWS file for a complete list of changes since the last stable release. The major difference from 1.6.0 is that the locations of certain directories have changed. Generally this will not cause a problem unless your GNUstep directory is shared by multiple machines running this and earlier (1.6.x) versions of the software. @section Changes in version @samp{1.7.4} Bug fixes. @section Changes in version @samp{1.7.3} @itemize @bullet @item Adds library combo to Headers directory if not flattened. @item Add Markup file (Renaissance) support. @end itemize @section Changes in version @samp{1.7.2} --enable-flattened (Flat directory structure) is on by default. @itemize @bullet @item On WIN32 use HOMEPATH in preference to USERPROFILE @item netbsd and openbsd compile fixes. @end itemize @section Changes in version @samp{1.7.1} Bug fixes. @section Changes in version @samp{1.7.0} This version contains a major change in the location of certain directories and installed files as detailed in the @file{filesystem.texi} document. When installing this version for the first time, all old directories and files in those directories will be moved to the new locations automatically. However, you should update all GNUstep versions on any machine you have them installed on in order to avoid any incompatibilities. Other changes: @itemize @bullet @item Support for preprocessed Info.plists. @end itemize @section Changes in version @samp{1.6.0} Make now configures by default for only one system. To compile and run GNUstep for multiple platforms from the same directory, use the configure argument --enable-multi-platform. @itemize @bullet @item Auto-build def file for DLLs @item Work natively on MacOSX systems. Now use apple-apple-apple instead of nx-nx-nx on OSX systems. @item More efficient checks for re-making a project. @end itemize @section Changes in version @samp{1.5.1} @itemize @bullet @item Framework support rewritten, also supports multiple names. @item API change: Replace frameowork's xxx_TOOLS by xxx_COPY_INTO_DIR. @item Unified link commands between libraries and frameworks (LIB_LINK_*). @item New 'make strings' target for localization support. @item Speed improvements. @item Doesn't try to build OSX bundle on GNUstep and vice versa. @item API change: Tools/Subproj can have resources. @item API change: TOOL_INSTALL_DIR. @end itemize @section Changes in version @samp{1.5.0} @itemize @bullet @item Add NetBSD Elf support @end itemize @section Changes in version @samp{1.4.0} @itemize @bullet @item Update Darwin/GNU gcc and Irix targets @end itemize @section Changes in version @samp{1.3.4} This is a first prerelease version for 1.4. @itemize @bullet @item Use gnugc-gnu-gnu library combo for garbage collecting version. @item Add support for --library-combo in opentool @item Change GNUSTEP_PATHPREFIX_LIST to GNUSTEP_PATHLIST @item Add verbosity levels. Use make messages=yes for full messages. @end itemize @section Changes in version @samp{1.3.3} @itemize @bullet @item Recognizes XXX_STANDARD_INSTALL=no to not do installation. @item Updated instructions for MingW/MSYS installation. @end itemize @section Changes in version @samp{1.3.2} @itemize @bullet @item Instructions for building on Windows with MSYS @item Resolve library dependencies better on Windows @item Fix frameworks in RPMs and DEBs @item Continued reorganization. @end itemize @section Changes in version @samp{1.3.0} The package has gone through an extensive reorganization to break up each sub-make into two separate components. This allows for much simplified code and lots of code sharing between components. As a side effect, it also increased the speed of the code by at least a factor of 2. @itemize @bullet @item Force shared=yes for cygwin and mingw @item Bundles copy resources from subprojects. @item Better resource management. Resources handled accross all project types. @item Simplified and fixed user root location between make and base libraries. @item Changed Apps directory to Applications @item Fixes for MacOSX, MingW @end itemize @section Changes in version @samp{1.2.1} @itemize @bullet @item the source distribution code has been rewritten to be more general and extended. Packages built using gnustep-make now automatically have handy targets building tarballs from sources or from CVS imports. @item implemented support for auto-dependencies, which means that any object file automatically depends on all the header files which were used to build it. Only works with newer compilers. @item implemented INSTALL_AS_USER and INSTALL_AS_GROUP. @item implemented a strip=yes option. @item various bug fixes and minor improvements. @end itemize @section Changes in version @samp{1.2.0} @itemize @bullet @item The core rules and internals of gnustep-make have been fundamentally redesigned and rewritten. notably, gnustep-make now works using only a single recursive sub-make invocation rather than two, which makes it consistently faster and simpler in all circumstances. @item The clean rules have been heavily optimized - they no longer use recursive sub-make invocations at all and so they are really fast. @item Many improvements to java support. Optimized management of nested classes @item Better conformance to make conventions. @item File specific compilation flags @item Fixed darwin support @item Support for C++ files. @item Made use of library installation dir consistent with other installation. @item Much improved Windows path support @end itemize @section Changes in version @samp{1.0.1} @itemize @bullet @item Support for Java tools. @item Build GUI backend as a bundle (default). @item Remove backend part of LIBRARY_COMBO. @item Fixes to run on FreeBSD, Solaris. @end itemize @section Changes in version @samp{1.0.0} @itemize @bullet @item Optimizations that in many cases more than double the speed. @item Added preliminary darwin support. @item rpm packeing improvements. @item Better checking for mingw and cygwin @end itemize @section Changes in version @samp{0.9.2} @itemize @bullet @item HOWTO and faq files moved from core package to here @item Configurable GNUSTEP_LOCAL_ROOT and GNUSTEP_NETWORK_ROOT @end itemize @section Changes in version @samp{0.9.1} Make has been reoganized so that it only relies on libraries and other things that are necessary for the Makefile package itself. Any libraries wanting to add extra package information can do so by installing a make stub in the @file{Additional} directory. This greatly simplifies compilation and packaging. @itemize @bullet @item Javadoc support added. @item debian directory added for dpkg @item RPM support rewritten from scratch. @end itemize @section Changes in version @samp{0.9.0} ffcall library is highly recommended for use with the GNUstep base library. You need to have installed it prior to configuring the Makefile package. See the INSTALL file. @itemize @bullet @item Support for automatically generating RPM spec files. @item Build suitable files for MacOS bundles @item Add option for flattened directory structure. @item LaText documentation support. @item Added support for Frameworks @end itemize @section Noteworthy changes in version @samp{0.6.6} The GNUstep system libraries are now installed in a separate system root directory (default /usr/GNUstep/System) rather than the GNUstep root directory (default /usr/GNUstep). You can revert to the old behavior using a configure option @samp{--without-system-root}. We also recommend removing any previous GNUstep versions before installing the new one in order to avoid problems with the system finding the correct binary and/or library. @itemize @bullet @item Support for Windows compilation (cygwin and mingw) and DLL creation and usage. @item Java support rewritten and extended. @end itemize @end ifclear @c end ifclear ANNOUNCE-ONLY gnustep-make-2.7.0/Documentation/gnustep-machines.texi0000664000175000017500000006544411337256304022733 0ustar richardrichard\input texinfo @c -*-texinfo-*- @settitle Platform Compatibility @ifclear HOWTO @c Machine Specific, Compilers, , (DIR) @node Machine Specific, Compilers, , (DIR) @chapter Machines @end ifclear This list is out-of-date. Use the Platform_compatibility guide on the GNUstep Wiki for better information. Below is a list of machines that people have attempted to compile GNUstep on. GNUstep compiles with little or no trouble on many of the more popular operating systems. Some machines marked with @emph{Unstable} may have some trouble or may not work at all. Platforms marked @emph{Needs Testing} are not actively tested by developers 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:: * CentOS/i386:: * Darwin/ix86:: * Darwin/PowerPC:: * Debian/Alpha:: * Debian/i386:: * Debian/em64t:: * Debian/PowerPC:: * Debian/SPARC:: * FedoraCore/i386:: * FreeBSD 5.x:: * FreeBSD 4.x:: * FreeBSD 3.x:: * FreeBSD 2.x:: * Gentoo/i686:: * Gentoo/PPC:: * Gentoo/amd64:: * Gentoo/alpha:: * Gentoo/sparc:: * Irix 6.5/MIPS:: * MacOSX/PowerPC:: * MkLinux/PowerPC:: * NetBSD/i386:: * NetBSD/Sparc64:: * Netwinder:: * OpenBSD 3.x:: * OSF/Alpha:: * RedHat/i386:: * Slackware/Intel:: * Slackware/Sparc:: * Solaris 2.5.1/Sparc:: * Solaris/Sparc:: * Solaris 2.7/Intel:: * Suse 6.x/Intel:: * Suse/Intel:: * Suse 7.x/PPC:: * Unixware-2.1.3/Intel:: * Windows with CYGWIN:: * Windows with MinGW:: * Yellowdog/PowerPC:: @end menu @c ----------------------------------------- @node Compilers, CentOS/i386, 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 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. @table @var @item egcs or gcc < 2.95 Most likely will not work and is not supported. @item gcc 2.95.x Support for this compiler is deprecated as of Aug 2006. Mostly likely it will work in the near future and bug fixes will be accepted, but any bugs are considered non-critical. @item 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. Not supported. @item gcc 3.0.x A fairly good compiler. @item gcc 3.1 Several bugs where introduced in the version. It's probably better to avoid this one, although it might work fine. @item gcc 3.2.x Pretty good. @item gcc 3.3.x Recommended. Fixes some bugs relating to protocols as well as other improvements. @item gcc 3.4.x Recommended. The #import directive is no longer deprecated as of this version of the compiler. @item gcc 4.0 Probably OK. Did start triggering compiler errors on parts of base, but there has been a workaround in base for that. Does not work on MacOSX. @item gcc 4.0.1 Probably OK. This version should work on MacOSX. @item gcc 4.1.x 4.1.0 and 4.1.1 don't work if you use precompiled headers. @end table 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, @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 and installing gcc and make. If you had GNUstep previously installed, make sure you completely remove all of it, including installed init scripts. Support Notes: @table @var @item Supported Regularly used and tested by developers @item Release Tested before a release @item Unsupported Not regularly used or tested @item Unstable Has problems either building or running GNUstep or requires special setp procedures to run correctly. @end table @c ----------------------------------------- @node CentOS/i386, Darwin/ix86, Compilers, Machine Specific @section CentOS/ix86 (@emph{Supported}) This RedHat variant is well-tested and well-supported (tested at least up to CentOS release 4.4). For more information, please check the section on RedHat/i386 below. @c ----------------------------------------- @node Darwin/ix86, Darwin/PowerPC, CentOS/i386, Machine Specific @section Darwin/ix86 (@emph{Unsupported}) Currently tested on Darwin 7.x @table @var @item 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 @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 directory for complete instructions. @end table @c ----------------------------------------- @node Darwin/PowerPC, Debian/Alpha, Darwin/ix86, Machine Specific @section Darwin/PowerPC (@emph{Supported}) 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, 8.x @table @var @item Recommended compiler FSF gcc 4.x, 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). Apple gcc with Mac OS X 10.4 or later and XCode 2.5 or later @item 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 @url{www.opendarwin.org}) to load bundles (not needed for 7.x or later). libjpeg that comes with fink conflicts with the Apple libraries and screw up other apps on Mac OSX (like X11). @item Special Instructions Read the @url{README.Darwin} file in the gnustep-make/Documentation directory for complete instructions. If you compiled FSF gcc by hand, make sure to rename to GNU libobjc library to libobjc-gnu.dylib @end table See also the MacOSX/PowerPC section @c ----------------------------------------- @node Debian/Alpha, Debian/i386, Darwin/PowerPC, Machine Specific @section Debian/Alpha (@emph{Unsupported}) @c ----------------------------------------- @node Debian/i386, Debian/em64t, Debian/Alpha, Machine Specific @section Debian/i386 (@emph{Supported}) Tested on sid. @c ----------------------------------------- @node Debian/em64t, Debian/PowerPC, Debian/i386, Machine Specific @section Debian/em64t (@emph{Supported}) Tested on 'unstable'. @c ----------------------------------------- @node Debian/PowerPC, Debian/SPARC, Debian/em64t, Machine Specific @section Debian/PowerPC (@emph{Supported}) Tested on sid. @c ----------------------------------------- @node Debian/SPARC, FedoraCore/i386, Debian/PowerPC, Machine Specific @section Debian/SPARC (@emph{Release}) Tested on sid. @c ----------------------------------------- @node FedoraCore/i386, FreeBSD 5.x, Debian/SPARC, Machine Specific @section FedoraCore/ix86 (@emph{Supported}) This RedHat variant is well-tested and well-supported (tested at least up to Fedora Core release 6). For more information, please check the section on RedHat/i386 below. @c ----------------------------------------- @node FreeBSD 5.x, FreeBSD 4.x, FedoraCore/i386, Machine Specific @section FreeBSD 5.x (@emph{Supported}) Tested on 5.0, 5.1, 5.3 @table @var @item 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. @end table @c ----------------------------------------- @node FreeBSD 4.x, FreeBSD 3.x, FreeBSD 5.x, Machine Specific @section FreeBSD 4.x (@emph{Unsupported}) @table @var @item Special Instructions For gcc 3.0.4, make WANT_THREADS_SUPPORT=YES For libxml2 2.4.24, make WITHOUT_PYTHON=YES @end table @c ----------------------------------------- @node FreeBSD 3.x, FreeBSD 2.x, FreeBSD 4.x, Machine Specific @section FreeBSD 3.x (@emph{Obsolete}) Compiles "out of the box" on FreeBSD 3.4. @table @var @item 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 @url{ftp://ftp.pcnet.com/users/eischen/FreeBSD/gdb-4.17-port.tar.gz} The best compiler for GNUstep is the latest release of the GNU Compiler Collection (GCC). You can find it at @url{http://egcs.cygnus.com/}. If you want to use the native POSIX threads support from @file{libc_r} pass @code{--enable-threads=posix} to configure. This is the recommended option as this is the FreeBSD threads package that gives the best results --with others you may be unable to run some examples like @file{diningPhilosophers}. The whole compilation process can fail if you have another threads library installed so watch out for installed packages like @file{pth} and such. Besides the support for libc_r, GNUstep will also look for @file{pth} and @file{pcthreads}, so if you have installed them and they aren't detected prepare to write a nice bug report. This can be done more much easily by using the port version. Just @code{cd} to @file{/usr/ports/lang/egcs} and do a @code{"make WANT_THREADS=yes install"}. Easy. If configure cannot find tiff.h or the tiff library and you have it installed in a non-standard place (even @file{/usr/local}), you may need to pass these flags to configure: @code{CFLAGS="-I/usr/local/include"} and @code{LDFLAGS="-L/usr/local/lib"}. @end table @c ----------------------------------------- @node FreeBSD 2.x, Gentoo/i686, FreeBSD 3.x, Machine Specific @section FreeBSD 2.x (@emph{Obsolete,Unstable}) @table @var @item Special Instructions Only static libraries work on this system. Use /stand/sysinstall to install these packages if you have not already done so: @format gmake (GNU make) gcc 2.8.x @end format Seems to compile ok, but some tests crash. Possibly due to a performace 'hack' in base. Might be a good idea to upgrade to FreeBSD 3.x. You need to use gmake not make to compile the GNUstep packages. @end table @c ----------------------------------------- @node Gentoo/i686, Gentoo/PPC, FreeBSD 2.x, Machine Specific @section Gentoo/i686 (@emph{Supported}) @table @var @item Special Instructions libffi sometimes causes odd problems. Try to use ffcall. @end table @c ----------------------------------------- @node Gentoo/PPC, Gentoo/amd64, Gentoo/i686, Machine Specific @section Gentoo/PPC (@emph{Supported}) @c ----------------------------------------- @node Gentoo/amd64, Gentoo/alpha, Gentoo/PPC, Machine Specific @section Gentoo/amd64 (@emph{Unsupported}) 32-bit mode only? @c ----------------------------------------- @node Gentoo/alpha, Gentoo/sparc, Gentoo/amd64, Machine Specific @section Gentoo/alpha (@emph{Unsupported}) @c ----------------------------------------- @node Gentoo/sparc, Irix 6.5/MIPS, Gentoo/alpha, Machine Specific @section Gentoo/sparc (@emph{Unsupported}) @c ----------------------------------------- @node Irix 6.5/MIPS, MacOSX/PowerPC, Gentoo/sparc, Machine Specific @section Irix 6.5/MIPS (@emph{Unsupported}) @table @var @item Recommended compiler gcc 3.2.1 To use threads, it's necessary to bootstrap a compiler yourself: configure with --enable-threads=posix, that will work as long as you link EVERY objective C executable with -lpthread, no matter what warnings the irix linker produces! @item Extra libs needed Unknown @item 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 link the library by hand. No libffi-support: Use ffcall @end table @c ----------------------------------------- @node MacOSX/PowerPC, MkLinux/PowerPC, Irix 6.5/MIPS, Machine Specific @section MacOSX/PowerPC (@emph{Release}) 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 @var @item Recommended compiler 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 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/i386, MacOSX/PowerPC, Machine Specific @section MkLinux/PowerPC (@emph{Unsupported}) Tested with R2 RC2 (2004/03/04). @c ----------------------------------------- @node NetBSD/i386, NetBSD/Sparc64, MkLinux/PowerPC, Machine Specific @section NetBSD/i386 (@emph{Release}) Tested on NetBSD 2.0.2 (2005/04/15) @table @var @item Recommended compiler 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(?), libffi @item 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. @end table gdomap crashes. Perhaps other things do not work as well. @c ----------------------------------------- @node Netwinder, OpenBSD 3.x, NetBSD/Sparc64, Machine Specific @section Netwinder (@emph{Unstable}) @table @var @item Recommended compiler Build #12 of the system. @item Extra libs needed Unknown @item Special Instructions See @url{http://www.netwinder.org/~patrix} @end table @c ----------------------------------------- @node OpenBSD 3.x, OSF/Alpha, Netwinder, Machine Specific @section OpenBSD 3.9 (@emph{Unsupported}) Information for version 3.9 (2006/08/13) Ports at @url{http://mail.rochester.edu/~asveikau/gnustep-openbsd/} @c ----------------------------------------- @node OSF/Alpha, RedHat/i386, OpenBSD 3.x, Machine Specific @section OSF/Alpha (@emph{Needs Testing, Unstable}) @c Contact: suzukis@file.phys.tohoku.ac.jp Information is for Version 3.2C @table @var @item Recommended compiler Unknown @item Extra libs needed Unknown @item 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 versions. Linker sometimes fails to find symbols, in which case you may need to link with a library twice. For instance, add an extra -lgnustep-gui in ADDTIONAL_TOOL_LIBS in the GNUmakefile(.preamble). @end table @c ----------------------------------------- @node RedHat/i386, Slackware/Intel, OSF/Alpha, Machine Specific @section RedHat/i386 (@emph{Supported}) RedHat and variants/clones such as Fedora Core and CentOS are all very well supported and are regularly tested with all GNUstep releases. @table @var @item Recommended compiler The default compiler works very well. @item Extra libs needed All extra libs needed are easily available from standard packages; the only tricky one is ffcall. If you don't find an RPM for that one, download it directly from the GNUstep web site (http://www.gnustep.org). @item Special Instructions None. @end table @c ----------------------------------------- @node Slackware/Intel, Slackware/Sparc, RedHat/i386, Machine Specific @section Slackware/Intel (@emph{Unsupported}) @c ----------------------------------------- @node Slackware/Sparc, Solaris 2.5.1/Sparc, Slackware/Intel, Machine Specific @section Slackware/Sparc (Splack) (@emph{Unsupported}) Tested with Spalck 8.0 (2005/03/01) @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 @var @item Recommended compiler Unknown @item Extra libs needed tiff, Don't use the one in /usr/openwin @item Special Instructions See the Solaris 2.6 section for more instructions. @end table @c ----------------------------------------- @node Solaris/Sparc, Solaris 2.7/Intel, Solaris 2.5.1/Sparc, Machine Specific @section Solaris 2.[678]/Sparc (@emph{Supported}) Tested on Solaris version 6, 7, 8 and 9 @table @var @item Recommended compiler gcc 3.2.1 or greater gcc 3.04. Not 3.1 - does not compile parts of GNUstep. @item Extra libs needed tiff, Don't use the one in /usr/openwin @item 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. @end table Some people have reported problems when using binutils assembler and linker. Using the native Solaris assmebler and linker should work fine. Older Instructions: If you are using threads, make sure the Objective-C runtime (libobjc that comes with gcc) is compiled with threads enabled (This is true by default) AND that it is compiled with the _REENTRANT flag defined (This does not seem to be true by default). Or use the gnustep-objc package. Also make sure THREADS is set to 'posix' not 'solaris'. @c ----------------------------------------- @node Solaris 2.7/Intel, Suse 6.x/Intel, Solaris/Sparc, Machine Specific @section Solaris 2.7/Intel (@emph{Unsupported}) @c Contact?: Sebastian Niesen @table @var @item Recommended compiler Unknown. @item Extra libs needed Unknown @item 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, line 989. Also, 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 instructions above for more information. @end table @c ----------------------------------------- @node Suse 6.x/Intel, Suse/Intel, Solaris 2.7/Intel, Machine Specific @section Suse 6.x/Intel (@emph{Obsolete}) GNUstep has been tested on version 6.2-6.4 of Suse @table @var @item Recommended compiler Standard @item Extra libs needed None @item 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 working. @end table @c ----------------------------------------- @node Suse/Intel, Suse 7.x/PPC, Suse 6.x/Intel, Machine Specific @section Suse/Intel (@emph{Supported}) GNUstep has been tested on version 7.0, 8.0, 8.1, 8.2, 9.0, 9.1, 9.3, 10.1, 11.0 @table @var @item Recommended compiler The default compiler that comes with Susu is fine. Compile with --threads-enabled (non-standard). @item Extra libs needed None @item Special Instructions Suse 10.1 does not work with the x11 backend. @end table @c ----------------------------------------- @node Suse 7.x/PPC, Unixware-2.1.3/Intel, Suse/Intel, Machine Specific @section Suse 7.x/PPC (@emph{Unsupported}) GNUstep has been tested on version 7.0 of Suse/PPC @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). @item Extra libs needed None @item Special Instructions @end table @c ----------------------------------------- @node Unixware-2.1.3/Intel, Windows with CYGWIN, Suse 7.x/PPC, Machine Specific @section Unixware-2.1.3/Intel (@emph{Unsupported}) @c Contact?: Richard Frith-Macdonald @table @var @item Recommended compiler Unknown @item Extra libs needed Unknown @end table Special Instructions for GNUstep installation on Unixware 2.1 systems @table @asis @item 1 Tune the kernel to increase the argument space so that we can pass long command-line argument strings to processes (which the makefiles do) (/etc/conf/bin/idtune ARG_MAX 102400) @item 2 Install raft of the latest GNU software @format gzip (you need this to unpack other stuff) make (to build everything) m4 (for autoconf etc) autoconf (if you need to change anything) bison flex binutils (required by gcc if you want to debug) gcc-2.8.1 (configure --with-gnu-as --with-gnu-ld --with-stabs) NB. gcc-2.8.1 needs a fix to __do_global_dtors_aux() in crtstuff.c on Unixware 2.1.3 (and possibly other unixware versions) The fix is already in recent versions of egcs. @end format @example ================================== static void __do_global_dtors_aux () @{ static func_ptr *p = __DTOR_LIST__ + 1; static int completed = 0; if (completed) return; while (*p) @{ p++; (*(p-1)) (); @} #ifdef EH_FRAME_SECTION_ASM_OP __deregister_frame_info (__EH_FRAME_BEGIN__); #endif completed = 1; @} ====================================== @end example @item 3 Having got gcc working - it's probably a good idea to rebuild all your GNU software using it! @item 4 Build gstep as normal. @item 5 The SIOCGIFCONF ioctl sometimes doesn't work on unixware after applying some of the OS patches. So I have added a '-a' flag to gdomap to give it the name of a file containing IP address and netmask information for the network interfaces on the system. You need to set up a file (I suggest '/etc/gdomap_addresses') containing the information for your machine and modify your system startup files in /etc/rc?.d to run gdomap, telling it to use that file. eg. If your machine has an IP address of '193.111.111.2' and is on a class-C network, your /etc/gdomap_addresses file would contain the line @example 193.111.111.2 255.255.255.0 @end example and your startup file would contain the lines @example . /usr/local/GNUstep/Library/Makefiles/GNUstep.sh gdomap -a /etc/gdomap_addresses @end example @end table If you don't set gdomap up correctly, Distributed Objects will not work. @c ----------------------------------------- @node Windows with CYGWIN, Windows with MinGW, Unixware-2.1.3/Intel, Machine Specific @section Windows with CYGWIN (@emph{Unsupported}) @table @var @item Recommended compiler gcc 3.3.1 or later (with libobjc and libjava (if using libffi)) @item Extra libs needed Objective-C library DLL (@url{ftp://ftp.gnustep.org/pub/gnustep/windows/cygwin}) for shared libs. It's a good idea to remove the libobjc.a that comes with gcc (gcc -v for location) so that it isn't accidentally found. For ffcall, you should get version 1.8b or above (the earlier ones don't compile). There are still some problems with structure passing, but that is generally not supported on any architecture. libffi also works. @item 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 @url{README.Cygwin} for information on compiling. @end table @c ----------------------------------------- @node Windows with MinGW, Yellowdog/PowerPC, Windows with CYGWIN, Machine Specific @section Windows with MinGW (@emph{Supported}) @table @var @item Recommended compiler See below. @item Extra libs needed See below. @item Special Instructions See the @url{README.MinGW} file located in the gnustep-make Documentation directory for instructions. Windows NT/2000/XP only. Win98 machines and earlier are very buggy and are not supported. Native GUI backend is alpha version. @end table @c ----------------------------------------- @node Yellowdog/PowerPC, , Windows with MinGW, Machine Specific @section Yellowdog/PowerPC (@emph{Unsupported}) @ifclear HOWTO @include end.texi @end ifclear gnustep-make-2.7.0/Documentation/openapp.10000664000175000017500000000564210734551456020312 0ustar richardrichard.\" Process this file with .\" groff -man -Tascii openpp.1 .\" .TH openapp 1 "12/12/2007" gnustep-make "GNUstep System Manual" .SH NAME openapp \- launch applications from the command line .SH SYNOPSIS .B openapp .RB [ \-\-find ] .RB [ \-\-debug " [" \-\-gdb= .IR debuger "]] [" .BI \-\-library-combo= library-combo ] .I application .RI [ arguments... ] .SH DESCRIPTION The .B openapp command allows you to launch graphical GNUstep applications from the command line. .PP .I application is the complete or relative name of the application program with or without the .app extension, like .B Ink.app. .PP .I arguments are the arguments passed to the application. .PP .B openapp first checks whether the application is in the current working directory. If not then searches the GNUstep domains' Applications folders in the following order: User .RI "(i.e. " ~/GNUstep/Applications ), Local, Network, System. First match wins. .SH OPTIONS .TP .BI \-\-find " application" will print out the full path of the application executable which would be executed, without actually executing it. It will also list all paths that are attempted. .TP .BI \-\-debug " application" starts the application in the debugger. By default .BR gdb , but this can be changed with the .B \-\-gdb= argument or through the .B GDB shell variable. .TP .BI \-\-library-combo= library-combo Starts the application with the specified library combo. This is a rarely used option in a non-flattened setup. See the .BR library-combo (7) man-page for more information about the different library combinations. .TP .B \-\-help print above usage description. .SH EXAMPLES Start .B Ink.app without additional parameters: .PP .B openapp Ink.app .PP Launch .B Ink.app and pass it the .B \-\-debug argument: .PP .B openapp \-\-debug Ink.app .PP To determine which executable is launched by openapp, type: .PP .B openapp \-\-find Ink.app .PP The output of the above command might be something like: .I /usr/GNUstep/Local/Applications/Ink.app/Ink .SH ENVIRONMENT .TP .B GNUSTEP_CONFIG_FILE is used to determine where the .B GNUstep.sh configuration file is located. If the variable is not set .B openapp tries to locate it in the folder where .B openapp was started, then in the user domain, and as a last resort in the system domain (or actually the place you configured .RI ( \-\-with-config-file= ) during building). .TP .B GDB Sets the debugger to use when .B \-\-debug is used. .SH SEE ALSO debugapp(1), GNUstep(7), gopen(1), library-combo(7), opentool(1) .SH HISTORY Work on .B openapp started October 1997. .PP .B openapp was originally written by Ovidiu Predescu and is now maintained by Nicola Pero .SH AUTHORS This manual page was first written July 2003 by Martin Brecher . .PP Updated with notes from Hubert Chathi and Dennis Leeuw , December 2007 by Dennis Leeuw. gnustep-make-2.7.0/Documentation/install.texi0000664000175000017500000003265211540105560021113 0ustar richardrichard @node Top, Introduction, (dir), (dir) @chapter GNUstep makefile package installation @menu * Introduction:: * Configuration:: * Installation:: * Setup:: @end menu @node Introduction, Configuration, Top, Top @section Introduction If you are installing this package as part of the GNUstep core libraries, read the file GNUstep-HOWTO for more complete instructions on how to install the entire GNUstep package (including this package). GNUstep-HOWTO comes with this distribution. This should be the first GNUstep package you install. Before installing this package, install ffcall or libffi and any other libraries that GNUstep may need (see the GNUstep-HOWTO). Read and follow the instructions on setting up the GNUstep environement below. Then install gnustep-base. Make sure you've read the machine-specific instructions for your particular operating system and CPU. These instructions come with the GNUstep-HOWTO and are also located at the GNUstep web site at @url{http://www.gnustep.org}. Quick installation instructions: @example ./configure make make install @end example This will use the default 'FHS' filesystem layout rooted in /usr/local (in other words, all of GNUstep will end up installed into /usr/local in a Unix fashion). Another popular option is @example ./configure --with-layout=gnustep make make install @end example which will use the GNUstep filesystem (in other words, all of GNUstep will end up installed into /usr/GNUstep using a GNUstep-tailored filesystem layout). To make and install the documentation: @example cd Documentation make make install @end example @node Configuration, Installation, Introduction, Top @section Configuration The GNUstep packages uses the Autoconf mechanism for configuration; it checks some host capabilties which are used by all GNUstep software. To configure just type: @example ./configure @end example The GNUstep makefile package needs to know which filesystem layout to use when installing; this determines the way that various directories in the GNUstep domains (SYSTEM, NETWORK, LOCAL, USER) are mapped to local directories on disk. In the FilesystemLayouts/README file you can find detailed information on filesystem layouts. To specify a filesystem layout, use the --with-layout=xxx option. The default is @example ./configure --with-layout=fhs @end example which installs GNUstep in /usr/local using the FHS layout (that is, /usr/local/bin, /usr/local/lib, etc). Another popular option is '--with-layout=gnustep' which installs gnustep-make into a GNUstep layout based on /usr/GNUstep (inside /usr/GNUstep/System, /usr/GNUstep/Local). Check the FilesystemLayouts for more options. If you want to install the same layout but in a different location (for example, /opt/gnustep), you can use --prefix=xxx, @example ./configure --prefix=/opt/gnustep @end example If you're confused and want to see exactly what directories will be used for a certain choice of ./configure flags, you can check the output of ./configure or even have a look at the GNUstep.conf file that is generated by ./configure. It will list the full paths to all the relevant GNUstep directories that would be used if you install the software with that configuration. To see more options you can use with configure, type @example ./configure --help @end example Look particularly at the end of the list that configure gives, as these options are specific to GNUstep. Some of these are described below. With the GNUstep packages you can use various switches, such as shared and debug, to control compilation. for example, ``make shared=no debug=yes'' compiles using static libraries with debugging information. (Make sure you use the same switches for every package you compile, and also when you install). @menu * Backend Bundles:: * Alternate Libraries:: * Alternate Thread Library:: * Flat Structure:: * Cross-Compiling:: @end menu @node Backend Bundles, Alternate Libraries, Configuration, Configuration @subsection Backend Bundles By default, the gnustep-make package specifies that GUI backends are built as a bundle and loaded in at runtime. This allows one to switch backends by simply redefining a user default. If you do not want this behavior (for instance, if bundles do not work on your platform), it can be disabled using @example --disable-backend-bundle @end example in the arguments to configure. @node Alternate Libraries, Alternate Thread Library, Backend Bundles, Configuration @subsection Alternate Library Setup You can specify compilation of alternate libraries by using the with-library-combo option. @example ./configure --with-library-combo=apple-gnu-gnu @end example to compile with Apple's runtime on Darwin, for example. See the DESIGN document for more examples of the variety of library combos. @node Alternate Thread Library, Flat Structure, Alternate Libraries, Configuration @subsection Alternate Thread Library You can specify compilation of an alternate thread library from the one that is normally used (or if GNUstep does not know what your normal library is) with the with-thread-lib option. @example ./configure --with-thread-lib="-L/usr/local/lib -lgthread -lglib" @end example to use libgthread as your threading library. Note that the Objective-C runtime (libobjc) must have a compatible threading backend in order to use this threading library and you must set the appropriate threading backend by hand in the GNUmakefile if you are using gnustep-objc. If you also need to set compiler flags, use the CPPFLAGS variable when calling configure: @example CPPFLAGS="-I/usr/local/include" ./configure --with-thread-lib="-L/usr/local/lib -lgthread -lglib" @end example @node Flat Structure, Cross-Compiling, Alternate Thread Library, Configuration @subsection Configuring for a non-flattened structure GNUstep is normally configured to support a single target/combo. If you are interested in supporting more than one target and/or combo, it's possible to configure GNUstep to use a non-'flattened' directory structure. You do this by supplying the @code{--disable-flattened} argument to configure. You might also want to supply the @code{--enable-multi-platform} option. In a flattened structure, files are stored at the top-level rather than in a @code{$(GNUSTEP_CPU)/$(GNUSTEP_OS)/$(LIBRARY_COMBO)} subdirectory. @node Cross-Compiling, , Flat Structure, Configuration @subsection Configuring for a cross-compile target By default when you run configure, it assumes that you want to create executables for the same host that you are compiling on; however, the GNUstep makefile package has been designed to support cross-compiling just as easily as normal compiling. In order to add a cross-compile target to the GNUstep makefile package, you must rerun configure for that target and reinstall the makefile package. By rerunning configure, the appropriate target settings are determined, and reinstalling the makefile package installs the appropriate files for that target. The target parameter is used to specify the target platform for cross-compiling: @example ./configure --target=i386-mingw32 make install @end example GNUstep normally is configured to work with only one target. To work with multiple targets, you'll need to add @code{--disable-flattened} and @code{--enable-multi-platform} to the configure flags. Files for the different targets will not be overwritten when you configure and install the make package several times. @example ./configure --disable-flattened --enable-multi-platform --target=i386-mingw32 make install ./configure --disable-flattened --enable-multi-platform --target=sparc-solaris2.5 make install ./configure --disable-flattened --enable-multi-platform --target=alpha-linux-gnu make install @end example @node Installation, Setup, Configuration, Top @section Installation After you configure the GNUstep makefile package, you can go straight into installation (there is nothing to compile): @example make install @end example After you have installed the GNUstep makefile package, there might still be some minor administration to be performed, depending on your configuration. @node Setup, UserDomainSetup, Installation, Top @section Setting up the GNUstep environment GNUstep-make will install all programs and libraries in the directories specified by the filesystem layout that you choose. In here we explain how to set up your environment so that the operating system can find the programs and libraries in these directories. The procedure depends on the type of layout (flattened or non-flattened), and on the amount of advanced options that you want to use. @menu * Flattened:: * Non-Flattened:: * UserDomainSetup:: * MultipleInstallations:: @end menu @node Flattened, Non-Flattened, Setup, Setup @subsection Flattened (default) Setup In a flattened setup (the default unless you use the --disable-flattened configure argument), you can use a simple setup where you just need to make sure that the few program and library directories are found by the shell/linker. Check the description of your filesystem in FilesystemLayouts to find precise simplified instructions for your layout. In general, you need to your GNUSTEP_SYSTEM_TOOLS, GNUSTEP_NETWORK_TOOLS and GNUSTEP_LOCAL_TOOLS to your PATH, and add your GNUSTEP_SYSTEM_LIBRARIES, GNUSTEP_NETWORK_LIBRARIES and GNUSTEP_LOCAL_LIBRARIES to your linker paths (which is /etc/ld.so.conf on GNU/Linux). To build software, you also need to set GNUSTEP_MAKEFILES. (PS: This requirement is likely to go away soon) @node Non-Flattened, , Flattened, Setup @subsection Non-Flattend (fat binary) Setup (Advanced configuration) If the setup is non-flattened (ie, fat binary support is enabled) programs and libraries will be installed in appropriate subdirectories so that binaries for different machines/library-combos can coexist. This is the case only if you configure gnustep-make with the option --disable-flattened. It is recommended that this option is used with the GNUstep filesystem layout; and that the GNUstep environment is set up by sourcing the GNUstep.sh file. @example . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh @end example (change the path to be the path to your GNUstep.sh file on disk. Common cases include /usr/GNUstep/System/Library/Libraries/Makefiles and /usr/local/share/GNUstep/Makefiles) You can run this command in your shell every time, or you may want to add the command to your shell startup scripts - either the ones for your own user (for example, @file{.bash_profile} for Bash) or the ones for the whole system (for example, @file{/etc/profile} on GNU/Linux). Please note that you need to execute this command both to build software using gnustep-make and to run software installed by gnustep-make. @node UserDomainSetup, MultipleInstallations, Setup, Setup @section Setting up your GNUstep User domain (Advanced configuration) The USER domain is generally expected to be in your home directory; you can use the USER domain to install programs or libraries in your home directory without affecting other users. If you want to access programs or libraries installed in your USER domain, then you really need to source GNUstep.sh in all cases (both flattened and non-flattened), as explained in the Non-Flattened section. If you want to change the filesystem layout of your USER domain (without reinstalling gnustep-make or affecting other people's USER domains), you can do so at runtime by creating a file called ~/.GNUstep.conf (this might have a different name if your filesystem layout specifies otherwise). In that file, you can set all the GNUSTEP_USER_* variables set in GNUstep.conf. Check your GNUstep.conf for a full description. Here is an example in which all the GNUstep domain is moved into ~/Test/GNUstep instead of ~/GNUstep: @example GNUSTEP_USER_DIR=Test/GNUstep @end example @node MultipleInstallations, , UserDomainSetup, Setup @section Having multiple gnustep-makes installed at the same time (Advanced configuration) You can install gnustep-make multiple times in different directories by using a different config file for each. But if you do, then you must make sure that you can easily switch the operating system paths from one installation to the other. An easy way to do this is to configure your GNUstep by using GNUstep.sh as explained in the non-flattened instructions. Your default gnustep-make installation is the one described in the default GNUstep.conf file for the system; on GNU/Linux this is @file{/etc/GNUstep/GNUstep.conf}. You can create a second one that uses a different config file; for example: @example ./configure --prefix=/opt/mytest --with-config-file=/etc/GNUstep-mytest.conf --with-layout=gnustep @end example When you install, this second instance of gnustep-make will reside in @file{/opt/mytest}, and have @file{/etc/GNUstep-mytest.conf} as config file. To use this second installation instead of the first one, you only need to set the GNUSTEP_CONFIG_FILE variable to point to the next config file and source GNUstep.sh: @example export GNUSTEP_CONFIG_FILE=/etc/GNUstep-mytest.conf . /opt/mytest/System/Library/Makefies/GNUstep.sh @end example To stop using a GNUstep installation, reset your GNUstep environment with the GNUstep-reset.sh script and destroy the variable GNUSTEP_CONFIG_FILE -- @example . /opt/mytest/System/Library/Makefies/GNUstep-reset.sh unset GNUSTEP_CONFIG_FILE @end example After this, you are ready to start using a new one (by setting a new GNUSTEP_CONFIG_FILE and then sourcing the GNUstep.sh of the new one). @bye gnustep-make-2.7.0/Documentation/GNUstep.70000664000175000017500000001476212752263157020206 0ustar richardrichard.\" Process this file with .\" groff -man -Tascii GNUstep.7 .\" .TH GNUstep 7 "15/12/2007" gnustep-core "GNUstep System Manual" .SH NAME GNUstep \- A free implementation of the OpenStep standard .SH DESCRIPTION .B GNUstep provides an Object-Oriented application development framework and toolset for use on a wide variety of computer platforms. .B GNUstep is based on the original OpenStep specification provided by NeXT, Inc. (now Apple and called Cocoa). .P .B GNUstep is written in Objective-C, an object-oriented superset of the C programming language, similar to SmallTalk. However there exist a number of bridges and interfaces to develop .B GNUstep programs using other languages like JAVA or Ruby. The .B GNUstep core system consists of the following parts, which are jointly referred to as .I gnustep-core : .TP .I gnustep-make A set of scripts and makefiles that heavily ease the creation and maintenance of software projects. .TP .I gnustep-base The FoundationKit libraries for non-GUI tools providing everything from string and array classes, filemanager classes to distributed objects. .TP .I gnustep-gui The ApplicationKit containing widgets, workspace classes and means for applications to interact with the user. This is the frontend of \fBGNUstep\fR's GUI part. .TP .I gnustep-back This is the backend of .BR GNUstep 's GUI part which does the actual rendering and event handling. It acts as a layer between gnustep-gui and the operating/drawing system. Backends exist for X11 (one using cairo, one using libart, one using xlib drawing) and win32. .PP Apart from the above, there exist a number of addon libraries related to GNUstep, like .B Renaissance which allows developers to specify an application's user interface in xml. For database access, there is .B GDL2 \- the GNUstep Database Library. Please refer to the .B GNUstep website for more information. .PP .B GNUstep per default is self-contained. That means that all .B GNUstep applications, tools, libraries and add-ons are installed into the .B GNUstep directory hierarchy. However as of .I gnustep-make-2.0.0 it is also possible to install everything in compliance with other filesystem hierarchies. See the .I FilesystemLayouts directory in the source package of .I gnustep-make for more information. .PP There are four domains which are searched for files: the System domain, which should only contain the core system files, the Local domain which stores all that has later been installed on the system, the Network domain which should be used for importing data from a remote system, and the User domain which resides in the user's home directory (mostly .IR ~/GNUstep ). .PP A complete description of the default .B GNUstep layout can be found in the .IR filesystem.pdf . .SS TOOLS AND APPLICATIONS In the world of GNUstep the term .I tool refers to command line programs whereas .I applications are fully fledged GUI programs. Naturally, .I tools reside in the domains' Tools folder, .I applications can be found in the domains' Applications folder. Applications are either launched using the .B openapp command or from the Workspace. .SS SERVICES .RB "In " GNUstep applications globally offer functionality to other applications through .IR services . They can be reached through the Services menu entry in an application's main menu. Apart from .I services offered by applications, there may be programs whose sole purpose is the offering of services. They can be found in the domains' Libary/Services folders. .PP The .B make_services tool makes sure the services are known to other applications when a application is newly installed. .SS BUNDLES A bundle is a collection of resources making up a discrete package for use. There are currently three types of bundles: applications, frameworks and loadable bundles. .P A loadable bundle is a kind of plug-in. There are two types of loadable bundles, namely plug-ins and palettes. The plug-in is noramlly referred to as a bundle, which can make it a bit confusing. A plug-in is a bundle that can be loaded by an application to provide additional functionality, while a palette is a plug-in for .BR GORM , the interface builder. A palette is used to extend .B GORM with custom UI objects. Palettes have a .I .palette extension. .SS THE WORKSPACE .P The central place of the user interface is the .I Workspace or .I Workspace Manager which acts as an interface between the user and parts of the system like files, processes, etc. The GWorkspace application provides this functionality in GNUstep. See the GWorkspace website for more details. .SS DEVELOPER APPLICATIONS .P What would a development environment be without the applications to create applications? The applications provided by GNUstep for Rapid Application Development are: .TP GORM .B GORM is the interface modeler. With .B GORM you can quickly create the graphical interface of your application. .TP Project Center .B Project Center is the program where you can develop your program. It offers you automatic generation of .I GNUmakefiles , project maintenance and of course a code editor. .SH SEE ALSO gcc(1), gdnc(1), gdomap(8), gopen(1), gpbs(1), make(1), openapp(1) .PP .B GNUstep Websites: .TP http://www.gnustep.org/ Official GNUstep website .TP http://wiki.gnustep.org/ GNUstep Wiki (lots of useful information) .TP http://savannah.gnu.org/projects/gnustep/ GNUstep Project Page .TP http://gnustep.made-it.com/ GNUstep Documentation Library .TP http://www.collaboration-world.com Collaboration World, the home of GNUmail .TP http://www.gnustep.it/ The home of GWorkspace, JIGS, Renaissance and programming tutorials. .P .B Mailinglists .TP http://www.gnustep.org/information/gethelp.html Mailing lists and mailing list archives. .P .B IRC .TP #GNUstep on FreeNode You are invited to join the #GNUstep IRC channel on FreeNode (irc.freenode.net). .SH HISTORY .B GNUstep was at first a collaboration of two projects that wanted to create a single .B GNUstep project that complied to the OpenStep specification provided by NeXT Computer, Inc. and SunSoft, Inc. Development of this joint effort started around 1993-1994. For a more detailed history description see the GNUstep Documentation Library referenced in the .B SEE ALSO section. .PP GNUstep is developed and maintained by a large number of people. Please see for a list. .SH AUTHORS This man-page was first written by Martin Brecher in august of 2003. .PP In December 2007 it was expanded by Dennis Leeuw and made to comply with the gnustep-make-2.0.x releases. gnustep-make-2.7.0/Documentation/.cvsignore0000664000175000017500000000023110377003773020550 0ustar richardrichardGNUmakefile version.texi *.log *.dvi *.ps *.html *.info *.aux *.toc *.cp *.fn *.vr *.tp *.ky *.pg *.vrs *.gz INSTALL README NEWS GNUstep-HOWTO internals gnustep-make-2.7.0/Documentation/gnustep.init0000664000175000017500000000155711255107237021132 0ustar richardrichardif (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_BAD) = ($tmpl=~/<\/title>(.*)<\/head>.*(.*
).*(<\/div><\/div>.*)<\/body>/sm); } else { # this is added inside after and some META NAME stuff # can be used for <style> <script>, <meta> tags $T2H_EXTRA_HEAD = '<link rel="stylesheet" href="../gnustep-main.css" type="text/css" />'; } ###################################################################### sub nothing { } $T2H_print_About = \¬hing; $T2H_SECTION_NAVIGATION = 0; #$T2H_print_navigation = \¬hing; # Perl initialization file must end with the following instruction # that returns true, confirming the initialization completed # successfully. 1; �������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/README.Darwin������������������������������������������������������0000664�0001750�0001750�00000041012�10736052336�020653� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Date : 15-Jan-2004 Last update: 20071229 Authors: Adam Fedor <fedor@gnu.org> Quentin Mathé <qmathe@club-internet.fr> Lars S.-Helldorf <lars.sonchocky-helldorf@hamburg.de> PURPOSE ------- This document is intended to provide a step by step instruction on how to get the GNUstep installed on Mac OS X and Darwin. 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 ./configure CC=<gcc install dir>/bin/gcc will become: ./configure CC=/opt/local/bin/gcc [] denotes an optional parameter. For instance: ./configure [--enable-graphics=art] can be either: ./configure or: ./configure --enable-graphics=art PRELIMINAIRES ------------- For all targets, get the following software. I'd recommend installing Fink (and FinkCommander on Mac OS X) or MacPorts to get all this software. Make sure that Fink or MacPorts is in your path; newer versions do a good job of doing this for you. It's quite possible for libraries installed via Fink/Macports to conflict with Apple libraries, which cause strange errors running GNUstep apps (like odd crashes and seg faults). In that cause you might want to hand-compile the libraries you need (only the tiff and libffi libraries are REALLY needed, everything else is basically optional). 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). libxml2 (Optional, highly recommended, already in Mac OS X 10.3 / Darwin 7 and later) libxslt (Optional) libtiff (Required) libjpeg (Optional, highly recommended - don't get from fink!) libpng (Optional, highly recommended) libffi (Required, from ftp.gnustep.org/pub/gnustep/libs) ffcall (On Darwin x86 - use instead of libffi) Xfree86 (Required, already in Mac OS X 10.3/Darwin 7 and later) libart2 (Required for art backend) freetype2 (Required for art backend) 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. You need these gnustep packages: 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 notation is: 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 # 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 potentially gives two different targets: Apple GCC, gnu-gnu-gnu FSF GCC, gnu-gnu-gnu 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 GNUstep on Darwin x86 --------------------- 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. NOTE: Has not been tested in a long time... GNUstep on Darwin PowerPC ------------------------- You can use either the Apple compiler of the FSF compiler. For the Apple compiler, you need at least Mac OS X 10.4 with XCode 2.5 release. Building FSF-GCC ---------------- The easiest way to get FSF GCC is through Fink or MacPorts. If you would like to compile by hand, follow these directions: 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 but not necessary # on OpenDarwin 7.2.1 and then configure GCC with: mkdir build # Create a sibling to the # toplevel source dir cd build <dir>/gcc-X.X.X/configure \ # Don't try to build c++ --enable-languages=c,objc make bootstrap make install cd /usr/local/lib ln -s libobjc.a libobjc.dylib # So the linker sees us (Replace X.X.X with the actual distribution you have). GCC on Darwin doesn't appear to support threads. Darwin PowerPC: Configure and build as follows (tested using gcc-3.3.2 on Mac OS X 10.2 and 10.3): mkdir build cd build <dir>/gcc-x.x.x/configure \ # The first option [--prefix=<gcc install dir>] \ # permits to change the [--enable-languages=c,objc] # fact GCC installs by # default in /usr/local # The second option # permits to speed the # GCC compilation in the # case you will not use # languages other than c # and objc make bootstrap make install cd <gcc install dir>/lib ln -s libobjc.a libobjc.dylib # So the linker sees us # Note when using gcc 4 or greater, make sure this is libobjc-gnu.dylib Setting up the GNUstep make environment --------------------------------------- In the GNUstep-make (core/make) package, do with bourne shell like bash (Mac OS X 10.3): echo 'export CC=<gcc install dir>/bin/gcc' >> ~/.profile with c shell like tcsh (Mac OS X 10.2): echo 'setenv CC <gcc install dir>/bin/gcc' >> ~/.tcshrc else use [CC=<gcc install dir>/bin/gcc] option when running configure. then: ./configure --with-library-combo=gnu-gnu-gnu \ [--prefix=<GNUstep install dir>] [CC=<gcc install dir>/bin/gcc] (apple-apple-apple is the default if you don't specify gnu-gnu-gnu). If you want to be able to compile for different targets/platforms together. Do this: ./configure --with-library-combo=gnu-gnu-gnu --disable-flattened \ --enable-multi-platform [--prefix=<GNUstep install dir>] \ [CC=<gcc install dir>/bin/gcc] Now: make make install Source GNUstep.sh ----------------- If you are using bourne shell like bash, type: . <GNUstep install dir>/System/Library/Makefiles/GNUstep.sh If you are using c shell like tcsh, type: source <GNUstep install dir>/System/Library/Makefiles/GNUstep.csh 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 cd $GNUSTEP_SYSTEM_ROOT/Library/Libraries ln -s libobjc.dylib libobjc-gnu.dylib This should build and install the GNU Objective-C runtime and headers for you. Building and installing libffi (on Darwin PowerPC only !!!) ------------------------------ There's no official libffi release. Get the one from the GNUstep ftp site ./configure --prefix=$GNUSTEP_SYSTEM_ROOT \ --libdir=$GNUSTEP_SYSTEM_ROOT/Library/Libraries \ --includedir=$GNUSTEP_SYSTEM_ROOT/Library/Headers make make install Building and installing ffcall (on Darwin x86 only (may work on PPC)) ------------------------------ ./configure --prefix=$GNUSTEP_SYSTEM_ROOT \ --libdir=$GNUSTEP_SYSTEM_ROOT/Library/Libraries \ --includedir=$GNUSTEP_SYSTEM_ROOT/Library/Headers make make install Building and installing GNUstep-base ------------------------------------ ./configure [--with-xml-prefix=/usr] [--disable-xmltest] [--disable-do] \ [LDFLAGS=-L/sw/lib] [CPPFLAGS=-I/sw/include] [CC=<gcc install dir>/bin/gcc] \ [CPPFLAGS=-fnested-functions] To know which options you need to use with your environment: --disable-xmltest is needed with 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. You probably do not want to do this. 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. CPPFLAGS=-fnested-functions is required when using Apple gcc followed by: make make install On the apple-apple-apple target, it will only build the GNUstep additions library that adds extra stuff to Foundation. If you are using the apple-apple-apple target, there currently is no reason to go on and compile GNUstep-gui. Building and installing GNUstep-gui ----------------------------------- Go to GNUstep-gui (or from CVS into the core/gui directory). ./configure --disable-gsnd followed by: make make install Note: The gsnd server hasn't been ported to Mac OS X / Darwin yet. Some other configure options: --with-jpeg-library=<jpeg libdir> --with-jpeg-include=<jpeg include dir> to have the libjpeg detected. --disable-jpeg 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 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 XDarwin (ftp://ftp.xfree86.org/pub/XFree86/4.3.0/binaries/Darwin-ppc-6.x/) for the X server, take a look at http://www.xdarwin.org In the back directory, type: ./configure 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 NOTE: I found also that even though the X11SDK.pkg package has freetype2, it is missing a crucial include file and also has some undefined symbols. I had to install the freetype2-dev package from fink and add this to my path so that it could be found: PATH=/sw/lib/freetype/bin:$PATH make sure in config.make that -L/sw/lib/freetype2/lib is included before -L/usr/X11R6/lib (Adam Fedor <fedor@gnu.org>) Mac OS X 10.4 doesn't have this problem. 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 GNUstep-gui, in the shell, don't forget to edit the defaults (no need it to redo it later): defaults write NSGlobalDomain XWindowBufferUseXShm NO 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 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 Other fonts are available on http://www.knuddel.org/Downloads/Fonts/ Window Maker ------------ Window Maker is the traditional window manager for GNUstep. 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 GNUstep daemons --------------- 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, 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 then with bourne shell like bash (Mac OS X 10.3): . $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 and just do: opentool gdnc opentool gpbs GNUstep applications -------------------- Now you can install GNUstep applications like Gorm, ProjectCenter etc. Remember the fact that when you do 'sudo make install', the $DYLD_LIBRARY_PATH variable of your user is not used by root. In that case, GNUstep-make could complain for the undefined library path, the solution is identical to the one we used to launch the GNUstep daemons above: su root then with bourne shell like bash (Mac OS X 10.3): . $GNUSTEP_SYSTEM_ROOT/Library/MakeFiles/GNUstep.sh or with c shell like tcsh (Mac OS X 10.2): . $GNUSTEP_SYSTEM_ROOT/Library/MakeFiles/GNUstep.sh and just do: make install Note: upon launching applications like Project Center which links a framework, you will probably get an error message about the library <Framework name>.framework/<Framework name> which cannot be found, to fix that, just create a symbolic link to the actual library file, which is installed deeper in the hierarchy: cd $GNUSTEP_SYSTEM_ROOT/Library/Frameworks/<Framework name>.framework sudo ln -s Versions/<Current version>/lib<Framework name>.dylib <Framework name> Example with the ProjectCenter framework (0.4.0 version): cd $GNUSTEP_SYSTEM_ROOT/Library/Frameworks/ProjectCenter.framework sudo ln -s Versions/0.4.0/libProjectCenter.dylib.0.4.0 ProjectCenter --- That's all. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/debugapp.1���������������������������������������������������������0000664�0001750�0001750�00000002051�12365671636�020433� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Process this file with .\" groff -man -Tascii debugapp.1 .\" .TH debugapp 1 "16/12/2007" GNUstep "GNUstep System Manual" .SH NAME debugapp \- A wrapper for openapp. .SH SYNOPSIS .BR debugapp " [" \-\-find ] .RB [ \-\-gdb=... ] .IR application " [" arguments... ] .P .SH DESCRIPTION .B debugapp is a tool that helps you start or find applications by name in debugging mode. It acts as a wrapper around .B openapp , and calls openapp with the .B \-\-debug option; we recommend using openapp directly. .P By default gdb is used as the debugger, but this can be changed with the .B \-\-gdb= option or through the .B GDB environment variable. .P The .I arguments are the arguments passed to the application. .P See the .B openapp (1) man-page for a complete description. .SH SEE ALSO openapp(1) .P .SH HISTORY Work on .B debugapp started in October 1997 by Ovidiu Predescu <ovidiu@net-community.com>. In October 2006 Nicola Pero <nicola.pero@meta-innovation.com> merged it with openapp. .SH AUTHORS This man page was written by Dennis Leeuw <dleeuw@made-it.com>. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/library-combo.7����������������������������������������������������0000664�0001750�0001750�00000021634�12675206316�021414� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Process this file with .\" groff -man -Tascii library-combo.7 .\" .TH library-combo 7 "20/12/2007" gnustep-make "GNUstep System Manual" .SH NAME library-combo \- GNUstep Make support for cross-compilation. .SH DESCRIPTION This manual page is about cross-compilation and fat binaries. Fat binaries are packages that you can supply which contain more the one binary of your program (e.g. your application). So you can support multiple platforms with a single package. .PP To support this your system has to be built in a non-flattened way. Meaning that during the installation of .I gnustep-make you should have selected .B \-\-disable-flattened and the types of library combinations you want to support, through the .B \-\-with-library-combo option. With library combinations we mean the Objective-C runtime, the Foundation library and the Application library. For more details about this see the LIBRARY-COMBO section. .PP If you installed your .B GNUstep system in a non-flattened way all system dependend binaries are installed in subdirectories with .I cpu/os/library-combo information. That means for instance that the .I gnustep-base library will be installed in .I Library/Libraries/ix86/linux/gnu\-gnu\-gnu/ when you are on an Intel x86 system, running linux with the .SM GNU runtime for Objective-C and you installed .BR GNUstep . .PP For each and every library-combo that you want to support you should create the environment through .IR gnustep-make , because it installs a different .I config.make to support its own .BR CC ", " OPTFLAGS , etc. flags. .SS LIBRARY-COMBO An important issue is to let to a package the ability to deal with various libraries and configurations available now: .TP .B Objective-C runtimes In the Objective-C world there are three major runtimes: the GNUstep runtime, the Apple runtime and the .SM GNU runtime. They are different in several respects and a program or library that works at the runtime level should be aware of them. .TP .B Foundation libraries There are different Foundation libraries an application or tool can be written on top of: gnustep-base, libFoundation and Apple Cocoa system. .TP .B Graphical interfaces Until now three libraries provide or try to provide OpenStep compliant systems: the AppKit from NeXT, gnustep-gui and Cocoa from Apple. .PP If a program wants to work with all the possible combinations it will have to provide different binaries for each combination because it's not possible to have a tool compiled for NeXT Foundation that runs with gnustep-base or vice-versa. To summarize, a program can be compiled for these combinations: .TP .B Objective-C runtime ng (for GNUstep Next Generation), gnu (for .SM GNU , or for GNUstep without latest language features), apple (for Apple), nx (for NeXT) .TP .B Foundation library gnu (for gnustep-base), fd (for libFoundation), apple (for Apple Cocoa), nx (for NeXT Foundation) .TP .B GUI library gnu (for gnustep-gui), apple (for Apple Cocoa), nx (for NeXT GUI) .PP We'll denote the fact that an application was compiled for a certain combination of the above values by using the abbreviations of the different subsystems and placing dashes between them. For example an application compiled for NeXT Foundation using NeXT AppKit will have the compile attribute nx\-nx\-nx. An application compiled for Apple Cocoa with the .SM GNU compiler for Objective-C gnu\-apple\-apple and another one compiled for .I gnustep-base using .I gnustep-gui under Unix will be denoted by gnu\-gnu\-gnu. Here is a list of some of the possible combinations: .PP .RS 0 Runtime Foundation GUI .RS 0 nx nx nx .RS 0 nx fd gnu .RS 0 gnu gnu gnu .RS 0 ng gnu gnu .RS 0 gnu fd gnu .RS 0 apple apple apple .RS 0 apple gnu gnu .RE 0 .PP Note that one can choose his/her own packages to build; it is not required to have all the packages installed on the system. Not having all of them installed limits only the ability to build and distribute binaries for those missing combinations. .SS DIRECTORY STRUCTURE For cross-compilation in a non-flattened directory structure is recommended, so that you can store on the same directory structure binaries for different machines. The standard .B GNUstep filesystem layout is normally used when a non-flattened directory structure is being used; this is obtained with the .BI \-\-with-layout= gnustep option when configuring .IR gnustep-make . The entire .B GNUstep installation is then created inside .I /usr/GNUstep (or another directory if you use the .B \-\-prefix=... option when configuring .IR gnustep-make ). Directories that contain binaries (such as the .I Libraries directory) inside .I /usr/GNUstep are then set up to support fat binaries as follows: .PP .RS 0 Libraries/ .RS 0 ix86/ .RS 0 linux\-gnu/ .RS 0 gnu\-gnu\-gnu/ .RS 0 libgnustep\-base.so .RS 0 libgnustep\-gui.so .RS 0 gnu\-fd\-gnu/ .RS 0 libFoundation.so .RS 0 libgnustep\-gui.so .PP To allow the right libraries to be found, you need to source .I GNUstep.sh before using .BR GNUstep , and you need to start up your application by using .BR openapp , which will locate the right binary for your library combo. .SS BUILDING FOR A LIBRARY-COMBO The makefile package will allow the user to choose between different library combinations. To specify a combination you want to compile for just type: .PP .RS 0 $ make library_combo=library-combo .PP For instance if you want to choose to compile using the GNUstep's Foundation implementation and use the GNUstep GUI library on a GNU/Linux machine you can do like this: .PP .RS 0 $ make library_combo=gnu\-gnu\-gnu .PP If your project requires running configure before compiling there are two issues you have to keep in mind. 'configure' is used to determine the existence of particular header files and/or of some specific functionality in the system header files. This thing is usually done by creating a config.h file which contains a couple of defines like HAVE_... which say if the checked functionality is present or not. .PP Another usage of configure is to determine some specific libraries to link against to and/or some specific tools. A typical .B GNUstep program is not required to check for additional libraries because this step is done by the time the makefile package is installed. If the project still needs to check for additional libraries and/or tools, the recommended way is to output a .I config.mak file which is included by the main .IR GNUmakefile , instead of using .I Makefile.in files which are modified by .IR configure . The reason for not doing this is to avoid having the makefiles contain target dependencies like above, this way keeping only one makefile instead of several for each target machine. .PP The makefile package is written for .SM GNU make because it provides some very powerful features that save time both in writing the package but also at runtime, when you compile a project. .SS BUILDING FOR AN ARCHITECTURE In order to build a project for multiple architectures you'll need the development environment for the target machine installed on your machine. This includes a cross-compiler together with all the additional tools like the assembler and linker, the target header files and all the libraries you need. .PP The .B GNUstep makefile package should be able to compile and link an application for another machine just by typing .PP .RS 0 $ make target=target-triplet .PP where target-triplet is the canonical system name as reported by .IR config.guess . .SS USING A LIBRARY-COMBO When you use library-combos, you must always source .IR GNUstep.sh . That allows you to switch library paths on the fly. If you want to switch to a different library-combo in your shell, and if you are using .BR bash , it's common to first source .I GNUstep-reset.sh to reset all shell variables, then to source .B GNUstep.sh again. Let's assume we use gnu-gnu-gnu as our current .B LIBRARY_COMBO and we want to switch to ng\-gnu\-gnu, then we would use: .PP .RS 0 . /usr/GNUstep/System/Library/Makefiles/GNUstep-reset.sh .RS 0 export LIBRARY_COMBO=ng\-gnu\-gnu .RS 0 . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh .SH SEE ALSO debugapp(1), GNUstep(7), gnustep-config(1), openapp(1) .SH HISTORY Work on gnustep-make started in 1997 by Scott Christley <scottc@net-community.com>. .PP Version 2.0.0 of gnustep-make introduced many changes with previous releases, which was mainly the work of Nicola Pero <nicola.pero@meta-innovation.com> .SH AUTHORS This man-page was written by Dennis Leeuw <dleeuw@made-it.com> based on the DESIGN document from the gnustep-make source tree. .SH CREDITS The DESIGN document was written by Ovidiu Predescu. .PP This work could only be as is due to the notes and corrects from Nicola Pero <nicola.pero@meta-innovation.com>. .SH COPYRIGHT Copyright (C) 2007 Free Software Foundation, Inc. .PP Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. ����������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/GNUmakefile��������������������������������������������������������0000664�0001750�0001750�00000015227�12715423750�020634� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # This GNUmakefile needs to build the gnustep-make documentation. # # The GNUmakefile itself is written using gnustep-make. If we find an # existing gnustep-make installation, we use it. Otherwise, we # configure, compile and install gnustep-make into a temporary # subdirectory, then we use that copy. # In the very unlikely event that gnustep-make does not even install # on your machine, please get a pre-generated copy of the # documentation from the internet! Or just read the documentation in # source format. :-) # As a special case, if gnustep-make has been configured (GNUstep.conf exists) # in the enclosing directory, and has not yet been installed (GNUSTEP_MAKEFILES # is not defined), we attempt to use the uninstalled version. # # As all makefile fragments in the source tree are positioned relative to # each other in the same way they're installed, this works fine. # # If future changes happen to introduce different behaviour between the # makefile fragments in the source tree and installed ones (which is not # a trivial change), this strategy has to be reviewed. One possible solution # then is to install make into a temporary directory (DESTDIR?) first, then to # use these. # ifeq ($(GNUSTEP_MAKEFILES),) ifeq ($(wildcard ../GNUstep.conf),../GNUstep.conf) GNUSTEP_MAKEFILES=.. endif endif ifeq ($(GNUSTEP_MAKEFILES),) # We have no gnustep-make installation to use. We need gnustep-make # to generate the documentation. # To help lazy cows who want to type 'make' and have all work # automatically without installating gnustep-make first, if we don't # have a gnustep-make installation to use, we create a temporary one # in the subdirectory ./tmp-installation, the run make again passing # GNUSTEP_MAKEFILES set to point to the new makefile installation CURRENT_DIR = $(shell pwd) # To execute all, or clean, we first depend on a local # temporary installation of gnustep-make; when we have it, we source # GNUstep.sh, then we run the make command again. all regenerate: ./tmp-installation/System/Library/Makefiles @echo "** Running 'make $@' using the local/temporary gnustep-make installation **" $(MAKE) $@ GNUSTEP_MAKEFILES="$(CURRENT_DIR)/tmp-installation/System/Library/Makefiles" @echo "** Finished local/temporary documentation in $(CURRENT_DIR)/tmp-installation. **" @echo "** Use an installed gnustep-make if you wish to install documentation. **" clean: ./tmp-installation/System/Library/Makefiles $(MAKE) $@ GNUSTEP_MAKEFILES="$(CURRENT_DIR)/tmp-installation/System/Library/Makefiles" install: @echo "** To install the documentation you first install/set-up gnustep-make **" # This creates a local temporary installation of GNUstep-make ./tmp-installation/System/Library/Makefiles: @echo "** No gnustep-make installation found, attempting to create a local/temporary one. **" (mkdir tmp-build; \ cd tmp-build; \ ../../configure --prefix="$(CURRENT_DIR)/tmp-installation" \ --with-layout=gnustep \ --with-config-file="$(CURRENT_DIR)/tmp-installation/GNUstep.conf"; \ make; \ make install) distclean: -(if [ -f ./tmp-installation/System/Library/Makefiles/common.make ]; then \ $(MAKE) $@ GNUSTEP_MAKEFILES="$(CURRENT_DIR)/tmp-installation/System/Library/Makefiles"; \ fi) rm -Rf tmp-installation tmp-build else # We have a gnustep-make installation to use. The following is a # normal gnustep-make GNUmakefile for documentation. # We normally install into System GNUSTEP_INSTALLATION_DOMAIN = SYSTEM include $(GNUSTEP_MAKEFILES)/common.make # The documents to be generated # We should prefix everything with 'gnustep' because we generate info # files that we then put into the standard info directories, and we # don't want those to conflict with info files from other packages! DOCUMENT_NAME = gnustep-howto gnustep-faq gnustep-filesystem gnustep-internals gnustep-make gnustep-userfaq # The text documents to be generated DOCUMENT_TEXT_NAME = INSTALL README NEWS RELEASENOTES ANNOUNCE TOP_DOC_FILES = INSTALL README NEWS RELEASENOTES ANNOUNCE README_FILES = README.Darwin README.MinGWOnCygwin README.Cygwin \ README.MinGW GNUstep-HOWTO_TEXI_FILES = version.texi GNUstep-HOWTO_TEXT_MAIN = gnustep-howto.texi GNUstep-HOWTO_DOC_INSTALL_DIR = User/GNUstep/ FAQ_TEXI_FILES = version.texi FAQ_TEXT_MAIN = gnustep-faq.texi FAQ_DOC_INSTALL_DIR = User/GNUstep/ gnustep-make_TEXI_FILES = \ gnustep-make.texi gnustep-make_DOC_INSTALL_DIR = Developer/Make/Manual/ gnustep-faq_TEXI_FILES = \ gnustep-faq.texi \ version.texi gnustep-faq_DOC_INSTALL_DIR = User/GNUstep/ gnustep-userfaq_TEXI_FILES = \ gnustep-userfaq.texi \ version.texi gnustep-userfaq_DOC_INSTALL_DIR = User/GNUstep/ gnustep-filesystem_TEXI_FILES = \ gnustep-filesystem.texi gnustep-filesystem_DOC_INSTALL_DIR = User/GNUstep/ gnustep-machines_TEXI_FILES = \ gnustep-machines.texi gnustep-machines_DOC_INSTALL_DIR = User/GNUstep/ gnustep-howto_TEXI_FILES = \ gnustep-howto.texi \ version.texi gnustep-howto_DOC_INSTALL_DIR = User/GNUstep/ gnustep-internals_LATEX_FILES = \ gnustep-internals.tex gnustep-internals_DOC_INSTALL_DIR = Developer/Make/Manual/Internals/ INSTALL_TEXI_FILES = version.texi INSTALL_TEXT_MAIN = install.texi INSTALL_DOC_INSTALL_DIR = Developer/Make/ReleaseNotes/$(GNUSTEP_MAKE_VERSION) NEWS_TEXI_FILES = version.texi NEWS_TEXT_MAIN = news.texi NEWS_DOC_INSTALL_DIR = Developer/Make/ReleaseNotes/$(GNUSTEP_MAKE_VERSION) RELEASENOTES_TEXI_FILES = version.texi RELEASENOTES_TEXT_MAIN = releasenotes.texi RELEASENOTES_DOC_INSTALL_DIR = Developer/Make/ReleaseNotes README_TEXI_FILES = version.texi README_TEXT_MAIN = readme.texi README_DOC_INSTALL_DIR = Developer/Make/ReleaseNotes/$(GNUSTEP_MAKE_VERSION) ANNOUNCE_TEXI_FILES = version.texi ANNOUNCE_TEXT_MAIN = announce.texi ANNOUNCE_DOC_INSTALL_DIR = Developer/Make/ReleaseNotes/$(GNUSTEP_MAKE_VERSION) # The manpages are now installed when gnustep-make itself is installed. include $(GNUSTEP_MAKEFILES)/documentation.make include ../Version # Typing 'make regenerate' should build all, then install the files # top-level. This is mostly for making gnustep-make releases. regenerate: all mv -f $(TOP_DOC_FILES) .. # Generate the version.texi file from the Version of gnustep-make. version.texi: ../Version rm -f version.texi echo '@set GNUSTEP-MAKE-VERSION' $(GNUSTEP_MAKE_VERSION) \ > version.texi after-install:: $(GNUSTEP_DOC)/Developer/Make/Manual $(GNUSTEP_DOC)/User/GNUstep $(INSTALL_DATA) DESIGN $(GNUSTEP_DOC)/Developer/Make/Manual for file in $(README_FILES); do \ $(INSTALL_DATA) $$file $(GNUSTEP_DOC)/User/GNUstep/$$file; \ done # Uninstall manually man pages after-uninstall:: rm -f $(GNUSTEP_DOC)/Developer/Make/Manual/DESIGN after-clean:: rm -rf tmp-build tmp-installation after-distclean:: rm -f version.texi endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/DESIGN�������������������������������������������������������������0000664�0001750�0001750�00000044733�10606741233�017456� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������[Important: this is mostly a historical document.] A makefile package for the GNUstep environment ============================================== This document presents a makefile package for the GNUstep environment. It describes what are the goals the GNUstep environment should achieve and then presents some solutions. Goals ===== There are several issues we tried to solve while designing a directory structure and the configuration/make procedures required to build a package. We tried to define a directory structure for keeping all the GNUstep related files. This structure makes the things more consistent and the configuration and compile process of various GNUstep packages more easier. An important issue is to let to a package the ability to deal with various libraries and configurations available now: * different Objective-C runtimes. In the Objective-C world there are currently two major runtimes: the NeXT runtime and the GNU runtime. They are different in several respects and a program or library that works at the runtime level should be aware of them. * different Foundation libraries. There are several Foundation libraries an OpenStep application can be written on top of: NeXT Foundation library which runs on NeXTStep/OPENSTEP systems, PDO (Portable Distributed Objects) which runs on a variety of Unix systems, gnustep-base and libFoundation. * different graphical interfaces. Until now two libraries provide or try to provide OpenStep compliant systems: the AppKit from NeXT and the GNUstep graphical libraries. The makefile package should be a simplistic, powerful and extensible way to write makefiles for a GNUstep project. It should allow the user to easily specify a library combination he/she wants to use when compiling a project. Also it should allow the user to easily create cross-compiled binaries. Library combinations ==================== If an application wants to work with all the possible combinations it will have to provide different binaries for each combination because it's not possible to have an application compiled for NeXT PDO that runs with gnustep-base or vice-versa. To summarize, an application can be compiled for these combinations: Objective-C runtime: NeXT, GNU Foundation library: NeXT, PDO, gnustep-base, libFoundation GUI library: NeXT, gnustep-gui Objective-C runtime: nx (for NeXT), gnu (for GNU) Foundation library: nx (for NeXT), pdo (for PDO), gnu (for gnustep-base), fd (for libFoundation) GUI library: nx (for NeXT), gnu (for gnustep-gui) We'll denote the fact that an application was compiled for a certain combination of the above values by using the abbreviations of the different subsystems and placing dashes between them. For example an application compiled for NeXT Foundation using NeXT AppKit will have the compile attribute nx-nx-nx. An application compiled for PDO with the gnustep-gui library under Unix will be denoted by nx-pdo-gnu and another one compiled for gnustep-base using gnustep-gui under Unix will be denoted by gnu-gnu-gnu. Here is a list of some of the possible combinations: ObjC runtime Foundation GUI ------------ ---------- --- nx nx nx nx pdo nx nx pdo gnu gnu gnu gnu gnu gnu gnu nx fd gnu gnu fd gnu Note that one can choose his/her own packages to build; it is not required to have all the packages installed on the system. Not having all of them installed limits only the ability to build and distribute binaries for those missing combinations. Directory structure =================== There are several directories used in a GNUstep environment. The directories are relative to a top directory whose name is given by the variable GNUSTEP_SYSTEM_ROOT ($GNUSTEP_SYSTEM_ROOT in a shell or $(GNUSTEP_SYSTEM_ROOT) in a makefile). Below is the hierarchy of GNUstep directories: $(GNUSTEP_SYSTEM_ROOT)/ Headers/ Libraries/ Applications/ Tools/ The Headers/ and Libraries/ directories, as their names suggest, keep the header files and the libraries required by a GNUstep project to compile and link. The libraries can be both shared or static, depending on the target system. The Applications/ directory is used by GNUstep graphical applications, those applications which have a graphical interface with the user. The Tools/ directory holds command line tools based on GNUstep libraries. The header files are grouped like this in the Headers/ directory: Headers/ gnustep/ base/ Foundation -> base gui/ AppKit -> gui libFoundation/ Foundation/ The Libraries/ directory can hold libraries for several machines and several combinations of packages: Libraries/ i386/ linux-gnu/ gnu-gnu-gnu/ libgnustep-base.so libgnustep-gui.so gnu-fd-gnu/ libFoundation.so libgnustep-gui.so sparc/ solaris-2.5.1/ nx-pdo-gnu/ libgnustep-gui.so Please note that the Libraries/ directory contains only the libraries that come with GNUstep, the PDO library for example is not inside Libraries/. The compiler has to know where that library can be found, although the makefile package is responsible for passing all the necessary flags during compiling and linking. The libraries directory also contains resource files which belong to the GNUstep libraries, such as images and printer description files. Since the images can look different for different backends, each backend has its own images in a different directory based upon the interface look and feel: Libraries/ Resources/ Images/ NeXT/ Win32/ PrinterTypes/ Fonts/ gnustep/ NSCharacterSets/ libFoundation/ CharacterSets/ Defaults/ TimeZoneInfo/ The resources that are specific to each Foundation libraries are kept in a subdirectory like above, except for NeXT Foundation and PDO which keep their resources in their own places. The Applications/ directory contains GNUstep graphical applications. Each application is kept in an app wrapper which contains all the binaries and all the resource files the application needs. The binaries organization resembles the one from libraries: Applications/ InterfaceModeller.app/ InterfaceModeller (for OPENSTEP systems compatibility) i386/ linux-gnu/ gnu-gnu-gnu/ InterfaceModeller sparc/ solaris-2.5.1/ nx-pdo-gnu/ InterfaceModeller The Tools/ directory contains command line tools. Each tool executable is placed in a subdirectory corresponding to the CPU and operating system. Tools/ i386/ linux-gnu/ autoconf gcc dgs sparc/ solaris-2.5.1/ autoconf gcc The makefile package ==================== The GNUstep environment needs a makefile package whose purpose is to simplify writing a GNUstep project. This package should help developers easily write makefiles for compiling their projects. Theoretically an OpenStep application should only use OpenStep API, it should not rely at all on system specific header files. This is the most portable way to write an OpenStep application. For this kind of applications configuring is not necessary since no system specific header files or libraries need to be checked. The idea is to try eliminate the configuring process because of the problems it has in the presence of cross-compiling. Not relying on system files in a GNUstep project means that you don't need to check for them, so the project can simply be compiled by just typing `make'. This is the best scenario for a GNUstep package. If configuring is still needed the makefile package should support it without major changes. We identified until now the following types of projects: - application: for projects whose result are graphical GNUstep applications - tool: for command line programs which use GNUstep libraries - library: for creating libraries (both static and shared) - bundle: for creating a dynamically loaded bundle - aggregate: for projects that contain several other subprojects like libraries, bundles and so on Another possible type of project could be "pallete", for adding functionality to the GNUstep InterfaceModeller application. Other project types can be added as well, the makefile package does not limit this in any way. A project consists from a collection of source code files and resource files. If a project has several subdirectories, those subdirectories are subprojects of the main project. A subproject type is not restricted in any way by the type of the project it's contained into. The only restriction is that you can not create multiple project types from the files in the same directory. For a project that does not need any additional configuring before compiling the only thing required to build the project should be typing $ make in the command line :-). Where the object files go ========================= The object files will go in a separate directory identified by the name of the target system and of the development environment used (ObjC runtime, Foundation library and GUI libraries). This way one can use the same source tree for building the project for multiple targets. How to choose the library combination ===================================== The makefile package will allow the user to choose between different library combinations. To specify a combination you want to compile for just type: $ make library_combo="library combination" For instance if you want to choose to compile using the NeXT's PDO Foundation and use the GNUstep GUI library on a Unix machine you can do like this: $ make library_combo=nx-pdo-gnu Projects that require running configure before compiling ======================================================== There are two issues with this kind of projects. 'configure' is used to determine the existence of particular header files and/or of some specific functionality in the system header files. This thing is usually done by creating a config.h file which contains a couple of defines like HAVE_... which say if the checked functionality is present or not. Another usage of configure is to determine some specific libraries to link against to and/or some specific tools. A typical GNUstep program is not required to check for additional libraries because this step is done by the time the makefile package is installed. If the project still needs to check for additional libraries and/or tools, the recommended way is to output a config.mak file which is included by the main makefile, instead of using Makefile.in files which are modified by configure. The reason for not doing this is to avoid having the Makefiles contain target dependencies like above, this way keeping only one makefile instead of several for each target machine. The makefile package will be written for GNU make because it provides some very powerful features that save time both in writing the package but also at runtime, when you compile a project. How to build a package for different architectures ================================================== In order to build a project for multiple architectures you'll need the development environment for the target machine installed on your machine. This includes a cross-compiler together with all the additional tools like the assembler and linker, the target header files and all the libraries you need. The GNUstep makefile package should be able to compile and link an application for another machine just by typing $ make target="target machine" where "target machine" is the canonical system name as reported by config.guess. Building different types of a project ===================================== During development you usually need to switch between a debug version and a profile one without having to recompile all of the sources. The makefile package allows you to do this by letting you define three boolean make variables. The values of these variables can be either "yes" or "no". * debug If the value is yes then it is assumed that the target is to be built with debugging info. By default the optimization is turned on but you can control this behavior via the OPTFLAGS make variable. The default is no. * shared It makes sense to specify this only for library targets. This variable says if the target needs to be built as a shared library. On systems that support shared libraries this is the default; the user has to explicitly specify shared=no in the command line. * profile When this variable is yes, a profile version of the target is built. The default is no. For example if you want to build a shared library with debug information enabled but no profile information, the command line would be: $ make shared=yes debug=yes profile=no The last argument is not necessary because the default is to build a version without profile information. The object files will be output into the shared_debug_obj directory. If the profile is turned on the output directory would be shared_profile_debug_obj. Of course you also have to specify the library combo if it's different than the default. Naming conventions of the libraries =================================== Sometimes you need to have different versions of a library compiled with different options. Suppose you want to compile a library with profiling information enabled so that you can profile your code. But you don't want to overwrite your existing installed library so that only some of the applications will work with the profile library, the rest will still use the normal library. The makefile package supports such a schema by having different names for different types of the same library. This works by appending an underscore after the name of the library followed by a letter which indicates the type of the library: 's' for a static library 'p' for a profile library 'd' for a debug library So for example if you have the library 'example' compiled with debug information as a shared library it would be named libexample_d.so. If the same library is compiled as a static library its name would be named libexample_sd.a. The reason why the 's' letter for the static library appears in name of the library is for systems where the extensions of libraries don't matter. It is possible to compile a library with whatever combination of flags you want. The letters are appended in the order specified above, so if you compile the library as a static library, with profile and debug information enabled, the library name will have the _spd suffix appended. How a library is chosen ======================= What happens if you compile an application with profile enabled and you don't have a library compiled with profile info into it, but you do have a normal library installed? It would be great if the normal library is chosen instead. This is a problem because the library that should be chosen has a different name than the profile library. We do support this schema by requiring the libraries to be specified using the short name, without any suffix appended to it. The `example' library in our case should be passed to the linker using -lexample, and not using -lexample_p. Based upon the shared, profile and debug variables, the makefile package will identify which are the libraries that exist on the system and it will come with the correct names when linking. The search order of libraries depending on what type of library is required is as follows. First of all an exact match is searched; if one is found it is returned. If either debug or profile are required, a library that matches at least one of these attributes is returned. For example if there is a profile+debug version of a library but only debug is required this library will match. If a static version is required but no static versions of the library exist, then no library is chosen; in this case the system simply prints out the name of the library, assuming a static library is somewhere else in the libraries search path of the linker. Building applications ===================== In the makefile's package terminology an application is a program linked against the GUI libraries. An application is built as usualy, by compiling all of the sources and then linking the object files into the binary. The only difference between an application and any other project results is that the first is created into its own directory, instead of being a simple file. This directory is called the application wrapper and it contains the binaries for various architectures and resources needed by the application. The name of the application wrapper is taken to be the name of the application with the following extensions: .profile - if the application has been built with profile enabled .debug - if the application has been built with debug enabled .app - if the application has been built without debug or profile enabled If both debug and profile are enabled, the application extension will simply have the .profile extension. This is different from libraries were both options are reflected into the library's name. The structure of makefiles ========================== The makefile package should be built so that a user project will only have to define what are the Objective-C files he/she uses, what are the C files, the header files and so on. All the rules that know how to build a library, an application or whatever type of project are defined in the internal files of the makefile package. This organization has several advantages. The main advantage is that we keep the makefiles in a GNUstep project small, only the makefile variable definitions. The other advantage is that all the build knowledge is centralized in a single place, the makefile package. Right now each GNUstep package tries to solve all of the issues related to the package building and nothing is reusable. The way the main makefile of a project should be written requires the user to specify the files needed by the make process and what kind of project needs to be built. This is defined by including a certain makefile package file. For example if the package to be built is an application then a possible Makefile can look like this: APP_NAME = test1 test2 test1_OBJC_FILES = test1.m test2_OBJC_FILES = test2.m test21.m -include Makefile.preamble include application.make -include Makefile.postamble The main makefile will be generated automatically in the future by the ProjectCenter. This presents problems if the user wants to add his/her own makefiles targets or additional rules. Two additional files are provided: Makefile.preamble and Makefile.postamble. The first file is included before the makefile for the specific project type and is intended for redefining the standard variables or for adding to them. The second one is intended for adding additional rules or targets. The makefile package is installed under $(GNUSTEP_SYSTEM_ROOT)/Library/Makefiles. Ovidiu Predescu Last updated: April, 2001 �������������������������������������gnustep-make-2.7.0/Documentation/gnustep-config.1���������������������������������������������������0000664�0001750�0001750�00000004244�12717312775�021577� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Process this file with .\" groff -man -Tascii gnustep-config.1 .\" .TH gnustep-config 1 "24/12/2007" GNUstep "GNUstep System Manual" .SH NAME gnustep-config \- prints information about the current gnustep installation. .SH SYNOPSIS .BR gnustep-config " [" .BI \-\-variable= variable .RB | \-\-objc-flags | \-\-objc-libs | \-\-base-libs | \-\-gui-libs " ]" .SH DESCRIPTION .B gnustep-config can print information about the currently installed GNUstep system. Output is generated dynamically based on environment variables such as GNUSTEP_CONFIG_FILE and GNUSTEP_MAKEFILES, though default values for these are generated when the tool is configured/installed. Output is primarily the locations in which various GNUstep resources are installed, but also provide flags used to build differnt types of GNUstep project. .SH OPTIONS .TP .BI \-\-variable= variable prints the value of the specified variable. Possible variables are: .RS .RS .PD 0 .HP GNUSTEP_MAKEFILES .HP GNUSTEP_USER_DIR .HP GNUSTEP_USER_DEFAULTS_DIR .HP GNUSTEP_HOST .HP GNUSTEP_HOST_CPU .HP GNUSTEP_HOST_VENDOR .HP GNUSTEP_HOST_OS .HP GNUSTEP_IS_FLATTENED .HP GNUSTEP_xxx_APPS .HP GNUSTEP_xxx_TOOLS .HP GNUSTEP_xxx_LIBRARY .HP GNUSTEP_xxx_HEADERS .HP GNUSTEP_xxx_LIBRARIES .HP GNUSTEP_xxx_DOC .HP GNUSTEP_xxx_DOC_MAN .HP GNUSTEP_xxx_DOC_INFO .RE where 'xxx' could be any of 'SYSTEM', 'NETWORK', 'LOCAL' and 'USER'. .RE .PD 1 .TP .B \-\-objc-flags prints all the flags required to compile an ObjC file .TP .B \-\-objc-libs prints all the flags required to link a pure ObjC program (no foundation/gui) .TP .B \-\-base-libs prints all the flags required to link a command-line ObjC program (no gui) .TP .B \-\-gui-libs prints all the flags required to link a GUI ObjC program .SH BUGS None known .SH SEE ALSO GNUstep(7) .SH HISTORY Work on .B gnustep-config started in 2007 by Nicola Pero <nicola.pero@meta-innovation.com> .SH AUTHORS This man page was written by Dennis Leeuw <dleeuw@made-it.com>. .SH COPYRIGHT Copyright (C) 2007 Free Software Foundation, Inc. .PP Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/readme.texi��������������������������������������������������������0000664�0001750�0001750�00000004476�10377003773�020717� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������@chapter GNUstep makefile package Here is some introductory info to get you started: @section What is the GNUstep makefile package? The makefile package is a simple, powerful and extensible way to write makefiles for a GNUstep-based project. It allows the user to write a 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. @section Information The file @samp{NEWS} has this packages feature history. The files @samp{INSTALL} or @samp{GNUstep-HOWTO} give instructions for installing the packages. Also see the @file{machines} documentation and various machine specific READMEs in the Documentation directory. Files in the @samp{Documentation} directory have information on the design of the Makefile system and how to write your own makefiles that work with it. @section License The GNUstep libraries are covered under the GNU Lesser Public License. This means you can use these libraries in any program (even non-free programs). If you distribute the libraries along with your program, you must make the improvements you have made to the libraries freely available. You should read the COPYING.LIB file for more information. GNUstep tools, test programs, and other files are covered under the 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. The GNUstep make package is licensed under the GNU GPL. @section History 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 @email{mircea@@pathcom.com}. Richard Frith-Macdonald @email{richard@@brainstorm.co.uk} also contributed with ideas. Nicola Pero @email{nicola@@brainstorm.co.uk} rewrote much of the rule procedures to increase the speed of the package by over a factor of 7. He also rewrote much of the rest of the system to make it simpler and more effective. @section How can you help? @itemize @bullet @item Give us feedback! Tell us what you like; tell us what you think could be better. Send bug reports to @email{bug-gnustep@@gnu.org}. @end itemize ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/releasenotes.texi��������������������������������������������������0000664�0001750�0001750�00000075346�13074115002�022141� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������@chapter GNUstep Make Release Notes The release notes include descriptions of API changes, behavior changes and other information that might help developers and users migrate to using a newer version of the make system. @section Version 2.7.0 When building non-flattened, the subdirectory name for libraries/binaries is changed for Debian compatibility (and simplicity) to use a directory whose name is of the form architecture/library-combo rather than nested directories of the form cpu/os-abi/library-combo. The architecture name format is a sanitised triplet cpu-os-abi (where previously we had cpu/os-abi). When building non-flattened, header files are now installed in an architecture and library-combo dependent subdirectory in the same way that binary libraries are installed. This removes an inconsistency and makes sense with Debian multiarch support which puts headers in an architecture specific subdirectory. The long since deprecated GNUSTEP_INSTALLATION_DIR is removed. Various bugfixes and minor improvements. @section Version 2.6.8 Configure option '--with-library-combo=ng-gnu-gnu' to use the 'Next Generation' setup of the latest ObjectiveC-2 runtime and compiler features rather than traditional runtime. Requires the new runtime and a recent clang compiler. With the 'ng' runtime in use, you can define GS_WITH_ARC=1 at the start of a makefile, or in your environment, or in the command line arguments to have objC code built using ARC. Command line option 'documentation=no' to suppress builds of documentation. Integration of testsuite for regression/unit testing of libraries using the 'check' target. In your makefile define libraryname_TEST_DIR = TestsSubdirectory Various minor bugfixes, documentation spelling corrections etc. The '--enable-strict-v2-mode' option is now, after eight years, turned on by default (in anticipation of finally removing backward compatibility with version one). WARNING; Packagers please ensure that you update any old gnustep-make version one makefiles. Garbage collection support to be removed at the next release. @section Version 2.6.7 Improved package building support Improved environment variable support Improved Java support Various minor bugfixes, documentation spelling corrections etc. @section Version 2.6.6 Debian packagge generation support added. Bug fixes @section Version 2.6.5 Bugfix for non-fragile ABI test Bugfix order if include diorectories for system includes Bugfix equality test for prorocol testing Added minimal test support for .c and .cc files. @section Version 2.6.4 Test framework enhancement (extended equality tests) Android build target @section Version 2.6.3 Bug fixes @section Version 2.6.2 @table @samp @item Added standalone filesystem layout for putting everything in one directory for easy deployment of relocatable @item Other bug fixes @end table @section Version 2.6.1 Bug fixes @section Version 2.6.0 @table @samp @item The default filesystem layout is now the 'fhs' layout Before version 2.6.0, the default filesystem layout was the 'gnustep' layout. Starting with 2.6.0, the default filesystem layout has changed and is now the 'fhs' layout. To get the old default layout, configure gnustep-make using ./configure --with-layout=gnustep. Note that this change does not affect gnustep-make when used with the apple-apple-apple library combo, in which case the default filesystem layout remains the 'apple' one. The change in the default filesystem layout means that the location of the GNUstep.sh file in a default installation has changed from /usr/GNUstep/System/Library/Makefiles/GNUstep.sh to /usr/local/share/GNUstep/Makefiles/GNUstep.sh. If you use the default layout and execute the GNUstep.sh script on startup, you need to change the command from @smallexample . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh @end smallexample to @smallexample . /usr/local/share/GNUstep/Makefiles/GNUstep.sh @end smallexample @item The default location of the configuration file changed Before version 2.6.0, the configuration file was always by default /etc/GNUstep/GNUstep.conf no matter what filesystem layout and prefix were used. Starting with version 2.6.0, that is the default location of the configuration file only when installing system-wide, that is with a prefix set to /, /usr or /usr/GNUstep. In all other cases, the configuration file is by default located in $prefix/etc/GNUstep/GNUstep.conf. In particular, this means that if ./configure is invoked with no options specified, the default location of the configuration file is now /usr/local/etc/GNUstep/GNUstep.conf (and no longer /etc/GNUstep/GNUstep.conf). Please note that the --with-config-file=xxx option allow you to specify whatever location for the configuration file that you want; the default is only used if no such option is specified and gnustep-make has to pick a reasonable default location for the configuration file. Finally, also note that the default location of the configuration file on Darwin has not changed and is still /Library/GNUstep/GNUstep.conf regardless of the prefix selected. @item Removed the --with-system-root, --with-local-root and --with-network-root options These configure options were obsolete and are ignored by all releases in the past 4 years and have now finally been removed. @item Removed obsolete variables Some very old variables that were deprecated 4 years ago have now been removed. This includes xxx_RESOURCE_FILES_INSTALL_DIR in resource-set.make (you should use xxx_INSTALL_DIR instead) and GNUSTEP_GSWAPPS in gswapp.make (you should use GNUSTEP_WEB_APPS instead). @item New Test Framework GNUstep-make now includes a test framework that can be used to easily write testcases for Objective-C software. The new releases of GNUstep-base and GNUstep-gui include regression test suites that use this test framework. Please check the README in the TestFramework directory for more information on how it works or how to use it. @item objc.make is deprecated The file objc.make, which is used to compile Objective-C command-line tools without a Foundation library such as GNUstep base, is now deprecated. Please use tool.make instead. @item --enable-absolute-install-paths is now the default on Darwin This makes it easier to use GNUstep with the gnu-gnu-gnu library combo on Apple Mac OS X. @end table @section Version 2.4.0 @table @samp @item You can enable the use of the non-fragile ivar ABI The --enable-objc-nonfragile-abi flag can be used to enable the non-fragile ivar ABI for compilers (such as clang) that support it. @item -Wall is now used by default unless 'make warn=no' is specified Before version 2.4.0, 'make debug=yes' would not only build object files particularly suited for debugging, but would also add the -Wall flag on the compiler command line when compiling C/ObjC/C++/ObjC++. Starting with 2.4.0, the -Wall flag is controlled by a separate warn flag, so you can turn it on and off indipendentely by doing 'make warn=yes' or 'make warn=no'. Since warn=yes is the default, the default behaviour also changed; starting with 2.4.0, gnustep-make will use -Wall by default. You can turn it off by using 'make warn=no'. A similar change occurred for Java compilations, where the flag -deprecation, which used to be enabled by debug=yes, is now enabled by warn=yes. As a consequence, Java code is now compiled by default with the -deprecation flag. You can turn it off by compiling with 'make warn=no'. @item PACKAGE_NEEDS_CONFIGURE and JAVADOC_BUILD_ALWAYS now support 'yes' and 'no' gnustep-make boolean variables traditionally use the values 'yes' and 'no', with the unfortunate exception of PACKAGE_NEEDS_CONFIGURE and JAVADOC_BUILD_ALWAYS which used to only recognize the values 'YES' and 'NO'. For consistency with everything else, starting with gnustep-make 2.4.0 these two variables recognize the values 'yes' and 'no' too. @item Versions of GNU make older then 3.79.1 (June 2000) are no longer supported The .NOTPARALLEL pseudo-target is only available in GNU make 3.79 and is essential for parallel builds to work. Starting with version 2.4.0, gnustep-make recommends using GNU make 3.79.1 or greater; a warning will be issued during configure if an older GNU make is detected. Older versions of GNU make are likely to work (except for parallel building) but are no longer supported. As 3.79.1 was released about 10 years ago, this should not be a particular problem. @item new internalmessages=yes option Starting with version 2.4.0, gnustep-make recognized the new internalmessages=yes option (separate from messages=yes) which prints all the recursive make invocations that are used. This is mostly useful to understand how gnustep-make internally works and is not meant for end-users. @item javadoc is run in quiet mode Starting with version 2.4.0, javadoc is by default executed with the -quiet option (unless messages=yes is specified), and a ``Generating javadoc documentation...'' is printed instead. @item new API to build subdirectories Before version 2.4.0, aggregate.make was used to step into subdirectories and build them. It did not support parallel building. Starting with version 2.4.0, two new makefile fragments have been introduced: serial-subdirectories.make and parallel-subdirectories.make. These can be used to build subdirectories, and encourage (indeed, force) the developer to explicitly decide if the subdirectories are to be built serially, or in parallel. Using parallel-subdirectories.make often produces massively faster builds (or installs or cleans) during a parallel build on a multicore machine. But if you use parallel-subdirectories.make, you need to make sure the different subdirectories are completely independent of each other. The operations that are executed in parallel are 'all', 'clean', 'distclean', 'check' and 'strings'. 'install' and 'uninstall' are still executed in serial order to prevent any concurrency problems when creating (or removing) common installation directories. aggregate.make is still available if you want or need to be backwards-compatible with older versions of gnustep-make. It is normally a wrapper around serial-subdirectories.make, but if you specify 'GNUSTEP_USE_PARALLEL_AGGREGATE = yes' in your GNUmakefile, it becomes a wrapper around parallel-subdirectories.make. aggregate.make will be deprecated in 2012 and removed in 2015, but for the next couple of years it might be a good solution while you wait for your users to upgrade their gnustep-make installations. @item each instance stores object files in its own subdirectory Before version 2.4.0, there was a single object directory where all object files where stored. In the most common case, this directory was simply ./obj, so if you compiled file source.m, you'd end up with ./obj/source.m.o. Starting with version 2.4.0, different instances store their object files in different subdirectories; for example, if the file was compiled as part of tool ToolA, it would end up in ./obj/ToolA.obj/source.m.o, while if compiled as part of ToolB, it would end up in ./obj/ToolB.obj/source.m.o. This allows ToolA and ToolB to be built in parallel with no race conditions, even if they share some source files. There are a number of side effects of this change. First of all, in the unlikely event that your GNUmakefile depends on the location of the object files (bad idea by the way), you'll have to update it. Second, if you are reusing a single source file in multiple instances in the same project, this will now be compiled multiple times instead of one (on the plus side, you can fully parallelize the build by just using 'make -j N', without having to change anything in your GNUmakefile. On a machine with multiple cpus/cores this can massively speed up the build). Finally, the rules to compile C/ObjC/C++/ObjC++/Windres files are no longer available in the Master invocation - they are only available when compiling a specific instance. It's hard to imagine a situation where this change of private internals would affect any user; but people with their own private gnustep-make forks or advanced extensions might be affected. @item the order in which instances are built is no longer guaranteed If you build more than one tool in the same GNUmakefile by listing them all in TOOL_NAME as in ``TOOL_NAME = ToolA ToolB', you need to be aware that the way the instances are built changed in version 2.4.0. This change affects applications, bundles, ctools, clibraries, libraries, services, palettes, test-applications, test-libraries, test-tools, tools. It does not affect Java, resource sets or documentation. [FIXME: frameworks ?] Before version 2.4.0, instances were always built one after the other one, exactly in the order specified. So, in the example ToolA would be built before ToolB. Starting with 2.4.0, the instances might be built completely in parallel if parallel building is enabled. So, the order in which they are built is no longer defined and your GNUmakefile should not depend on the order in which instances are specified in the GNUmakefile. Most GNUmakefiles should be unaffected because they rarely rely on the order in which instances are built. If your GNUmakefile does depend on the order, you have a few options. The preferred option is to identify the code or steps that need to be executed before some of the instances are built and put them into a before-all:: rule, which is guaranteed to be executed before anything else. In this way your serialized code is executed first, and the build can continue in a completely parallel fashion afterwards. Another option is to move your instances into separate subdirectories, and use serial-subdirectories.make to build them. serial-subdirectories.make will respect the order and always build them in the order you require. If you want to disable parallel building altogether, you can add GNUSTEP_MAKE_PARALLEL_BUILDING=no just after including common.make to prevent a specific GNUmakefile from doing a parallel build. Please note that this does not affect the relationship between instances of different types; if you include library.make before tool.make, for example, the library (or libraries) will still be built before the tool (or tools). It is the order in which the libraries (or tools) are built that is no longer guaranteed. @item support for having source files in subdirectories Starting with version 2.4.0, it is possible to put source files in subdirectories by specifiying them as in xxx_OBJC_FILES = Source/Beauty.m. This syntax does not work on versions before 2.4.0 so you should not use it if you want to support older versions of gnustep-make; previously you had to create a subproject and add a GNUmakefile in the subdirectory using subproject.make. You can now spread your source files in multiple subdirectories without using subprojects. @item support for having header files in subdirectories Starting with version 2.4.0, it is possible to put header files in subdirectories by specifiying them as in xxx_HEADER_FILES = Beauty/Beauty.h. This syntax does not work on versions before 2.4.0 so you should not use it if you want to support older versions of gnustep-make. When headers are put in subdirectories specified in this way, corresponding subdirectories are created when the header files are installed. For example Beauty/Beauty.h would be automatically installed into GNUSTEP_HEADERS/HEADER_FILES_INSTALL_DIR/Beauty/Beauty.h. To get the same result in versions before 2.4.0 you would have had to manually create the header installation subdirectories. @item support for HEADER_FILES_DIR in framework subproject Before version 2.4.0, specifying xxx_HEADER_FILES_DIR in a framework subproject would have no effect. Starting with version 2.4.0, the variable is now recognized and can be used to have the files in a subdirectory. You should avoid using the variable in framework subprojects if you want to support older versions of gnustep-make. @item info files renamed adding a gnustep- prefix To prevent conflicts with other documentation, all the gnustep-make info files have been renamed adding a gnustep- prefix. For example, to access the GNUstep faq using info, you now need to type 'info gnustep-faq' instead of 'info faq'. Please note that this info documentation is in the core/make/Documentation subdirectory and at the moment is not automatically installed unless you explicitly go in that subdirectory and install it. @item better cleaning for texinfo documentation When you build html documentation from texinfo files, the local directory containing the html files was not being removed when doing a 'make clean'. Starting with version 2.4.0, 'make clean' removes the directory too. @item debug=no made the default gnustep-make now builds using debug=no by default. As a consequence, on most platforms C/Objective-C/C++ code is now built by default using -g -O2 instead of just -g. If you do not want the -O2 flag, you can simply build using 'make debug=yes'. You can also use the new ./configure --enable-debug-by-default option to make 'debug=yes' the default flag that is always used when compiling if nothing else is specified. If you do not want the debugging symbols, remember that you can use the 'make strip=yes' option to have them stripped out from all object files when they are installed. @item batch-compilation of Java files gnustep-make used to compile Java files one by one. In most Java compilers this is very suboptimal. Starting from release 2.4.0, gnustep-make will compile all Java files in a Java project with a single Java compiler invocation. This can significantly speed up compilation of large projects. To disable it and get the behaviour of gnustep-make 2.2.0, please set the variable BATCH_COMPILE_JAVA_FILES to 'no' (or the variable xxx_BATCH_COMPILE_JAVA_FILES to 'no' to disable it for a single instance). Please note that if you are using the xxx_FILE_FLAGS or xxx_FILE_FILTER_OUT_FLAGS functionality for Java files, which allows you to customize the compilation flags for each Java file, then batch compilation is automatically disabled and all files are compiled separately. @item library resources always installed in directory without 'lib' This change only applies to libraries where LIBRARY_NAME starts with 'lib' and that install resources. Due to a bug, versions of gnustep-make before 2.4.0 would in this case install the resources into the wrong directory, without removing 'lib' from the library name. For example, if LIBRARY_NAME is libgnustep-base, the resources would have been installed into GNUSTEP_LIBRARY/Libraries/libgnustep-base/Versions/1.14/Resources/ instead of the correct GNUSTEP_LIBRARY/Libraries/gnustep-base/Versions/1.14/Resources/. In gnustep-make 2.4.0, this bug has been fixed and the library name, without 'lib', will always be used in the resource installation directory, no matter if LIBRARY_NAME includes 'lib' or not. If you have a makefile which is affected and you need to support older versions of gnustep-make, you could remove 'lib' from the LIBRARY_NAME. That should install resources in the same directory on all gnustep-make versions that support library resources (ie, gnustep-make >= 2.0.x). @end table @section Version 2.2.0 @table @samp @item libobjc library You can now specify a particular libobjc library to use with the --with-objc-lib-flag in configure. Make now also automatically uses -lobjc_gc when using garbage collection. @item parallel building Parallel building is supported now. You can build using the normal make mechanism, e.g. 'make -j 2'. @item install -p gnustep-make now uses 'install -p' by default when installing headers and other files. This preserves the file timestamps and can in some cases reduce spurious rebuilds triggered by reinstalling headers that have not been modified. You can use the gnustep-make configure option --disable-install-p to disable this behaviour and go back to always using a standard 'install'. @item uninstallation of resources gnustep-make now is more careful and accurate when uninstalling resources, which means that 'make uninstall' will do a better job at removing directories that were created during by 'make install'. @end table @section Version 2.0.7 @table @samp @item default installation New configuration file that allows hardcore developers building everything from source to specify arbitrary default installation domains for the software. You just need to copy the installation-domains.conf file to the same directory as the GNUstep.conf file, and edit it to customize the default installation domain (Thanks to Richard for the idea). @item --no-print-directory gnustep-make now uses the --no-print-directory flag when invoking make recursively, so the output has changed - starting from 2.0.7 it should be shorter and more readable. @item change to intermediate object file names gnustep-make now supports having in the same project source files with the same name, but a different extension - for example file.c and file.m. The names of intermediate object files have been internally changed (for example, from file.o to file.c.o) to support this. @item change in path checking algorithm in GNUstep.sh and GNUstep.csh GNUstep.sh and GNUstep.csh perform more careful checks for duplicate paths when adding paths to PATH and other path variables. Now they check each path separately before adding it, which in some cases will produce smaller and less intrusive additions to PATH; in particular, on FHS filesystem layout, they will never add /usr/bin or other system paths if they are already there. If you are in a situation where there is an overlap between GNUstep paths and system paths and you are using GNUstep.sh or GNUstep.csh, you may want to check the new values of PATH, CLASSPATH, GUILE_LOAD_PATH, INFOPATH, LD_LIBRARY_PATH and similar variables since they may be different from the old ones. @item test applications linked against gnustep-gui by default Test applications (that is, applications created using test-application.make) are now linked against gnustep-gui by default. @end table @section Version 2.0.6 @table @samp @item GNUSTEP_ABSOLUTE_INSTALL_PATHS Added the --enable-absolute-install-paths option to configure on Darwin. Enabling this option modifies the process for building dynamic libraries so the install_name stored within a library is an absolute path. Dynamic libraries with an absolute install_name can be placed in non-standard locations, but may not be moved from their designated location. @item default location of GNUstep.conf on BSD systems This has been changed to /etc/GNUstep/GNUstep.conf to be consistent across all Unix systems (except for Apple Mac OS X where it is installed in /Library/GNUstep/GNUstep.conf). To install in a different location, use the --with-config-file=PATH option, as in --with-config-file=/usr/pkg/etc/GNUstep.conf. @item make.info renamed to gnustep-make.info To prevent conflicts with the standard GNU 'make' info documentation, the gnustep-make one has been renamed. Now you can access it as in 'info gnustep-make' instead of 'info make', avoiding any conflicts and confusion. Please note that this info documentation is in the core/make/Documentation subdirectory and at the moment is not automatically installed unless you explicitly go in that subdirectory and install it. @end table @section Version 2.0.5 @table @samp @item default filesystem layout on apple-apple-apple The default filesystem layout when using the apple-apple-apple library-combo has been changed from 'gnustep' to the new 'apple' filesystem layout, and on darwin the configuration file is by default installed in /Library/GNUstep/GNUstep.conf instead of /etc/GNUstep/GNUstep.conf. Using the 'gnustep' filesystem layout with the apple-apple-apple library-combo did not make much sense; in gnustep-make version 2.0.5 and newer, a ./configure on Apple Mac OS X automatically chooses the right library-combo and filesystem layout to compile and install Apple native frameworks and applications. @item ~/GNUstep/GNUstep.sh This script used to be automatically sourced whenever the main GNUstep.sh file was sourced. In gnustep-make version 2 (starting with 2.0.5) the file is no longer sourced. If you are sourcing GNUstep.sh at start-up and have a custom shell script that you'd like to source in addition to GNUstep.sh, please source it in your shell init script before or after sourcing GNUstep.sh. The same applies to ~/GNUstep/GNUstep.csh. @item xxx_NEEDS_GUI This new variable can be used to specify that a project needs to be linked against the gui library (or not). If set to yes, the gui library will be linked; if set to no, the gui library will not be linked. If unspecified, the generic variable NEEDS_GUI is used; if that is also unspecified, the behaviour depends on the project type (and is backwards-compatible): applications, bundles, frameworks, palettes and libraries link automatically against the gui library; other project types do not. It is recommended that you set xxx_NEEDS_GUI for all bundles, frameworks and libraries to clarify how the linking should be done. @item NEEDS_GUI This new variable can be used to specify that all projects built by this GNUmakefile need to be linked against the gui library (or not). If set to yes, the gui library will be linked; if set to no, the gui library will not be linked. This behaviour can be overridden for specific project targets by using the xxx_NEEDS_GUI variable (see above). @end table @section Version 2.0.0 Version 2.0.0 is a new major release of gnustep-make which includes a number of major changes compared to previous 1.x releases. Most of the changes are backwards compatible in the sense that old GNUmakefiles will work with gnustep-make version 1 or 2 when used in the same conditions (traditional GNUstep filesystem layout). But GNUmakefiles might need updating to work with the new filesystem layout configurations that are allowed by gnustep-make version 2. @table @samp @item GNUSTEP_INSTALLATION_DIR This variable is deprecated in gnustep-make version 2; you should never use it. gnustep-make version 2 supports installation domains that are mapped to filesystem locations in arbitrary ways; for this reason, specifying a GNUSTEP_INSTALLATION_DIR no longer makes sense. If you need to relocate the whole installation (for example, installing into /tmp to prepare a binary package) you should use DESTDIR, as in 'make install DESTDIR=/tmp'. To choose an installation domain, you should use GNUSTEP_INSTALLATION_DOMAIN, as in 'make install GNUSTEP_INSTALLATION_DOMAIN=LOCAL'. It's particularly important that you remove any reference to GNUSTEP_INSTALLATION_DIR inside your own GNUmakefiles. If your GNUmakefiles contains references to GNUSTEP_INSTALLATION_DIR (or similar), you should remove them by replacing them with references to the actual logical directory into which you want to install. For example, if your GNUmakefile is trying to install something into GNUSTEP_INSTALLATION_DIR/Library/Libraries, you need to replace it with GNUSTEP_LIBRARIES. This is important for non-GNUstep filesystem layouts (where, eg, GNUSTEP_LIBRARIES should be set to /usr/lib or /usr/local/lib or /home/nicola/GNUstep/Library/Libraries depending on the installation domain); in that case, gnustep-make will manage GNUSTEP_LIBRARIES for you. Please check the file @file{filesystem} for more information on the available variables. @item GNUSTEP_xxx_ROOT The variables GNUSTEP_SYSTEM_ROOT, GNUSTEP_LOCAL_ROOT, GNUSTEP_NETWORK_ROOT, GNUSTEP_USER_ROOT and GNUSTEP_ROOT are deprecated in gnustep-make version 2 and you should never use them. gnustep-make version 2 supports installation domains that are mapped to filesystem locations in arbitrary ways; for this reason, a variable like GNUSTEP_SYSTEM_ROOT has no longer any use. If your GNUmakefiles contains references to GNUSTEP_SYSTEM_ROOT (or similar), you should remove them by replacing them with references to the actual logical directory into which you want to install. For example, if your GNUmakefile is trying to install something into GNUSTEP_SYSTEM_ROOT/Library/Libraries, you need to replace it with GNUSTEP_SYSTEM_LIBRARIES. Please check the file @file{filesystem} for more information on the available variables. @item gnustep-make ./configure and install options The options to configure (and make install), particularly the ones to determine the filesystem layout, have been radically changed in gnustep-make version 2. If you have a building or packaging script for gnustep-make, you need to make sure you replace your old ./configure options with the new ones. In particular, the --with-system-root, --with-local-root and --with-network-root configure options have been replaced by the more powerful --with-layout configure option. Also, configure no longer imports an existing configuration file so you need to make sure that you pass all the options every time. 'make install special_prefix=xxx' has been replaced by 'make install DESTDIR=xxx'. @item make debug=yes is now the default The default used to be 'make debug=no'; this has now been changed to be 'make debug=yes'. To get the traditional behaviour, please use 'make debug=no'. @item RPM support rewritten The RPM support has been rewritten so if you're using gnustep-make to automatically generate RPM packages for your software, you may want to review the process. In particular, there is no longer a distinction between debug and non-debug packages. @item xxx_PREPROCESS_INFO_PLIST This variable is now obsolete and can be removed; gnustep-make version 2 can automatically detect plists that need preprocessing. @item Framework default version The default framework resource version changed from 'A' to INTERFACE_VERSION (which is set, by default, to '0'). @item Microsoft Windows updates If you are using Microsoft Windows, you probably want to check the new installation instructions and reinstall everything. @item Java tools location changed Java tools are now installed into GNUSTEP_JAVA rather than in a subdirectory of GNUSTEP_TOOLS. @item resource-set.make install directory The variable xxx_RESOURCE_FILES_INSTALL_DIR for resource-set.make has been deprecated in favour of xxx_INSTALL_DIR. For backwards compatibility, you may want to set them both: xxx_INSTALL_DIR = $(GNUSTEP_LIBRARY)/Libraries/Resources/xxx xxx_RESOURCE_FILES_INSTALL_DIR = /Library/Libraries/Resources/xxx @item INSTALL_ROOT_DIR All instances of INSTALL_ROOT_DIR in user's makefiles should be replaced with DESTDIR. @item GNUSTEP_FLATTENED All checks for GNUSTEP_FLATTENED should be updated to check the new variable GNUSTEP_IS_FLATTENED instead, and to compare it explicitly to 'yes' and 'no', and assume that '' means 'yes'. @item ./shared_obj The ./shared_obj, ./shared_debug_obj directories and similar are no longer created. You can use ./obj instead. @item library names All libraries now have the same name. @item application names All applications now have the same name. @end table @ifinfo Copyright @copyright{} 2007 Free Software Foundation Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. @end ifinfo ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/gnustep-internals.tex����������������������������������������������0000664�0001750�0001750�00000017346�11255116106�022762� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\documentclass[a4paper]{article} % % Comment the following line out if you don't have the geometry % package on your system. % \usepackage[includemp=no]{geometry} % % % \begin{document} \title{GNUstep Makefile Package Internals} \author{Nicola Pero n.pero@mi.flashnet.it} \date{last days of June 2001 - revised end of July 2001} \maketitle \tableofcontents \section{Introduction} This short document attempts to explain simply how the gnustep makefile package works internally. When I first wrote this document, the mechanism used to be extremely complex, involving many recursive make invocations; I have now simplified it so that it involves only a single recursive make invocation per target/type/operation. As a result, I hope that the mechanism is now so simple that you can figure out how it works without reading this document, by just reading the gnustep-make source code. Anyway, the thing might still not be still totally trivial at a first approach, so this document might help you to get familiar with the gnustep-make source code in a shorter time and with less pain. \section{From `make' to the internal-all rule} Imagine for example that in your \texttt{ GNUmakefile} you include both \texttt{tool.make} and \texttt{library.make}, as in the following example: \begin{verbatim} include $(GNUSTEP_MAKEFILES)/common.make TOOL_NAME = decrypt decrypt_OBJC_FILES = decrypt.m LIBRARY_NAME = libDvd libDvd_OBJC_FILES = decss.m include $(GNUSTEP_MAKEFILES)/tool.make include $(GNUSTEP_MAKEFILES)/library.make \end{verbatim} % $ fool emacs's buggy tex mode Then you type `make' on the command line. We want to understand what happens. Make will process your \texttt{GNUmakefile}, which includes \texttt{tool.make}, and that will include \texttt{rules.make}. In \texttt{rules.make} make finds the first rule (the one which is executed), which is \begin{verbatim} all:: before-all internal-all after-all \end{verbatim} This means that make will build by default that target \texttt{ all}, and that building that target requires building the \texttt{before-all}, \texttt{internal-all} and \texttt{after-all} targets. We ignore the \texttt{before-all} and \texttt{after-all} targets for now, and only concentrate on the core target, which is \texttt{internal-all}. \section{From the internal-all rule to the \%.variables rule} Make needs to build this target \texttt{internal-all}. In \texttt{rules.make} this target appears as \begin{verbatim} internal-all:: \end{verbatim} because of the double colons (that is, because it is \texttt{internal-all::} rather than \texttt{internal-all:}) this target can have multiple totally separated rules. Each rule must be a double colon rule, and is processed separately from the other rules (even if they refer to the same target). The real rules for \texttt{internal-all} are included by the specific makefiles; in our example, \texttt{tool.make} includes \begin{verbatim} internal-all:: $(TOOL_NAME:=.all.tool.variables) \end{verbatim} %$ now - in our case - because \texttt{TOOL\_NAME} is \texttt{decrypt}, then this rule actually means \begin{verbatim} internal-all:: decrypt.all.tool.variables \end{verbatim} This means that to build \texttt{internal-all}, make has to build (at least) the \texttt{decrypt.all.tool.variables} target. \texttt{library.make} includes the completely analogous rule \begin{verbatim} internal-all:: $(LIBRARY_NAME:=.all.library.variables) \end{verbatim} %$ which in our case means \begin{verbatim} internal-all:: libDvd.all.library.variables \end{verbatim} This rule is completely separated from the other one; to build \texttt{internal-all}, make has to build the two different targets: \begin{verbatim} decrypt.all.tool.variables libDvd.all.library.variables \end{verbatim} \section{The \%.variables rule - dependencies} The rule for building these targets is in the \texttt{rules.make} file, it is the \texttt{\%.variables} rule: \begin{verbatim} %.variables: %.tools %.subprojects @ \ target=$(basename $(basename $*)); \ operation=$(subst .,,$(suffix $(basename $*))); \ type=$(subst -,_,$(subst .,,$(suffix $*))); \ echo Making $$operation for $$type $$target...; \ $(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-$${type}-$$operation \ INTERNAL_$${type}_NAME=$$target \ TARGET=$$target \ _SUBPROJECTS="$($(basename $(basename $*))_SUBPROJECTS)" \ ... \end{verbatim}%$ This rule matches all targets ending in \texttt{.variables}. First of all, the rule depends on the corresponding \texttt{\%.tools} and \texttt{\%.subprojects} rules. This is because before processing the target itself, gnustep-make needs to process the related subprojects and (only for frameworks) the framework tools. We ignore this complication of subprojects and framework tools for now; if you look at the \texttt{\%.subprojects} and \texttt{\%.tools} rules you see that they do nothing if you are not actually using subprojects or framework tools in your makefile. \section{The \%.variables rule - second make invocation} The rule body parses the \texttt{\%.variables} string - for example when the rule is applied to \begin{verbatim} decrypt.all.tool.variables \end{verbatim} then (remember that \texttt{\$*} is the stem of the rule, \texttt{decrypt.all.tool} in this case) it extracts \begin{verbatim} target=decrypt operation=all type=tool \end{verbatim} and then it runs a make subprocess, specific to that target, type and operation. In our case, the \texttt{\%.variables} rules is executed twice, once to build \begin{verbatim} decrypt.all.tool.variables \end{verbatim} and once to build \begin{verbatim} libDvd.all.tool.variables \end{verbatim} so the result is to run two separate make processes: \begin{verbatim} make internal-tool-all INTERNAL_tool_NAME=decrypt TARGET=decrypt \ _SUBPROJECTS="$(decrypt_SUBPROJECTS)" \ OBJC_FILES="$(decrypt_OBJC_FILES)" \ ... make internal-library-all INTERNAL_library_NAME=libDvd TARGET=libDvd \ _SUBPROJECTS="$(libDvd_SUBPROJECTS)" \ OBJC_FILES="$(libDvs_OBJC_FILES)" \ ... \end{verbatim} where \texttt{...} stands for a lot of other variables, including all variables needed to perform the final stage: \texttt{OBJC\_FILES}, \texttt{C\_FILES}, \texttt{JAVA\_FILES}, \texttt{ADDITIONAL\_INCLUDE\_DIRS} etc. Note that each make subprocess will get passed different, specific, variables. If gnustep-make wants to modify these variables in some way, it does it at this stage, before passing them to the submake process. For example, some library flags are filtered through the \texttt{WHICH\_LIB\_SCRIPT}. What this means is that for each target/type/operation, a separate make process is run. For example, if you have two tools, \texttt{decrypt} and \texttt{crypt}, and you want to both compile and install them, it will run four make subprocesses: \begin{verbatim} make internal-tool-all INTERNAL_tool_NAME=decrypt ... make internal-tool-all INTERNAL_tool_NAME=crypt ... make internal-tool-install INTERNAL_tool_NAME=decrypt ... make internal-tool-install INTERNAL_tool_NAME=crypt ... \end{verbatim} This is the `second make invocation'. The make package knows that it is being invoked for the second time, because of the \texttt{INTERNAL\_tool\_NAME} being non-empty. \section{Second make invocation} Because of the \texttt{INTERNAL\_tool\_NAME} variable being a non-empty string (while it was empty in the previous top-level invocation), \texttt{tool.make} will include the actual rules to build the tool; in particular, the \texttt{internal-tool-all} rule, which is then executed and builds the tool. All variables such as \texttt{OBJC\_FILES} or the library flags are now available directly in the makefiles, they have already been prepared and preprocessed, so that the rules in \texttt{tool.make} can just plainly use these variables naively to perform their job (compiling, installing, or whatever). \end{document} ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/opentool.1���������������������������������������������������������0000664�0001750�0001750�00000001766�10734551456�020512� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Process this file with .\" groff -man -Tascii opentool.1 .\" .TH opentool 1 12/12/2007 gnustep-make "GNUstep System Manual" .SH NAME opentool \- Command line tool for starting tools .SH SYNOPSIS .BR opentool " [" \-\-library-combo=... ] .B tool .RI " [" arguments... ] .SH DESCRIPTION .B opentool is obsolete. You should make sure that the .I Tools directories are in your .BR PATH , and then .B opentool is not needed anymore. .SH SEE ALSO openapp(1), debugapp(1), GNUstep(7) .SH HISTORY Work on .B opentool started in 1997 and was written by Scott Predescu <ovidiu@net-community.com>, Ovidiu Predescu <ovidiu@net-community.com> and Nicola Pero <n.pero@mi.flashnet.it> . .SH AUTHORS This man page was written by Dennis Leeuw <dleeuw@made-it.com> December 2007. .SH COPYRIGHT Copyright (C) 2007 Free Software Foundation, Inc. .PP Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. ����������gnustep-make-2.7.0/Documentation/gnustep-faq.texi���������������������������������������������������0000664�0001750�0001750�00000071063�11255116106�021677� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\input texinfo @c -*-texinfo-*- @c A FAQ for GNUstep @node Top, Compatibility, (dir), (dir) @chapter GNUstep Frequently Asked Questions with Answers Last updated @today{}. Please send corrections to @email{gnustep-maintainer@@gnu.org}. Also look at the user FAQ for more user oriented questions. @menu * Compatibility:: * Compiling and Developing:: * GNU Objective C Compiler and Runtime:: * GNUstep Base Library:: * GNUstep GUI Library:: * GNUstep DisplayGhostScript Server:: @end menu @c **************************************************************** @c Compiling @node Compatibility, Compiling and Developing, Top, Top @section Compatibility @menu * Is it easy to port OPENSTEP programs to GNUstep?:: * How about porting between Cocoa and GNUstep?:: * Tools for porting:: * Can I transfer archived data from GNUstep to Cocoa?:: * Does distributed objects work between GNUstep and Cocoa?:: * Is there an Interface Builder for GNUstep?:: * Can I use my original NIB files?:: * Can one use the hybrid "Objective-C++":: * Is there a plan to support Java/YellowBox Bindings?:: * What if I compile GNUstep under OPENSTEP/MacOS X?:: * Is the Objective C API for GTK related?:: * How about implementing parts of the Application Kit with GTK?:: @end menu @node Is it easy to port OPENSTEP programs to GNUstep?, How about porting between Cocoa and GNUstep?, Compatibility, Compatibility @subsection Is it easy to port OPENSTEP programs to GNUstep? It is probably easy for simple programs. There are some portability tools to make this easier, or rewrite the Makefiles yourself. You will also have to translate the NIB files (if there are any) to GNUstep model files using the nib2gmodel program (from @url{ftp://ftp.gnustep.org/pub/gnustep/dev-apps}). @node How about porting between Cocoa and GNUstep?, Tools for porting, Is it easy to port OPENSTEP programs to GNUstep?, Compatibility @subsection How about porting between Cocoa and GNUstep? It's easier from GNUstep to Cocoa than Cocoa to GNUstep. Cocoa is 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: @itemize @bullet @item Use #ifndef GNUSTEP for Apple only code. @item Do not use CoreFoundation @item Do not use Objective-C++ (except with gcc 4.1 or later) @item Do not use Quicktime or other proprietary extension @item GNUstep should be able to read Cocoa nib files automatically, so there is no need to port these, although you might want to have GNUstep specific versions of them anyway. @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 While the programming interface should be almost transparent between systems (expect for the unimplemented parts, of course), there are a variety of other files and tools that are necessary for porting programs. @table @samp @item nib2gmodel This program coverts nib files from any system, such as OPENSTEP to a gmodel format file. Gmodel can be read directly by GNUstep or you can convert this to a more GNUstep-native gorm format (using the Gorm interface modeller). Note this is not necessary for Cocoa nibs - GNUstep can read these directly. @item Renaissance GNUstep Renaissance allows you to describe your user interfaces (that is, the windows in your application, and the buttons, boxes, textfields, etc in the windows) in simple and intuitive XML files, using an open, standard format describing the logic of the 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 only for OPENSTEP systems and are a little out-of-date. @item StepTalk A portable scripting environment that lets your do scripting in almost any language you like. @end table @node Can I transfer archived data from GNUstep to Cocoa?, Does distributed objects work between GNUstep and Cocoa?, Tools for porting, Compatibility @subsection Can I transfer archived data from GNUstep to Cocoa? Apple's archiving format is proprietary and not documented, so this poses a problem for anyone wanting to implement compatibility with it. However, even if we reverse engineered the format, there are enough differences between the class and ivar layouts to make this sort of compatibility difficult. Not to mention the fact that we would constantly have to keep up with the changes Apple made. The new keyed archiving using XML file formats is much more portable, and GNUstep is trying to maintain compatibility with Apple with this type of archiving. @node Does distributed objects work between GNUstep and Cocoa?, Is there an Interface Builder for GNUstep?, Can I transfer archived data from GNUstep to Cocoa?, Compatibility @subsection Does distributed objects work between GNUstep and Cocoa? See the answer to the previous question (on archive compatibility) for why this won't work either. @node Is there an Interface Builder for GNUstep?, Can I use my original NIB files?, Does distributed objects work between GNUstep and Cocoa?, Compatibility @subsection Is there an Interface Builder for GNUstep? There is an Interface Builder for GNUstep called Gorm. A lot of work has been put into it and it works very well. You can download it from the ftp site or via http. The Project Manager ProjectCenter is also available. @node Can I use my original NIB files?, Can one use the hybrid "Objective-C++", Is there an Interface Builder for GNUstep?, Compatibility @subsection Can I use my original NIB files? No - NeXT/Apple never documented their nib format, so GNUstep supports both the 'gmodel' format (which stores information as text (property-lists) and can therefore be edited 'by hand') and binary archive format (which can be edited by Gorm). There IS a conversion tool called nib2gmodel that can be compiled under OPENSTEP to convert nib files to GNUstep gmodel files. The current version of gui supports reading nib files created as of 10.2. If you have nib files which are older than this, you can convert them by loading them into Interface Builder, going to the "file" second and saving the nib using the "10.2 or later format." @node Can one use the hybrid "Objective-C++", Is there a plan to support Java/YellowBox Bindings?, Can I use my original NIB files?, Compatibility @subsection Can one use the hybrid "Objective-C++" Yes gcc 4.1 has support for this. @node Is there a plan to support Java/YellowBox Bindings?, What if I compile GNUstep under OPENSTEP/MacOS X?, Can one use the hybrid "Objective-C++", Compatibility @subsection Is there a plan to support the Java/YellowBox Bindings? Yes. The GNUstep Java library/bridge called JIGS is available now. JIGS is a free (LGPL) Java Interface for GNUstep; it can automatically wrap Objective-C libraries based on GNUstep, making them accessible directly to the Java programmer as if they were Java libraries. As a side effect, it is also possible to use the whole engine in the reverse way: JIGS provides a high level API to allow Objective-C programmers to start java virtual machines inside GNUstep Objective-C code and access java objects in the java virtual machine transparently, as if they were objective-C objects. @node What if I compile GNUstep under OPENSTEP/MacOS X?, Is the Objective C API for GTK related?, Is there a plan to support Java/YellowBox Bindings?, Compatibility @subsection What if I compile GNUstep under OPENSTEP/MacOS X? GNUstep uses different backends to provide the same functionality as Display Postscript. While someone could write a backend library to provide the interface, nobody has bothered to date. You can, however, use a GNUstep program with an X11 server running on MacOSX. @node Is the Objective C API for GTK related?, How about implementing parts of the Application Kit with GTK?, What if I compile GNUstep under OPENSTEP/MacOS X?, Compatibility @subsection Is the Objective C API for GTK related? No. GNUstep applications provide their GUI via the OpenStep API, which provides fully object-oriented access to GUI manipulation. The object-oriented nature of the libraries and language make it much easier for new users to create their own subclasses rather than simply using the supplied widgets as in other frameworks. @node How about implementing parts of the Application Kit with GTK?, , Is the Objective C API for GTK related?, Compatibility @subsection How about implementing parts of the Application Kit with GTK? Yes and No - The GNUstep architecture provides a single, platform-independent, API for handling all aspects of GUI interaction (implemented in the gstep-gui library), with a backend architecture that permits you to have different display models (display postscript, X-windows, win32, berlin ...) while letting you use the same code for printing as for displaying. Use of GTK in the frontend gui library would remove some of those advantages without adding any. That being said, a backend library could be implemented using gtk if anyone wanted to do so. Since the frontend library handles most of the work involved in implementing the OpenStep API, the backend is a relatively thin layer and the advantages of GTK over direct xlib or win32 calls is likely to be minimal. If/when GTK is ported to more systems, a backend written using it could be a valuable asset - volunteers are, as always, welcome. @c **************************************************************** @c Compiling @node Compiling and Developing, GNU Objective C Compiler and Runtime, Compatibility, Top @section Compiling and Developing @menu * How can I get started programming?:: * 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?:: * How can I help with the GNUstep website?:: * Why doesn't GDB support Objective-C?:: @end menu @node How can I get started programming?, How can I help with GNUstep?, Compiling and Developing, Compiling and Developing @subsection How can I get started programming? Good question. Read the tutorials at the GNUstep web site. Also look at Apple's documentation (pointers in the Resources section on the GNUstep web site.) @node How can I help with GNUstep?, Helping develop GNUstep, How can I get started programming?, Compiling and Developing @subsection How can I help with GNUstep? @enumerate @item Write/debug library code @item Write documentation @item Update the task list and library headers @item Write applications @end enumerate Let people know what you are doing. Break your project up into the smallest units you can. Feed back frequent updates to the 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 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 as possible with incremental changes that don't break anything - that way you can make those incremental changes available to the rest of the community at frequent intervals. Don't be afraid to give up - there is no shame in finding out that you have take on too large/complex a project. It's much better to 'resign' and take on a smaller job than to just stop without telling anyone. Please document the code you add or change (using autogsdoc comments that begin with a slash and two asterices). But PLEASE, do not copy from the Apple documentation or any other copyrighted documentation. @node Helping develop GNUstep, Helping document GNUstep, How can I help with GNUstep?, Compiling and Developing @subsection Helping develop GNUstep There is plenty of unimplemented stuff in the gui library and backend libraries that volunteers can work on - just browse through the code and see if it conforms to the documentation. Specific tasks are noted in the developers section on the GNUstep website. Once you have coded something, you could always write a testcase and documentation for it :-) @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 and translated using the autogsdoc program. See the source code and documentation for autogsdoc for information on documenting the classes. Newcomers could write documentation for individual classes by comparing the OpenStep specification, the MacOS-X documentation, and the GNUstep source. Documentation should clearly note where individual methods are specific to OpenStep, MacOS-X or are GNustep extensions. More experienced people could write documentation on general programming topics, and tutorials for new users. Anyone willing to write documentation, either tutorials for using GNUstep, or reference documentation for individual classes, should either write it in gsdoc or as plain ascii text for someone else to format into gsdoc. GNUstep documentation should have copyright assigned to the Free Software Foundation. @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 supposed to tell people what jobs are waiting to be done. Feel free to add to it or update the tasks that are there (you need to create a login for yourself first). One job of major importance that pretty much anyone can do is to look for jobs to add to the task list. In the case of methods from the OpenStep specification or the MacOS-X documentation not being present in the GNUstep libraries, it is also helpful to add the method prototypes to the library header files. Send any changes or additions to @email{bug-gnustep@@gnu.org}. A beginner can look through the MacOS-X documentation, the OpenStep specification and the GNUstep source and contribute task items. If a class or method is in MacOS-X and OpenStep but is not in GNUstep - it's a high priority TODO and should at least be added to the GNUstep headers and a dummy version added to the source with a FIXME comment. If a class or method is in MacOS-X but not OpenStep or GNUstep - it's a low priority TODO. It should be added to the GNUstep headers bracketed in @code{#ifndef STRICT_OPENSTEP} If a class or method is in OpenStep but not in MacOS-X or GNUstep - it's a low priority TODO. It should be added to the GNUstep headers bracketed in @code{#ifndef STRICT_MACOS_X} There are a couple of people working on this already, so it's a good idea to get in touch with Greg, Adam or Richard to coordinate efforts. @node How do I start writing tests?, How do I start writing applications?, How do I update the task list?, Compiling and Developing @subsection How do I start writing tests? You can write testcases - where the libraries fail tests, you could either fix the problem, or add it to the task list. To write testcases, you need to use svn to install the latest GNUstep sourcecode you can find. Then checkout the 'gnustep/tools/testsuite' module from svn. @node How do I start writing applications?, How can I help with the GNUstep website?, How do I start writing tests?, Compiling and Developing @subsection How do I start writing applications? You can either look at the links on the GNUstep website for applications that have been started, and email their owners to volunteer to help, or you can start your own project. @node How can I help with the GNUstep website?, Why doesn't GDB support Objective-C?, How do I start writing applications?, Compiling and Developing @subsection How can I help with the GNUstep website? Talk to Adam Fedor @email{fedor@@gnu.org}, the maintainer. The GNUstep website is kept as a CVS module, but the largest portions of it (the FAQ and the Documentation) are actually generated from files in the individual GNUstep packages. Many highly changeable portions are kept on the Wiki, so anyone can change these (first you need to get write access, though). If you want to update the FAQ or documentation - grab the latest snapshot of the GNUstep core you can find, update it from the svn repository, and work with the contents of the appropriate documentation directory. If you want to work on other parts of the website, you can grab a copy of the website via anonymous CVS. See @url{http://savannah.gnu.org/cvs/?group_id=99} for instructions on how to do that. The main task with the website is to figure out which bits are out-of-date (or wrong) and update/mark-as-outdated as required. @node Why doesn't GDB support Objective-C?, , How can I help with the GNUstep website?, Compiling and Developing @subsection Why doesn't GDB support Objective-C? As of GDB 6.0, gdb supports debugging of Objective-C code. @c ------------------------------------------------------------------- @node GNU Objective C Compiler and Runtime, GNUstep Base Library, Compiling and Developing, Top @section GNU Objective C Compiler and Runtime @menu * What is the Objective C Runtime?:: @end menu @node What is the Objective C Runtime?, , GNU Objective C Compiler and Runtime, GNU Objective C Compiler and Runtime @subsection What is the Objective C Runtime? The Objective C Runtime Library provides C functions and data structures required to execute an Objective C program. The GNU Objective C Runtime Library offers everything NeXT's runtime does, including Categories, Protocols, @samp{+poseAs:}, thread-safety, class initialization on demand, delayed loading of classes, and initialization of static instances (such as @@""-style string objects). It also has several differences over NeXT's implementation: @itemize @bullet @item GNU's runtime provides ``selector-types'' along with each selector; NeXT's does not. A selector-type is a string that describes the C variable types for the method's return and argument values. Among other uses, selector-types is extremely helpful for fast distributed objects implementations, (see GNUstep Base Library Section, below). @item Many of the GNU functions have different names than their corresponding NeXT functions; the GNU names conform to the GNU coding standards. The GNUstep base library contains a compatibility header that works with both runtimes. You should use functions there or use OpenStep Foundation methods/functions instead of the basic runtime functions so that you code can run with either system. Apple has recently added new functionality to their runtime, including built-in exception handling, etc. Hopefully these will be ported to the GNU runtime in the future. @end itemize @c ------------- GNU Compiler and Objective C Runtime Library ------- @node GNUstep Base Library, GNUstep GUI Library, GNU Objective C Compiler and Runtime, Top @section GNUstep Base Library @menu * What is the GNUstep Base Library?:: * What is base's current state of development?:: * What are the features of GNU Distributed Objects?:: @end menu @node What is the GNUstep Base Library?, What is base's current state of development?, GNUstep Base Library, GNUstep Base Library @subsection What is the GNUstep Base Library? The GNUstep Base Library is a library of general-purpose, non-graphical Objective C objects. For example, it includes classes for strings, object collections, byte streams, typed coders, invocations, notifications, notification dispatchers, moments in time, network ports, remote object messaging support (distributed objects), and event loops. It provides functionality that aims to implement the non-graphical portion of the OpenStep standard (the Foundation library). @node What is base's current state of development?, What are the features of GNU Distributed Objects?, What is the GNUstep Base Library?, GNUstep Base Library @subsection What is its current state of development? GNUstep base is currently stable and, to the best of our knowledge, implements all of the OpenStep functionality (except for a few classes that we feel are not useful). It also implements most all of the new Cocoa classes. However we do some things, like scripting, differently, so we don't implement all the Cocoa classes. @node What are the features of GNU Distributed Objects?, , What is base's current state of development?, GNUstep Base Library @subsection What are the features of GNU Distributed Objects? GNU Distributed Objects has many of the features of other distributed objects implementations, but, since it is free software, it can be ported to platforms for which other distributed objects implementations are not available. [ NOTE: The GNU distributed object facilities have the same ease-of-use as Apple's; be warned, however, that they are not compatible with each other. They have different class hierarchies, different instance variables, different method names, different implementation strategies and different network message formats. You cannot communicate with a Apple NSConnection using a GNU NSConnection. Here are some differences between GNU distributed objects and Apple's distributed objects: Apple NSDistantObject asks it's remote target for the method encoding types and caches the results; GNU NSDistantObject gets the types directly from the local GNU "typed selector" mechanism if the information is known locally and only queries the remote target or caching encoding types when using a method that is not known to the local process. The NSProxy for the remote root object always has name and, once set, you cannot change the root object of a NSConnection; the GNU Proxy for the remote root object has a target address value just like all other Proxy's, and you can change the root object as many times as you like. ]. @c --------------------------GNUstep Base Library---------------------- @node GNUstep GUI Library, GNUstep DisplayGhostScript Server, GNUstep Base Library, Top @section GNUstep GUI Library @menu * What is the GUI Library?:: * Explain the organization of the front- and back-ends:: * What is the current state of development of the front-end?:: * What is the current state of development of the back-ends?:: @end menu @node What is the GUI Library?, Explain the organization of the front- and back-ends, GNUstep GUI Library, GNUstep GUI Library @subsection What is the GUI Library? The GNUstep GUI Library is a library of objects useful for writing graphical applications. For example, it includes classes for drawing and manipulating graphics objects on the screen: windows, menus, buttons, sliders, text fields, and events. There are also many peripheral classes that offer operating-system-independent interfaces to images, cursors, colors, fonts, pasteboards, printing. There are also workspace support classes such as data links, open/save panels, context-dependent help, spell checking. It provides functionality that aims to implement the @samp{AppKit} portion of the OpenStep standard. However the implementation has been written to take advantage of GNUstep enhancements wherever possible. @node Explain the organization of the front- and back-ends, What is the current state of development of the front-end?, What is the GUI Library?, GNUstep GUI Library @subsection Explain the organization of the front- and back-ends The GNUstep GUI Library is divided into a front- and back-end. The front-end contains the majority of implementation, but leaves out the low-level drawing and event code. A back-end can override whatever methods necessary in order to implement low-level drawing event receiving. Different back-ends will make GNUstep available on various platforms. The default GNU back-end will run on top of X Windows. Other back-ends could allow GNUstep to run on OpenGL and WIN32 graphics/event platforms. Much work will be saved by this clean separation between front- and back-end, because it allows different platforms to share the large amount of front-end code. @node What is the current state of development of the front-end?, What is the current state of development of the back-ends?, Explain the organization of the front- and back-ends, GNUstep GUI Library @subsection What is the current state of development of the front-end? Many of the classes are well implemented, if not thoroughly tested. See the GNUstep web sites and read status information contained in the distribution for the most up-to-date information. @node What is the current state of development of the back-ends?, , What is the current state of development of the front-end?, GNUstep GUI Library @subsection What is the current state of development of the back-ends? There are several backends currently available: @table @samp @item xlib This backend runs on X11 and uses standard xlib calls for implementing drawing. It works well, but is limited in many areas due to the limitations of xlib drawing. @item art This is a very good backend that draws using the libart package and freetype with near PostScript quality and functionality. It is currently the standard backend (as long as the required libraries are installed). @item w32 This backend works on Windows and uses basic Windows drawing @item cairo An up-and-coming backend. It still relies on unpublished functions in the cairo library so using it is not for the beginner. @end table @c ------------------------- GNUstep GUI Library ----------------------- @node GNUstep DisplayGhostScript Server, , GNUstep GUI Library, Top @section GNUstep DisplayGhostScript Server @menu * What is the Display Ghostscript Server?:: * What is DGSs current state of development?:: * What is the relationship between the Display Ghostscript Server and X Windows?:: @end menu @node What is the Display Ghostscript Server?, What is DGSs current state of development?, GNUstep DisplayGhostScript Server, GNUstep DisplayGhostScript Server @subsection What is the Display Ghostscript Server? It is a free implementation of a Display PostScript server based on the GNU Ghostscript program developed by Aladdin Enterprises and now owned by artofcode LLC. At one point, GNUstep was using this for display purposes. However the development of DGS has stopped as it is too difficult to maintain and no one wanted to work on it. Now we are using other means of drawing. @node What is DGSs current state of development?, What is the relationship between the Display Ghostscript Server and X Windows?, What is the Display Ghostscript Server?, GNUstep DisplayGhostScript Server @subsection What is its current state of development? GNU contracted with Aladdin Enterprises to add some key features to GNU Ghostscript so it could be used as a DPS server. This work has mostly been done, although Aladdin did not completely finish the work that they were contracted for. (Because the work took longer than specified and was not completed, Aladdin agreed to waive approximately $10,000 in promised fees for the work that was actually done and delivered.) DGS works fairly well with a single context. Alpha channel and compositing doesn't work. Currently, further development on DGS has been abandoned. The library based approach using libart, cairo, etc works much better. @node What is the relationship between the Display Ghostscript Server and X Windows?, , What is DGSs current state of development?, GNUstep DisplayGhostScript Server @subsection What is the relationship between the Display Ghostscript Server and X Windows? Display Ghostscript runs on top of X Windows. @c ------------------ GNUstep DisplayGhostScript Server --------------- @bye \bye �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/README.MinGWOnCygwin�����������������������������������������������0000664�0001750�0001750�00000017106�10377003773�022077� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� Cross Compiling GNUstep for MinGW from Cygwin ============================================= If you wish to build on a native MinGW system (recommended), please read README.MinGW instead. MinGW is a collection of header files and import libraries that allow one to use GCC and produce native Windows32 programs that do not rely on any 3rd-party DLLs. GNUstep has only partially been ported to MinGW so expect some problems when trying to compile. Also, there are still subtle problems with running GNU tools on Windows, so any problems you may encounter may just as easly have to do with the compilation tools you are using as with GNUstep. The base library is not completely ported to run on MinGW yet, but most stuff works, including networking/distributed objects. Probably background file handle operations (other than networking) and advanced parts of NSTask code do not currently work. Note for compiling with shared libraries (DLLs), it's a good idea to remove the libobjc.a that comes with gcc (gcc -v for location) so that it isn't accidentally found instead of the libobjc DLL that you will compile below. Also note that, despite the statement in the GNUstep-HOWTO, even if you have 3.x, you still need to install gnustep-objc as it properly exports symbols for DLLs. Note also that the //c construct for specifying paths with drives has been depreciated. You'll need to use /cygwin/path or C: style paths now. MinGW on Cygwin --------------- Not recommended. This is a cross compilation solution. Using native mingw/msys is simpler and less error prone. Uses the Cygwin tools to help out with the configuration and compilation of the libraries. It's always good to get the very latest version of Cygwin and MinGW. These instructions were performed with Cygwin DLL 1.3.9-1 and MingW gcc 2.95.3-6. If you have more experience with MinGW than me, please help improve these instructions! I assume you have installed Cygwin and MinGW, and dowloaded and unpacked the GNUstep packages: ffcall gnustep-make gnustep-objc gnustep-base See the GNUstep-HOWTO file for more information on where to get various files. You need to build and install each package separately, as described below. 1. First, start up a Cygwin BASH shell and make sure the MinGW tools are in your path: export PATH=/c/mingw/bin:$PATH (Put in whatever path you have for the mingw tools). NB. Using MinGW-1.1 the header file winsock2.h needed to be slightly updated for 2000 or XP. The size of the sa_data field in struct sockaddr had to be increased from 14 to 22. If you don't do this before building the gnustep base library, the gdomap tool will not correctly determine the internet addresses of your machine. 2. Configure and compile gnustep-make. The default location for GNUstep on Windows systems in C:/GNUstep. To use another location you can use the --prefix argument to configure. First, go to the 'gnustep-make' package and configure: cd gnustep-make ./configure --target=i386-mingw32 2a. The configure script may not have recognised that you are running in a cygwin environment ... so you may need to edit 'fixpath.sh' to set the CYGWIN variable to 'yes' before you build and install the make package. 3. Now build the gnustep-make package. Occationally, the make that comes with MinGW doesn't like the way GNUstep makefiles are setup (or perhaps it's that MingW make doesn't work with bash), so you can try using Cygwin's make instead (/usr/bin/make instead of just make). make target=i386-mingw32 make target=i386-mingw32 install 4. Now source the GNUstep.sh file so the rest of the packages will compile correctly: . C:/GNUstep/System/Library/Makefiles/GNUstep.sh Also put this command in your shell startup script. Be sure to adjust this path to match your real GNUstep root directory if you changed it when configuring gnustep-make. NOTE for WIN98 users: You should also define the environment variables HOMEDRIVE and HOMEPATH, since these aren't defined normally. 5. Compile and install the ffcall package (Version 1.8b). It's simply a C library so it requires no special tools other than the compiler. LD=ld RANLIB=touch ./configure --target=i386-mingw32 \ --prefix=`$GNUSTEP_MAKEFILES/fixpath.sh -u $GNUSTEP_SYSTEM_ROOT` which installs the libraries in the GNUstep directory structure (There is a script in ffcall-1.8d and higher that automatically configures ffcall and installs, called compile-mingw). Then make # NOTE: Might need to be 'make LN_S=cp' make install 6. Now you can compile the Objective-C runtime DLL, gnustep-objc (unless you already have one installed): cd gnustep-objc make target=i386-mingw32 shared=yes make target=i386-mingw32 shared=yes install Make sure to remove libobjc.a that comes with gcc, otherwise it will find that one instead of the one we want. The libobjc library that comes with gcc-3.x MAY work if you add some extra lines to the .def file, but I won't go into that here. It's good just to use gnustep-objc. 7. Now we can configure and build the gnustep-base library. cd gnustep-base ./configure --target=i386-mingw32 make target=i386-mingw32 shared=yes make target=i386-mingw32 shared=yes install If you get tired of typing "target=i386-mingw32" all the time, then before you exec the GNUstep.sh script, just set the GNUSTEP_HOST: export GNUSTEP_HOST=i586-pc-mingw32 . $GNUSTEP_SYSTEM_ROOT/Library/Makefiles/GNUstep.sh Problems? --------- [1] It's really important that all the libraries you link with GNUstep be shared libraries. Even static libraries based on C (e.g. libtiff) will prevent Objective-C modules from being loaded in Objective-C libraries. [2] On Windows XP, at least, there are sometimes spaces in the path to the user directory. The make program cannot deal with this. Probably the best solution is to add a .GNUsteprc file in your home directory with a line of the form - GNUSTEP_USER_ROOT=/home/myname setting your personal GNUstep root directory to be '/home/myname' ... some path which does not contain spaces. [3] Some users report needing to make gnustep libs like this (perhaps when using Cygwin's gcc only): export CC="gcc" export CFLAGS="-mno-cygwin" export CPPFLAGS="-mno-cygwin" find . -name "*.lnk" -print -exec rm {} \; make target=i386-mingw32 shared=yes LN_S="ln -s" \ SHARED_LD_PREFLAGS="--driver-flags=\"-mno-cygwin -mdll -Wl,--enable-stdcall-fixup\" --target=i386-mingw32 --export-all-symbols" [4] Compiling iconv (1.8): (the part with the most problems - maybe you download it precompiled but if you want to compile it - here is the guide) Make sure you are compiling from a mapped drive (eg. d:) not from an UNC Path!!!! ./configure --target=i386-mingw32 --host=i386-mingw32 (ignore warnings here) edit libtool and libcharset/libtool so that the CC variable reads "gcc -mno-cygwin -mdll" make (After a while make breaks with an error in linking) find . -name "*.lnk" -print -exec rm {} \; make (make breaks now in the src folder, but the DLL is already buildt, that is what we need) cp include/iconv.h $GNUSTEP_SYSTEM_ROOT/Headers cp lib/.libs/libiconv-2.dll $GNUSTEP_SYSTEM_ROOT/Tools/libiconv-2.dll cp lib/.libs/libiconv.dll.a $GNUSTEP_SYSTEM_ROOT/Libraries/libiconv.a Good Sites for Pre-Compiled Binaries ------------------------------------ Many libraries, etc from: <http://sourceforge.net/project/showfiles.php?group_id=7382> <http://penguin.at0.net/~fredo/files/old/> (for libxml2, more?) <http://sourceforge.net/project/showfiles.php?group_id=23617> (libtiff) MingW guile from <http://www.textsure.net/~ela/devel.html>. also need guile from <http://sourceforge.net/project/showfiles.php?group_id=7382> for guile-config file. Author ------ Adam Fedor <fedor@gnu.org> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/gnustep-howto.texi�������������������������������������������������0000664�0001750�0001750�00000043674�11540105560�022276� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\input texinfo @c -*-texinfo-*- @c GNUstep installation instructions @c %**start of header @setfilename gnustep-howto.info @settitle GNUstep HOWTO @c %**end of header @set HOWTO @setcontentsaftertitlepage @smallbook @titlepage @title GNUstep HOWTO @subtitle Installing the GNUstep developement system @vskip 0pt plus 1filll @emph{This document explains how to build the different components of the GNUstep core libraries.} Last Update: @today{} @page @vskip 0pt plus 1filll Copyright @copyright{} 1996 - 2007 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation. @end titlepage @ifinfo @format GNUstep HOWTO ************* Last Update: @today{} This document explains how to build the different components of the GNUstep core libraries and GNUstep Launchpad. Copyright (C) 1996 - 2007 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Public License, Version 1.0 or any later version published by the Free Software Foundation. @end format @end ifinfo @include version.texi @node Top, Introduction, (dir), (dir) @menu * Introduction:: * Preliminaries:: * Compiling and Installing:: * Additional Installation:: * Tools and Applications:: * Machine Specific:: * Source via SVN:: @end menu @node Introduction, Preliminaries, Top, Top @chapter Introduction This document explains how to build the GNUstep core libraries. The core libraries, along with associated tools and other files provide everything necessary for a working GNUstep system. In order to easily compile and debug GNUstep projects, you will need the GNU Objective-C compiler @samp{GCC} as well as various other GNU packages. You will need at least 80Mb of hard disk space (150Mb prefered) in order to compile the GNUstep core libraries. @node Preliminaries, Compiling and Installing, Introduction, Top @chapter Summary In order to compile the libraries, you need to compile and install the following packages first (if you don't already have them): @itemize @bullet @item gcc (Version 2.95 or greater, 3.0.4 or greater recommended) @item GNU make (Version 3.75 or greater) @item gdb (Version 6.0 or greater recommended), if you plan to do any debugging @end itemize You may also need to install some of the following libraries and packages described below. Most of these packages are optional, but some are required. @table @samp @item ffcall libraries (HIGHLY RECOMMENDED) This is a library that provides stack-frame handling for NSInvocation and NSConnection. This library is highly recommended. The previous builtin method for stack frame handling is no longer supported and may be removed in the future. 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. @item libffi library (ALTERNATIVE RECOMMENDATION) This is a library that provides stack frame handling for NSInvocation and NSConnection similar to ffcall. 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 not required, but you have to explicitly disable use of XML when compiling GNUstep base if you do not have it. @item libxslt (OPTIONAL) Stylesheet support for use with XML. @item openssl (OPTIONAL) The openssl library is used to provide support for https connections by the NSURL and HSURLHandle classes. This functionality is compiled as a separate bundle since the OpenSSL license is not compatible with GPL, and in the hopes that if someone writes an openssl replacement, it can quickly be used by creating another bundle. @item libiconv (OPTIONAL) Note: Do not install this library unless you are sure you need it. You probably don't need it except perhaps on MinGW. Unicode support functions (iconv) come with glibc version 2.1 or greater. If you don't have glibc (try iconv --version), you can get the separate libiconv library from @url{http://clisp.cons.org/~haible/packages-libiconv.html}. However, neither one is required to use GNUstep. @item The TIFF library (libtiff) (Version 3.4beta36 or greater) (REQUIRED) The GUI library uses this to handle loading and saving TIFF images. @item The JPEG library (libjpeg) (RECOMMENDED) 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 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. Use v19, which has several API changes since the previous version. v19 hasn't actually been formally released, but several distributions (SuSE, etc) use it anyway. @item freetype2 (RECOMMENDED, REQUIRED for art backend) This is used for font information. Freetype2 cache API is in flux. GNUstep tries to account for this, but if you get errors about undefined FTC_ symbols, you might be using an unsupported version of freetype. @item libart_lgpl2 (REQUIRED for art backend only) Drawing library for the art backend. @item WindowMaker (Version >= 0.62) (OPTIONAL) GNUstep and WindowMaker work together to provide a consistant interface. 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.info}. @item gnustep-objc package (REQUIRED BUT ONLY for gcc version < 3.0 or MINGW/Cygwin) Note: Do not install this library unless you are sure you need it. 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 is compiled as a shared library. It is available at @url{ftp://ftp.gnustep.org/pub/gnustep/libs} which compiles using the GNUstep Makefile package (so you don't have to get the entire gcc dist). Make sure to set the THREADING variable in the GNUmakefile. It's possible to compile the library static (make shared=no) and just copy to the place where the gcc libobjc library is (type gcc -v to get this location). Note you have to install gnustep-make (below) before installing this library. @item GDB (OPTIONAL) GDB can be obtained from @url{ftp://ftp.gnu.org/gnu/gdb}. As of release 6.0, gdb has special support for debugging Objective-C programs. @item TeX (OPTIONAL) You need a TeX implementation, like tetex, to compile some of the documentation (although most of that is available on the web). @end table @node Compiling and Installing, Additional Installation, Preliminaries, Top @chapter Compiling and Installing the packages Get the following individual packages: @itemize @bullet @item gnustep-make @item gnustep-base @item gnustep-gui @item gnustep-back @end itemize See @url{http://www.gnustep.org} for information on where to get these packages. Make sure you install (if necessary) all the previously mentioned libraries first before configuring and building GNUstep. You should install these packages as root (read special note for the gnustep-base library, below, if you cannot do this). For installation on specific systems, read the machine specific instructions at the end of this document or appropriate README files in the gnustep-make Documentation directory (such as README.MingW for Windows). @menu * Core Package:: @end menu @node Core Package, , Compiling and Installing, Compiling and Installing @section Installing the Core Libraries The GNUstep packages uses the Autoconf mechanism for configuration; it checks some host capabilities which are used by all GNUstep software. The first package you will compile is gnustep-make. To configure gnustep-make just type: @example ./configure @end example The GNUstep makefile package can be configured to use different types of filesystem layouts. By default, GNUstep is installed with a Unix-style filesystem layout into /usr/local/. That is a good, recommended default if you don't have an opinion on which filesystem layout to use. But you can also install it somewhere else by using the prefix parameter; the following command installs it in /opt/GNUstep: @example ./configure --prefix=/opt/GNUstep @end example You can also install GNUstep using a GNUstep layout (or some other filesystem layout of your choice) by using the with-layout parameter; the following command configures GNUstep to use the traditional GNUstep layout: @example ./configure --with-layout=gnustep @end example In this document we will always present examples that assume that you are using the default filesystem layout in /usr/local/. If you are using a different layout, you will need to make the obvious changes. @menu * Alternate Library Setup:: * Individual Packages:: @end menu @node Alternate Library Setup, Individual Packages, Core Package, Core Package @subsection Alternate Library Setup Read the installation instructions in the Makefile package (make) for more installation options. Make sure you use the same configuration options when configuring each GNUstep library. @node Individual Packages, , Alternate Library Setup, Core Package @subsection Building the Package To build the individual packages, use this familiar set of commands for each pacakge (add any additional options you decide upon): @example ./configure make make install @end example Start with the Makefile Package (gnustep-make). After installing gnustep-make you need to execute GNUstep's shell configuration script, as follows: @example . /usr/local/share/GNUstep/Makefiles/GNUstep.sh @end example before proceeding any further. NOTE for gcc 2.X or MinGW users: Now install gnustep-objc. Before building gnustep-objc, edit the @file{GNUmakefile} and set the @var{THREADING} variable to the thread library used on your system (usually its posix, but you can leave it at single if you don't need threads). At this point you should probably re-configure, make and install gnustep-make, so it can pick up on any threading information that gnustep-objc provides. Now install gnustep-base, gnustep-gui and finally gnustep-back. NOTE: If you are trying to install the packages without root permission, you may need to change one thing in the base library. Edit the file gnustep-base/Tools/gdomap.h to uncomment the last line and modify the specified port number to a port which you @emph{know} is not in use on your network. You should only do this if absolutely necessary since making this change will break communications with any systems where an identical change has not been made. Also, the standard gdomap port is the one officially registered with IANA and is reserved for use by gdomap - it should only be changed if you can't get your system administrator to start the gdomap server using it. @node Additional Installation, Tools and Applications, Compiling and Installing, Top @chapter Additional Installation @menu * Environment Setup:: * GNUstep Home:: * Time Zone:: * GNUstep deamons:: @end menu @node Environment Setup, GNUstep Home, Additional Installation, Additional Installation @section Environment Setup You need to make sure your environment is properly setup in order to compile and run GNUstep software. The steps to setup your environment differ slightly depending on your filesystem layout. There is a way of setting up your environment that always works: sourcing the @file{GNUstep.sh} shell script before using GNUstep. The shell script @file{GNUstep.sh} is located in the Makefile package; you may want to add it to your shell startup file (such as @file{.profile}). For instance, if you installed GNUstep with the default filesystem layout in @file{/usr/local}, then adding @example . /usr/local/share/GNUstep/Makefiles/GNUstep.sh @end example in your @file{.profile} file will work. Note the period at the beginning of the line, and the space between the period and the following path. If you installed GNUstep somewhere else, you need to replace @file{/usr/local/share/GNUstep/Makefiles/GNUstep.sh} with the path to your @file{GNUstep.sh} script. Another typical location is @file{/usr/GNUstep/System/Library/Makefiles}, which is the default location of your @file{GNUstep.sh} script when gnustep-make is configured with the GNUstep layout. The script defines environment variables that are needed to find GNUstep files and executables. Users of csh need to use the @file{GNUstep.csh} script. Read the make package @file{README} for more info. Some systems, like GNU/Linux have an @file{/etc/profile.d} directory where scripts can be executed automatically. If you want to set up GNUstep for every user on your system, you can try copying/linking the @file{GNUstep.sh} there. For csh or tcsh, try @example source /usr/local/share/GNUstep/Makefiles/GNUstep.csh @end example Finally, in most filesystem configuration it's also possible to manually set up your environment by setting PATH, the linker library paths and the @code{GNUSTEP_MAKEFILES} variable (instead of using @file{GNUstep.sh}). For example, on GNU/Linux (with a default GNUstep installation), instead of sourcing @file{GNUstep.sh} you could manually add the Tools directories to your PATH: @example PATH="/usr/local/bin:$PATH" @end example manually add @file{/usr/local/lib} to your @file{/etc/ld.so.conf} file (don't forget to run @code{ldconfig} every time you install a library), and set the environment variable @code{GNUSTEP_MAKEFILES} when you want to compile something: @example GNUSTEP_MAKEFILES=/usr/local/share/GNUstep/Makefiles @end example @node GNUstep Home, Time Zone, Environment Setup, Additional Installation @section GNUstep Home 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 @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 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. See @file{/usr/local/lib/GNUstep/Libraries/gnustep-base/Versions/1.21/Resources/NSTimeZones/zones/} (or equivalent on your system depending on your filesystem layout) for typical time zones. @node GNUstep deamons, , Time Zone, Additional Installation @section GNUstep deamons Set up your system to execute some GNUstep deamons. This is optional because if you don't do this, they will be started automatically when you run your first GNUstep app: @itemize @bullet @item gdomap - Put this in a system startup file, like @file{/etc/rc.local} or @file{/etc/rc.d/rc.local} (customize for your system) @example if [ -f /usr/local/bin/gdomap ]; then /usr/local/bin/gdomap 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 if [ `gdomap -L GDNCServer | grep -c Unable` == 1 ]; then echo "Starting GNUstep services..." gdnc gpbs fi make_services @end example @node Tools and Applications, Machine Specific, Additional Installation, Top @chapter Test Tools and Applications Example applications are located in the gstep-examples package. To build 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 @file{/usr/local/bin}). Usage is: @example openapp application_name [additional arguments to app] @end example Good Luck! @node Machine Specific, Source via SVN, Tools and Applications, Top @chapter Machine Specific Instructions A list of machines that GNUstep works on can be found on the GNUstep Wiki @url{http://wiki.gnustep.org/index.php/Platform_compatibility}. @node Source via SVN, , Machine Specific, Top @chapter Getting Libraries via SVN If you didn't get one of the snapshots, or if you want to be sure to stay on the bleading edge, then you should get the libraries via SVN. Go to @url{http://www.gnustep.org/resources/sources.html} for information on how to get the sourcecode. If you haven't already done so, change to the directory, where you want the source to reside. To checkout all of the GNUstep repository, type @example svn co http://svn.gna.org/svn/gnustep/modules @end example To check out only the @file{core}, which contains all the GNUstep core libraries: @example svn co http://svn.gna.org/svn/gnustep/modules/core @end example After you have checked out the source you can compile it as usual. To update the source, go into the directory of the source tree you want to update, for example, go into 'base', and type: @example svn update @end example You don't have to re-checkout after you have the source, just update! @bye \bye ��������������������������������������������������������������������gnustep-make-2.7.0/Documentation/README.MinGW�������������������������������������������������������0000664�0001750�0001750�00000051407�12600441614�020412� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Date: 28-Feb-2007 Update: 19-Feb-2015 Author: Nicola Pero <nicola.pero@meta-innovation.com> after Richard Frith-Macdonald <rfm@gnu.org>, Germán Arias <germanandre@gmx.es> and others. PURPOSE ------- This document is intended to provide a step by step instruction on how to use GNUstep on recent Windows operating systems. It will get as far as explaining how to build a GNUstep application and create a standalone version that can be shipped standalone to Windows end users. The recommended way to get GNUstep working on Windows is to use MinGW and MSYS to get a Unix-like environment where you can easily build your GNUstep software (this is what is described in this file). Software built in the MinGW/MSYS environment is native Windows software that you can then run without having to rely on the environment you used to build. So, this document is divided in two parts. In the first part ("STEP BY STEP INSTALLATION INSTRUCTIONS"), we will describe how to get MinGW/MSYS up and running, and how to build GNUstep software in this environment. In the second part ("HOW TO SHIP YOUR GNUSTEP APPLICATION TO WINDOWS USERS"), we'll show an example of how to package (and use) the .exes, .dlls and resources (that you can build using the environment described in the first part) as Windows standalone binaries. INTRODUCTION TO MINGW --------------------- MinGW is a collection of header files and import libraries that allow one to use GCC and produce native Windows32 programs that do not rely on any 3rd-party DLLs. 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. PRELIMINARIES ------------- One way to vastly simplify installing GNUstep, is to use the Windows-based GNUstep installer. Get it from: http://www.gnustep.org/windows/installer.html If you have already installed this, you can skip to the end and just start compiling and packaging applications! Although you may want to read the rest of the instructions for other helpful information. A. STEP BY STEP INSTALLATION INSTRUCTIONS ----------------------------------------- 1. Install MinGW ================ Download MinGW-Get-Setup.exe from http://sourceforge.net/projects/mingw/files/Installer/ Then start it up. Set the installation path to C:\xxx\ Where \xxx\ is the top-level path you want to use, I use Nicola/GNUstep so I install it into C:\Nicola\GNUstep\. We will refer to this path as MINGWPATH. 2. Install necessary packages ============================= MinGW create an access on the desktop to the "MinGW installer", a package manager you can use to install packages available to MinGW. To build GNUstep you will need many packages. At MinGW Installer select "All packages" and then install the following packages (bin and dev packages when correspond): (I'm really not sure if all them are necessary) mingw32-autoconf mingw32-binutils mingw32-bzip2 mingw32-gcc mingw32-gcc-g++ mingw32-gcc-objc mingw32-gdb mingw32-gmp mingw32-libbz2 mingw32-libgmp mingw32-libiconv mingw32-libintl mingw32-libpthread-old mingw32-libpthreadgc mingw32-libtool mingw32-libunistring mingw32-libz mingw32-make mingw32-pkginfo mingw32-pthreads-w32 mingw32-w32api msys-base msys-bash msys-console msys-crypt msys-diffutils msys-libcrypt msys-libgmp msys-libiconv msys-libminires msys-m4 msys-minires msys-zlib 3. Additional Useful Tools ========================== You will need install GNUstep from Subversion, so you need a Subversion client. I used: http://www.sliksvn.com/pub/Slik-Subversion-1.6.9-win32.msi and then install subversion in a random directory. You will need and editor, for example Emacs. Get a Windows version for MinGW from: https://www.gnu.org/software/emacs/ To install it, simply unpack it in your MINGWPATH, you can now execute the binary in 'MINGWPATH/bin'. 3. Additional Windows steps =========================== You may need to edit /MINGWPATH/include/winsock2.h to change the size of the sa_data field in the sockaddr structure from 14 to 22 ... this is because 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. On Windows Vista and later, an additional problem has been reported where 'make install' would sometimes fail because of permission problems. The problem is discussed here -- http://lists.gnu.org/archive/html/gnustep-dev/2010-06/msg00055.html you may have to install the additional MinGW files, as explained there. 4. Mount your MINGWPATH directory ================================= With Emacs create a file called "fstab" in C:\MINGWPATH\msys\x.x\etc and add a line like: C:\MINGWPATH /mingw Remember MINGWPATH is the path where you installed mingw (We assume you install it at your C: drive, if not change it). "mingw" is the name to refer to your MINGWPATH directory inside MSYS console, you can use any other name, but remember it because we will need this later. We will refer to this name as MOUNTDIR. 5. Launch the MSYS console ========================== Launch the console at C:\MINGWPATH\msys\x.x\msys.bat (double click). 6. Installing gnustep-make ========================== Get gnustep-make: svn co http://svn.gna.org/svn/gnustep/tools/make/trunk make Then install it (avoid warning about conftest.exe): cd make ./configure make make install 7. Special recommendation ========================= In next steps don't use "make -j", because can cause problems. 8. Installing libffi ==================== Download libffi-x.x.x.tar.gz from https://sourceware.org/libffi/. Unpack it, compile and install: cd libffi-x.x.x ./configure --prefix=/MOUNTDIR make make install mv /MOUNTDIR/lib/libffi-x.x.x/include/* /MOUNTDIR/include/ (if you get a popup about contest.exe failing, just ignore it) NB. The headers have to be moved manually because the package won't install them in the right place. 9. Install ICU ============== Download latest ICU from http://site.icu-project.org/ (zip package). Unpack it, compile and install as fallow: cd icu/source ./runConfigureICU --disable-release MinGW --prefix=/MOUNTDIR make make install 10. Install GNUtls ================== Download the latest version from the official page (windows binary). Copy this at your MINGWPATH directory and unpack it. 11. Install pkg-config ====================== The best option is install pkg-config lite from: http://sourceforge.net/projects/pkgconfiglite/files/ Download latest version, unpack it an copy the files at corresponding directories in your MINGWPATH directory. 12. Install xml2 ================ There are available binary packages of xml, but all these don't provide an m4 file to be used with pkg-config. And since gnustep-base use pkg-config to detect xml we need install it from source. So download the latest version from http://xmlsoft.org/ and install it: cd libxml2-x.x.x ./configure --prefix=/MOUNTDIR make make install 13. Fix problem with mingwrt ============================ (I you are using mingw32-mingwrt-3.21.1 or above skip this step. Run MinGW Installer to see what version are you using.) Launch Emacs and open the file /MINGWPATH/include/unistd.h And comment the line 95 (#include <parts/time.h>) and all the function nanosleep (from line 104 to 117). Save the file. 14. Source GNUstep.sh ===================== Probably you will need source the GNUstep script: . /local/share/GNUstep/Makefiles/GNUstep.sh 15. Install gnnustep-base ========================= Get gnustep-base: svn co http://svn.gna.org/svn/gnustep/libs/base/trunk base Then compile and install it: cd base ./configure make make install 16. Install jpeg ================ Download the latest version from http://ijg.org/. Then compile and install it as fallow: cd jpeg-xx autoheader ./configure --prefix=/MOUNTDIR make make install 17. Install libtiff =================== Download latest version from http://www.libtiff.org/. Then compile and install it: cd tiff-x.x.x ./configure --prefix=/MOUNTDIR make make install 18. Install libpng ================== Download latest version from http://libpng.org/pub/png/libpng.html. Then compile and install it: cd lpngXXX cp scripts/pnglibconf.h.prebuild pnglibconf.h cp scripts/makefile.msys makefile Launch Emacs and edit the makefile to set prefix as "prefix=/MOUNTDIR", then: make make install 19. Install libungif ==================== From http://gnuwin32.sourceforge.net/ download libungif-4.1.4-1.exe Execute it and install the package into your MINGWPATH directory. 20. Install libao ================= Download libao from http://xiph.org/ao/. And install it: cd libao-x.x.x ./cofigure --prefix=/MOUNTDIR make make install 21. Install Aspell ================== Download the windows port http://aspell.net/win32/. And install it in your MINGWPATH directory (directly in your MINGWPATH directory, not under the Aspell directory). Download also the dev package, unpack it and copy the libraries and headers to the corresponding directories at your MINWGPATH directory. Download also the installers for the dictionaries you want use, extract and install them into your MINGWPATH directory (directly in your MINGWPATH directory, not under the Aspell directory). Now you need change the name of some libraries, go to directory MINGWPATH/lib and change the name of these files: aspell-15.def ----> aspell.def aspell-15.lib ----> aspell.lib libaspell-15-dll.lib ----> libaspell-dll.lib 22. Add path to icu libraries ============================= FIXME: Why this is needed? Edit the file /MINGWPATH/msys/etc/profile and add the path to ICU libs: export PATH=$PATH:/MOUNTDIR/lib 23. Install gnustep-gui ======================= Get gnustep-gui: svn co http://svn.gna.org/svn/gnustep/libs/gui/trunk gui Then compile and install it: cd gui ./configure make make install 24. Install gnustep-back ======================== Get gnustep-back: svn co http://svn.gna.org/svn/gnustep/libs/back/trunk back Then compile and install it: cd back ./configure make make install 25. Install gnustep-back with cairo graphics (optional but highly recommended) ============================================================================== Download fallowing packages: http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/cairo_1.10.2-2_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/cairo-dev_1.10.2-2_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libpng_1.4.3-1_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/freetype_2.4.2-1_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/freetype-dev_2.4.2-1_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/fontconfig_2.8.0-2_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/fontconfig-dev_2.8.0-2_win32.zip Copy these packages at your MINGWPATH directory and unpack them. Now move some headers: mv /MOUNTDIR/include/cairo/* /MOUNTDIR/include/ mv /MOUNTDIR/include/freetype2/freetype/ /MOUNTDIR/include/ Now we need recompile gnustep-back to use cairo backend: cd back make distclean ./configure --enable-graphics=cairo --with-name=cairo LIBS=-lcairo make make install Now set defaults to use this backend: defaults write NSGlobalDomain GSBackend cairo 26. Install WinUXTheme (optional) ================================= Get WinUXTheme: svn co http://svn.gna.org/svn/gnustep/plugins/themes/WinUXTheme/ winuxtheme Then compile and install it: cd winuxtheme make make install Set it: defaults write NSGlobalDomain GSTheme WinUXTheme 27. Source the gnustep script when launch the console ===================================================== Edit the file /MINGWPATH/msys/etc/x.x/profile and add this line to source the gnustep script: . /local/share/GNUstep/Makefiles/GNUstep.sh 28. Set up the spell chequer service ==================================== The spell chequer service need be configured. So we need launch it once to configure it. Run the command: /local/lib/GNUstep/Services/GSspell.service/GSspell.exe 29. Testing your gui installation ================================= Get the examples: svn co http://svn.gna.org/svn/gnustep/tests/examples/trunk/ examples Go in a simple gui application (examples/gui a very good starting point), compile and run it. :-). Ink and PowerPaint should work fine on Windows, test these. 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. 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. Where we specify specific versions of packages to be used, we have tested with those versions - later or earlier versions may work, but may well not. Generally earlier versions should be assumed not to work. B. HOW TO SHIP YOUR GNUSTEP APPLICATION TO WINDOWS USERS -------------------------------------------------------- You probably want to ship your Windows application as a standalone .zip file that Windows users can easily download and use. We will explain what to do with an example: that of packaging Gomoku.app. We will first build the application (creating Gomoku.app), then we'll add to to it all the GNUstep DLLs and resources that are needed to run the application, and we'll end up with a single directory, Gomoku.app, that contains a program (Gomoku.exe) and a bunch of DLLs and various other resources required to run the program. The end user just needs to get this directory (from a .zip or .tgz file, for example) and can double-click on Gomoku.exe to start the program (no GNUstep installation required). 1. Build the application ======================== Build your application (Gomoku.app in this example) in your MinGW/GNUstep environment. Generally, this means getting the source code and typing 'make' in it. If you're trying to follow the Gomoku.app example, the source code is here: http://www.gnustep.it/nicola/Applications/Gomoku/index.html Once you have built it, make sure you can run your application from within mingw by using 'openapp', as in 'openapp ./Gomoku.app'. 2. Copy your application somewhere ================================== Now take your built application and copy it somewhere -- we'll be working on it! Eg, I just copy it in my home directory. cp -R /home/Nico/Gomoku-1.2.8/Gomoku.app /home/Nico/ 3. Copy DLLs into your application ================================== Now search for MinGW/GNUstep DLL files in /MOUNTDIR/bin, /MOUNTDIR/lib and /local/bin, and copy them all into Gomoku.app: cp $(find /MOUNTDIR/bin -name *.dll) /home/Nico/Gomoku.app/ cp $(find /MOUNTDIR/lib -name *.dll) /home/Nico/Gomoku.app/ cp $(find /local/bin -name *.dll) /home/Nico/Gomoku.app/ 4. Copy config files into your application ========================================== Now copy the "etc" directory in /MOUNTDIR to Gomoku.app: cp -R /MOUNTDIR/etc /home/Nico/Gomoku.app/ 5. Copy your GNUstep Library folder =================================== Now copy all of the GNUstep resources into the application -- mkdir -p /home/Nicola/Gomoku.app/GNUstep/ cp -R /local/lib/GNUstep/* /home/Nico/Gomoku.app/GNUstep/ I put them all into Gomoku.app/GNUstep/, which means that later on I'll set up the GNUstep.conf file to map GNUSTEP_*_LIBRARY to that directory. 6. Copy key GNUstep binary programs =================================== cp /local/bin/gpbs.exe /home/Nicola/Gomoku.app cp /local/bin/gdnc.exe /home/Nicola/Gomoku.app cp /local/bin/gdomap.exe /home/Nicola/Gomoku.app cp /local/bin/make_services.exe /home/Nicola/Gomoku.app cp /local/bin/defaults.exe /home/Nicola/Gomoku.app I put them all into Gomoku.app, which means that later on I'll set up the GNUstep.conf file to map GNUSTEP_*_TOOLS to that directory. 7. Add a GNUstep.conf ===================== You need to add a Gomoku.app/GNUstep.conf file to tell gnustep-base where to find things inside Gomoku.app -- here is the one I use (which matches the locations where I copied things in the previous steps) -- GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf GNUSTEP_USER_DIR=GNUstep GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults GNUSTEP_SYSTEM_APPS=./GNUstep/Apps GNUSTEP_SYSTEM_ADMIN_APPS=./GNUstep/Apps GNUSTEP_SYSTEM_TOOLS=./ GNUSTEP_SYSTEM_ADMIN_TOOLS=./ GNUSTEP_SYSTEM_LIBRARY=./GNUstep GNUSTEP_SYSTEM_HEADERS=./GNUstep/Headers GNUSTEP_SYSTEM_LIBRARIES=./GNUstep/Libraries GNUSTEP_SYSTEM_DOC=./GNUstep/Documentation GNUSTEP_SYSTEM_DOC_MAN=./GNUstep/Documentation/man GNUSTEP_SYSTEM_DOC_INFO=./GNUstep/Documentation/info GNUSTEP_NETWORK_APPS=./GNUstep/Apps GNUSTEP_NETWORK_ADMIN_APPS=./GNUstep/Apps GNUSTEP_NETWORK_TOOLS=./ GNUSTEP_NETWORK_ADMIN_TOOLS=./ GNUSTEP_NETWORK_LIBRARY=./GNUstep GNUSTEP_NETWORK_HEADERS=./GNUstep/Headers GNUSTEP_NETWORK_LIBRARIES=./GNUstep/Libraries GNUSTEP_NETWORK_DOC=./GNUstep/Documentation GNUSTEP_NETWORK_DOC_MAN=./GNUstep/Documentation/man GNUSTEP_NETWORK_DOC_INFO=./GNUstep/Documentation/info GNUSTEP_LOCAL_APPS=./GNUstep/Apps GNUSTEP_LOCAL_ADMIN_APPS=./GNUstep/Apps GNUSTEP_LOCAL_TOOLS=./ GNUSTEP_LOCAL_ADMIN_TOOLS=./ GNUSTEP_LOCAL_LIBRARY=./GNUstep GNUSTEP_LOCAL_HEADERS=./GNUstep/Headers GNUSTEP_LOCAL_LIBRARIES=./GNUstep/Libraries GNUSTEP_LOCAL_DOC=./GNUstep/Documentation GNUSTEP_LOCAL_DOC_MAN=./GNUstep/Documentation/man GNUSTEP_LOCAL_DOC_INFO=./GNUstep/Documentation/info So, just copy and paste this code into a GNUstep.conf file that you put into /home/Nico/Gomoku.app/GNUstep.conf. 8. Add a GlobalDefaults.plist ============================= You need to add a Gomoku.app/GlobalDefaults.plist file to tell GNUstep the defaults you want use (the theme, backend, etc.), and save this file with write/read permission only for the owner (chmod 600). For example: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//GNUstep//DTD plist 0.9//EN" "http://www.gnustep.org/plist-0_9.xml"> <plist version="0.9"> <dict> <key>GSTheme</key> <string>WinUXTheme</string> <key>GSBackend</key> <string>cairo</string> </dict> </plist> 8. Now the application should be working ======================================== At this stage, everything should be working "standalone". By that we mean that if you give your Gomoku.app/ to a Windows user (with no GNUstep installed on their machine), they should be able to run it by just double-clicking on the Gomoku executable inside of the Gomoku.app/ directory! :-) Try it out and make sure that it works. 9. Cleanup ========== If you look at your Gomoku.app/ directory, you will see that it is really big. We mass-copied stuff from the GNUstep/MinGW directories; but generally, you want to make sure you remove anything that you don't strictly need. So go in there and remove anything that you don't need. First thing, you should remove the MSYS libraries, which we never use -- rm Gomoku.app/msys-1.0.dll rm Gomoku.app/msysltdl-3.dll rm Gomoku.app/libW11.dll rm Gomoku.app/libperl.dll rm Gomoku.app/librle3.dll Then, remove any additional library that your application doesn't use; for example, I removed -- rm Gomoku.app/Renaissance.dll rm Gomoku.app/ProjectCenter.dll Finally, remove Apps and other stuff that you might have copied from the general GNUstep installation -- rm -Rf Gomoku.app/GNUstep/Apps rm -Rf Gomoku.app/GNUstep/Frameworks/ProjectCenter.framework Generally, you may want to build the whole stuff making sure you only include what you strictly need. 10. Stripping ============= The resulting directory might still be pretty big. If you are trying to distribute it over the internet, your users will probably appreciate if you stripped it, removing symbols. Just run 'strip' on all the .exe and .dll files in your application. strip $(find /home/Nico/Gomoku.app/ -name '*.exe') strip $(find /home/Nico/Gomoku.app/ -name '*.dll') That will reduce the size a lot. If you're not distributing it over the internet, you might be happy leaving the symbols in though. 11. Checking Licenses ==================== Finally, before deployment, you need to realize that you are shipping a lot of GNUstep (and non-GNUstep) software with your application. This is fine, just make sure you are aware of the licenses, and that you comply with them. PACKAGING/WINDOWS TODOS ----------------------- The gdnc, gpbs processes are somehow a bit of a pain. They are automatically started when you start your application, but they are not automatically stopped when you quit it. This might have bad consequences, eg, if you are using your application from a USB flash disk, Windows doesn't let you unplug the USB disk while gdnc/gpbs are running, because they are running from the disk! Also, it's not clear what happens if you have two or three such GNUstep apps downloaded from the web and you try to run them at the same time. What about gdomap etc ? ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/README.Cygwin������������������������������������������������������0000664�0001750�0001750�00000011333�10377003773�020674� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Date: 17-Sep-2002 (tested under windows-xp) Author: Ildar Mulyukov <ildar@users.sourceforge.net> Update: 23-Oct-2004 (tested under windows-2000) Author: Adam Fedor <fedor@gnu.org> PURPOSE ------- This document may be treated as just an appendix to GNUstep-HOWTO. You can find GNUstep-HOWTO link here: http://gnustep.org/experience/documentation.html This document is intended to provide a step by step instruction on how to get the GNUstep base library into a usable state on a recent windows operating system (XP, 2000, and probably NT) within Cygwin environment. Cygwin is unix-like environment working on top of Win32 (Windows, Windows NT/2k/XP). You can find complete information about it on the website http://cygwin.org For the moment GNUstep can be built with GUI support. (Native Win32 GUI, not X11) The gui library is only partially ported to run under 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. You should be relatively confident at working with Cygwin before attempting to install GNUstep. ADDITIONAL COMMENTS ------------------- Note: These comments are just my experience. You don't need these to build GNUstep. If you don't understand something don't worry. Cygwin project is now in a very advanced stage. It's ready to be used by end-users and in commercial purposes and very convenient for programmers. Cygwin provides "General UNIX" environment and APIs. In fact GNUstep-base is compiled using Unix alternatives of classes (like NSConcreteUnixTask). But it has several particularities that must been taken into consideration. There is a very good documentation on Cygwin website on these questions. See e.g. http://cygwin.com/cygwin-ug-net/cygwin-ug-net.html I would like to mention two of them: 1. Filesystem is case-insensitive. Now it's (luckily) supports soft-links. But case-insensitivity hinders quite a lot. 2. Dynamic libraries mechanism is not so good. (Windows DLL). It does not support several features (and this makes so hard to port some software e.g. licq) And it has those ugly __declspec(dllexport) / __declspec(dllimport) . But (Cygwin hackers are just cool!) in later releases of binutils ld is capable to link wrongly declared exports! This eliminates a lot of problems when dealing with DLLs (including objc.dll and gnustep-*.dll) PRELIMINARIES ------------- 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. 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: For base (non-GUI): gcc-objc libxml2 libxslt For GUI: X11 installation libtiff libtiff-devel libjpg libpng 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. You need these packages: GNUstep-make ffcall GNUstep-objc GNUstep-base GNUstep-gui GNUstep-back Building and installing libraries --------------------------------- FFCALL: Unpack, configure, make, make install. See GNUstep-HOWTO for details. Note again: you can make package. See APPENDIX A Building and installing gnustep-make ------------------------------------ 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. Unpack gnustep-objc, and type: make install Note: do not use configure. Building and installing GNUstep-base ------------------------------------ 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. Building and installing GNUstep-gui ----------------------------------- Unpack to gnustep-gui, and type: make install Building and installing GNUstep-back ------------------------------------ In the back directory, type make install Troubleshooting --------------- APPENDIX A ---------- This is mkpkg.sh script for making packages from sources. #!/bin/bash # make a cygwin package # launch this script in the building dir TMPDIR=/tmp/__TMP_$RANDOM FLIST=$TMPDIR/files.list rm -rf $TMPDIR mkdir $TMPDIR touch /usr/time.stamp make install pushd . cd / find usr ! -type d -newer /usr/time.stamp > $FLIST rm /usr/time.stamp # Don't forget to rename it to real package name tar cjf $TMPDIR/package.tar.bz2 `cat $FLIST` popd unset TMPDIR FLIST --- *** CUT *** --- �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/announce.texi������������������������������������������������������0000664�0001750�0001750�00000001571�10377003773�021261� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������@chapter Announcement @include version.texi The GNUstep Makefile Package version @value{GNUSTEP-MAKE-VERSION} is now available. @section What is the GNUstep makefile package? The makefile package is a simple, powerful and extensible way to write makefiles for a GNUstep-based project. It allows the user to write a 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. @set ANNOUNCE-ONLY @include news.texi @clear ANNOUNCE-ONLY @section Obtaining gnustep-make You can get the gstep-make-@value{GNUSTEP-MAKE-VERSION}.tar.gz distribution file at @url{ftp://ftp.gnustep.org/pub/gnustep/core} Please log bug reports on the GNUstep project page @url{http://savannah.gnu.org/bugs/?group=gnustep} or send bug reports to @email{bug-gnustep@@gnu.org}. ���������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/gnustep-tests.1����������������������������������������������������0000664�0001750�0001750�00000002370�12367426437�021474� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.TH gnustep-tests 1 "29/06/2014" GNUstep "GNUstep System Manual" .SH NAME gnustep-tests \- script to run a GNUstep testsuite .SH SYNOPSIS .BR gnustep-tests " [" .I directory | .I test.m ] .SH DESCRIPTION .B gnustep-tests runs the specified tests, or any tests found in the directory. If no arguments are given, the current directory and its subdirectories are scanned and processed accordingly. .SH OPTIONS .TP .B \-\-documentation prints full details about the testing framework .TP .B \-\-clean deletes old logs and any leftover files .TP .B \-\-failfast stops after the first encountered test failure .TP .B \-\-debug runs any failed tests in .BR gdb (1) .TP .B \-\-developer treats any hopes as real tests .TP .B \-\-verbose detailed log output .TP .B \-\-sequential disables parallel building .SH SEE ALSO .BR GNUstep (7) .SH AUTHORS .B gnustep-tests was written by Alexander Malmberg <alexander@malmberg.org> and Richard Frith-Macdonald <rfm@gnu.org>. .PP This man page was written by Yavor Doganov <yavor@gnu.org>. .SH COPYRIGHT Copyright \(co 2014 Free Software Foundation, Inc. .PP Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/gnustep-filesystem.texi��������������������������������������������0000664�0001750�0001750�00000112130�12273363564�023320� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\input texinfo @c -*-texinfo-*- @c GNUstep filesystem hierarchy @c %**start of header @settitle GNUstep Filesystem Hierarchy Document @c %**end of header @setcontentsaftertitlepage @smallbook @titlepage @title GNUstep Filesystem Hierarchy Document @vskip 0pt plus 1filll Last Update: @today{} @page @vskip 0pt plus 1filll Authors: Nicola Pero, Tim Harrison, Martin Brecher, Adam Fedor, Richard Frith-Macdonald Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation. @end titlepage @node Top, The System Domain, (dir), (dir) @chapter GNUstep Filesystem Hierarchy @menu * The System Domain:: * The Local Domain:: * The Network Domain:: * The Users Domain:: * Structure of a Domain:: * Configuration:: @end menu On GNUstep, there are four separate places where files related to GNUstep are installed: these places are called "domains". These four domains are the System domain, the Network domain, the Local domain, and the User domain. Each of these domains serve a special purpose. You can install various things in each domain; for example applications, tools or libraries. Each domain should allow you to install the different types of resources or compiled software. Starting with gnustep-make version 2.0, each GNUstep installation can specify how these domains should be organized and mapped to directories on the filesystem. A way to map GNUstep domains to filesystem directories is called a ``filesystem layout''. A filesystem layout will specify in which directory System Tools are to be installed, for example. The description of various filesystem layouts (and instructions on how to create your own) can be found in the @file{FilesystemLayouts} directory inside gnustep-make. Applications, libraries, bundles and other resources are normally looked up in domains following a fixed order: User first, then Local, then Network, then System. In this document we give a general overview of the GNUstep domains and of the interesting locations in a domain. We also describe the GNUstep filesystem layout. The GNUstep filesystem layout is a good way to discuss domains, because it is very simple: in the GNUstep filesystem layout, every domain is mapped to a single directory on disk. For example, the System domain could be mapped to the @file{/usr/GNUstep/System} directory, and everything that is installed into the System domain is then installed into some subdirectory of @file{/usr/GNUstep/System}. Before gnustep-make version 2.0, this was the only filesystem layout available. Please keep in mind that (starting from gnustep-make version 2.0) this is not the case for a general filesystem layout; for example a typical FHS (Unix) layout might be installing System Tools in @file{/usr/bin} and System Admin Tools in @file{/sbin}. In fact, starting with gnustep-make version 2.6.0, the default filesystem layout is now the FHS (Unix) layout rooted in @file{/usr/local}. @node The System Domain, The Local Domain, Top, Top @section The System Domain The System domain contains all files which were included in the default GNUstep installation or distribution. These files are normally managed by the distribution/packaging system used to install GNUstep; thus, making modifications to these files is highly discouraged. In addition, only the system administrator ('root' on most UNIX systems) should have permissions to write to that domain. Normally you can expect to find gnustep-make and the basic GNUstep libraries (Foundation and AppKit) in this domain, and also essential system applications (the Workspace Manager, the Editor, applications related to system administrative tasks), developer applications (Project Center and Gorm, as well as header files), essential extensions (bundles for XML, SSL, RTF, etc), as well as all software installed by the manufacturer of your distribution. In the GNUstep filesystem layout, the entire System domain is found in the @file{System} folder of the GNUstep installation. @node The Local Domain, The Network Domain, The System Domain, Top @section The Local Domain The Local domain is meant as the location for installing software which was not included with your GNUstep distribution and which you or your local sysadmin compile and/or install manually. These may include third party applications, custom extension libraries and their related header files, etc. Every software (except for gnustep-make, gnustep-base, gnustep-gui and gnustep-back which for historical reasons by default install into the System domain) should install by default into the Local domain, so that if you download a source tarball of the software and you install it, it installs by default in the right place for this operation (the Local domain). Distributions should override this default manually when they package the software they want to distribute as part of their distribution, so that in that case the software is installed in the System domain. In the GNUstep filesystem layout the entire Local domain is installed as the @file{Local} folder of your GNUstep installation. @node The Network Domain, The Users Domain, The Local Domain, Top @section The Network Domain The @file{Network} domain is optional and is usually coalesced with the @file{Local} domain by default; this is particularly appropriate for use on stand alone systems such as your home workstation. However, the Network domain can be of great use in networked, corporate environments. Its main purpose is to hold files exported from a central server in your network or from other workstations. Most times, remote directories containing applictations or general data used by several workstations in the network are mounted using the Network File System (NFS). Such usage gives administrators the possibility of providing application or resources to a vast number of workstations while only having to manage the software in one place. This is especially useful when workstations are used by several users with different tasks and requirements. If you want to take advantage of the Network domain, you need to use a filesystem layout with a separate Network domain. In the GNUstep filesystem layout the Network domain is the same as the Local domain; if you want to use the Network domain there is a separate GNUstep filesystem layout variant with a separate Network domain, in which case the entire Network domain is installed as the @file{Network} folder of your GNUstep installation. @node The Users Domain, Structure of a Domain, The Network Domain, Top @section The Users Domain The main purpose of the Users domain is to hold GNUstep related files which shall not be available to other users on the system but only to the user owning them. This includes the GNUstep defaults database (which holds system settings, application preferences and customized resources) as well as temporary data related to services and file type associations for programs. It also holds user installed applications and tools (each user has the ability to install their own version of an application or tool). In the GNUstep filesystem layout (and in most other layouts too) the User domain is completely contained in a subdirectory of the user's home directory called @file{GNUstep}. @node Structure of a Domain, Configuration, The Users Domain, Top @section Structure of a Domain In this section we examine the interesting locations in a domain. We will enumerate the locations, and discuss what should be installed in each location, and how they are mapped to directories on disk in the GNUstep filesystem layout and in a general filesystem layout. @menu * The GNUstep Filesystem Layout:: * Accessing Domain Locations:: * Applications:: * Admin Applications:: * Web Applications:: * Tools:: * Admin Tools:: * Library:: * Headers:: * Libraries:: * Documentation:: * Documentation (Info):: * Documentation (Man Pages):: * Folders inside Library:: @end menu @node The GNUstep Filesystem Layout, Accessing Domain Locations, Structure of a Domain, Structure of a Domain @subsection The GNUstep Filesystem Layout We quickly present the GNUstep filesystem layout for a domain first because it is an essential reference for all discussions on the structure of a domain. The GNUstep filesystem layout is the simplest layout, in which every domain is a directory on disk, and all locations in the domain are subdirectories of the domain. In that case, a domain has the following structure on disk: @example Domain/ Applications/ Applications/Admin/ Defaults/ (User domain only) Library/ Library/ApplicationSupport/ Library/ApplicationSupport/Palettes Library/Bundles/ Library/Documentation/ Library/Documentation/info/ Library/Documentation/man/ Library/Frameworks/ Library/Headers/ Library/Libraries/ Library/Libraries/Java/ Library/Libraries/Resources/ Library/Makefiles/ (System domain only) Library/Services/ Library/Tools/Resources/ Library/WebApplications/ Tools/ Tools/Admin/ @end example The terminology for locations is derived from this filesystem layout, and it can be useful to use this directory structure as a reference point for all discussions. For example, every domain must have a 'Library' location. @node Accessing Domain Locations, Applications, The GNUstep Filesystem Layout, Structure of a Domain @subsection Accessing Domain Locations In order to install and run software that uses some resources, you need to be able to install the resources in the appropriate location, and your software needs to be able to locate these resources when it's running. Since domain locations can be mapped to arbitrary locations on disk, you must use the appropriate gnustep-make and gnustep-base facilities to install things in the right place and to find things at runtime. GNUstep-make creates makefile variables for all the domain locations. If you need to perform some custom installation for your software, you must use these variables to make sure your installation will work with all filesystem layouts. For example, the @file{Applications} location for the domain where the software will be installed is available as the @code{GNUSTEP_APPS} variable. You can also access the locations for specific domains by using the variables @code{GNUSTEP_SYSTEM_APPS}, @code{GNUSTEP_NETWORK_APPS}, @code{GNUSTEP_LOCAL_APPS} and @code{GNUSTEP_USER_APPS}. GNUstep-base provides you with the @code{NSSearchPathForDirectoriesInDomains()} function that allows you to retrieve the domain locations at runtime. You must lookup resources only via this function. For example, the @file{Applications} location can be found by using the @code{NSApplicationDirectory} directory key, so you can use it in your software to iterate over all the @file{Applications} directories in the various domains searching for an application. In general, all interesting domain locations have a set of variables defined in gnustep-make (such as @code{GNUSTEP_APPS}, @code{GNUSTEP_SYSTEM_APPS}, @code{GNUSTEP_NETWORK_APPS}, @code{GNUSTEP_LOCAL_APPS} and @code{GNUSTEP_USER_APPS}) and a corresponding directory key in gnustep-base (such as @code{NSApplicationDirectory}). When examining the various domain locations, we will explicitly mention the gnustep-make variables and the gnustep-base directory keys that can be used to access them. @node Applications, Admin Applications , Accessing Domain Locations, Structure of a Domain @subsection Applications The @file{Applications} location contains applications. Applications are programs that typically have a GUI interface and contain associated resource files, such as images, localization files and other program elements. Important applications which are part of GNUstep and which are often distributed as part of a core GNUstep distribution include: @example Gorm.app ProjectCenter.app GWorkspace.app Preferences.app @end example In GNUmakefiles, the @file{Applications} location is available via the @code{GNUSTEP_APPS} variable, which is the Applications location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_APPS}, @code{GNUSTEP_NETWORK_APPS}, @code{GNUSTEP_LOCAL_APPS} and @code{GNUSTEP_USER_APPS}. In gnustep-base, the @file{Applications} locations are available by using the @code{NSApplicationDirectory} directory key for @code{NSSearchPathForDirectoriesInDomains()}. @node Admin Applications, Web Applications, Applications, Structure of a Domain @subsection Admin Applications The @file{Admin Applications} location contains applications that are only useful to the system administrator. A normal user wouldn't have enough privileges to use these applications in a useful way. In GNUmakefiles, the @file{Admin Applications} location is available via the @code{GNUSTEP_ADMIN_APPS} variable, which is the Admin Applications location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_ADMIN_APPS}, @code{GNUSTEP_NETWORK_ADMIN_APPS}, @code{GNUSTEP_LOCAL_ADMIN_APPS} and @code{GNUSTEP_USER_ADMIN_APPS}. In gnustep-base, the @file{Admin Applications} locations are available by using the @code{NSAdminApplicationDirectory} directory key for @code{NSSearchPathForDirectoriesInDomains()}. @node Web Applications, Tools, Admin Applications, Structure of a Domain @subsection Web Applications The @file{Web Applications} location contains web applications that were created using GSWeb or SOPE. These are programs contained with their resources in small wrappers very similar to standard applications. In GNUmakefiles, the @file{Web Applications} location is available via the @code{GNUSTEP_WEB_APPS} variable, which is the Web Applications location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_WEB_APPS}, @code{GNUSTEP_NETWORK_WEB_APPS}, @code{GNUSTEP_LOCAL_WEB_APPS} and @code{GNUSTEP_USER_WEB_APPS}. In gnustep-base, the @file{Web Applications} locations are available by using the @code{GSWebApplicationDirectory} directory key for @code{NSSearchPathForDirectoriesInDomains()}. @node Tools, Admin Tools, Web Applications, Structure of a Domain @subsection Tools The @file{Tools} location contains tools and executable scripts. Tools are programs which generally have a command-line interface. Most are not meant to be used by the average user. Important tools which are part of GNUstep and which are often distributed as part of a core GNUstep distribution include: @example openapp defaults gdomap gdnc gpbs @end example In GNUmakefiles, the @file{Tools} location is available via the @code{GNUSTEP_TOOLS} variable, which is the location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_TOOLS}, @code{GNUSTEP_NETWORK_TOOLS}, @code{GNUSTEP_LOCAL_TOOLS} and @code{GNUSTEP_USER_TOOLS}. In gnustep-base, the @file{Tools} locations are available by using the @code{GSToolsDirectory} directory key for @code{NSSearchPathForDirectoriesInDomains()}. @node Admin Tools, Library, Tools, Structure of a Domain @subsection Admin Tools The @file{Admin Tools} location contains tools and executable scripts that are only useful to the system administrator. A normal user wouldn't have enough privileges to use these applications in a useful way. In GNUmakefiles, the @file{Admin Tools} location is available via the @code{GNUSTEP_ADMIN_TOOLS} variable, which is the location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_ADMIN_TOOLS}, @code{GNUSTEP_NETWORK_ADMIN_TOOLS}, @code{GNUSTEP_LOCAL_ADMIN_TOOLS} and @code{GNUSTEP_USER_ADMIN_TOOLS}. In gnustep-base, the @file{Admin Tools} locations are available by using the @code{GSAdminToolsDirectory} directory key for @code{NSSearchPathForDirectoriesInDomains()}. @node Library, Headers, Admin Tools, Structure of a Domain @subsection Library The @file{Library} location contains most of the resources that are located and loaded at runtime. These resources are organized in folders (directories) inside @file{Library}; the most important @file{Library} folders will be described later on. Like all systems inspired by OpenStep, resources are mostly organized in bundles and small wrappers that contain both machine-dependent files (such as executables or loadable object files) and general machine-independent resources (such as images or text files). For this reason, the @file{Library} location will contain both machine-dependent and machine-independent files. The structure of the folders within Library is the same in all filesystem layouts, with a few exceptions: in the GNUstep filesystem layout, the @code{Libraries}, @code{Headers}, @code{Documentation} and @code{WebApplications} folders are all inside @code{Library}, but this is not necessarily true for other filesystem layouts. Vice versa, it's common on other filesystem layouts (eg, FHS) to put @code{Applications} and @code{Admin Applications} as folders inside @code{Library}. In GNUmakefiles, the @file{Library} location is available via the @code{GNUSTEP_LIBRARY} variable, which is the location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_LIBRARY}, @code{GNUSTEP_NETWORK_LIBRARY}, @code{GNUSTEP_LOCAL_LIBRARY} and @code{GNUSTEP_USER_LIBRARY}. In gnustep-base, the @file{Library} locations are available by using the @code{NSLibraryDirectory} directory key for @code{NSSearchPathForDirectoriesInDomains()}. @node Headers, Libraries, Library, Structure of a Domain @subsection Headers The @code{Headers} location contains header files associated with a library located in @code{Libraries}. In GNUmakefiles, the @file{Headers} location is available via the @code{GNUSTEP_HEADERS} variable, which is the location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_HEADERS}, @code{GNUSTEP_NETWORK_HEADERS}, @code{GNUSTEP_LOCAL_HEADERS} and @code{GNUSTEP_USER_HEADERS}. In gnustep-base, the @file{Headers} location is not currently available. @node Libraries, Documentation, Headers, Structure of a Domain @subsection Libraries The @code{Libraries} location contains libraries (shared/static object files that are linked into programs). (NOTE: In the GNUstep filesystem layout, the Libraries directory being in Library may sound somewhat redundant, however, it could be read as "a Library of shared libraries"). In the GNUstep filesystem layout, the @code{Library/Libraries} folder contains two other folders: @code{Resources} and @code{Java}. It's important to notice that when the @code{Libraries} location is moved elsewhere, these folders are not moved; they will still be in @code{Library/Libraries/Resources} and @code{Library/Libraries/Java}. In GNUmakefiles, the @file{Libraries} location is available via the @code{GNUSTEP_LIBRARIES} variable, which is the location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_LIBRARIES}, @code{GNUSTEP_NETWORK_LIBRARIES}, @code{GNUSTEP_LOCAL_LIBRARIES} and @code{GNUSTEP_USER_LIBRARIES}. In gnustep-base, the @file{Libraries} locations are available by using the @code{GSLibrariesDirectory} directory key for @code{NSSearchPathForDirectoriesInDomains()}. @node Documentation, Documentation (Info), Libraries, Structure of a Domain @subsection Documentation The @code{Documentation} location contains documentation for libraries, applications, etc. In GNUmakefiles, the @file{Documentation} location is available via the @code{GNUSTEP_DOC} variable, which is the location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_DOC}, @code{GNUSTEP_NETWORK_DOC}, @code{GNUSTEP_LOCAL_DOC} and @code{GNUSTEP_USER_DOC}. In gnustep-base, the @file{Documentation} locations are available by using the @code{NSDocumentationDirectory} directory key for @code{NSSearchPathForDirectoriesInDomains()}. @node Documentation (Info), Documentation (Man Pages), Documentation, Structure of a Domain @subsection Documentation (Info) The @code{Documentation (Info)} location contains documentation in info format. In GNUmakefiles, the @file{Documentation (Info)} location is available via the @code{GNUSTEP_DOC_INFO} variable, which is the location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_DOC_INFO}, @code{GNUSTEP_NETWORK_DOC_INFO}, @code{GNUSTEP_LOCAL_DOC_INFO} and @code{GNUSTEP_USER_DOC_INFO}. In gnustep-base, the @file{Documentation (Info)} locations are not currently available. @node Documentation (Man Pages), Folders inside Library, Documentation (Info), Structure of a Domain @subsection Documentation (Man Pages) The @code{Documentation (Man Pages)} location contains Unix man pages. In GNUmakefiles, the @file{Documentation (Man Pages)} location is available via the @code{GNUSTEP_DOC_MAN} variable, which is the location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_DOC_MAN}, @code{GNUSTEP_NETWORK_DOC_MAN}, @code{GNUSTEP_LOCAL_DOC_MAN} and @code{GNUSTEP_USER_DOC_MAN}. In gnustep-base, the @file{Documentation (Man)} locations are not currently available. @node Folders inside Library, , Documentation (Man Pages), Structure of a Domain @subsection Folders inside Library In this section we discuss the standard folders that are available inside the @code{Library} location. To find any of these folders, just find the location of @code{Library} and then append the folder name (for example, in a GNUmakefile you can access the 'ColorPickers' folder of the installation domain as @code{$GNUSTEP_LIBRARY/ColorPickers}). Some of the folders can also be accessed using direct variables, such as @code{GNUSTEP_BUNDLES}. You should prefer using these direct variables if you can because they are more future-proof (in case some of the folders become independent from @code{Library} in the future). All such cases should be documented here. @menu * ApplicationSupport:: * Bundles:: * ColorPickers:: * Colors:: * DTDs:: * DocTemplates:: * Fonts:: * Frameworks:: * Images:: * Libraries/Java:: * Libraries/Resources:: * KeyBindings:: * PostScript:: * Services:: * Sounds:: * Tools/Resources:: @end menu @node ApplicationSupport, Bundles, Folders inside Library, Folders inside Library @subsubsection ApplicationSupport This directory contains bundles and other resources that are provided for an application, but that are not specifically distributed with that application. For instance, these may be third-party resources for an application. For example, modules for the Preferences application may be stored here, in a @file{Preferences} subdirectory. In particular, Palettes for Gorm are stored in @file{ApplicationSupport/Palettes}. In GNUmakefiles, this location is available via the @code{GNUSTEP_APPLICATION_SUPPORT} variable, which is the location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_APPLICATION_SUPPORT}, @code{GNUSTEP_NETWORK_APPLICATION_SUPPORT}, @code{GNUSTEP_LOCAL_APPLICATION_SUPPORT} and @code{GNUSTEP_USER_APPLICATION_SUPPORT}. In gnustep-base, the @code{ApplicationSupport} locations are available by using the @code{NSApplicationSupportDirectory} directory key for @code{NSSearchPathForDirectoriesInDomains()}. @node Bundles, ColorPickers, ApplicationSupport, Folders inside Library @subsubsection Bundles This directory contains bundles. Bundles are collections of executable code and associated resources that may be loaded at runtime by an application or tool. Note: this directory is depreciated. Use ApplicationSupport to install bundles that can be used by an application. In GNUmakefiles, this location is available via the @code{GNUSTEP_BUNDLES} variable, which is the location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_BUNDLES}, @code{GNUSTEP_NETWORK_BUNDLES}, @code{GNUSTEP_LOCAL_BUNDLES} and @code{GNUSTEP_USER_BUNDLES}. In gnustep-base, you can access the @code{Bundles} location as a folder inside the @code{Library} location. @node ColorPickers, Colors, Bundles, Folders inside Library @subsubsection ColorPickers This directory contains bundles that are used by the color picking system. They may include code that implements picking colors from a color wheel, a custom defined list of colors, etc. This folder is accessed as the @code{ColorPickers} folder inside @code{Library}. @node Colors, DTDs, ColorPickers, Folders inside Library @subsubsection Colors This directory contains files that define specific color mappings for use within libraries or applications that require color definitions. This folder is accessed as the @code{Colors} folder inside @code{Library}. @node DTDs, DocTemplates, Colors, Folders inside Library @subsubsection DTDs This directory contains any Document Type Definitions required for document parsing. This folder is accessed as the @code{DTDs} folder inside @code{Library}. @node DocTemplates, Fonts, DTDs, Folders inside Library @subsubsection DocTemplates This directory contains text templates for automatic documentation, as generated by autodoc. Any additional documentation template types must be placed in this directory, as a central location for documentation template types. Any templates installed within this directory must have an extension indicating what type of documentation system it is referenced by (ie. .gsdoc for the GNUstep implementation of autodoc). This folder is accessed as the @code{DocTemplates} folder inside @code{Library}. @node Fonts, Frameworks, DocTemplates, Folders inside Library @subsubsection Fonts This directory contains fonts and files for organizing font information. This folder is accessed as the @code{Fonts} folder inside @code{Library}. @node Frameworks, Images, Fonts, Folders inside Library @subsubsection Frameworks This directory contains frameworks. Frameworks are a type of bundle, which include, within their directory structure, a shared library providing a specific functionality (or group of related functionalities), and all resources required by that shared library. All frameworks must have the extension @file{framework}, to indicate their usage. Use of frameworks is generally discouraged, as it is difficult to support them in a clean way on multiple platforms. Bundles are a better method of organizing shared collections of resources and code. In GNUmakefiles, this location is available via the @code{GNUSTEP_FRAMEWORKS} variable, which is the location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_FRAMEWORKS}, @code{GNUSTEP_NETWORK_FRAMEWORKS}, @code{GNUSTEP_LOCAL_FRAMEWORKS} and @code{GNUSTEP_USER_FRAMEWORKS}. In gnustep-base, the @code{Frameworks} locations are available by using the @code{GSFrameworksDirectory} directory key for @code{NSSearchPathForDirectoriesInDomains()}. @node Images, Libraries/Java, Frameworks, Folders inside Library @subsubsection Images @node Libraries/Java, Libraries/Resources, Images, Folders inside Library @subsubsection Libraries/Java This directory contains Java classes. If you are using Java with GNUstep, you probably want to make sure these directories are in your CLASSPATH. In GNUmakefiles, this location is available via the @code{GNUSTEP_JAVA} variable, which is the location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_JAVA}, @code{GNUSTEP_NETWORK_JAVA}, @code{GNUSTEP_LOCAL_JAVA} and @code{GNUSTEP_USER_JAVA}. In gnustep-base, you can access the @code{Libraries/Java} location as the @code{Libraries/Java} folder inside the @code{Library} location. @node Libraries/Resources, KeyBindings, Libraries/Java, Folders inside Library @subsubsection Libraries/Resources This directory contains resources used by shared libraries. In GNUstep a shared library can have an associated resource bundle (a bundle only composed of resources, with no object file), which is then installed into this directory. For example, @code{gnustep-base} will get its resource bundle installed into @code{GNUSTEP_SYSTEM_LIBRARY/Libraries/Resources/gnustep-base}. In GNUmakefiles, this location is available via the @code{GNUSTEP_RESOURCES} variable, which is the location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_RESOURCES}, @code{GNUSTEP_NETWORK_RESOURCES}, @code{GNUSTEP_LOCAL_RESOURCES} and @code{GNUSTEP_USER_RESOURCES}. In gnustep-base, you can access the resource bundle associated with a library by using the @code{[NSBundle +bundleForLibrary:]} method (it is a GNUstep extension). @node KeyBindings, PostScript, Libraries/Resources, Folders inside Library @subsubsection KeyBindings @node PostScript, Services, KeyBindings, Folders inside Library @subsubsection PostScript This directory contains directories for specific PostScript document types and definitions, allowing applications written using the GNUstep development environment to display PostScript documents, or communicate with printers using PostScript. This folder is accessed as the @code{PostScript} folder inside @code{Library}. @node Services, Sounds, PostScript, Folders inside Library @subsubsection Services This directory contains bundles that are specifically built to provide functionality between different programs (for example, spell checking, creation of a note from text within an email application). Services that are installed on the system must an extension of ".service". In GNUmakefiles, this location is available via the @code{GNUSTEP_SERVICES} variable, which is the location for the domain in which the software will be installed. You can also reference the locations in the various domains directly by using the variables @code{GNUSTEP_SYSTEM_SERVICES}, @code{GNUSTEP_NETWORK_SERVICES}, @code{GNUSTEP_LOCAL_SERVICES} and @code{GNUSTEP_USER_SERVICES}. In gnustep-base, you can access the @code{Services} location as a folder inside the @code{Library} location. @node Sounds, Tools/Resources, Services, Folders inside Library @subsubsection Sounds This directory contains sound files. @node Tools/Resources, , Sounds, Folders inside Library @subsubsection Tools/Resources This directory contains resources used by tools. In GNUstep a tool can have an associated resource bundle (a bundle only composed of resources, with no object file), which is then installed into this directory. For example, a tool called @code{myTool} will get its resource bundle installed into @code{GNUSTEP_SYSTEM_LIBRARY/Tools/Resources/myTool}. In GNUmakefiles, this location is available as the @file{Tools/Resources} folder inside the @code{Library} location. In gnustep-base, you can access the resource bundle associated with your tool by using the @code{[NSBundle +mainBundle]} method (this semantic is a GNUstep extension). @c TODO: Mention special directories, for example location of user defaults @c TODO: Mention special directories, for example location of makefiles @node Configuration, , Structure of a Domain, Top @section Configuration GNUstep supports arbitrary filesystem layouts to map the locations in the various domains to directories on the filesystem. When you run gnustep-make's ./configure program you can use the --with-layout=xxx flag to select the filesystem layout that you prefer (choosing between the ones in the FilesystemLayouts directory, or creating your own in there!). For most users, this is all they need to know. In this section we'll go more into the details of how the filesystem layout system internally works; this is only useful if you need to do something advanced with it, typically because you have multiple GNUstep installations or you are trying to do some custom packaging of GNUstep. The filesystem layout is determined by the GNUstep configuration file (or if that is not present, by default values built into the GNUstep make and base packages when they were configured and built). The location of the GNUstep configuration file is built in to the make and base packages when they are configured using the --with-config-file option to the configure script. The path specified must be an absolute one for the make package, but may also be a path relative to the location of the base library itsself (as dynamically linked into applications) for the base package. However, the location of the configuration file may also be specified using the GNUSTEP_CONFIG_FILE environment variable, overriding the value built in to the package, at any time when using the make package to build or install software. Support for the environment variable may also be enabled for the make package when its configure script is run. The GNUSTEP_CONFIG_FILE environment variable is particularly useful if you have multiple installations and need to easily switch between them. @menu * File Format:: * Windows (MINGW):: @end menu @node File Format, Windows (MINGW), Configuration, Configuration @subsection File Format By default, the configuration file is called GNUstep.conf; it typically exists in /etc/GNUstep or /usr/local/etc/GNUstep (depending on how gnustep-make was configured) on a Unix-like system. This file is in a format suitable for being 'sourced' by the standard unix (Bourne) shell, consisting of lines of the form key=value, comments (everything on a line from the first hash (#) onwards), or blank lines. This is very convenient on unix-like systems, but needs care for windows users. If a value contains whitespace or backslash characters (or the hash which would start a comment) it needs to be quoted by enclosing the whole value in single or double quotes. An alternative for values containing backslashes (the norm for a windows path) is to double up each backslash in an unquoted value. The valid values for the keys in the GNUstep configuration file are documented in the GNUstep.conf file itself. Please check the GNUstep.conf.in file in your gnustep-make distribution for an up-to-date list of all the variables that you can change with explanations of what they do. @node Windows (MINGW), , File Format, Configuration @subsection Windows (MINGW) On ms-windows, for software development, you are likely to want to have an extra configuration file. This is because of the limitations of the make program (used to build and install software). Basically the issue is that the make package doesn't really like the colons and backslashes in windows paths (using them is error prone) and can't tolerate whitespace in file names. So you want to do all the building in a unix-style environment using only unix-style paths. On MSYS/MinGW this is done naturally by using the standard unix-style /usr/local/etc/GNUstep/GNUstep.conf config file, where the location is inside the MSYS unix-style emulation system. This is what is normally done by gnustep-make, so there is nothing special you need to do here. On the other hand, the base library (and all applications since they are built using it) wants to work with native windows paths so that applications behave naturally as far as the end users are concerned, and therefore needs a configuration file containing windows-style paths rather than unix-like ones. So, you need a different config file to be used by gnustep-base at runtime. And this is enabled by default -- in fact gnustep-base will use ./GNUstep.conf as config file on MinGW, where the location is relative to the location of the gnustep-base.dll. In other words, gnustep-make will use C:/xxx/usr/local/etc/GNUstep/GNUstep.conf (where 'xxx' is the MSYS installation path), while gnustep-base will use a GNUstep.conf file in the same directory as the gnustep-base.dll. This ./GNUstep.conf file normally does not even exist; gnustep-base's ./configure will hardcode into gnustep-base.dll relative paths to all resources (relative from the installation location of gnustep-base.dll). If you modify the filesystem layout or relocate gnustep-base.dll, you should add a GNUstep.conf file with gnustep-base.dll that contains the relative locations of the directories (relative to the location of gnustep-base.dll). It is recommended that this ./GNUstep.conf always contains relative paths to make relocation easier. @bye \bye ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/gnustep-make.texi��������������������������������������������������0000664�0001750�0001750�00000207745�13072377141�022064� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\input texinfo @c -*-texinfo-*- @c %**start of header @setfilename gnustep-make.info @settitle GNUstep Makefile Package @c %**end of header @setcontentsaftertitlepage @smallbook @setchapternewpage odd @dircategory Software development @direntry * GNUstep Make: (gnustep-make). The GNUstep build system. @end direntry @ifinfo Copyright @copyright{} 2000 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation. @end ifinfo @titlepage @title GNUstep Makefile Package @page @vskip 0pt plus 1filll Copyright @copyright{} 2000 Free Software Foundation, Inc. @sp 1 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation. @end titlepage @page @c Makefile Package Chapter @node Top, Makefile Introduction, (dir), (dir) @chapter Makefile Package @menu * Makefile Introduction:: * Makefile Structure:: * Running Make:: * Project Types:: * GNUmakefile.preamble:: * GNUmakefile.postamble:: * Common Variables:: * Other Variables:: @end menu @node Makefile Introduction, Makefile Structure, Top, Top @section Introduction The Makefile package is a system of make commands that is designed to encapsulate all the complex details of building and installing various types of projects from libraries to applications to documentation. This frees the developer to focus on the details of their particular project. Only a fairly simple main makefile need to be written which specifies the type of project and files involved in the project. @node Makefile Structure, Running Make, Makefile Introduction, Top @section Structure of a Makefile Here is an example makefile (named GNUmakefile to emphasis the fact that it relies on special features of the GNU make program). @smallexample # # An example GNUmakefile # # Include the common variables defined by the Makefile Package include $(GNUSTEP_MAKEFILES)/common.make # Build a simple Objective-C program TOOL_NAME = simple # The Objective-C files to compile simple_OBJC_FILES = simple.m -include GNUmakefile.preamble # Include in the rules for making GNUstep command-line programs include $(GNUSTEP_MAKEFILES)/tool.make -include GNUmakefile.postamble @end smallexample This is all that is necessary to define the project. @node Running Make, Project Types, Makefile Structure, Top @section Running Make @menu * Debug Information:: * Profile Information:: * Library Types:: @end menu Normally to compile a package which uses the Makefile Package it is purely a matter of typing @code{make} from the top-level directory of the package, and the package is compiled without any additional interaction. @node Debug Information, Profile Information, Running Make, Running Make @subsection Debug Information By default the Makefile Package tells the compiler to generate debugging information when compiling Objective-C and C files. The following command illustrates how to tell the Makefile Package to pass the appropriate flags to the compiler so that debugging information is not put into the binary files. @smallexample make debug=no @end smallexample @node Profile Information, Library Types, Debug Information, Running Make @subsection Profile Information By default the Makefile Package does not tell the compiler to generate profiling information when compiling Objective-C and C files. The following command illustrates how to tell the Makefile Package to pass the appropriate flags to the compiler so that profiling information is put into the binary files. @smallexample make profile=yes @end smallexample @node Library Types, , Profile Information, Running Make @subsection Static, Shared, and Dynamic Link Libraries By default the Makefile Package will generate a shared library if it is building a library project type, and it will link with shared libraries if it is building an application or command line tool project type. The following command illustrates how to tell the Makefile Package not to build using shared libraries but using static libraries instead. @smallexample make shared=no @end smallexample This default is only applicable on systems that support shared libraries; systems that do not support shared libraries will always build using static libraries. Some systems support dynamic link libraries (DLL) which are a form of shared libraries; on these systems, DLLs will be built by default unless the Makefile Package is told to build using static libraries instead, as in the above command. @node Project Types, GNUmakefile.preamble, Running Make, Top @section Project Types @menu * aggregate.make:: * application.make:: * bundle.make:: * ctool.make:: * documentation.make:: * framework.make:: * java.make:: * library.make:: * native-library.make:: * nsis.make:: * objc.make:: * palette.make:: * rpm.make:: * service.make:: * subproject.make:: * tool.make:: @end menu Projects are divided into different types described below. To create a project of a specific type, just include the particular makefile. For example, to create an application, include this line in your main make file: @example include $(GNUSTEP_MAKEFILES)/application.make @end example Each project type is independent of the others. If you want to create two different types of projects within the same directory (e.g. a tool and a java program), include both the desired makefiles in your main make file. The documentation for variables used to control each project type is provided at the start of each individual makefile (common.make and rules.make document more general variables). The documentation for installing resources (a feature shared by many project types) is in resource-set.make. @node aggregate.make, application.make, Project Types, Project Types @subsection Aggregate (@file{aggregate.make}) An Aggregate project is a project that consists of several subprojects. Each subproject can be of any other valid project type (including the Aggregate type). The only project variable is the SUBPROJECTS variable @defvr {Aggregate project} SUBPROJECTS @code{SUBPROJECTS} defines the directory names that hold the subprojects that the Aggregate project should build. @end defvr @node application.make, bundle.make, aggregate.make, Project Types @subsection Graphical Applications (@file{application.make}) An application is an Objective-C program that includes a GUI component, and by default links in all the GNUstep libraries required for GUI development, such as the Base and Gui libraries. @node bundle.make, ctool.make, application.make, Project Types @subsection Bundles (@file{bundle.make}) A bundle is a collection of resources and code that can be used to enhance an existing application or tool dynamically using the NSBundle class from the GNUstep base library. @node ctool.make, documentation.make, bundle.make, Project Types @subsection Command Line C Tools (@file{ctool.make}) A ctool is a project that only uses C language files. Otherwise it is similar to the ObjC project type. @node documentation.make, framework.make, ctool.make, Project Types @subsection Documentation (@file{documentation.make}) The Documentation project provides rules to use various types of documentation such as texi and LaTeX documentation, and convert them into finished documentation (info, PostScript, HTML, etc). @node framework.make, java.make, documentation.make, Project Types @subsection Frameworks (@file{framework.make}) A Framework is a collection of resources and a library that provides common code that can be linked into a Tool or Application. In many respects it is similar to a Bundle. @node java.make, library.make, framework.make, Project Types @subsection Java (@file{java.make}) This project provides rules for building java programs. It also makes it easy to make java projects that interact with the GNUstep libraries. @subsubsection Project Variables @defvr {Java project} JAVA_PACKAGE_NAME @code{JAVA_PACKAGE_NAME} is the reverse DNS style Java package name that resides in this project. @end defvr @defvr {Java project} JAVA_FILES @code{xxx_JAVA_FILES} is the list of Java source code files, with a @file{.java} extension, that are compiled for the @strong{xxx} project. @strong{xxx} should be replaced with the name of the Java package specified in @code{JAVA_PACKAGE_NAME}. @end defvr @defvr {Java project} JAVA_JNI_FILES @code{xxx_JAVA_JNI_FILES} is the list of Java source code files for which @code{javah} should produce header files for integration with Objective-C code. @strong{xxx} should be replaced with the name of the Java package specified in @code{JAVA_PACKAGE_NAME}. @end defvr @defvr {Java project} JAVA_PROPERTIES_FILES @code{xxx_JAVA_PROPERTIES_FILES} can be used to specify properties files to install. @strong{xxx} should be replaced with the name of the Java package specified in @code{JAVA_PACKAGE_NAME}. @end defvr @defvr {Java project} JAVA_MANIFEST_FILE @code{xxx_JAVA_MANIFEST_FILE} can be used to specify a manifest fragment that is used when building a jar file for the @strong{xxx} package. @strong{xxx} should be replaced with the name of the Java package specified in @code{JAVA_PACKAGE_NAME}. @end defvr @defvr {Java project} JAVA_JAR_NAME @code{xxx_JAVA_JAR_NAME} can be used to specify a custom name for the jar built by @code{make jar}. The default would be the package name (@strong{xxx}) with all dots replaced by hyphens. @end defvr @node library.make, native-library.make, java.make, Project Types @subsection Libraries (@file{library.make}) @menu * library.make variables:: * Example Library Makefile:: @end menu The Makefile Package provides a project type for building libraries; libraries can be built as static libraries, shared libraries, or dynamic link libraries (DLL) if the platform supports that type of library. Static libraries are supported on all platforms; while, shared libraries and DLLs are only supported on some platforms. @node library.make variables, Example Library Makefile, library.make, library.make @subsubsection Project Variables @defvr {Library project} LIBRARY_NAME @code{LIBRARY_NAME} should be assigned the list of name of libraries to be generated. Most UNIX systems expect that the filename for the library has the word @file{lib} prefixed to the name; i.e. the @file{c} library has filename of @file{libc}. Prefix the @file{lib} to the library name when it is specified in the @code{LIBRARY_NAME} variable because the Makefile Package will not automatically prefix it. @end defvr @defvr {Library project} C_FILES @code{xxx_C_FILES} is the list of C files, with a @file{.c} extension, that are to be compiled to generate the @strong{xxx} library. Replace the @strong{xxx} with the name of the library as listed by the @code{LIBRARY_NAME} variable. @end defvr @defvr {Library project} OBJC_FILES @code{xxx_OBJC_FILES} is the list of Objective-C files, with a @file{.m} extension, that are to be compiled to generate the @strong{xxx} library. Replace the @strong{xxx} with the name of the library as listed by the @code{LIBRARY_NAME} variable. @end defvr @defvr {Library project} PSWRAP_FILES @code{xxx_PSWRAP_FILES} is the list of PostScript wrap files, with a @file{.psw} extension, that are to be compiled to generate the @strong{xxx} library. PostScript wrap files are processed by the @file{pswrap} utility which generates a @file{.c} and a @file{.h} file from each @file{.psw} file; the generate @file{.c} file is the file actually compiled. Replace the @strong{xxx} with the name of the library as listed by the @code{LIBRARY_NAME} variable. @end defvr @defvr {Library project} HEADER_FILES @code{xxx_HEADER_FILES} is the list of header filenames that are to be installed with the library. If a filename has a directory path prefixed to it then that prefix will be maintained when the headers are installed. It is up to the user to make sure that the installation directory exists; otherwise, an error will occur when the library is installed, see @ref{library.make variables,,xxx_HEADER_FILES_INSTALL_DIR}. Replace the @strong{xxx} with the name of the library as listed by the @code{LIBRARY_NAME} variable. @end defvr @defvr {Library project} HEADER_FILES_DIR @code{xxx_HEADER_FILES_DIR} is the relative path from the current directory, where the makefile is located, to where the header files specified by @code{xxx_HEADER_FILES} are located. If a filename specified in @code{xxx_HEADER_FILES} has a directory path prefixed to it then that path will not be removed when the Makefile Package accesses the files, so do not specify a path with @code{xxx_HEADER_FILES_DIR} that is already prefixed to the header filenames, see @ref{library.make variables,,xxx_HEADER_FILES_INSTALL_DIR}. @code{xxx_HEADER_FILES_DIR} is optional; leaving it blank or undefined, and the Makefile Package assumes that the relative path to the header files is the current directory where the makefile resides. Replace the @strong{xxx} with the name of the library as listed by the @code{LIBRARY_NAME} variable. @end defvr @defvr {Library project} HEADER_FILES_INSTALL_DIR @code{xxx_HEADER_FILES_INSTALL_DIR} specifies the relative subdirectory path below @code{GNUSTEP_HEADERS} where the header files are to be installed. If this directory or any of its parent directories do not exist, then the Makefile Package will create them. The Makefile Package prefixes @code{xxx_HEADER_FILES_INSTALL_DIR} to each of the filenames in @code{xxx_HEADER_FILES} when they are installed, so if the filenames in @code{xxx_HEADER_FILES} already have a directory path prefixed then the user is responsible for creating that directory, the Makefile Package will not create. @code{xxx_HEADER_FILES_INSTALL_DIR} is optional; leaving it blank or undefined, and the Makefile Package assumes that the installation directory is just @code{GNUSTEP_HEADERS} with no subdirectory. Replace the @strong{xxx} with the name of the library as listed by the @code{LIBRARY_NAME} variable. @end defvr @defvr {Library project} CPPFLAGS @code{xxx_CPPFLAGS} are additional flags that will be passed to the compiler preprocessor when compiling Objective-C and C files to generate the @strong{xxx} library. Adding flags here does not override the default @code{CPPFLAGS}, see @ref{Overridable Flags,,CPPFLAGS}, they are in addition to @code{CPPFLAGS}. These flags are specific to the @strong{xxx} library, see @ref{GNUmakefile.preamble,,ADDITIONAL_CPPFLAGS}, to see how to specify global preprocessor flags. Replace the @strong{xxx} with the name of the listed as listed by the @code{LIBRARY_NAME} variable. @end defvr @defvr {Library project} OBJCFLAGS @code{xxx_OBJCFLAGS} are additional flags that will be passed to the compiler when compiling Objective-C files to generate the @strong{xxx} library. Adding flags here does not override the default @code{OBJCFLAGS}, see @ref{Overridable Flags,,OBJCFLAGS}, they are in addition to @code{OBJCFLAGS}. These flags are specific to the @strong{xxx} library, see @ref{GNUmakefile.preamble,,ADDITIONAL_OBJCFLAGS}, to see how to specify global compiler flags. Replace the @strong{xxx} with the name of the library as listed by the @code{LIBRARY_NAME} variable. @end defvr @defvr {Library project} CFLAGS @code{xxx_CFLAGS} are additional flags that will be passed to the compiler when compiling C files to generate the @strong{xxx} library. Adding flags here does not override the default @code{CFLAGS}, see @ref{Overridable Flags,,CFLAGS}, they are in addition to @code{CFLAGS}. These flags are specific to the @strong{xxx} library, see @ref{GNUmakefile.preamble,,ADDITIONAL_CFLAGS}, to see how to specify global compiler flags. Replace the @strong{xxx} with the name of the library as listed by the @code{LIBRARY_NAME} variable. @end defvr @defvr {Library project} LDFLAGS @code{xxx_LDFLAGS} are additional flags that will be passed to the linker when it creates the @strong{xxx} library. Adding flags here does not override the default @code{LDFLAGS}, see @ref{Overridable Flags,,LDFLAGS}, they are in addition to @code{LDFLAGS}. These flags are specific to the @strong{xxx} library, see @ref{GNUmakefile.preamble,,ADDITIONAL_LDFLAGS}, to see how to specify global linker flags. Replace the @strong{xxx} with the name of the library as listed by the @code{LIBRARY_NAME} variable. @end defvr @defvr {Library project} INCLUDE_DIRS @code{xxx_INCLUDE_DIRS} is the list of additional directories that the compiler will search when it is looking for include files; these flags are specific to the @strong{xxx} library, see @ref{GNUmakefile.preamble,,ADDITIONAL_INCLUDE_DIRS}, to see how to specify additional global include directories. The directories should be specified as @samp{-I} flags to the compiler. The additional include directories will be placed before the normal GNUstep and system include directories, and before any global include directories specified with @code{ADDITIONAL_INCLUDE_DIRS}, so they will always be searched first. Replace the @strong{xxx} with the name of the library as listed by the @code{LIBRARY_NAME} variable. @end defvr @node Example Library Makefile, , library.make variables, library.make @subsubsection Example Makefile This example makefile illustrates two libraries, @file{libone} and @file{libtwo}, that are to be generated. @smallexample # # An example GNUmakefile # # Include the common variables defined by the Makefile Package include $(GNUSTEP_MAKEFILES)/common.make # Two libraries LIBRARY_NAME = libone libtwo # # The files for the libone library # # The Objective-C files to compile libone_OBJC_FILES = one.m draw.m # The C source files to be compiled libone_C_FILES = parse.c # The PostScript wrap source files to be compiled libone_PSWRAP_FILES = drawing.psw # The header files for the library libone_HEADER_FILES_DIR = ./one libone_HEADER_FILES_INSTALL_DIR = one libone_HEADER_FILES = one.h draw.h # # The files for the libtwo library # # The Objective-C files to compile libtwo_OBJC_FILES = two.m another.m test.m # The header files for the library libtwo_HEADER_FILES_DIR = ./two libtwo_HEADER_FILES_INSTALL_DIR = two libtwo_HEADER_FILES = two.h another.h test.h common.h # Option include to set any additional variables -include GNUmakefile.preamble # Include in the rules for making libraries include $(GNUSTEP_MAKEFILES)/library.make # Option include to define any additional rules -include GNUmakefile.postamble @end smallexample Notice that the @file{libone} library has Objective-C, C, and PostScript wrap files to be compiled; while, the @file{libtwo} library only has some Objective-C files. The header files for the @file{libone} library reside in the @file{one} subdirectory from where the sources are located, and the header files will be installed into the @file{one} subdirectory within @code{GNUSTEP_HEADERS}. Likewise the header files for the @file{libtwo} library reside in the @file{two} subdirectory from where the sources are located, and the header files will be installed into the @file{two} subdirectory within @code{GNUSTEP_HEADERS}. @node native-library.make, nsis.make, library.make, Project Types @subsection Native Library (@file{native-library.make}) A "native library" is a project which is to be built as a shared library on most targets and as a framework on Darwin. (Currently this is only the case for apple-apple-apple.) In other words, it is to be built as the most appropriate native equivalent of a traditional shared library (see @ref{library.make} and @ref{framework.make}). @defvr {Native Library project} NATIVE_LIBRARY_NAME @code{NATIVE_LIBRARY_NAME} should be the name of the native library, without the 'lib'. All the other variables are the same as the ones used in libraries and frameworks. @end defvr To compile something against a native library, you can use @code{ADDITIONAL_NATIVE_LIBS += MyLibrary} This will be converted into -lMyLibrary link flag on for most targets and into -framework MyLibrary link flag for apple-apple-apple. To add the corresponding flags, you can use @code{ADDITIONAL_NATIVE_LIB_DIRS += ../MyPath} This will be converted into -L../MyPath/$(GNUSTEP_OBJ_DIR) flag on for most targets and into -F../MyPath flag for apple-apple-apple. @node nsis.make, objc.make, native-library.make, Project Types @subsection NSIS Installer (@file{nsis.make}) The NSIS make project provides rules for automatically generating NSIS installers for Windows operating systems. In order to get this functionality, include @file{Master/nsis.make} from the Makefiles directory in your GNUmakefile. @example include $(GNUSTEP_MAKEFILES)/Master/nsis.make @end example To create an installer file by itself, run @code{make nsifile}. To create the full installer executable, run @code{make nsis}. Note that in order to do this, you must be either running on a Windows computer with a release of the NSIS compiler (from @url{http://nsis.sourceforge.net}) or you need to be using a cross-compiler and cross-compiled NSIS script compiler. (NOTE: This does not currently work - you need to use the GUI NSIS compiler to compile the installer scripts). Currently the nsis make package only makes installers for Applications. It will use the @file{nsi-app.template} file in the GNUstep Makefiles directory. If you want, you can provide your own template with customized script instructions by creating a file called @file{PACKAGE_NAME.nsi.in}, where @code{PACKAGE_NAME} is the same as the name of your package (see below). You also need to define several variables in your main make file. Except for @code{PACKAGE_NAME}, which is required, all the following variables are optional. @defvr {NSIS} PACKAGE_NAME @code{PACKAGE_NAME} defines the name of the NSIS installer. In most cases this will be the same as the name of your project type. For instance, if you are creating a application, and have set @code{APP_NAME} to @samp{MyApplication}, Then set @code{PACKAGE_NAME} to the same thing, or just use @code{PACKAGE_NAME=$(APP_NAME)}. if @code{PACKAGE_NAME} is not set, it defaults to @code{unnamed-package} @end defvr @defvr {NSIS} PACKAGE_VERSION Set @code{PACKAGE_VERSION} to the release version number of your package. If not set, it defaults to 0.0.1 @end defvr @defvr {NSIS} GNUSTEP_INSTALLATION_DOMAIN Set @code{GNUSTEP_INSTALLATION_DOMAIN} to the domain where you want to install the software. This should be either @code{SYSTEM}), @code{LOCAL}, or @code{USER}. If not set it defaults to @code{LOCAL}. @end defvr @node objc.make, palette.make, nsis.make, Project Types @subsection Objective-C Programs (@file{objc.make}) @menu * objc.make variables:: * Example ObjC Makefile:: @end menu The Makefile Package provides a project type that is useful for building Objective-C programs that do not depend upon the GNUstep libraries. Objective-C programs which only use the Objective-C Runtime Library and the classes it defines are candidates for this project type. @node objc.make variables, Example ObjC Makefile, objc.make, objc.make @subsubsection Project Variables Most of the project variables work the same as in Library projects (see @ref{library.make}). @defvr {Objective-C program project} OBJC_PROGRAM_NAME @code{OBJC_PROGRAM_NAME} is the list of names of Objective-C programs that are to be built; each name should be unique as it is the name of the executable file that will be generated. @end defvr @defvr {Objective-C program project} OBJC_LIBS @code{xxx_OBJC_LIBS} is the list of additional libraries that the linker will use when linking to create the @strong{xxx} Objective-C program executable file. These libraries are specific to the @strong{xxx} Objective-C program, see @ref{GNUmakefile.preamble,,ADDITIONAL_OBJC_LIBS}, to see how to specify additional global libraries. These libraries are placed before all of the Objective-C Runtime and system libraries, and before the global libraries specified with @code{ADDITIONAL_OBJC_LIBS}, so that they will be searched first when linking. The additional libraries should be specified as @samp{-l} flags to the linker as the following example illustrates. Replace the @strong{xxx} with the name of the program as listed by the @code{OBJC_PROGRAM_NAME} variable. @end defvr @node Example ObjC Makefile, , objc.make variables, objc.make @subsubsection Example Makefile This makefile illustrates two Objective-C programs, @file{simple} and @file{list} that are to be generated. @smallexample # # An example GNUmakefile # # Include the common variables defined by the Makefile Package include $(GNUSTEP_MAKEFILES)/common.make # Build a simple Objective-C program OBJC_PROGRAM_NAME = simple list # Have the Objective-C runtime macro be defined for simple program simple_CPPFLAGS = $(RUNTIME_DEFINE) # The Objective-C files to compile for simple program simple_OBJC_FILES = simple.m # The Objective-C files to compile for list program list_OBJC_FILES = list.m linkedlist.m # The C files to compile for list program list_C_FILES = sort.c # Option include to set any additional variables -include GNUmakefile.preamble # Include in the rules for making Objective-C programs include $(GNUSTEP_MAKEFILES)/objc.make # Option include to define any additional rules -include GNUmakefile.postamble @end smallexample The @file{simple} Objective-C program only consists of single Objective-C file; while, the @file{list} Objective-C program consists of two Objective-C files and one C file. The @file{simple} Objective-C program use the variable defined by the Makefile Package, @code{RUNTIME_DEFINE}, to define a macro based upon the Objective-C Runtime library; presumably @file{simple.m} has code which is dependent upon the Objective-C Runtime. @node palette.make, rpm.make, objc.make, Project Types @subsection Palettes (@file{palette.make}) A palette is a Bundle that provides some kind of GUI functionality. Otherwise it is similar to the Bundle project. @node rpm.make, service.make, palette.make, Project Types @subsection RPMs (@file{rpm.make}) The RPM project provides rules for automatically generating RPM spec files in order to make RPM distributions. Note that this project makefile is included automatically when you include any other project type in your GNUmakefile. It is non necessary to include @file{rpm.make}. Except for @code{PACKAGE_NAME}, which is required, all the following variables are optional. It is recommended that you set them anyway in order to provide the standard information that is present in most RPM distributions. @defvr {RPM} PACKAGE_NAME @code{PACKAGE_NAME} defines the name of the RPM distribution. In most cases this will be the same as the name of your project type. For instance, if you are creating a application, and have set @code{APP_NAME} to @samp{MyApplication}, Then set @code{PACKAGE_NAME} to the same thing, or just use @code{PACKAGE_NAME=$(APP_NAME)}. if @code{PACKAGE_NAME} is not set, it defaults to @code{unnamed-package} @end defvr @defvr {RPM} PACKAGE_VERSION Set @code{PACKAGE_VERSION} to the release version number of your package. If not set, it defaults to 0.0.1 @end defvr @defvr {RPM} GNUSTEP_INSTALLATION_DOMAIN Set @code{GNUSTEP_INSTALLATION_DOMAIN} to the domain where you want to install the software. This should be either @code{SYSTEM}), @code{LOCAL}, or @code{USER}. If not set it defaults to @code{LOCAL}. @end defvr @defvr {RPM} PACKAGE_NEEDS_CONFIGURE Set this to @code{YES} if a configure script needs to be run before compilation @end defvr In addition you need to provide a stub spec file named for the package name, such as this example @file{libobjc.spec.in} file: @example Release: 1 Source: ftp://ftp.gnustep.org/pub/gnustep/libs/%@{gs_name@}-%@{gs_version@}. tar.gz Copyright: GPL Group: Development/Libraries Summary: Objective-C Runtime Library Packager: Adam Fedor <fedor@@gnu.org> Vendor: The GNUstep Project URL: http://www.gnustep.org/ %description Library containing the Objective-C runtime. @end example @node service.make, subproject.make, rpm.make, Project Types @subsection Services (@file{service.make}) A Service is like a Tool that provides a service to a running GNUstep program. @node subproject.make, tool.make, service.make, Project Types @subsection Subprojects (@file{subproject.make}) A Subproject provides a way to organize code in a large application into subunits. The code in the subproject is merged in with the main tool or application. @node tool.make, , subproject.make, Project Types @subsection Command Line Tools (@file{tool.make}) A tool is an ObjC project that by default links in the GNUstep base library. Otherwise it is similar to the ObjC project type. @node GNUmakefile.preamble, GNUmakefile.postamble, Project Types, Top @section Global Variables (@file{GNUmakefile.preamble}) @file{GNUmakefile.preamble} is an optional file that may be put within the package for declaring global makefile variables for the package. The filename, @file{GNUmakefile.preamble}, is just a convention; likewise, the variables defined within it can be put in the normal @file{GNUmakefile} versus in this special file. However, the reason for this convention is that the @file{GNUmakefile} may be automatically maintained by a project management system, like Project Center, so any changes made to @file{GNUmakefile} may be discarded by that project management system. The file, @file{GNUmakefile.preamble}, in the Makefile Package is a template that can be used the project's @file{GNUmakefile.preamble}. It is not necessary to have a @file{GNUmakefile.preamble} with the project unless it is actually needed, the Makefile Package will only include it if it is available, see @ref{Makefile Structure} for information on how the Makefile Package includes a @file{GNUmakefile.preamble}. The rest of this section describes the individual global variables that the Makefile Package uses which are generally placed in the package's @file{GNUmakefile.preamble}. @defvar ADDITIONAL_CPPFLAGS @code{ADDITIONAL_CPPFLAGS} are additional flags that will be passed to the compiler preprocessor. Generally any macros to be defined for all files are placed here; the are passed for both Objective-C and C files that are compiled. @code{RUNTIME_DEFINE}, @code{FOUNDATION_DEFINE}, @code{GUI_DEFINE}, and @code{GUI_BACKEND_DEFINE} are some makefile variables which define macros that can be assigned to @code{ADDITIONAL_CPPFLAGS}. The following example illustrates the use of @code{ADDITIONAL_CPPFLAGS} to define a macro for the Objective-C Runtime Library plus an additional macro that is specific to the package. @end defvar @smallexample ADDITIONAL_CPPFLAGS = $(RUNTIME_DEFINE) -DVERBOSE=1 @end smallexample @defvar ADDITIONAL_OBJCFLAGS @code{ADDITIONAL_OBJCFLAGS} are additional flags that will be passed to the compiler when compiling Objective-C files. Adding flags here does not override the default @code{OBJCFLAGS}, see @ref{Overridable Flags,,OBJCFLAGS}, they are in addition to @code{OBJCFLAGS}. Generally @code{ADDITIONAL_OBJCFLAGS} are placed before @code{OBJCFLAGS} when the compiler is executed, but one should avoid having any placement sensitive flags because the order of the flags is not guaranteed. The following example illustrates how you can pass additional Objective-C flags. @end defvar @smallexample ADDITIONAL_OBJCFLAGS = -Wno-protocol @end smallexample @defvar ADDITIONAL_CFLAGS @code{ADDITIONAL_CFLAGS} are additional flags that will be passed to the compiler when compiling C files. Adding flags here does not override the default @code{CFLAGS}, see @ref{Overridable Flags,,CFLAGS}, they are in addition to @code{CFLAGS}. Generally @code{ADDITIONAL_CFLAGS} are placed before @code{CFLAGS} when the compiler is executed, but one should avoid having any placement sensitive flags because the order of the flags is not guaranteed. The following example illustrates how you can pass additional C flags. @end defvar @smallexample ADDITIONAL_CFLAGS = -finline-functions @end smallexample @defvar ADDITIONAL_LDFLAGS @code{ADDITIONAL_LDFLAGS} are additional flags that will be passed to the linker when it creates an executable; these flags are passed when linking a command line tool, and application, or an Objective-C program. Adding flags here does not override the default @code{LDFLAGS}, see @ref{Overridable Flags,,LDFLAGS}, they are in addition to @code{LDFLAGS}. Generally @code{ADDITIONAL_LDFLAGS} are placed before @code{LDFLAGS} when the linker is executed, but one should avoid having any placement sensitive flags because the order of the flags is not guaranteed. The following example illustrates how you can pass addition linker flags. @end defvar @smallexample ADDITIONAL_LDFLAGS = -v @end smallexample @defvar ADDITIONAL_INCLUDE_DIRS @code{ADDITIONAL_INCLUDE_DIRS} is the list of additional directories that the compiler will search when it is looking for include files. The directories should be specified as @samp{-I} flags to the compiler. The additional include directories will be placed before the normal GNUstep and system include directories, so they will always be searched first. The following example illustrates two additional include directories; @code{/usr/local/gnu/include} will be searched first, then @code{/usr/gnu/include}, and finally the GNUstep and system directories which are automatically defined by the Makefile Package. @end defvar @smallexample ADDITIONAL_INCLUDE_DIRS = -I/usr/local/gnu/include -I/usr/gnu/include @end smallexample @defvar ADDITIONAL_LIB_DIRS @code{ADDITIONAL_LIB_DIRS} is the list of additional directories that the linker will search when it is looking for library files. The directories should be specified as @samp{-L} flags to the linker. The additional library directories will be placed before the GNUstep and system library directories so that they will be searched first by the linker. The following example illustrates two additional library directories; @code{/usr/local/gnu/lib} will be searched first, then @code{/usr/gnu/lib}, and finally the GNUstep and system directories which are automatically defined by the Makefile Package. @end defvar @smallexample ADDITIONAL_LIB_DIRS = -L/usr/local/gnu/lib -L/usr/gnu/lib @end smallexample @defvar ADDITIONAL_OBJC_LIBS @code{ADDITIONAL_OBJC_LIBS} is the list of additional libraries that the linker will use when linking command line tools, applications, and Objective-C programs, see @ref{tool.make}, @ref{application.make}, and @ref{objc.make}. For Objective-C programs, @code{ADDITIONAL_OBJC_LIBS} is placed before all of the Objective-C Runtime and system libraries so that they will be searched first when linking. For command line tools and applications, @code{ADDITIONAL_OBJC_LIBS} is placed @emph{before} all of the Objective-C Runtime and system libraries but @emph{after} the Foundation and GUI libraries. Libraries specified with @code{ADDITIONAL_OBJC_LIBS} should only depend upon the Objective-C Runtime and/or system functions, not Foundation or GUI classes; Foundation dependent libraries should be specified with @code{ADDITIONAL_TOOL_LIBS} and GUI dependent libraries should be specified with @code{ADDITONAL_GUI_LIBS}. The additional libraries should be specified as @samp{-l} flags to the linker as the following example illustrates. @end defvar @smallexample ADDITIONAL_OBJC_LIBS = -lSwarm @end smallexample @defvar ADDITIONAL_TOOL_LIBS @code{ADDITIONAL_TOOL_LIBS} is the list of additional libraries that the linker will use when linking command line tools and applications, see @ref{tool.make} and @ref{application.make}. For command line tools, @code{ADDITIONAL_TOOL_LIBS} is placed before all of the GNUstep and system libraries so that they will be searched first when linking. For applications, @code{ADDITIONAL_TOOL_LIBS} is placed before the Foundation and system libraries but after the GUI libraries. Libraries specified with @code{ADDITIONAL_TOOL_LIBS} should only depend upon the Foundation classes and/or system functions, not GUI classes; GUI dependent libraries should be specified with @code{ADDITIONAL_GUI_LIBS}. The additional libraries should be specified as @samp{-l} flags to the linker as the following example illustrates. @end defvar @smallexample ADDITIONAL_TOOL_LIBS = -lone -lsimple @end smallexample @defvar ADDITIONAL_GUI_LIBS @code{ADDITIONAL_GUI_LIBS} is the list of additional libraries that the linker will use when linking applications, see @ref{application.make}. @code{ADDITIONAL_GUI_LIBS} is placed before all of the GUI, Foundation, and system libraries so that they will be searched first when linking. The additional libraries should be specified as @samp{-l} flags to the linker as the following example illustrates. @end defvar @smallexample ADDITIONAL_GUI_LIBS = -lMiscGui @end smallexample @defvar GS_WITH_ARC @code{GS_WITH_ARC} may be set to 1 to say that Objective-C source code is to be compiled for ARC memory management. This variable must be set before @file{common.make} is included, and only works if the library combo includes the 'ng' runtime specification. @end defvar @defvar LIBRARIES_DEPEND_UPON @code{LIBRARIES_DEPEND_UPON} is the set of libraries that the shared library depends upon, see @ref{library.make} for more information about building shared libraries; this variable is only relevant for library project types. On some platforms when a shared library is built, any libraries which the object code in the shared library depends upon must be linked in the generation of the shared library. This is similar to the process of linking an executable file like a command line tool or Objective-C program except that the result is a shared library. Libraries specified with @code{LIBRARIES_DEPEND_UPON} should be listed as @samp{-l} flags to the linker; when possible use variables defined by the Makefile Package to specify GUI, Foundation, or system libraries; like @code{GUI_LIBS}, @code{FND_LIBS}, @code{OBJC_LIBS}, or @code{SYSTEM_LIBS}. @code{LIBRARIES_DEPEND_UPON} is independent of @code{ADDITIONAL_OBJC_LIBS}, @code{ADDITIONAL_TOOL_LIBS}, and @code{ADDITIONAL_GUI_LIBS}, so any libraries specified there may need to be specified with @code{LIBRARIES_DEPEND_UPON}. The following example illustrates the use of @code{LIBRARIES_DEPEND_UPON} for a shared library that is depend upon the Foundation, ObjC, system libraries and an additional user library. @end defvar @smallexample LIBRARIES_DEPEND_UPON = -lsimple $(FND_LIBS) $(OBJC_LIBS) $(SYSTEM_LIBS) @end smallexample @defvar ADDITIONAL_INSTALL_DIRS @code{ADDITIONAL_INSTALL_DIRS} is the list of additional directories that should be created when the Makefile Package installs the file for the project. These directories are only one that the project needs to be created but that the Makefile Package does not automatically create. The directories should be absolute paths but use the @code{GNUSTEP_LIBRARY} variable and other Makefile Package define variables, see @ref{Directory Paths}, so that the directories get created in the appropriate place relative to the other file installed for the project. The following example illustrates how two additional directories can be created during installation. @end defvar @smallexample ADDITIONAL_INSTALL_DIRS = $(GNUSTEP_RESOURCES)/MyProject @end smallexample @node GNUmakefile.postamble, Common Variables, GNUmakefile.preamble, Top @section Global Rules (@file{GNUmakefile.postamble}) The @file{GNUmakefile.postamble} file is an optional file you may include in your package to define additional rules that should be executed when making and/or installing the project. There is a template @file{GNUmakefile.postamble} file in the Makefile package that you can use as an example. Most of the rules are self explanatory. The @samp{before-} rules define things that should happen before a process is executed (e.g. @samp{before-all} for before compilation, @samp{before-install} for before installation). The @samp{after-} rules define things that should happen after a process is complete. You can even define additional rules such as ones that a particular to your specific package or that are to be used by developers only. @node Common Variables, Other Variables, GNUmakefile.postamble, Top @section Common Variables (@file{common.make}) @menu * Directory Paths:: * Scripts:: * Platform Information:: * Library Combination:: * Overridable Flags:: @end menu Any of these variables that are defined by @file{common.make} can and should be used by the user's makefile fragments to reference directories and/or perform any tasks which are not done automatically by the Makefile Package. Most variables refer to directory paths, both absolute and relative, where files will be installed, but other variables are defined based upon the target platform that the person is compiling for. Do not change the values of any of these automatically defined variables as the resultant behaviour of the Makefile Package is undefined. @node Directory Paths, Scripts, Common Variables, Common Variables @subsection Directory Paths @defvar GNUSTEP_MAKEFILES @code{GNUSTEP_MAKEFILES} is the absolute path to the directory where the Makefile Package files are located. Use @code{GNUSTEP_MAKEFILES} to refer to a makefile fragment or script file from the Makefile Package within a makefile; the @code{GNUSTEP_MAKEFILES} variable should be only be used within makefiles and not referenced within C or Objective-C programs. @end defvar @defvar GNUSTEP_APPS @code{GNUSTEP_APPS} is the absolute path to the directory where GUI applications are installed. This variable is dependent upon the @code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change accordingly if the user specifies a different installation domain. @end defvar @defvar GNUSTEP_ADMIN_APPS @code{GNUSTEP_ADMIN_APPS} is the absolute path to the directory where GUI applications for the system Administrator are installed. This variable is dependent upon the @code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change accordingly if the user specifies a different installation domain. @end defvar @defvar GNUSTEP_WEB_APPS @code{GNUSTEP_WEB_APPS} is the absolute path to the directory where web applications (for web development frameworks such as GSWeb or SOPE) are installed. This variable is dependent upon the @code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change accordingly if the user specifies a different installation domain. @end defvar @defvar GNUSTEP_TOOLS @code{GNUSTEP_TOOLS} is the absolute path for the root directory where command line tools are installed. Only command line tools which are target platform independent should be installed in @code{GNUSTEP_TOOLS}; target platform dependent command line tools should be placed in the appropriate subdirectory of @code{GNUSTEP_TOOLS}, see @ref{Directory Paths,,GNUSTEP_TARGET_DIR}, and @ref{Directory Paths,,TOOL_INSTALLATION_DIR}. This variable is dependent upon the @code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change accordingly if the user specifies a different installation domain. @end defvar @defvar GNUSTEP_ADMIN_TOOLS @code{GNUSTEP_ADMIN_TOOLS} is the absolute path for the root directory where command line tools for the system administrator are installed. Only command line tools which are target platform independent should be installed in @code{GNUSTEP_ADMIN_TOOLS}; target platform dependent command line tools should be placed in the appropriate subdirectory of @code{GNUSTEP_ADMIN)TOOLS}, see @ref{Directory Paths,,GNUSTEP_TARGET_DIR}, and @ref{Directory Paths,,TOOL_INSTALLATION_DIR}. This variable is dependent upon the @code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change accordingly if the user specifies a different installation domain. @end defvar @defvar GNUSTEP_HEADERS @code{GNUSTEP_HEADERS} is the absolute path for the root directory where header files are installed. Normally header files are not installed in the @code{GNUSTEP_HEADERS} directory, but in a subdirectory as specified by the project which owns the files, see @ref{library.make} for more information. @code{GNUSTEP_HEADERS} should contain platform independent header files because the files are shared by all platforms. Any target platform dependent header files should be placed in the appropriate subdirectory as specified by @code{GNUSTEP_TARGET_DIR}. This variable is dependent upon the @code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change accordingly if the user specifies a different installation domain. @end defvar @defvar GNUSTEP_LIBRARY @code{GNUSTEP_LIBRARY} is the absolute path for the 'Library' directory where all sorts of resources are installed. This directory can be expected to have (at least) some standard subdirectories with fixed names, which are @code{ApplicationSupport}, @code{Bundles}, @code{Frameworks}, @code{ApplicationSupport/Palettes}, @code{Services}, @code{Libraries/Resources} and @code{Libraries/Java}. You can access them in your GNUmakefile as @code{GNUSTEP_LIBRARY/ApplicationSupport}, @code{GNUSTEP_LIBRARY/Bundles}, etc. This variable is dependent upon the @code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change accordingly if the user specifies a different installation domain. @end defvar @defvar GNUSTEP_LIBRARIES @code{GNUSTEP_LIBRARIES} is the absolute path for the directory where libraries are installed taking the target platform and library combination into account. This directory is generally where library project types, see @ref{library.make}, will install the library file. This variable is dependent upon the @code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change accordingly if the user specifies a different installation domain. @end defvar @defvar GNUSTEP_RESOURCES @code{GNUSTEP_RESOURCES} is the absolute path for the directory where resource files for libraries are installed; example resources are fonts, printer type information, model files for system panels, and system images. The resource files are generally associated with libraries, because resources for applications or bundles are included within the application or bundle directory wrapper. @code{GNUSTEP_RESOURCES} is the @code{Libraries/Resources} subdirectory of @code{GNUSTEP_LIBRARY}; it is dependent upon the @code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change accordingly if the user specifies a different installation domain. @end defvar @defvar GNUSTEP_DOC @code{GNUSTEP_DOC} is the absolute path for the directory where documentation is installed (with the exception of man pages and info documentation, which need to be installed into @code{GNUSTEP_DOC_MAN} and @code{GNUSTEP_DOC_INFO}). This variable is dependent upon the @code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change accordingly if the user specifies a different installation domain. @end defvar @defvar GNUSTEP_DOC_MAN @code{GNUSTEP_DOC_MAN} is the absolute path for the directory where man pages are to be installed. This variable is dependent upon the @code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change accordingly if the user specifies a different installation domain. @end defvar @defvar GNUSTEP_DOC_INFO @code{GNUSTEP_DOC_INFO} is the absolute path for the directory where info documentation is installed. This variable is dependent upon the @code{GNUSTEP_INSTALLATION_DOMAIN} variable, so the path will change accordingly if the user specifies a different installation domain. @end defvar @defvar GNUSTEP_HOST_DIR @code{GNUSTEP_HOST_DIR} is the subdirectory path for the host platform CPU and operating system. It is a composed from the @code{GNUSTEP_HOST_CPU} and @code{GNUSTEP_HOST_OS} variables. @end defvar @defvar GNUSTEP_TARGET_DIR @code{GNUSTEP_TARGET_DIR} is the subdirectory path for the target platform CPU and operating system. It is composed from the @code{GNUSTEP_TARGET_CPU} and @code{GNUSTEP_TARGET_OS} variables. @code{GNUSTEP_TARGET_DIR} is generally used as part of the installation path when platform specific files are installed. @end defvar @defvar GNUSTEP_OBJ_DIR @code{GNUSTEP_OBJ_DIR} is the subdirectory path where the Makefile Package places binary files: object files, libraries, executables, produced by the compiler. The Makefile Package separates binary files for different target platforms, different library combinations, and different compile options into different directories; these different directories are subdirectories from the current directory where the makefile resides. This structure allows a package to be compiled for different target platforms, different library combinations, and different compile options @emph{in place}; i.e. the binary files are separated from each other so a compile pass from one set of options do not overwrite or erase binary files from a previous compile pass with different options. Generally the user does not use this variable; however, if the package needs to manually install some binary files than the makefile fragment uses this variable to reference the path where the binary file is located. @end defvar @node Scripts, Platform Information, Directory Paths, Common Variables @subsection Scripts @defvar CONFIG_GUESS_SCRIPT @code{CONFIG_GUESS_SCRIPT} is the absolute path to the @file{config.guess} script within the Makefile Package; this script is used to determine host and target platform information. The Makefile Package executes this script to determine the values of the host platform variables: @code{GNUSTEP_HOST}, @code{GNUSTEP_HOST_CPU}, @code{GNUSTEP_HOST_VENDOR}, @code{GNUSTEP_HOST_OS}, and the target platform variables: @code{GNUSTEP_TARGET}, @code{GNUSTEP_TARGET_CPU}, @code{GNUSTEP_TARGET_VENDOR}, @code{GNUSTEP_TARGET_OS}; generally the user does not need to execute this script because the Makefile Package executes it automatically. @end defvar @defvar CONFIG_SUB_SCRIPT @code{CONFIG_SUB_SCRIPT} is the absolute path to the @file{config.sub} script within the Makefile Package; this script takes a platform name and canonicalizes it, i.e. it puts the name in a standard form. The Makefile Package uses this script when the user specifies a target platform for compilation; the target platform name is canonicalized so that the Makefile Package can properly parse the name into its different components. Generally the user does not execute this script. @end defvar @defvar CONFIG_CPU_SCRIPT @code{CONFIG_CPU_SCRIPT} is the absolute path to the @file{cpu.sh} script within the Makefile Package; this script extracts the CPU name from a canonicalized platform name. Generally the user does not execute this script; it is used internally by the Makefile Package. @end defvar @defvar CONFIG_VENDOR_SCRIPT @code{CONFIG_VENDOR_SCRIPT} is the absolute path to the @file{vendor.sh} script within the Makefile Package; this script extracts the vendor name from a canonicalized platform name. Generally the user does not execute this script; it is used internally by the Makefile Package. @end defvar @defvar CONFIG_OS_SCRIPT @code{CONFIG_OS_SCRIPT} is the absolute path to the @file{os.sh} script within the Makefile Package; this script extracts the operating system name from a canonicalized platform name. Generally the user does not execute this script; it is used internally by the Makefile Package. @end defvar @defvar CLEAN_CPU_SCRIPT @code{CLEAN_CPU_SCRIPT} is the absolute path to the @file{clean_cpu.sh} script within the Makefile Package; this script takes a platform CPU name and @emph{cleans} it for use by the Makefile Package. The process of cleaning refers to the situation where numerous equivalent processors, which have different names, are mapped to a single name. For example, the Intel line of processors: i386, i486, Pentium, all have different CPU names, but the Makefile Package considers them equivalent and cleans those names so that the single name @file{ix86} is used. Generally the user does not execute this script; it is used internally by the Makefile Package. @end defvar @defvar CLEAN_VENDOR_SCRIPT @code{CLEAN_VENDOR_SCRIPT} is the absolute path to the @file{clean_vendor.sh} script within the Makefile Package; this script takes a platform vendor name and @emph{cleans} it for use by the Makefile Package. The process of cleaning refers to the situation where numerous equivalent vendors, which have different names, are mapped to a single name. Generally the user does not execute this script; it is used internally by the Makefile Package. @end defvar @defvar CLEAN_OS_SCRIPT @code{CLEAN_OS_SCRIPT} is the absolute path to the @file{clean_os.sh} script within the Makefile Package; this script takes a platform operating system name and @emph{cleans} it for use by the Makefile Package. The process of cleaning refers to the situation where numerous equivalent operating systems, which have different names, are mapped to a single name. Generally the user does not execute this script; it is used internally by the Makefile Package. @end defvar @node Platform Information, Library Combination, Scripts, Common Variables @subsection Host and Target Platform Information @defvar GNUSTEP_HOST @code{GNUSTEP_HOST} is the canonical host platform name; i.e. the name of the platform which is performing compilation of programs. For example, a SPARC machine by Sun Microsystems running the Solaris 2.5.1 operating system has the name @code{sparc-sun-solaris2.5.1}. @end defvar @defvar GNUSTEP_HOST_CPU @code{GNUSTEP_HOST_CPU} is the CPU name for the canonical host platform name; i.e. the name of the CPU platform which is performing compilation of programs. The Makefile Package cleans this CPU name with the @code{CLEAN_CPU_SCRIPT} script before using it internally. For example, the canonical host platform name of @code{i586-pc-linux-gnu} has a CPU name of @code{ix86}. @end defvar @defvar GNUSTEP_HOST_VENDOR @code{GNUSTEP_HOST_VENDOR} is the vendor name for the canonical host platform; i.e. the name of the vendor platform which is performing compilation of programs. The Makefile Package cleans this vendor name with the @code{CLEAN_VENDOR_SCRIPT} script before using it internally. For example, the canonical host platform name of @code{sparc-sun-solaris2.5.1} has a vendor name of @code{sun}. @end defvar @defvar GNUSTEP_HOST_OS @code{GNUSTEP_HOST_OS} is the operating system name for the canonical host platform; i.e. the name of the operating system platform which is performing compilation of programs. The Makefile Package cleans this operating system name with the @code{CLEAN_OS_SCRIPT} script before using it internally. For example, the canonical host platform name of @code{i586-pc-linux-gnu} has an operating system name of @code{linux-gnu}. @end defvar @defvar GNUSTEP_TARGET @code{GNUSTEP_TARGET} is the canonical target platform name; i.e. compilation of programs generate object code for this platform. By default the target platform is the same as the host platform unless the user specifies a different target when running make, see Cross Compiling. @end defvar @defvar GNUSTEP_TARGET_CPU @code{GNUSTEP_TARGET_CPU} is the CPU name for the canonical target platform; i.e. compilation of programs generate object code for this CPU platform. The Makefile Package cleans this operating system name with the @code{CLEAN_CPU_SCRIPT} script before using it internally. By default the target CPU platform is the same as the host CPU platform, @code{GNUSTEP_HOST_CPU}, unless the user specifies a different target platform when running make, see Cross Compiling. @end defvar @defvar GNUSTEP_TARGET_VENDOR @code{GNUSTEP_TARGET_VENDOR} is the vendor name for the canonical target platform; i.e. compilation of programs generate object code for this vendor platform. The Makefile Package cleans this vendor name with the @code{CLEAN_VENDOR_SCRIPT} script before using it internally. By default the target vendor platform is the same as the host vendor platform, @code{GNUSTEP_HOST_VENDOR}, unless the user specifies a different target platform when running make, see Cross Compiling. @end defvar @defvar GNUSTEP_TARGET_OS @code{GNUSTEP_TARGET_OS} is the operating system name for the canonical target platform; i.e. compilation of programs generate object code for this operating system platform. The Makefile Package cleans this operating system name with the @code{CLEAN_OS_SCRIPT} script before using it internally. By default the target operating system platform is the same as the host operating system platform, @code{GNUSTEP_HOST_OS}, unless the user specifies a different target platform, see Cross Compiling. @end defvar @node Library Combination, Overridable Flags, Platform Information, Common Variables @subsection Library Combination @defvar OBJC_RUNTIME_LIB @code{OBJC_RUNTIME_LIB} is assigned the code that indicates the Objective-C Runtime library which compiled Objective-C programs will use; the four possible values are: @samp{ng} for the GNUstep Runtime with latest language features turned on at acompile time, @samp{gnu} for the GNU Runtime (or the GNUstep runtime with traditional language features compiled), @samp{nx} for the NeXT Runtime, and @samp{sun} for the Sun Microsystems Runtime. The Objective-C Runtime library can be changed to use a library other than the default with the @samp{library_combo} make parameter, see @ref{Running Make} for more details. Read @ref{Library Combination} for more information on how the Makefile Package handles different library combinations. If a makefile must perform specific operations dependent upon the Objective-C Runtime library then this variable is the one to check. @end defvar @defvar RUNTIME_DEFINE @code{RUNTIME_DEFINE} is assigned a preprocessor flag that can be passed to the compiler which defines a macro based upon the Objective-C Runtime library that compiled Objective-C programs will use. This macro is useful if the compiled program must execute different code based upon the Objective-C Runtime being used. See @ref{GNUmakefile.preamble} for an example on how to pass this preprocessor flag when compiling. The four possible values are: @samp{-DGNUSTEP_RUNTIME=1} for the GNUstep ObjectiveC-2 Runtime, @samp{-DGNU_RUNTIME=1} for the GNU Runtime, @samp{-DNeXT_RUNTIME=1} for the NeXT Runtime, and @samp{-DSun_RUNTIME=1} for the Sun Microsystems Runtime. @end defvar @defvar FOUNDATION_LIB @code{FOUNDATION_LIB} is assigned the code that indicates the Foundation Kit library, as specified by the OpenStep specification, which compiled Objective-C programs will use; the four possible values are: @samp{gnu} for the GNUstep Base Library, @samp{nx} for the NeXT Foundation Kit Library, @samp{sun} for the Sun Microsystems Foundation Kit Library, and @samp{fd} for the libFoundation Library. The Foundation Kit library can be changed to use a library other than the default with the @samp{library_combo} make parameter, see @ref{Running Make} for more details. Read @ref{Library Combination} for more information on how the Makefile Package handles different library combinations. If a makefile must perform specific operations dependent upon the Foundation Kit library then this variable is the one to check. @end defvar @defvar FND_DEFINE @code{FND_DEFINE} is assigned a preprocessor flag that can be passed to the compiler which defines a macro based upon the Foundation Kit library, as specified by the OpenStep specification, which compiled Objective-C programs will use. This macro is useful if the compiled program must execute different code based upon the Foundation Kit library being used. See @ref{GNUmakefile.preamble} for an example on how to pass this preprocessor flag when compiling. The four possible values are: @samp{-DGNUSTEP_BASE_LIBRARY=1} for the GNUstep Base Library, @samp{-DNeXT_Foundation_LIBRARY=1} for the NeXT Foundation Kit Library, @samp{-DSun_Foundation_LIBRARY=1} for the Sun Microsystems Foundation Kit Library, and @samp{-DLIB_FOUNDATION_LIBRARY=1} for the libFoundation Library. @end defvar @defvar GUI_LIB @code{GUI_LIB} is assigned the code that indicates the Application Kit library, as specified by the OpenStep specification, which compiled Objective-C programs will use; the two possible values are: @samp{gnu} for the GNUstep GUI Library and @samp{nx} for the NeXT Application Kit Library. The Application Kit library can be changed to use a library other than the default with the @samp{library_combo} make parameter, see @ref{Running Make} for more details. Read @ref{Library Combination} for more information on how the Makefile Package handles different library combinations. If a makefile must perform specific operations dependent upon the Application Kit library then this variable is the one to check. @end defvar @defvar GUI_DEFINE @code{GUI_DEFINE} is assigned a preprocessor flag that can be passed to the compiler which defines a macro based upon the Application Kit library, as specified by the OpenStep specification, which compiled Objective-C programs will use. This macro is useful if the compiled program must execute different code based upon the Application Kit library being used. See @ref{GNUmakefile.preamble} for an example on how to pass this preprocessor flag when compiling. The two possible values are: @samp{-DGNUSTEP_GUI_LIBRARY=1} for the GNUstep GUI Library and @samp{-DNeXT_Application_LIBRARY=1} for the NeXT Application Kit Library. @end defvar @defvar GUI_BACKEND_LIB @code{GUI_BACKEND_LIB} is assigned the code that indicates the backend library which compiled Objective-C programs will use in conjunction with the GNUstep GUI Library. The three possible values are: @samp{xdps} for the GNUstep X/DPS GUI Backend Library, @samp{nsx} for the NSKit GUI Backend Library, and @samp{w32} for the MediaBook WIN32 GUI Backend Library. @code{GUI_BACKEND_LIB} is only relevant when @code{GUI_LIB} is set to @samp{gnu}; otherwise, @code{GUI_BACKEND_LIB} will be set to @samp{nil} to indicate that there is no backend library. @code{GUI_BACKEND_LIB} can be changed to use a library other than the default with the @samp{library_combo} make parameter, see @ref{Running Make} for more details. Read @ref{Library Combination} for more information on how the Makefile Package handles different library combinations. If a makefile must perform specific operations dependent upon the backend library then this variable is the one to check. @end defvar @defvar GUI_BACKEND_DEFINE @code{GUI_BACKEND_DEFINE} is assigned a preprocessor flag that can be passed to the compiler which defines a macro based upon the backend library which compiled Objective-C programs will use in conjunction with the GNUstep GUI Library. This macro is useful if the compiled program must execute different code based upon the backend library being used. See @ref{GNUmakefile.preamble} for an example on how to pass this preprocessor flag when compiling. The three possible values are: @samp{-DXDPS_BACKEND_LIBRARY=1} for the GNUstep X/DPS GUI Backend Library, @samp{-DNSX_BACKEND_LIBRARY=1} for the NSKit GUI Backend Library, and @samp{-DW32_BACKEND_LIBRARY=1} for the MediaBook WIN32 GUI Backend Library. @code{GUI_BACKEND_DEFINE} is not defined if there is not backend library; i.e. @code{GUI_BACKEND_LIB} is @samp{nil}. @end defvar @node Overridable Flags, , Library Combination, Common Variables @subsection Overridable Flags @defvar OBJCFLAGS @code{OBJCFLAGS} are flags that are passed to the compiler when compiling Objective-C files. The user can override this variable when running make and specify different flags as the following command illustrates: @end defvar @smallexample make OBJCFLAGS="-Wno-implicit -Wno-protocol" @end smallexample @defvar CFLAGS @code{CFLAGS} are flags that are passed to the compiler when compiling C files. The user can override this variable when running make and specify different flags as the following command illustrates: @end defvar @smallexample make CFLAGS="-Wall" @end smallexample @defvar OPTFLAG @code{OPTFLAG} is the flag used to indicate the optimization level that the compiler should perform when compiling Objective-C and C files; this flag is set to @samp{-O2} by default, but the user can override this setting when running make as the following command illustrates: @end defvar @smallexample make OPTFLAG= @end smallexample This command sets the optimization flag to be empty so that no optimization will be performed by the compiler. @defvar GNUSTEP_INSTALLATION_DOMAIN @code{GNUSTEP_INSTALLATION_DOMAIN} is the domain where the package will install its files; overriding this variable when running make will change all of the variables within the Makefile Package that depend upon it; the following command illustrates the use of this variable: @end defvar @smallexample make GNUSTEP_INSTALLATION_DOMAIN=SYSTEM @end smallexample This command states that the @code{SYSTEM} domain should be used as the installation root directory; in particular applications in the package will be installed in the @file{$GNUSTEP_SYSTEM_APPS} directory, libraries in the package will be installed under the @file{$GNUSTEP_SYSTEM_LIBRARIES} directory, command line tools will be installed under the @file{$GNUSTEP_SYSTEM_TOOLS} directory, etc. Depending on the filesystem layout, the various directories may be located anywhere, which is why it's important to also refer to them by using variables such as @code{GNUSTEP_APPS}, @code{GNUSTEP_LIBRARIES} and @code{GNUSTEP_TOOLS}, which automatically point to the right directory on disk for this filesystem layout and installation domain. By default the Makefile Package sets @code{GNUSTEP_INSTALLATION_DOMAIN} to @code{LOCAL}. @defvar messages @code{messages} can be set to @samp{yes} in order to increase the verbosity and see all the commands the make is executing. @end defvar @smallexample make messages=yes @end smallexample @defvar documentation @code{documentation} controls whether the documentation targets in a project will be executed. If you don't desire building the documentation (which might require a working LaTeX installation, etc.) you can set this to @samp{no}. Otherwise the documentation will be built. @end defvar @smallexample make documentation=no @end smallexample @node Other Variables, , Common Variables, Top @section Other Variables Since gnustep-make is a system of scripts rather than compiled code, all the source is always present and available to read, so the main documentation is intentionally provided as comments within that source. In particular, gnustep-make variables are documented at the head of the project-type files in which they are used. eg $GNUSTEP_MAKEFILES/Instance/library.make for the variables used to build a library. However, there are some variables which, while not in provided in @file{common.make} are of more general use, and therefore may reasonably be documented here: @defvar GS_WITH_ARC @code{GS_WITH_ARC = 1} turns on ARC for the current build if using the Next Generation runtime setting. This variable may be defined as an environment variable, or on the make command line, or (usually) at the start of GNUmakefile. @end defvar The variable needs to be defined before @file{common.make} is included, and the library-combo needs to be ng-gnu-gnu for it to take effect (in which case it causes the -fobjc-arc flag to be used when compiling any Objective-C source files). Alternatively, to switch on ARC for individual files, you can have a makefile fragment like this: @smallexample ifeq ($(OBJC_RUNTIME_LIB), ng) file1.m_FILE_FLAGS+=-fobjc-arc file2.m_FILE_FLAGS+=-fobjc-arc file9.m_FILE_FLAGS+=-fobjc-arc endif @end smallexample @defvar xxx_FILE_FILTER_OUT_FLAGS @code{xxx_FILE_FILTER_OUT_FLAGS} (where xxx is the file name, such as mframe.m) is a filter-out make pattern of flags to be filtered out from the compilation flags when compiling xxx. In exceptional conditions, you might need to want to use different compiler flags for a file (for example, if a file doesn't compile with optimization turned on, you might want to compile that single file with optimizations turned off). @end defvar @smallexample file.m_FILE_FILTER_OUT_FLAGS = -O% -fomit-frame-pointer @end smallexample This says that when compiling file.m we should disable optimization flags, and also remove frame pointer information. @defvar xxx_FILE_FLAGS @code{xxx_FILE_FLAGS} (where xxx is the file name, such as main.m) add special compilation flags to be used when compiling xxx. In exceptional conditions, you might need to want to use different compiler flags for a file (for example, if ou want to turn on automated reference counting for that file) @end defvar @smallexample file.m_FILE_FLAGS = -fobjc-arc @end smallexample This says that when compiling file.m we should turn on ARC. @bye ���������������������������gnustep-make-2.7.0/Documentation/gnustep-userfaq.texi�����������������������������������������������0000664�0001750�0001750�00000053403�11540105560�022573� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\input texinfo @c -*-texinfo-*- @c A FAQ for GNUstep Users @node Top, GNUstep General Information, (dir), (dir) @chapter GNUstep Frequently Asked Questions for Users Last updated @today{}. Please send corrections to @email{gnustep-maintainer@@gnu.org}. Also look at the (developer) FAQ for more developer oriented questions. @menu * GNUstep General Information:: * Compiling and Installing:: * Compatibility and Layout:: * Troubleshooting:: @end menu @node GNUstep General Information, Compiling and Installing, Top, Top @section GNUstep General Information @menu * What is GNUstep?:: * What is the OpenStep standard?:: * What platforms does GNUstep run on?:: * Does GNUstep run on Windows?:: * What is GNUstep's position towards KDE and the GNOME project?:: * How can I get GNUstep?:: * How do you run GNUstep?:: * Is there a web site?:: * When is GNUstep intended to be available?:: * What is usable?:: @end menu @node What is GNUstep?, What is the OpenStep standard?, GNUstep General Information, GNUstep General Information @subsection What is GNUstep? GNUstep is the Free Software Foundation's effort to implement NeXT Software, Inc.'s (now Apple Computer, Inc.) OpenStep Standard. Also we are building developer and user applications based on this standard which may someday be used to form a complete desktop experience. @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. 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} (DPS), an interface for drawing to the screen using the PostScript graphics language. DPS support is not being persued at this time however. You can obtain a copy of the OpenStep standard from the GNUstep web site @url{http://www.gnustep.org} or it's mirror sites. @node What platforms does GNUstep run on?, Does GNUstep run on Windows?, What is the OpenStep standard?, GNUstep General Information @subsection What platforms does GNUstep run on? See the list of supported platforms at @url{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 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 system-based platforms such as GNU/Linux and FreeBSD. 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}). 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 Windows API. This project is currently in beta. @node What is GNUstep's position towards KDE and the GNOME project?, How can I get GNUstep?, Does GNUstep run on Windows?, GNUstep General Information @subsection What is GNUstep's position towards KDE and the GNOME project? 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 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. @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? Many distributions include packaged versions of GNUstep (Debian, etc). To compile from sratch, download the GNUstep Startup package or get the HOWTO from @url{gnustep-howto_toc.html}. Get the latest releases from @url{ftp://ftp.gnustep.org/pub/gnustep/core}. @node How do you run GNUstep?, Is there a web site?, How can I get GNUstep?, GNUstep General Information @subsection How do you run GNUstep? You are presumably under the misapprehension that GNUstep is some sort of program or window manager. It isn't. 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 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 Simply GNUstep @url{http://simplygnustep.sourceforge.net/} for instance. If you want to see a sample GUI application running you need to build 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 window manager) as your window manager. @node Is there a web site?, When is GNUstep intended to be available?, How do you run GNUstep?, GNUstep General Information @subsection Is there a web site? See @url{http://www.gnustep.org/}. @node When is GNUstep intended to be available?, What is usable?, Is there a web site?, GNUstep General Information @subsection When is GNUstep intended to be available? It's usable now. Major releases are made about every six months. However, if you are a serious developer, it's probably best to use the latest snapshots. @node What is usable?, , When is GNUstep intended to be available?, GNUstep General Information @subsection What is usable? Most of GNUstep is quite usable and there are many complex applications that work well. However, GNUstep does not completely track the latest changes that Apple makes to their interface and there are still some parts that need some work). What does this mean for users? Many applications will run quite well. Applications that require very complex text handling and some unusual features and/or some of the latest additions to Cocoa may not work as well. @c **************************************************************** @node Compiling and Installing, Compatibility and Layout, GNUstep General Information, Top @section Compiling and Installing @menu * How do I compile GNUstep on my machine? :: * Are there any precompiled packages available?:: * What are these type and size warnings?:: * What are these import warnings?:: @end menu @node How do I compile GNUstep on my machine? , Are there any precompiled packages available?, Compiling and Installing, Compiling and Installing @subsection How do I compile GNUstep on my machine? Read the file @file{GNUstep-HOWTO}, which comes with the GNUstep distribution (gnustep-make), and also is available separately on the GNUstep web site. @node Are there any precompiled packages available?, What are these type and size warnings?, How do I compile GNUstep on my machine? , Compiling and Installing @subsection Are there any precompiled packages available? Check @url{http://www.gnustep.org/resources/sources.html} for links to 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? These warnings: @example /usr/bin/ld: warning: type and size of dynamic symbol `__objc_class_name_NSConstantString' are not defined @end example are a common occurence and are due to a mismatch between gcc and ld. They don't do any harm so they can be safely ignored. They have been 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 this obnoxious warning whenever you compile an application, tool, or Objective-C program: @example warning: using `#import' is not recommended [...] @end example Up until gcc 3.4, the #import directive was not implemented correctly. As a result, the GCC compiler automatically emitted a warning whenever #import was used. As of gcc 3.4, this problem has been fixed, so presumably, this warning is no longer emitted when code is compiled. If you are using an early compiler, you can supress these warnings by adding @code{-Wno-import} to your include (cpp) flags. @c **************************************************************** @node Compatibility and Layout, Troubleshooting, Compiling and Installing, Top @section Compatibility and Layout @menu * 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 framework bundles?:: @end menu @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 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 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 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. 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 the same way. We hope to implement themes which will allow this. @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 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 framework bundles?, , What's up with the directory structure?, Compatibility and Layout @subsection Why not use framework bundles? 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 links from a directory inside the dynamic linker path into the framework, which work, but then you can't move the framework anywhere else on the system, otherwise you break the link, and nothing will find the framework any longer! On systems without dynamic links, like Windows, we can't even do this! We have to copy the library from the framework into the dynamic linker 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. 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, 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 when porting. And we never use these facilities. 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 system variants) and which have different linkers and do not support frameworks natively. On some systems it's difficult to just load a bundle or compile a shared library! So building the core libraries as 'libraries' means that it's much easier to port them, and it's much more difficult to break them. Sure, frameworks have a bundle of resources associated with it --- but we 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 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 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 Mac OS X, but to be portable to very different platforms (such as Windows). @c **************************************************************** @node Troubleshooting, , Compatibility and Layout, Top @section Troubleshooting @menu * Problems compiling (loading shared libs):: * Problems compiling (GNUstep Internal Error):: * Problems running tools and compiling:: * Problems with gcc3:: * Problems with Alt key:: * Problems with fonts:: * No characters displayed:: * No Makefile:: @end menu @node Problems compiling (loading shared libs), Problems compiling (GNUstep Internal Error), Troubleshooting, Troubleshooting @subsection Problems compiling (loading shared libs) If you get something like @example plmerge: error while loading shared libraries: libgnustep-base.so.1: cannot open shared object file: No such file or directory @end example or this: @example Making all for service example... make[2]: *** [example.service/Resources/Info-gnustep.plist] Error 1 make[1]: *** [example.all.service.variables] Error 2 make[1]: Leaving directory `/home/multix/gnustep-gui-0.8.6/Tools' make: *** [internal-all] Error 2 @end example This means your GNU make is being overly protective. When you try to become root (e.g. to install something), certain environment variables like LD_LIBRARY_PATH are unset in order to reduce the possibility of a security breach. If you are becoming root to install something, you need to exec the GNUstep.sh file as root, just as you do when you login. Although for simplicity, you can also try this: @example make LD_LIBRARY_PATH=$LD_LIBRARY_PATH @end example You could also be having problems with gcc. gcc 2.96 does not work (Mandrake 8.1, perhaps others). Use a different compiler, like gcc 3.x. @node Problems compiling (GNUstep Internal Error), Problems running tools and compiling, Problems compiling (loading shared libs), Troubleshooting @subsection Problems compiling (GNUstep Internal Error) If you get @example GNUSTEP Internal Error: The private GNUstep function to establish the argv and environment variables was not called. Please report the error to bug-gnustep@@gnu.org. @end example 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. 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 running tools and compiling, Problems with gcc3, Problems compiling (GNUstep Internal Error), Troubleshooting @subsection Problems running tools and compiling If you have a system that has SELinux enabled (Fedora Core for example), you may have trouble running and/or compiling (some tools are run during the compilation process) GNUstep. This is due to the use of ffcall and/or libffi and other techniques used to access memory in a way that SELinux does not like. You might get errors like @example trampoline: cannot make memory executable /bin/sh: line 5: 8427 Aborted ././shared_obj/ make_services --test GSspell.service/Resources/Info-gnustep.plist gmake[2]: *** [GSspell.service/Resources/Info-gnustep.plist] Error 1 @end example or @example libgnustep-base.so.1.13: cannot restore segment prot after reloc: Permission denied @end example If you are using ffcall, you might need to switch to libffi. But in either case, it might help to do this: @example chcon -t texrel_shlib_t /usr/GNUstep/System/Library/Libraries/*.so @end example after installing the base libraries. @node Problems with gcc3, Problems with Alt key, Problems running tools and compiling, Troubleshooting @subsection Problems with gcc3 Don't forget you need to update binutils and libc also. @node Problems with Alt key, Problems with fonts, Problems with gcc3, Troubleshooting @subsection Problems with Alt key It's possible the Alt key is not where you think it is or is defined incorrectly. Try running the GSTest application, KeyboardInput test (located in the examples package at @url{ftp://ftp.gnustep.org/pub/gnustep/core}) to test it. See @url{http://www.gnustep.org/resources/documentation/User/Gui/KeyboardSetup.html} for information on how to change the settings. If you are using WindowMaker, it's possible it is grabing this key and using it for itself. To check, open Window Maker's WPrefs and go to the Mouse Preferences. Then use another value for the "Mouse grab modifier" (bottom right). That will allow you to alt-drag things. @node Problems with fonts, No characters displayed, Problems with Alt key, Troubleshooting @subsection Problems with fonts Why do the characters get changed to asterisks ('*')? The problem you are getting come from the fact that the xlib backend (when not using Xft) will only use one fixed X font for a given font name. If the font "helvetica" is used inside of GNUstep the one selected X font, in your case "-*-helvetica-medium-r-normal--12-*-*-*-p-*-iso8859-1" is used. So only characters (or glyphs) that are available in that font can be displayed. The selection of which font name to use happens inside the font_cacher and is more or less at random (the order fonts are listed by the X system). You can influence the fonts that are available by setting: @example defaults write NSGlobalDomain GSFontMask "*iso8859-13" font_cacher @end example (or using a different character set, like iso8859-2). This is really a bug in GNUstep, but it hasn't been fixed yet. The other option is the use the art backend, which handles fonts much better. When compiling gnustep-back, start with @example ./configure --enable-graphics=art @end example @node No characters displayed, No Makefile, Problems with fonts, Troubleshooting @subsection No characters displayed. When using the xlib backend, no characters are displayed in any GNUstep applications. The xlib backend has font anti-aliasing turned on by default. It's possible that GNUstep can't find any fonts on your system that can be properly anti- aliased. Try @example defaults write NSGlobalDomain GSFontAntiAlias NO @end example to turn off font anti-aliasing. @node No Makefile, , No characters displayed, Troubleshooting @subsection No Makefile I tried to compile something and I get: @example GNUmakefile:27: /Makefiles/common.make: No such file or directory GNUmakefile:39: /Makefiles/aggregate.make: No such file or directory gmake: *** No rule to make target `/Makefiles/aggregate.make'. Stop. @end example Make sure you have installed the gnustep-make package and also type: @example source /usr/local/share/GNUstep/Makefiles/GNUstep.sh @end example You can put this line in your @file{.profile} or @file{.bash_profile} file so that it is done automatically when you log in. @bye \bye �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Documentation/.latex2html-init���������������������������������������������������0000664�0001750�0001750�00000002701�10377003773�021602� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� # Workaround for a bug in latex2html which does not seem to # manage the \tableofcontents command correctly &ignore_commands( <<_IGNORED_CMDS_); tableofcontents _IGNORED_CMDS_ $ASCII_MODE = 1; $BODYTEXT = "BGCOLOR=\"\#FFFFFF\" text=\"\#000000\" link=\"\#0000FF\" vlink=\"\#4444FF\" alink=\"\#3388FF\""; $SHOW_SECTION_NUMBERS = 1; $MAX_SPLIT_DEPTH = 4; $INFO = " <P> Copyright (C) 2000, 2001 Free Software Foundation, Inc. <P> Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. <P> Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. <P> Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions. "; sub top_navigation_panel { ($NEXT_TITLE ? "<B> Next: $NEXT_TITLE </B>\n" : undef) . ($UP_TITLE ? "<B>Up: $UP_TITLE </B>\n" : undef) . ($PREVIOUS_TITLE ? "<B> Previous: $PREVIOUS_TITLE </B>\n" : undef) . "<BR> <P>\n" } sub bot_navigation_panel { "<HR>". ($NEXT_TITLE ? "<B> Next: $NEXT_TITLE </B>\n" : undef) . ($UP_TITLE ? "<B>Up: $UP_TITLE </B>\n" : undef) . ($PREVIOUS_TITLE ? "<B> Previous: $PREVIOUS_TITLE </B>\n" : undef) } ���������������������������������������������������������������gnustep-make-2.7.0/FilesystemLayouts/���������������������������������������������������������������0000775�0001750�0001750�00000000000�13074115160�017437� 5����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/FilesystemLayouts/standalone�����������������������������������������������������0000664�0001750�0001750�00000006473�11647211534�021532� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # Standalone filesystem layout # # This is a *build-time* layout for standalone application deployment, # with all the libraries and executables stored in one place. # If changing this layout, please also update the corresponding file in # gnustep-base (standalone.conf). # # You can configure gnustep-make using --width-layout=standalone and # use that to build and install your code into the 'standlone' directory, # then distribute that directory using a single environment variable set # to tell the operating system where to find the libraries. # # NB. This file gives the layout for *building* a standalone package. # It is not the same as the GNUstep.conf file which would be used to # *deploy* the package. Using this layout lets you build/install all # your software into a single directory within your home directory, # but the deployment layout would provide instructions to locate all # the resources within that directory and relative to the gnustep base # library. Please see the GNUstep base library documentation for detailed # information about deploying relocatable and standalone packages. # # This tells gnustep-make to put the 'standalone' directory in your home # directory. GNUSTEP_DEFAULT_PREFIX=~ # These are only used by gnustep-base to implement the NSUserDirectory # API. We never install anything in them. They will be used as they # are without $prefix. GNUSTEP_SYSTEM_USERS_DIR=/home GNUSTEP_NETWORK_USERS_DIR=/home GNUSTEP_LOCAL_USERS_DIR=/home # NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL # paths. GNUSTEP_MAKEFILES=/standalone/Makefiles GNUSTEP_SYSTEM_APPS=/standalone GNUSTEP_SYSTEM_ADMIN_APPS=/standalone GNUSTEP_SYSTEM_WEB_APPS=/standalone GNUSTEP_SYSTEM_TOOLS=/standalone GNUSTEP_SYSTEM_ADMIN_TOOLS=/standalone GNUSTEP_SYSTEM_LIBRARY=/standalone GNUSTEP_SYSTEM_HEADERS=/standalone/include GNUSTEP_SYSTEM_LIBRARIES=/standalone GNUSTEP_SYSTEM_DOC=/standalone/Documentation GNUSTEP_SYSTEM_DOC_MAN=/standalone/man GNUSTEP_SYSTEM_DOC_INFO=/standalone/info GNUSTEP_NETWORK_APPS=/standalone GNUSTEP_NETWORK_ADMIN_APPS=/standalone GNUSTEP_NETWORK_WEB_APPS=/standalone GNUSTEP_NETWORK_TOOLS=/standalone GNUSTEP_NETWORK_ADMIN_TOOLS=/standalone GNUSTEP_NETWORK_LIBRARY=/standalone GNUSTEP_NETWORK_HEADERS=/standalone/include GNUSTEP_NETWORK_LIBRARIES=/standalone GNUSTEP_NETWORK_DOC=/standalone/Documentation GNUSTEP_NETWORK_DOC_MAN=/standalone/man GNUSTEP_NETWORK_DOC_INFO=/standalone/info GNUSTEP_LOCAL_APPS=/standalone GNUSTEP_LOCAL_ADMIN_APPS=/standalone GNUSTEP_LOCAL_WEB_APPS=/standalone GNUSTEP_LOCAL_TOOLS=/standalone GNUSTEP_LOCAL_ADMIN_TOOLS=/standalone GNUSTEP_LOCAL_LIBRARY=/standalone GNUSTEP_LOCAL_HEADERS=/standalone/include GNUSTEP_LOCAL_LIBRARIES=/standalone GNUSTEP_LOCAL_DOC=/standalone/Documentation GNUSTEP_LOCAL_DOC_MAN=/standalone/man GNUSTEP_LOCAL_DOC_INFO=/standalone/info GNUSTEP_USER_DIR_APPS=/standalone GNUSTEP_USER_DIR_ADMIN_APPS=/standalone GNUSTEP_USER_DIR_WEB_APPS=/standalone GNUSTEP_USER_DIR_TOOLS=/standalone GNUSTEP_USER_DIR_ADMIN_TOOLS=/standalone GNUSTEP_USER_DIR_LIBRARY=/standalone GNUSTEP_USER_DIR_HEADERS=/standalone/include GNUSTEP_USER_DIR_LIBRARIES=/standalone GNUSTEP_USER_DIR_DOC=/standalone/Documentation GNUSTEP_USER_DIR_DOC_MAN=/standalone/man GNUSTEP_USER_DIR_DOC_INFO=/standalone/info GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/FilesystemLayouts/next�����������������������������������������������������������0000664�0001750�0001750�00000005143�10574007055�020350� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # next filesystem layout # # Inspired by the filesystem layout on NeXTSTEP 3.x / OPENSTEP 4.x and # Rhapsody. This is mostly a historical layout, but potentially # interesting for NeXTSTEP / OPENSTEP fans. # # override this prefix by using ./configure --prefix=xxx when # configuring. GNUSTEP_DEFAULT_PREFIX=/ # These are only used by gnustep-base to implement the NSUserDirectory # API. We never install anything in them. They will be used as they # are without $prefix. GNUSTEP_SYSTEM_USERS_DIR=/Users GNUSTEP_NETWORK_USERS_DIR=/Network/Users GNUSTEP_LOCAL_USERS_DIR=/Users # NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL # paths. GNUSTEP_MAKEFILES=/GNUDeveloper/Makefiles GNUSTEP_SYSTEM_APPS=/GNUApps GNUSTEP_SYSTEM_ADMIN_APPS=/GNUAdmin GNUSTEP_SYSTEM_WEB_APPS=/GNULibrary/WebApps GNUSTEP_SYSTEM_TOOLS=/bin GNUSTEP_SYSTEM_ADMIN_TOOLS=/sbin GNUSTEP_SYSTEM_LIBRARY=/GNULibrary GNUSTEP_SYSTEM_HEADERS=/GNUDeveloper/Headers GNUSTEP_SYSTEM_LIBRARIES=/GNULibrary/Libraries GNUSTEP_SYSTEM_DOC=/GNULibrary/Documentation GNUSTEP_SYSTEM_DOC_MAN=/GNULibrary/Documentation/man GNUSTEP_SYSTEM_DOC_INFO=/GNULibrary/Documentation/info GNUSTEP_NETWORK_APPS=/Network/Apps GNUSTEP_NETWORK_ADMIN_APPS=/Network/Admin GNUSTEP_NETWORK_WEB_APPS=/Network/WebApps GNUSTEP_NETWORK_TOOLS=/Network/bin GNUSTEP_NETWORK_ADMIN_TOOLS=/Network/sbin GNUSTEP_NETWORK_LIBRARY=/Network/Library GNUSTEP_NETWORK_HEADERS=/Network/Developer/Headers GNUSTEP_NETWORK_LIBRARIES=/Network/Library/Libraries GNUSTEP_NETWORK_DOC=/Network/Library/Documentation GNUSTEP_NETWORK_DOC_MAN=/Network/Library/Documentation/man GNUSTEP_NETWORK_DOC_INFO=/Network/Library/Documentation/info GNUSTEP_LOCAL_APPS=/LocalApps GNUSTEP_LOCAL_ADMIN_APPS=/LocalAdmin GNUSTEP_LOCAL_WEB_APPS=/LocalLibrary/WebApps GNUSTEP_LOCAL_TOOLS=/bin GNUSTEP_LOCAL_ADMIN_TOOLS=/sbin GNUSTEP_LOCAL_LIBRARY=/LocalLibrary GNUSTEP_LOCAL_HEADERS=/LocalDeveloper/Headers GNUSTEP_LOCAL_LIBRARIES=/LocalLibrary/Libraries GNUSTEP_LOCAL_DOC=/LocalLibrary/Documentation GNUSTEP_LOCAL_DOC_MAN=/LocalLibrary/Documentation/man GNUSTEP_LOCAL_DOC_INFO=/LocalLibrary/Documentation/info GNUSTEP_USER_DIR_APPS=Apps GNUSTEP_USER_DIR_ADMIN_APPS=Admin GNUSTEP_USER_DIR_WEB_APPS=Library/WebApps GNUSTEP_USER_DIR_TOOLS=bin GNUSTEP_USER_DIR_ADMIN_TOOLS=sbin GNUSTEP_USER_DIR_LIBRARY=Library GNUSTEP_USER_DIR_HEADERS=Developer/Headers GNUSTEP_USER_DIR_LIBRARIES=Library/Libraries GNUSTEP_USER_DIR_DOC=Library/Documentation GNUSTEP_USER_DIR_DOC_MAN=Library/Documentation/man GNUSTEP_USER_DIR_DOC_INFO=Library/Documentation/info GNUSTEP_USER_CONFIG_FILE=Library/Preferences/GNUstep.conf GNUSTEP_USER_DEFAULTS_DIR=Library/Preferences �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/FilesystemLayouts/gnustep-with-network�������������������������������������������0000664�0001750�0001750�00000007041�10615644453�023523� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # GNUstep filesystem layout # # This is the standard GNUstep filesystem layout with the difference # that the 'Network' domain is enabled. # # If you want to share parts of your GNUstep installation over an # internal network of machines, then you may want to use this layout. # # In all other cases, you most likely don't need this layout. # # Having the 'Network' domain is useful if you have some GNUstep stuff # that you plan to share on many machines in your internal network. # In that case, you should mount the directory as the 'Network' domain # on all the machines in your network. If the machines have different # CPUs/OSes installed on them, you may also want to disable the # flattened filesystem structure, and enable multi-platform support. # # Please check the 'gnustep' layout documentation for more info. # # By default, we install into /usr/GNUstep, but this can be overridden # by using ./configure --prefix=xxx when configuring. GNUSTEP_DEFAULT_PREFIX=/usr/GNUstep # These are only used by gnustep-base to implement the NSUserDirectory # API. We never install anything in them. They will be used as they # are without $prefix. GNUSTEP_SYSTEM_USERS_DIR=/home GNUSTEP_NETWORK_USERS_DIR=/home GNUSTEP_LOCAL_USERS_DIR=/home # NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL # paths. GNUSTEP_MAKEFILES=/System/Library/Makefiles GNUSTEP_SYSTEM_APPS=/System/Applications GNUSTEP_SYSTEM_ADMIN_APPS=/System/Applications/Admin GNUSTEP_SYSTEM_WEB_APPS=/System/Library/WebApplications GNUSTEP_SYSTEM_TOOLS=/System/Tools GNUSTEP_SYSTEM_ADMIN_TOOLS=/System/Tools/Admin GNUSTEP_SYSTEM_LIBRARY=/System/Library GNUSTEP_SYSTEM_HEADERS=/System/Library/Headers GNUSTEP_SYSTEM_LIBRARIES=/System/Library/Libraries GNUSTEP_SYSTEM_DOC=/System/Library/Documentation GNUSTEP_SYSTEM_DOC_MAN=/System/Library/Documentation/man GNUSTEP_SYSTEM_DOC_INFO=/System/Library/Documentation/info GNUSTEP_NETWORK_APPS=/Network/Applications GNUSTEP_NETWORK_ADMIN_APPS=/Network/Applications/Admin GNUSTEP_NETWORK_WEB_APPS=/Network/Library/WebApplications GNUSTEP_NETWORK_TOOLS=/Network/Tools GNUSTEP_NETWORK_ADMIN_TOOLS=/Network/Tools/Admin GNUSTEP_NETWORK_LIBRARY=/Network/Library GNUSTEP_NETWORK_HEADERS=/Network/Library/Headers GNUSTEP_NETWORK_LIBRARIES=/Network/Library/Libraries GNUSTEP_NETWORK_DOC=/Network/Library/Documentation GNUSTEP_NETWORK_DOC_MAN=/Network/Library/Documentation/man GNUSTEP_NETWORK_DOC_INFO=/Network/Library/Documentation/info GNUSTEP_LOCAL_APPS=/Local/Applications GNUSTEP_LOCAL_ADMIN_APPS=/Local/Applications/Admin GNUSTEP_LOCAL_WEB_APPS=/Local/Library/WebApplications GNUSTEP_LOCAL_TOOLS=/Local/Tools GNUSTEP_LOCAL_ADMIN_TOOLS=/Local/Tools/Admin GNUSTEP_LOCAL_LIBRARY=/Local/Library GNUSTEP_LOCAL_HEADERS=/Local/Library/Headers GNUSTEP_LOCAL_LIBRARIES=/Local/Library/Libraries GNUSTEP_LOCAL_DOC=/Local/Library/Documentation GNUSTEP_LOCAL_DOC_MAN=/Local/Library/Documentation/man GNUSTEP_LOCAL_DOC_INFO=/Local/Library/Documentation/info GNUSTEP_USER_DIR_APPS=GNUstep/Applications GNUSTEP_USER_DIR_ADMIN_APPS=GNUstep/Applications/Admin GNUSTEP_USER_DIR_WEB_APPS=GNUstep/Library/WebApplications GNUSTEP_USER_DIR_TOOLS=GNUstep/Tools GNUSTEP_USER_DIR_ADMIN_TOOLS=GNUstep/Tools/Admin GNUSTEP_USER_DIR_LIBRARY=GNUstep/Library GNUSTEP_USER_DIR_HEADERS=GNUstep/Library/Headers GNUSTEP_USER_DIR_LIBRARIES=GNUstep/Library/Libraries GNUSTEP_USER_DIR_DOC=GNUstep/Library/Documentation GNUSTEP_USER_DIR_DOC_MAN=GNUstep/Library/Documentation/man GNUSTEP_USER_DIR_DOC_INFO=GNUstep/Library/Documentation/info GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/FilesystemLayouts/gnustep��������������������������������������������������������0000664�0001750�0001750�00000007711�10615644453�021067� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # GNUstep filesystem layout # # This is the standard GNUstep filesystem layout. It's a layout very # similar to the ones found on NeXTstep, OpenStep and Apple Mac OS X. # # This is also a layout well suited to use fat binaries: binaries # for multiple cpu/os/*step libraries in the same installation. The # 'fat binary' support is called 'non-flattened' in GNUstep parlance, # and is disabled by default. You can activate it by with ./configure # --disable-flattened. It's cool, but your directory structure # becomes more complex to account for all the types of binaries and # systems. It's recommended that you source GNUstep.sh if you're # using the non-flattened layout (the command is: # '. $GNUSTEP_MAKEFILES/GNUstep.sh', and notice the '.' and the space # after it). # # If the layout is flattened, it's still a good idea to source # GNUstep.sh if it's not too much trouble for you, else you can # manually add /usr/GNUstep/System/Tools and /usr/GNUstep/Local/Tools # to your PATH, /usr/GNUstep/System/Library/Libraries and # /usr/GNUstep/Local/Library/Libraries to your LD_LIBRARY_PATH (or # /etc/ld.so.conf + ldconfig). # # To use gnustep-make in this environment, source GNUstep.sh or use # 'export GNUSTEP_MAKEFILES=/usr/GNUstep/System/Library/Makefiles'. # By default, we install into /usr/GNUstep, but this can be overridden # by using ./configure --prefix=xxx when configuring. GNUSTEP_DEFAULT_PREFIX=/usr/GNUstep # These are only used by gnustep-base to implement the NSUserDirectory # API. We never install anything in them. They will be used as they # are without $prefix. GNUSTEP_SYSTEM_USERS_DIR=/home GNUSTEP_NETWORK_USERS_DIR=/home GNUSTEP_LOCAL_USERS_DIR=/home # NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL # paths. GNUSTEP_MAKEFILES=/System/Library/Makefiles GNUSTEP_SYSTEM_APPS=/System/Applications GNUSTEP_SYSTEM_ADMIN_APPS=/System/Applications/Admin GNUSTEP_SYSTEM_WEB_APPS=/System/Library/WebApplications GNUSTEP_SYSTEM_TOOLS=/System/Tools GNUSTEP_SYSTEM_ADMIN_TOOLS=/System/Tools/Admin GNUSTEP_SYSTEM_LIBRARY=/System/Library GNUSTEP_SYSTEM_HEADERS=/System/Library/Headers GNUSTEP_SYSTEM_LIBRARIES=/System/Library/Libraries GNUSTEP_SYSTEM_DOC=/System/Library/Documentation GNUSTEP_SYSTEM_DOC_MAN=/System/Library/Documentation/man GNUSTEP_SYSTEM_DOC_INFO=/System/Library/Documentation/info GNUSTEP_NETWORK_APPS=/Local/Applications GNUSTEP_NETWORK_ADMIN_APPS=/Local/Applications/Admin GNUSTEP_NETWORK_WEB_APPS=/Local/Library/WebApplications GNUSTEP_NETWORK_TOOLS=/Local/Tools GNUSTEP_NETWORK_ADMIN_TOOLS=/Local/Tools/Admin GNUSTEP_NETWORK_LIBRARY=/Local/Library GNUSTEP_NETWORK_HEADERS=/Local/Library/Headers GNUSTEP_NETWORK_LIBRARIES=/Local/Library/Libraries GNUSTEP_NETWORK_DOC=/Local/Library/Documentation GNUSTEP_NETWORK_DOC_MAN=/Local/Library/Documentation/man GNUSTEP_NETWORK_DOC_INFO=/Local/Library/Documentation/info GNUSTEP_LOCAL_APPS=/Local/Applications GNUSTEP_LOCAL_ADMIN_APPS=/Local/Applications/Admin GNUSTEP_LOCAL_WEB_APPS=/Local/Library/WebApplications GNUSTEP_LOCAL_TOOLS=/Local/Tools GNUSTEP_LOCAL_ADMIN_TOOLS=/Local/Tools/Admin GNUSTEP_LOCAL_LIBRARY=/Local/Library GNUSTEP_LOCAL_HEADERS=/Local/Library/Headers GNUSTEP_LOCAL_LIBRARIES=/Local/Library/Libraries GNUSTEP_LOCAL_DOC=/Local/Library/Documentation GNUSTEP_LOCAL_DOC_MAN=/Local/Library/Documentation/man GNUSTEP_LOCAL_DOC_INFO=/Local/Library/Documentation/info GNUSTEP_USER_DIR_APPS=GNUstep/Applications GNUSTEP_USER_DIR_ADMIN_APPS=GNUstep/Applications/Admin GNUSTEP_USER_DIR_WEB_APPS=GNUstep/Library/WebApplications GNUSTEP_USER_DIR_TOOLS=GNUstep/Tools GNUSTEP_USER_DIR_ADMIN_TOOLS=GNUstep/Tools/Admin GNUSTEP_USER_DIR_LIBRARY=GNUstep/Library GNUSTEP_USER_DIR_HEADERS=GNUstep/Library/Headers GNUSTEP_USER_DIR_LIBRARIES=GNUstep/Library/Libraries GNUSTEP_USER_DIR_DOC=GNUstep/Library/Documentation GNUSTEP_USER_DIR_DOC_MAN=GNUstep/Library/Documentation/man GNUSTEP_USER_DIR_DOC_INFO=GNUstep/Library/Documentation/info GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults �������������������������������������������������������gnustep-make-2.7.0/FilesystemLayouts/mac������������������������������������������������������������0000664�0001750�0001750�00000005715�10762563404�020143� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # Mac-like filesystem layout for system installations # # This is similar to the layout found on Apple Mac OS X. It mimicks # most of the layout, but doesn't go all the way since GNUstep doesn't # have GNUSTEP_DEVELOPER_xyz for example. # # To use gnustep-make in this environment, source GNUstep.sh or use # 'export GNUSTEP_MAKEFILES=/System/Library/Makefiles'. # By default, we install into /, but this can be overridden by using # ./configure --prefix=xxx when configuring. GNUSTEP_DEFAULT_PREFIX=/ # These are only used by gnustep-base to implement the NSUserDirectory # API. We never install anything in them. They will be used as they # are without $prefix. GNUSTEP_SYSTEM_USERS_DIR= GNUSTEP_NETWORK_USERS_DIR=/Network/Users GNUSTEP_LOCAL_USERS_DIR=/Users # NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL # paths. GNUSTEP_MAKEFILES=/System/Library/Makefiles # FIXME: Maybe GNUSTEP_SYSTEM_APPS should be # /System/Library/CoreServices ? Eg, Finder.app is in there on Apple # Mac OS X GNUSTEP_SYSTEM_APPS=/Applications GNUSTEP_SYSTEM_ADMIN_APPS=/Applications/Utilities GNUSTEP_SYSTEM_WEB_APPS=/System/Library/WebApplications GNUSTEP_SYSTEM_TOOLS=/usr/local/bin GNUSTEP_SYSTEM_ADMIN_TOOLS=/usr/local/sbin GNUSTEP_SYSTEM_LIBRARY=/System/Library GNUSTEP_SYSTEM_HEADERS=/System/Library/Headers GNUSTEP_SYSTEM_LIBRARIES=/System/Library/Libraries GNUSTEP_SYSTEM_DOC=/Library/Documentation GNUSTEP_SYSTEM_DOC_MAN=/Library/Documentation/man GNUSTEP_SYSTEM_DOC_INFO=/Library/Documentation/info GNUSTEP_NETWORK_APPS=/Applications GNUSTEP_NETWORK_ADMIN_APPS=/Applications/Utilities GNUSTEP_NETWORK_WEB_APPS=/Library/WebApplications GNUSTEP_NETWORK_TOOLS=/usr/local/bin GNUSTEP_NETWORK_ADMIN_TOOLS=/usr/local/sbin GNUSTEP_NETWORK_LIBRARY=/Library GNUSTEP_NETWORK_HEADERS=/Library/Headers GNUSTEP_NETWORK_LIBRARIES=/Library/Libraries GNUSTEP_NETWORK_DOC=/Library/Documentation GNUSTEP_NETWORK_DOC_MAN=/Library/Documentation/man GNUSTEP_NETWORK_DOC_INFO=/Library/Documentation/info GNUSTEP_LOCAL_APPS=/Applications GNUSTEP_LOCAL_ADMIN_APPS=/Applications/Utilities GNUSTEP_LOCAL_WEB_APPS=/Library/WebApplications GNUSTEP_LOCAL_TOOLS=/usr/local/bin GNUSTEP_LOCAL_ADMIN_TOOLS=/usr/local/sbin GNUSTEP_LOCAL_LIBRARY=/Library GNUSTEP_LOCAL_HEADERS=/Library/Headers GNUSTEP_LOCAL_LIBRARIES=/Library/Libraries GNUSTEP_LOCAL_DOC=/Library/Documentation GNUSTEP_LOCAL_DOC_MAN=/Library/Documentation/man GNUSTEP_LOCAL_DOC_INFO=/Library/Documentation/info GNUSTEP_USER_DIR_APPS=Applications GNUSTEP_USER_DIR_ADMIN_APPS=Applications/Utilities GNUSTEP_USER_DIR_WEB_APPS=Library/WebApplications GNUSTEP_USER_DIR_TOOLS=bin GNUSTEP_USER_DIR_ADMIN_TOOLS=sbin GNUSTEP_USER_DIR_LIBRARY=Library GNUSTEP_USER_DIR_HEADERS=Library/Headers GNUSTEP_USER_DIR_LIBRARIES=Library/Libraries GNUSTEP_USER_DIR_DOC=Library/Documentation GNUSTEP_USER_DIR_DOC_MAN=Library/Documentation/man GNUSTEP_USER_DIR_DOC_INFO=Library/Documentation/info GNUSTEP_USER_CONFIG_FILE=Library/.GNUstep.conf GNUSTEP_USER_DEFAULTS_DIR=Library/Defaults ���������������������������������������������������gnustep-make-2.7.0/FilesystemLayouts/debian���������������������������������������������������������0000664�0001750�0001750�00000007512�12715275420�020620� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # FHS (Filesystem Hierarchy Standard) filesystem layout for Debian. # # This is the standard FHS Unix filesystem layout to use when # installing into /usr for the Debian packaging system. # Use this if you want GNUstep to blend into a Debian based GNU/Linux # filesystem (including related distributions like Ubuntu) and you are # compiling gnustep-make so that it can be shipped as part of the # distribution/basic system installation. # # We put SYSTEM into /usr, and LOCAL into /usr/local. This allows you # to make a distinction between stuff that you ship as part of your # system/distribution, and the local stuff installed by the local # sysadmin. Make sure you compile/install all packages that you want # to go into /usr (ie, be part of the system/distribution) using # 'make install GNUSTEP_INSTALLATION_DOMAIN=SYSTEM' # # To get system packages to work in this layout, you need /usr/bin in # your PATH, and /usr/lib in your /etc/ld.so.conf (or equivalent for # your Unix). Don't forget to run ldconfig after installing a # library! # # Your users will need to also add /usr/local/bin to PATH and # /usr/local/lib to /etc/ld.so.conf (or equivalent for your Unix) if # they want to use the LOCAL domain. To use gnustep-make in this # environment, use 'export # GNUSTEP_MAKEFILES=/usr/share/GNUstep/Makefiles' # By default, we install into /usr, but this can be overridden # by using ./configure --prefix=xxx when configuring. GNUSTEP_DEFAULT_PREFIX=/usr # These are only used by gnustep-base to implement the NSUserDirectory # API. We never install anything in them. They will be used as they # are without $prefix. GNUSTEP_SYSTEM_USERS_DIR=/home GNUSTEP_NETWORK_USERS_DIR=/home GNUSTEP_LOCAL_USERS_DIR=/home # NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL # paths. GNUSTEP_MAKEFILES=/share/GNUstep/Makefiles GNUSTEP_SYSTEM_APPS=/lib/GNUstep/Applications GNUSTEP_SYSTEM_ADMIN_APPS=/lib/GNUstep/Applications GNUSTEP_SYSTEM_WEB_APPS=/lib/GNUstep/WebApplications GNUSTEP_SYSTEM_TOOLS=/bin GNUSTEP_SYSTEM_ADMIN_TOOLS=/sbin GNUSTEP_SYSTEM_LIBRARY=/lib/GNUstep GNUSTEP_SYSTEM_HEADERS=/include/GNUstep GNUSTEP_SYSTEM_LIBRARIES=/lib GNUSTEP_SYSTEM_DOC=/share/GNUstep/Documentation GNUSTEP_SYSTEM_DOC_MAN=/share/man GNUSTEP_SYSTEM_DOC_INFO=/share/info GNUSTEP_NETWORK_APPS=/local/lib/GNUstep/Applications GNUSTEP_NETWORK_ADMIN_APPS=/local/lib/GNUstep/Applications GNUSTEP_NETWORK_WEB_APPS=/lib/GNUstep/WebApplications GNUSTEP_NETWORK_TOOLS=/local/bin GNUSTEP_NETWORK_ADMIN_TOOLS=/local/sbin GNUSTEP_NETWORK_LIBRARY=/local/lib/GNUstep GNUSTEP_NETWORK_HEADERS=/local/include/GNUstep GNUSTEP_NETWORK_LIBRARIES=/local/lib GNUSTEP_NETWORK_DOC=/local/share/GNUstep/Documentation GNUSTEP_NETWORK_DOC_MAN=/local/share/man GNUSTEP_NETWORK_DOC_INFO=/local/share/info GNUSTEP_LOCAL_APPS=/local/lib/GNUstep/Applications GNUSTEP_LOCAL_ADMIN_APPS=/local/lib/GNUstep/Applications GNUSTEP_LOCAL_WEB_APPS=/local/lib/GNUstep/WebApplications GNUSTEP_LOCAL_TOOLS=/local/bin GNUSTEP_LOCAL_ADMIN_TOOLS=/local/sbin GNUSTEP_LOCAL_LIBRARY=/local/lib/GNUstep GNUSTEP_LOCAL_HEADERS=/local/include/GNUstep GNUSTEP_LOCAL_LIBRARIES=/local/lib GNUSTEP_LOCAL_DOC=/local/share/GNUstep/Documentation GNUSTEP_LOCAL_DOC_MAN=/local/share/man GNUSTEP_LOCAL_DOC_INFO=/local/share/info GNUSTEP_USER_DIR_APPS=GNUstep/Applications GNUSTEP_USER_DIR_ADMIN_APPS=GNUstep/Applications/Admin GNUSTEP_USER_DIR_WEB_APPS=GNUstep/WebApplications GNUSTEP_USER_DIR_TOOLS=GNUstep/Tools GNUSTEP_USER_DIR_ADMIN_TOOLS=GNUstep/Tools/Admin GNUSTEP_USER_DIR_LIBRARY=GNUstep/Library GNUSTEP_USER_DIR_HEADERS=GNUstep/Library/Headers GNUSTEP_USER_DIR_LIBRARIES=GNUstep/Library/Libraries GNUSTEP_USER_DIR_DOC=GNUstep/Library/Documentation GNUSTEP_USER_DIR_DOC_MAN=GNUstep/Library/Documentation/man GNUSTEP_USER_DIR_DOC_INFO=GNUstep/Library/Documentation/info GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/FilesystemLayouts/README���������������������������������������������������������0000664�0001750�0001750�00000005202�11720723220�020314� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� *** What is the FilesystemLayouts directory *** This directory contains filesystem layouts that you can use when you configure your gnustep-make. A filesystem layout describes how the GNUstep installation domains (System, Network, Local, User) map to directories on disk. Every file in this directory is a filesystem layout that you can use in gnustep-make's ./configure (technical note: the files are shell files that are directly included by ./configure and that should set the specified variables). For example: ./configure --with-layout=fhs ./configure --with-layout=fhs-system By default, the 'fhs' layout is used except on Apple when building using the apple-apple-apple combo. If you want to use your own custom layout, just start with one of the existing layouts, copy it into a new file, and edit it. :-) *** Popular Fileystem Layouts *** Here is a list of popular filesystem layout -- * gnustep: traditional GNUstep filesystem layout; it installs everything into /usr/GNUstep/System, /usr/GNUstep/Local. It's a very friendly layout, similar to the ones found on NeXTstep, OpenStep and Apple Mac OS X. It's a layout that can work nicely with fat binaries, but may not blend very well with the native environment because everything is installed in special, GNUstep-only, directories, so you may need to source a special script (GNUstep.sh) before being able to use the layout. Recommended for the advanced GNUstep users and the NeXTstep/Apple fans. * fhs: standard FHS Unix layout for locally compiled software; it installs everything into /usr/local. This is the default layout. Blends very well with native GNU/Linux systems (and other Unix systems with similar directory structure). Recommended if you're compiling from sources on Unix and want good integration with your native system. * fhs-system: standard FHS layout for software to be shipped as part of distributions/systems; it installs system stuff into /usr, and is ready to support local stuff to be installed into /usr/local. Blends wonderfully with native GNU/Linux systems (and other Unix systems with similar directory structure) as you're installing everything straight into the standard system locations. Recommended if you're building packages for a Unix system. * apple: the Apple Mac OS X layout for software using the apple-apple-apple library-combo (ie, the Apple frameworks); it installs everything in /Library or /usr/local. Blends very well with native Apple Mac OS X systems. Recommended if you're compiling your own software from sources on Apple Mac OS X using the Apple frameworks (*not* gnustep-base and gnustep-gui) and want good integration with your native system. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/FilesystemLayouts/fhs������������������������������������������������������������0000664�0001750�0001750�00000006232�10743536105�020153� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # FHS (Filesystem Hierarchy Standard) filesystem layout # # This is the standard FHS Unix filesystem layout to use when # installing everything into /usr/local. Use this on GNU/Linux (or # any Unix with a similar filesystem layout) if you want GNUstep to # blend in your GNU/Linux environment and you are compiling all of # your GNUstep system from source. # # Basically, it's a standard FHS Unix filesystem with all domains mapped # into the same /usr/local directory. # Make sure you have /usr/local/bin in your PATH, and /usr/local/lib # in your /etc/ld.so.conf (or equivalent for your Unix), and don't # forget to run ldconfig after installing a library! To use # gnustep-make in this environment, use 'export # GNUSTEP_MAKEFILES=/usr/local/share/GNUstep/Makefiles' # By default, we install into /usr/local, but this can be overridden # by using ./configure --prefix=xxx when configuring. GNUSTEP_DEFAULT_PREFIX=/usr/local # These are only used by gnustep-base to implement the NSUserDirectory # API. We never install anything in them. They will be used as they # are without $prefix. GNUSTEP_SYSTEM_USERS_DIR=/home GNUSTEP_NETWORK_USERS_DIR=/home GNUSTEP_LOCAL_USERS_DIR=/home # NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL # paths. GNUSTEP_MAKEFILES=/share/GNUstep/Makefiles GNUSTEP_SYSTEM_APPS=/lib/GNUstep/Applications GNUSTEP_SYSTEM_ADMIN_APPS=/lib/GNUstep/Applications GNUSTEP_SYSTEM_WEB_APPS=/lib/GNUstep/WebApplications GNUSTEP_SYSTEM_TOOLS=/bin GNUSTEP_SYSTEM_ADMIN_TOOLS=/sbin GNUSTEP_SYSTEM_LIBRARY=/lib/GNUstep GNUSTEP_SYSTEM_HEADERS=/include GNUSTEP_SYSTEM_LIBRARIES=/lib GNUSTEP_SYSTEM_DOC=/share/GNUstep/Documentation GNUSTEP_SYSTEM_DOC_MAN=/share/man GNUSTEP_SYSTEM_DOC_INFO=/share/info GNUSTEP_NETWORK_APPS=/lib/GNUstep/Applications GNUSTEP_NETWORK_ADMIN_APPS=/lib/GNUstep/Applications GNUSTEP_NETWORK_WEB_APPS=/lib/GNUstep/WebApplications GNUSTEP_NETWORK_TOOLS=/bin GNUSTEP_NETWORK_ADMIN_TOOLS=/sbin GNUSTEP_NETWORK_LIBRARY=/lib/GNUstep GNUSTEP_NETWORK_HEADERS=/include GNUSTEP_NETWORK_LIBRARIES=/lib GNUSTEP_NETWORK_DOC=/share/GNUstep/Documentation GNUSTEP_NETWORK_DOC_MAN=/share/man GNUSTEP_NETWORK_DOC_INFO=/share/info GNUSTEP_LOCAL_APPS=/lib/GNUstep/Applications GNUSTEP_LOCAL_ADMIN_APPS=/lib/GNUstep/Applications GNUSTEP_LOCAL_WEB_APPS=/lib/GNUstep/WebApplications GNUSTEP_LOCAL_TOOLS=/bin GNUSTEP_LOCAL_ADMIN_TOOLS=/sbin GNUSTEP_LOCAL_LIBRARY=/lib/GNUstep GNUSTEP_LOCAL_HEADERS=/include GNUSTEP_LOCAL_LIBRARIES=/lib GNUSTEP_LOCAL_DOC=/share/GNUstep/Documentation GNUSTEP_LOCAL_DOC_MAN=/share/man GNUSTEP_LOCAL_DOC_INFO=/share/info GNUSTEP_USER_DIR_APPS=GNUstep/Applications GNUSTEP_USER_DIR_ADMIN_APPS=GNUstep/Applications/Admin GNUSTEP_USER_DIR_WEB_APPS=GNUstep/WebApplications GNUSTEP_USER_DIR_TOOLS=GNUstep/Tools GNUSTEP_USER_DIR_ADMIN_TOOLS=GNUstep/Tools/Admin GNUSTEP_USER_DIR_LIBRARY=GNUstep/Library GNUSTEP_USER_DIR_HEADERS=GNUstep/Library/Headers GNUSTEP_USER_DIR_LIBRARIES=GNUstep/Library/Libraries GNUSTEP_USER_DIR_DOC=GNUstep/Library/Documentation GNUSTEP_USER_DIR_DOC_MAN=GNUstep/Library/Documentation/man GNUSTEP_USER_DIR_DOC_INFO=GNUstep/Library/Documentation/info GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/FilesystemLayouts/apple����������������������������������������������������������0000664�0001750�0001750�00000005752�10762571776�020520� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # Apple Mac OS X filesystem layout # # This is the layout found on Apple Mac OS X when installing # everything into /Library and /usr/local. Use this on Apple Mac OS X # to compile and install software that uses the native Apple # frameworks (ie, using the apple-apple-apple library-combo). # # Basically, it's a the Apple Mac OS X filesystem with all domains # mapped into the same /Library and /usr/local directory. # # To use gnustep-make in this environment, source GNUstep.sh or use # 'export GNUSTEP_MAKEFILES=/Library/GNUstep/Makefiles'. # By default, we install into /, but this can be overridden by using # ./configure --prefix=xxx when configuring. GNUSTEP_DEFAULT_PREFIX=/ # These are only used by gnustep-base to implement the NSUserDirectory # API. We never install anything in them. They will be used as they # are without $prefix. GNUSTEP_SYSTEM_USERS_DIR=/Users GNUSTEP_NETWORK_USERS_DIR=/Network/Users GNUSTEP_LOCAL_USERS_DIR=/Users # NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL # paths. GNUSTEP_MAKEFILES=/Library/GNUstep/Makefiles GNUSTEP_SYSTEM_APPS=/Applications GNUSTEP_SYSTEM_ADMIN_APPS=/Applications/Utilities GNUSTEP_SYSTEM_WEB_APPS=/Library/WebApplications GNUSTEP_SYSTEM_TOOLS=/usr/local/bin GNUSTEP_SYSTEM_ADMIN_TOOLS=/usr/local/sbin GNUSTEP_SYSTEM_LIBRARY=/Library GNUSTEP_SYSTEM_HEADERS=/usr/local/include GNUSTEP_SYSTEM_LIBRARIES=/usr/local/lib GNUSTEP_SYSTEM_DOC=/Library/Documentation GNUSTEP_SYSTEM_DOC_MAN=/Library/Documentation/man GNUSTEP_SYSTEM_DOC_INFO=/Library/Documentation/info GNUSTEP_NETWORK_APPS=/Applications GNUSTEP_NETWORK_ADMIN_APPS=/Applications/Utilities GNUSTEP_NETWORK_WEB_APPS=/Library/WebApplications GNUSTEP_NETWORK_TOOLS=/usr/local/bin GNUSTEP_NETWORK_ADMIN_TOOLS=/usr/local/sbin GNUSTEP_NETWORK_LIBRARY=/Library GNUSTEP_NETWORK_HEADERS=/usr/local/include GNUSTEP_NETWORK_LIBRARIES=/usr/local/lib GNUSTEP_NETWORK_DOC=/Library/Documentation GNUSTEP_NETWORK_DOC_MAN=/Library/Documentation/man GNUSTEP_NETWORK_DOC_INFO=/Library/Documentation/info GNUSTEP_LOCAL_APPS=/Applications GNUSTEP_LOCAL_ADMIN_APPS=/Applications/Utilities GNUSTEP_LOCAL_WEB_APPS=/Library/WebApplications GNUSTEP_LOCAL_TOOLS=/usr/local/bin GNUSTEP_LOCAL_ADMIN_TOOLS=/usr/local/sbin GNUSTEP_LOCAL_LIBRARY=/Library GNUSTEP_LOCAL_HEADERS=/usr/local/include GNUSTEP_LOCAL_LIBRARIES=/usr/local/lib GNUSTEP_LOCAL_DOC=/Library/Documentation GNUSTEP_LOCAL_DOC_MAN=/Library/Documentation/man GNUSTEP_LOCAL_DOC_INFO=/Library/Documentation/info GNUSTEP_USER_DIR_APPS=Applications GNUSTEP_USER_DIR_ADMIN_APPS=Applications/Utilities GNUSTEP_USER_DIR_WEB_APPS=Library/WebApplications GNUSTEP_USER_DIR_TOOLS=bin GNUSTEP_USER_DIR_ADMIN_TOOLS=sbin GNUSTEP_USER_DIR_LIBRARY=Library GNUSTEP_USER_DIR_HEADERS=Library/Headers GNUSTEP_USER_DIR_LIBRARIES=Library/Libraries GNUSTEP_USER_DIR_DOC=Library/Documentation GNUSTEP_USER_DIR_DOC_MAN=Library/Documentation/man GNUSTEP_USER_DIR_DOC_INFO=Library/Documentation/info GNUSTEP_USER_CONFIG_FILE=Library/.GNUstep.conf GNUSTEP_USER_DEFAULTS_DIR=Library/Defaults ����������������������gnustep-make-2.7.0/FilesystemLayouts/fhs-system�����������������������������������������������������0000664�0001750�0001750�00000007422�10743536105�021477� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # FHS (Filesystem Hierarchy Standard) filesystem layout for system installations # # This is the standard FHS Unix filesystem layout to use when # installing into /usr. Use this if you want GNUstep to blend into # your GNU/Linux filesystem (or any other Unix with a similar # filesystem) and you are compiling gnustep-make so that it can be # shipped as part of a distribution/basic system installation. # # We put SYSTEM into /usr, and LOCAL into /usr/local. This allows you # to make a distinction between stuff that you ship as part of your # system/distribution, and the local stuff installed by the local # sysadmin. Make sure you compile/install all packages that you want # to go into /usr (ie, be part of the system/distribution) using # 'make install GNUSTEP_INSTALLATION_DOMAIN=SYSTEM' # # To get system packages to work in this layout, you need /usr/bin in # your PATH, and /usr/lib in your /etc/ld.so.conf (or equivalent for # your Unix). Don't forget to run ldconfig after installing a # library! # # Your users will need to also add /usr/local/bin to PATH and # /usr/local/lib to /etc/ld.so.conf (or equivalent for your Unix) if # they want to use the LOCAL domain. To use gnustep-make in this # environment, use 'export # GNUSTEP_MAKEFILES=/usr/share/GNUstep/Makefiles' # By default, we install into /usr, but this can be overridden # by using ./configure --prefix=xxx when configuring. GNUSTEP_DEFAULT_PREFIX=/usr # These are only used by gnustep-base to implement the NSUserDirectory # API. We never install anything in them. They will be used as they # are without $prefix. GNUSTEP_SYSTEM_USERS_DIR=/home GNUSTEP_NETWORK_USERS_DIR=/home GNUSTEP_LOCAL_USERS_DIR=/home # NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL # paths. GNUSTEP_MAKEFILES=/share/GNUstep/Makefiles GNUSTEP_SYSTEM_APPS=/lib/GNUstep/Applications GNUSTEP_SYSTEM_ADMIN_APPS=/lib/GNUstep/Applications GNUSTEP_SYSTEM_WEB_APPS=/lib/GNUstep/WebApplications GNUSTEP_SYSTEM_TOOLS=/bin GNUSTEP_SYSTEM_ADMIN_TOOLS=/sbin GNUSTEP_SYSTEM_LIBRARY=/lib/GNUstep GNUSTEP_SYSTEM_HEADERS=/include GNUSTEP_SYSTEM_LIBRARIES=/lib GNUSTEP_SYSTEM_DOC=/share/GNUstep/Documentation GNUSTEP_SYSTEM_DOC_MAN=/share/man GNUSTEP_SYSTEM_DOC_INFO=/share/info GNUSTEP_NETWORK_APPS=/local/lib/GNUstep/Applications GNUSTEP_NETWORK_ADMIN_APPS=/local/lib/GNUstep/Applications GNUSTEP_NETWORK_WEB_APPS=/lib/GNUstep/WebApplications GNUSTEP_NETWORK_TOOLS=/local/bin GNUSTEP_NETWORK_ADMIN_TOOLS=/local/sbin GNUSTEP_NETWORK_LIBRARY=/local/lib/GNUstep GNUSTEP_NETWORK_HEADERS=/local/include GNUSTEP_NETWORK_LIBRARIES=/local/lib GNUSTEP_NETWORK_DOC=/local/share/GNUstep/Documentation GNUSTEP_NETWORK_DOC_MAN=/local/share/man GNUSTEP_NETWORK_DOC_INFO=/local/share/info GNUSTEP_LOCAL_APPS=/local/lib/GNUstep/Applications GNUSTEP_LOCAL_ADMIN_APPS=/local/lib/GNUstep/Applications GNUSTEP_LOCAL_WEB_APPS=/local/lib/GNUstep/WebApplications GNUSTEP_LOCAL_TOOLS=/local/bin GNUSTEP_LOCAL_ADMIN_TOOLS=/local/sbin GNUSTEP_LOCAL_LIBRARY=/local/lib/GNUstep GNUSTEP_LOCAL_HEADERS=/local/include GNUSTEP_LOCAL_LIBRARIES=/local/lib GNUSTEP_LOCAL_DOC=/local/share/GNUstep/Documentation GNUSTEP_LOCAL_DOC_MAN=/local/share/man GNUSTEP_LOCAL_DOC_INFO=/local/share/info GNUSTEP_USER_DIR_APPS=GNUstep/Applications GNUSTEP_USER_DIR_ADMIN_APPS=GNUstep/Applications/Admin GNUSTEP_USER_DIR_WEB_APPS=GNUstep/WebApplications GNUSTEP_USER_DIR_TOOLS=GNUstep/Tools GNUSTEP_USER_DIR_ADMIN_TOOLS=GNUstep/Tools/Admin GNUSTEP_USER_DIR_LIBRARY=GNUstep/Library GNUSTEP_USER_DIR_HEADERS=GNUstep/Library/Headers GNUSTEP_USER_DIR_LIBRARIES=GNUstep/Library/Libraries GNUSTEP_USER_DIR_DOC=GNUstep/Library/Documentation GNUSTEP_USER_DIR_DOC_MAN=GNUstep/Library/Documentation/man GNUSTEP_USER_DIR_DOC_INFO=GNUstep/Library/Documentation/info GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/config.site����������������������������������������������������������������������0000664�0001750�0001750�00000006661�10711636501�016100� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # config.site # # GNUstep site configuration. This allows Autoconf packages to # be installed within the GNUstep directory structure. # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # echo Processing GNUstep site configuration # Determine the target if test -z "$target" -o "$target" = NONE; then # The user did not specify one so the target is the host GNUSTEP_TARGET=$GNUSTEP_HOST GNUSTEP_TARGET_CPU=$GNUSTEP_HOST_CPU GNUSTEP_TARGET_VENDOR=$GNUSTEP_HOST_VENDOR GNUSTEP_TARGET_OS=$GNUSTEP_HOST_OS else # The user did specify a target, so canonicalize and clean GNUSTEP_TARGET=`$GNUSTEP_MAKEFILES/config.sub $target` GNUSTEP_TARGET_CPU=`$GNUSTEP_MAKEFILES/cpu.sh $GNUSTEP_TARGET` GNUSTEP_TARGET_VENDOR=`$GNUSTEP_MAKEFILES/vendor.sh $GNUSTEP_TARGET` GNUSTEP_TARGET_OS=`$GNUSTEP_MAKEFILES/os.sh $GNUSTEP_TARGET` fi # Clean the target GNUSTEP_TARGET_OS=`$GNUSTEP_MAKEFILES/clean_os.sh $GNUSTEP_TARGET_OS` GNUSTEP_TARGET_VENDOR=`$GNUSTEP_MAKEFILES/clean_vendor.sh $GNUSTEP_TARGET_VENDOR` GNUSTEP_TARGET_CPU=`$GNUSTEP_MAKEFILES/clean_cpu.sh $GNUSTEP_TARGET_CPU` # Set the installation prefix if test "$prefix" = NONE ; then prefix="${GNUSTEP_SYSTEM_ROOT}" fi # Change the binary directory default if test "$bindir" = "\${exec_prefix}/bin" ; then if [ "$GNUSTEP_IS_FLATTENED" = "no" ]; then bindir="\${exec_prefix}/Tools/${GNUSTEP_HOST_CPU}/${GNUSTEP_HOST_OS}" else bindir="\${exec_prefix}/Tools" fi bindirtop="\${exec_prefix}/Tools" fi if test "$DIR_BIN" = "/usr/local/bin" ; then if [ "$GNUSTEP_IS_FLATTENED" = "no" ]; then DIR_BIN="\${prefix}/Tools/${GNUSTEP_HOST_CPU}/${GNUSTEP_HOST_OS}" else DIR_BIN="\${exec_prefix}/Tools" fi bindirtop="\${exec_prefix}/Tools" fi # xxx What about sbin? # xxx What about libexec? # Change the data directory default if test "$datadir" = "\${prefix}/share" ; then datadir="\${prefix}/Library/Libraries/share" fi # xxx What about sysconfdir? # xxx What about sharedstatedir? # xxx What about localstatedir? # Change the library directory default if test "$libdir" = "\${exec_prefix}/lib" ; then if [ "$GNUSTEP_IS_FLATTENED" = "no" ]; then libdir="\${exec_prefix}/Library/Libraries/${GNUSTEP_TARGET_CPU}/${GNUSTEP_TARGET_OS}" else libdir="\${exec_prefix}/Library/Libraries" fi fi # Change the include directory default if test "$includedir" = "\${prefix}/include" ; then if [ "$GNUSTEP_IS_FLATTENED" = "no" ]; then includedir="\${prefix}/Library/Headers/${LIBRARY_COMBO}" else includedir="\${prefix}/Library/Headers" fi fi # xxx What about oldincludedir? # Change the info directory default if test "$infodir" = "\${prefix}/info" ; then infodir="\${prefix}/Library/Documentation/info" fi # Change the man directory default if test "$mandir" = "\${prefix}/man" ; then mandir="\${prefix}/Library/Documentation/man" fi �������������������������������������������������������������������������������gnustep-make-2.7.0/config.make.in�������������������������������������������������������������������0000664�0001750�0001750�00000015726�12715322050�016455� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # config.make.in # # The settings required by the makefile package that are determined # by configure and that depend on the platform. There might be # multiple of those files installed in different platform-specific # directories. Global settings that are common to all platforms # should go in config-noarch.make.in instead. # # Copyright (C) 1997-2006 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Ovidiu Predescu <ovidiu@net-community.com> # Author: Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. MAKE_WITH_INFO_FUNCTION = @MAKE_WITH_INFO_FUNCTION@ # # Binary and compile tools # # Ignore the default CC=cc used by GNU make when nothing is specified; # in that case, we want to use our own default CC. ifeq ($(origin CC), default) CC = @CC@ endif # If CC is already set but not from the GNU make default (ie, in the # environment), don't override it but use the provided compiler. This # makes it easier to swap C/ObjC compilers on the fly. ifeq ($(CC),) CC = @CC@ endif # Ignore the default CXX=g++ used by GNU make when nothing is specified; # in that case, we want to use our own default CXX. ifeq ($(origin CXX), default) CXX = @CXX@ endif # If CXX is already set but not from the GNU make default (ie, in the # environment), don't override it but use the provided compiler. This # makes it easier to swap C++/ObjC++ compilers on the fly. ifeq ($(CXX),) CXX = @CXX@ endif # TODO: Because of the following, OPTFLAG usually ends up being '-g # -O2'. The '-g' is fairly harmless as you can always use strip=yes # which will strip the object files upon installation; still, it's not # very elegant since -g is already added elsewhere for debug=yes, and # it ends up appearing twice in the gcc command-line. OPTFLAG = @CFLAGS@ OBJCFLAGS= @OBJCFLAGS@ OBJC_LIB_FLAG = @OBJC_LIB_FLAG@ CPPFLAGS = @CPPFLAGS@ CPP = @CPP@ CCFLAGS = @CXXFLAGS@ # If the 'debug' variable is not specified on the command-line or in # the environment, we set it to the GNUSTEP_DEFAULT_DEBUG value. This # is normally 'no,', but can be changed to 'yes' when gnustep-make is # configured. GNUSTEP_DEFAULT_DEBUG = @GNUSTEP_DEFAULT_DEBUG@ ifeq ($(OBJC_LIB_FLAG),) OBJC_LIB_FLAG = -lobjc endif EXEEXT = @EXEEXT@ OEXT = .@OBJEXT@ LIBEXT = .a LN_S = @LN_S@ # This is the best we can do given the current autoconf, which only # 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 (it shouldn't cause any problems, but checking is good). ifeq ($(HAS_LN_S), yes) RM_LN_S = rm -f LN_S_RECURSIVE = $(LN_S) FRAMEWORK_VERSION_SUPPORT = yes else RM_LN_S = rm -Rf # When symlinks are not available, using LN_S (which is set to 'cp -p') # doesn't work on directories. So every time you want to do the # equivalent of 'ln -s' on directories, you need to use # LN_S_RECURSIVE instead of LN_S. LN_S_RECURSIVE = cp -pR FRAMEWORK_VERSION_SUPPORT = no endif LD = $(CC) LDOUT = LDFLAGS = @LDFLAGS@ AR = @AR@ AROUT = ARFLAGS = rc RANLIB = @RANLIB@ DLLTOOL = @DLLTOOL@ # NB: These variables are defined here only so that they can be # overridden on the command line (so you can type 'AWK=mawk make' to # use a different awk for that particular run of make). We should # *NOT* set them to the full path of these tools at configure time, # because otherwise when you change/update the tools you would need to # reconfigure and reinstall gnustep-make! We can normally assume that # typing 'awk' and 'sed' on the command line cause the preferred awk # and sed programs on the system to be used. Hardcoding the full path # (or the name) of the specific awk or sed program on this sytem here # would make it lot more inflexible. In other words, the following # definitions should remain like in 'AWK = awk' on all systems. AWK = awk SED = sed YACC = yacc BISON = bison FLEX = flex LEX = lex CHOWN = chown STRIP = strip INSTALL = @HOST_INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ TAR = @TAR@ MAKE = @GNUMAKE@ MKDIRS = $(GNUSTEP_MAKEFILES)/mkinstalldirs NM = @NM@ LATEX2HTML = @LATEX2HTML@ # Darwin specific flags CC_CPPPRECOMP = @cc_cppprecomp@ CC_BUNDLE = @cc_bundle@ CC_GNURUNTIME = @cc_gnuruntime@ # Backend bundle BACKEND_BUNDLE=@BACKEND_BUNDLE@ # # Do threading stuff. # # Warning - the base library's configure.in will extract the thread # flags from the following line using grep/sed - so if you change the # following lines you *need* to update the base library configure.in # too. # ifndef objc_threaded objc_threaded:=@objc_threaded@ endif # Any user specified libs CONFIG_SYSTEM_INCL=@INCLUDES@ CONFIG_SYSTEM_LIBS = @LIBS@ CONFIG_SYSTEM_LIB_DIR = @LIB_DIR@ # # Whether the GCC compiler on solaris supports the -shared flag for # linking libraries. # SOLARIS_SHARED = @SOLARIS_SHARED@ # # Whether the C/ObjC/C++ compiler supports auto-dependencies # (generating dependencies of the object files from the include files # used to compile them) via -MMD -MP flags # AUTO_DEPENDENCIES = @AUTO_DEPENDENCIES@ # # Whether the ObjC compiler supports native ObjC exceptions via # @try/@catch/@finally/@throw. # USE_OBJC_EXCEPTIONS = @USE_OBJC_EXCEPTIONS@ # # Whether the ObjC compiler supports -fobjc-nonfragile-abi # USE_NONFRAGILE_ABI = @USE_NONFRAGILE_ABI@ # # Whether the ObjC compiler supports -fobjc-arc # USE_ARC = @USE_ARC@ # # Whether the compiler is GCC with precompiled header support # GCC_WITH_PRECOMPILED_HEADERS = @GCC_WITH_PRECOMPILED_HEADERS@ # # Whether the install_name for dynamic libraries on darwin should # be an absolute path. # GNUSTEP_ABSOLUTE_INSTALL_PATHS = @GNUSTEP_ABSOLUTE_INSTALL_PATHS@ # # Whether to use -r or -Wl,-r when doing partial linking # OBJ_MERGE_CMD_FLAG = @OBJ_MERGE_CMD_FLAG@ ������������������������������������������gnustep-make-2.7.0/GNUstep-reset.sh�����������������������������������������������������������������0000664�0001750�0001750�00000013426�10743537065�016755� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# This file must be sourced inside (ba)sh using: . # # GNUstep-reset.sh # # Shell script resetting the GNUstep environment variables # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # This file is used to reset your environment. This is needed if you # want to change LIBRARY_COMBO. You first reset your environment, then # set a new LIBRARY_COMBO variable, then source GNUstep.sh again. # This file resets variables in reverse order as they are set in the # GNUstep.sh file. # This file only makes sense if you are using the standard GNUstep # filesystem structure. If you're not, then your System Tools # directory could be /usr/bin, but you don't really want to remove # that from your PATH. :-) # This function resets a path. # 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 local original_path tmp_IFS temp_path dir gnustep_dir found # NB: We need to use eval because we want to access a variable # whose name is another variable! original_path=$(eval echo \$$1) tmp_IFS="$IFS" IFS=: temp_path= # Loop on the paths for dir in $original_path; do # For each of them, keep it only if it's not beginning with # a path in GNUSTEP_PATHLIST as prefix found=no; for gnustep_dir in $GNUSTEP_PATHLIST; do if [ -n "$gnustep_dir$2" ]; then case "$dir" in $gnustep_dir$2*) found=yes; break;; *);; esac; fi; done; if [ "$found" = "no" ]; then if [ -z "$temp_path" ]; then temp_path="$dir" else temp_path="$temp_path:$dir" fi; fi done IFS="$tmp_IFS" # Not set the path variable. eval "$1=\$temp_path" # Export it only if non empty, otherwise remove it completely from # the shell environment. temp_path=`eval echo \$"$1"` if [ -z "$temp_path" ]; then eval "unset $1" else eval "export $1" fi } reset_path INFOPATH /Library/Documentation/info reset_path GUILE_LOAD_PATH /Library/Libraries/Guile reset_path CLASSPATH /Library/Libraries/Java reset_path LD_LIBRARY_PATH /Library/Libraries reset_path DYLD_LIBRARY_PATH /Library/Libraries reset_path DYLD_FRAMEWORK_PATH /Library/Frameworks reset_path PATH /Tools # Make sure we destroy the reset_path function after using it - we don't # want to pollute the environment with it. unset -f reset_path unset GNUSTEP_SYSTEM_USERS_DIR unset GNUSTEP_NETWORK_USERS_DIR unset GNUSTEP_LOCAL_USERS_DIR unset GNUSTEP_SYSTEM_APPS unset GNUSTEP_SYSTEM_ADMIN_APPS unset GNUSTEP_SYSTEM_WEB_APPS unset GNUSTEP_SYSTEM_TOOLS unset GNUSTEP_SYSTEM_ADMIN_TOOLS unset GNUSTEP_SYSTEM_LIBRARY unset GNUSTEP_SYSTEM_HEADERS unset GNUSTEP_SYSTEM_LIBRARIES unset GNUSTEP_SYSTEM_RESOURCES unset GNUSTEP_SYSTEM_JAVA unset GNUSTEP_SYSTEM_DOC unset GNUSTEP_SYSTEM_DOC_MAN unset GNUSTEP_SYSTEM_DOC_INFO unset GNUSTEP_NETWORK_APPS unset GNUSTEP_NETWORK_ADMIN_APPS unset GNUSTEP_NETWORK_WEB_APPS unset GNUSTEP_NETWORK_TOOLS unset GNUSTEP_NETWORK_ADMIN_TOOLS unset GNUSTEP_NETWORK_LIBRARY unset GNUSTEP_NETWORK_HEADERS unset GNUSTEP_NETWORK_LIBRARIES unset GNUSTEP_NETWORK_RESOURCES unset GNUSTEP_NETWORK_JAVA unset GNUSTEP_NETWORK_DOC unset GNUSTEP_NETWORK_DOC_MAN unset GNUSTEP_NETWORK_DOC_INFO unset GNUSTEP_LOCAL_APPS unset GNUSTEP_LOCAL_ADMIN_APPS unset GNUSTEP_LOCAL_WEB_APPS unset GNUSTEP_LOCAL_TOOLS unset GNUSTEP_LOCAL_ADMIN_TOOLS unset GNUSTEP_LOCAL_LIBRARY unset GNUSTEP_LOCAL_HEADERS unset GNUSTEP_LOCAL_LIBRARIES unset GNUSTEP_LOCAL_RESOURCES unset GNUSTEP_LOCAL_JAVA unset GNUSTEP_LOCAL_DOC unset GNUSTEP_LOCAL_DOC_MAN unset GNUSTEP_LOCAL_DOC_INFO unset GNUSTEP_USER_APPS unset GNUSTEP_USER_ADMIN_APPS unset GNUSTEP_USER_WEB_APPS unset GNUSTEP_USER_TOOLS unset GNUSTEP_USER_ADMIN_TOOLS unset GNUSTEP_USER_LIBRARY unset GNUSTEP_USER_HEADERS unset GNUSTEP_USER_LIBRARIES unset GNUSTEP_USER_RESOURCES unset GNUSTEP_USER_JAVA unset GNUSTEP_USER_DOC unset GNUSTEP_USER_DOC_MAN unset GNUSTEP_USER_DOC_INFO # These should not defined, but might be if something goes wrong # somewhere. unset GNUSTEP_MAKE_STRICT_V2_MODE unset GNUSTEP_USER_DIR_APPS unset GNUSTEP_USER_DIR_ADMIN_APPS unset GNUSTEP_USER_DIR_WEB_APPS unset GNUSTEP_USER_DIR_TOOLS unset GNUSTEP_USER_DIR_ADMIN_TOOLS unset GNUSTEP_USER_DIR_LIBRARY unset GNUSTEP_USER_DIR_HEADERS unset GNUSTEP_USER_DIR_LIBRARIES unset GNUSTEP_USER_DIR_RESOURCES unset GNUSTEP_USER_DIR_JAVA unset GNUSTEP_USER_DIR_DOC unset GNUSTEP_USER_DIR_DOC_MAN unset GNUSTEP_USER_DIR_DOC_INFO unset GNUSTEP_PATHLIST unset GNUSTEP_USER_ROOT unset GNUSTEP_HOST_OS unset GNUSTEP_HOST_VENDOR unset GNUSTEP_HOST_CPU unset GNUSTEP_HOST unset GNUSTEP_NETWORK_ROOT unset GNUSTEP_LOCAL_ROOT unset GNUSTEP_MAKEFILES unset GNUSTEP_FLATTENED unset GNUSTEP_IS_FLATTENED unset GNUSTEP_SYSTEM_ROOT unset GNUSTEP_ROOT unset LIBRARY_COMBO unset GNUSTEP_CONFIG_FILE unset GNUSTEP_USER_CONFIG_FILE unset GNUSTEP_USER_DIR unset GNUSTEP_USER_DEFAULTS_DIR ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/gnustep-make.spec.in�������������������������������������������������������������0000664�0001750�0001750�00000005364�11540110046�017615� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # This file is to be manually edited. The current version is very # old. You probably want to install into the Linux FHS, which # this doesn't do. # # This package is not relocatable # %define gs_version @GNUSTEP_MAKE_VERSION@ %define gs_name gnustep-make %define gs_prefix /usr/GNUstep %define gs_libcombo gnu-gnu-gnu # Name: %{gs_name} Version: %{gs_version} Release: 1 Source: ftp://ftp.gnustep.org/pub/gnustep/core/%{gs_name}-%{gs_version}.tar.gz License: GPL Group: System Environment/Base Summary: GNUstep Makefile package Packager: GNUstep Development <bug-gnustep@gnu.org> Vendor: The GNUstep Project URL: http://www.gnustep.org/ BuildRoot: /var/tmp/build-%{gs_name} # %description This package contains the basic scripts, makefiles and directory layout needed to run and compile any GNUstep software. This package was configured for library combo %{gs_libcombo} using the standard GNUstep filesystem layout based on %{gs_prefix}. %prep %setup -n %{gs_name}-%{gs_version} %build CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{gs_prefix} --with-library-combo=%{gs_libcombo} --with-layout=gnustep make %install make install DESTDIR=${RPM_BUILD_ROOT} %ifos Linux mkdir -p ${RPM_BUILD_ROOT}/etc/profile.d # Create profile files echo "#!/bin/sh" > mygnustep.sh echo ". %{gs_prefix}/System/Library/Makefiles/GNUstep.sh" >> mygnustep.sh #echo "#!/bin/csh" > mygnustep.csh #echo "source %{gs_prefix}/System/Library/Makefiles/GNUstep.csh" >> mygnustep.csh chmod 755 mygnustep.* mv mygnustep.sh $RPM_BUILD_ROOT/etc/profile.d/GNUstep.sh #mv mygnustep.csh $RPM_BUILD_ROOT/etc/profile.d/GNUstep.csh %endif # Linux %clean rm -rf $RPM_BUILD_ROOT %files %defattr (-, root, root) # Well - this is the simplest trick you could think of. We include in # the package everything which was installed inside /usr/GNUstep/ %{gs_prefix} # Also include the GNUstep config file /etc/GNUstep/GNUstep.conf # Add the profiles for linux as configuration files <FIXME gdomap etc> %ifos Linux %config /etc/profile.d/GNUstep.sh #%config /etc/profile.d/GNUstep.csh %endif # Linux %changelog * Thu Jul 19 2001 Adam Fedor <fedor@gnu.org> - Remove csh script * Thu Apr 12 2001 Adam Fedor <fedor@gnu.org> - Changed default combo to gnu-gnu-gnu * Mon Feb 19 2001 Nicola Pero <nicola@brainstorm.co.uk> - Updated for new special_prefix option * Wed Jan 17 2001 Nicola Pero <nicola@brainstorm.co.uk> - Updated; heavily simplified and mostly rewritten * Sat Sep 18 1999 Christopher Seawood <cls@seawood.org> - Version 0.6.0 - Added nodupsh patch * Sat Aug 07 1999 Christopher Seawood <cls@seawood.org> - Updated to cvs dawn_6 branch * Fri Jun 25 1999 Christopher Seawood <cls@seawood.org> - Split into separate rpm from gnustep-core - Build from cvs snapshot - Added services patch ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/tar-exclude-list�����������������������������������������������������������������0000664�0001750�0001750�00000000012�10377003773�017045� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������CVS *.svn ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/parallel-subdirectories.make�����������������������������������������������������0000664�0001750�0001750�00000002334�11335347545�021427� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # parallel-subdirectories.make # # Makefile rules to build a set of subdirectories in parallel. # # Copyright (C) 2010 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola.pero@meta-innovation.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # This header was introduced in gnustep-make 2.4.0. If you are using # gnustep-make before 2.4.0, there is no parallel subdirectories # support. You can use aggregate.make which is similar but does not # build in parallel. # prevent multiple inclusions ifeq ($(PARALLEL_SUBDIRECTORIES_MAKE_LOADED),) PARALLEL_SUBDIRECTORIES_MAKE_LOADED=yes ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/parallel-subdirectories.make endif endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/gswbundle.make�������������������������������������������������������������������0000664�0001750�0001750�00000001633�10711636501�016570� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # gswbundle.make # # Makefile rules to build GNUstep web bundles. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/gswbundle.make else ifeq ($(GNUSTEP_TYPE),gswbundle) include $(GNUSTEP_MAKEFILES)/Instance/gswbundle.make endif endif �����������������������������������������������������������������������������������������������������gnustep-make-2.7.0/resource-set.make����������������������������������������������������������������0000664�0001750�0001750�00000001644�10711636501�017220� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # resource-set.make # # Makefile rules to install resource files. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/resource-set.make else ifeq ($(GNUSTEP_TYPE),resource_set) include $(GNUSTEP_MAKEFILES)/Instance/resource-set.make endif endif ��������������������������������������������������������������������������������������������gnustep-make-2.7.0/vendor.sh������������������������������������������������������������������������0000775�0001750�0001750�00000001440�10711636501�015567� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # # vendor.sh # # Print out the VENDOR from a canonical name. # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. echo $1 | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/' ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/fixpath.sh.in��������������������������������������������������������������������0000775�0001750�0001750�00000004136�10711636501�016347� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # # @configure_input@ # # Script for converting between windows and unix-style paths. # # Copyright (C) 2001,2002 Free Software Foundation, Inc. # # Author: Stephen Brandon <stephen@brandonitconsulting.co.uk> # Modified by: Richard Frith-Macdonald <rfm@gnu.org> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # # Define CYGWIN to "yes" to force cygwin style path handling, or # to anything else for MINGW32/MSYS style path handling. # CYGWIN="@CYGWIN@" if [ ! $# -eq 2 ]; then quit="yes" fi test "$1" = '-u' || test "$1" = '-w' || quit="yes" if [ "$quit" = "yes" ]; then echo "Usage: $0 (-u)|(-w) filename" echo "Options:" echo " -u print Unix form of filename" echo " -w print Windows form of filename" exit 1 fi operation=$1 file=$2 if [ "$operation" = "-u" ]; then # # convert to Unix style file name # if [ "$CYGWIN" = "yes" ]; then # # drive:directory --> /cygdrive/drive/directory # echo $file | \ tr '\\' '/' | \ sed 's/^\([a-zA-Z]\):\(.*\)$/\/cygdrive\/\1\2/' else # # drive:directory --> /drive/directory # echo $file | \ tr '\\' '/' | \ sed 's/^\([a-zA-Z]\):\(.*\)$/\/\1\2/' | \ sed 's/\/\//\//' fi else # # convert to Windows style file name # if [ "$CYGWIN" = "yes" ]; then # # /cygdrive/drive/directory --> drive:directory # echo $file | \ sed 's/^\(\/cygdrive\)\?\/\([a-zA-Z]\)\(\/.*\)$/\2:\3/' | \ tr '/' '\\' else # # /drive/directory --> drive:directory # echo $file | \ sed 's/^\/\([a-zA-Z]\)\(\/.*\)$/\1:\2/' | \ tr '/' '\\' fi fi exit 0 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/clean_cpu.sh���������������������������������������������������������������������0000775�0001750�0001750�00000002017�10711636501�016224� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # clean_cpu.sh # # Clean up the target cpu name. # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. case "$1" in # Intel processors are made equivalent i[3456]86) echo ix86 exit 0 ;; # Make all alpha variants the same alpha*) echo alpha exit 0 ;; # Make all hppa variants the same hppa*) echo hppa exit 0 ;; *) echo $1 exit 0 ;; esac �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/target.make����������������������������������������������������������������������0000664�0001750�0001750�00000131277�13015145055�016073� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # target.make # # Determine target specific settings # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Ovidiu Predescu <ovidiu@net-community.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 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 # file is processed! # # Host and target specific settings # ifeq ($(findstring solaris, $(GNUSTEP_TARGET_OS)), solaris) X_INCLUDES := $(X_INCLUDES)/X11 endif # # Target specific libraries # TARGET_SYSTEM_LIBS = $(CONFIG_SYSTEM_LIBS) -lm # All code we build needs to be thread-safe nowadays INTERNAL_CFLAGS = -pthread INTERNAL_OBJCFLAGS = -pthread ifeq ($(findstring android, $(GNUSTEP_TARGET_OS)), android) INTERNAL_LDFLAGS = else INTERNAL_LDFLAGS = -pthread endif ifneq ("$(objc_threaded)","") AUXILIARY_OBJC_LIBS += $(objc_threaded) ifeq ($(shared), no) TARGET_SYSTEM_LIBS += $(objc_threaded) endif endif ifeq ($(findstring mingw32, $(GNUSTEP_TARGET_OS)), mingw32) 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 else ifeq ($(findstring mingw64, $(GNUSTEP_TARGET_OS)), mingw64) 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 solaris, $(GNUSTEP_TARGET_OS)), solaris) 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 endif # # Specific settings for building shared libraries, static libraries, # and bundles on various systems # # # For each target, a few target-specific variables need to be set. # # The first one is SHARED_LIB_LINK_CMD - which should be set to the # command(s) to use to link a shared library on that platform. Please # note that the variables (stuff like $(LD)) in it are not expanded # until SHARED_LIB_LINK_CMD is actually used (STATIC_LIB_LINK_CMD is # the equivalent variable, used for static libraries). # # SHARED_LIB_LINK_CMD will be used to link standard shared libraries, # and frameworks. It should use the following variables (which are set # by library.make or framework.make before executing # SHARED_LIB_LINK_CMD) to refer to what it needs to link (please note # that STATIC_LIB_LINK_CMD will also use these variables with similar # meanings; but not all of them, as noted): # # LIB_LINK_OBJ_DIR: where the newly created library should be. # Usually GNUSTEP_OBJ_DIR for libraries, and FRAMEWORK_LIBRARY_DIR_NAME # 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. 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' # (but might also be `libgnustep-base.so.1.0' if INTERFACE_VERSION # has been manually changed when using library.make). On many # platforms, it's appropriate/standard to also create this file as # a symlink to LIB_LINK_VERSION_FILE. If LIB_LINK_VERSION_FILE is # the same as LIB_LINK_SONAME_FILE, then the symlink should not be # created. # LIB_LINK_FILE: this is only used for shared libraries; it should # be created as a symlink to LIB_LINK_VERSION_FILE (or to # LIB_LINK_SONAME_FILE if it's created on that platform). # Typically `libgnustep-base.so'. # 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 # installation directory. It uses the same variables, except for # LIB_LINK_INSTALL_DIR which is the full final path to where the # library (and symlinks) is going to be installed. # # AFTER_INSTALL_STATIC_LIB_CMD is similar. # # For frameworks on unusual platforms, you might also need to set # EXTRACT_CLASS_NAMES_COMMAND. This should be a command which is # evaluated on $(object_file) and returns a list of classes # implemented in the object_file. Our default command is the # following (you can override it with another one in your target's # section if you need), which runs 'nm' on the object file, and # retrieve all symbols of the form __objc_class_name_NSObject which # are not 'U' (undefined) ... an __objc_class_name_NSObject is defined # in the module implementing the class, and referenced by all other # modules needing to use the class. So if we have an # __objc_class_name_XXX which is not 'U' (which would be a reference # to a class implemented elsewhere), it must be a class implemented in # this module. # # The 'sed' command parses a set of lines, and extracts lines starting # with __objc_class_name_XXXX Y, where XXXX is a string of characters # from A-Za-z0-9_. and Y is not 'U'. It then replaces the whole line # with XXXX, and prints the result. '-n' disables automatic printing # for portability, so we are sure we only print what we want on all # platforms. EXTRACT_CLASS_NAMES_COMMAND = $(NM) -Pg $$object_file | sed -n -e '/^__objc_class_name_[A-Za-z0-9_.]* [^U]/ {s/^__objc_class_name_\([A-Za-z0-9_.]*\) [^U].*/\1/p;}' # # This is the generic version - if the target is not in the following list, # this setup will be used. It the target does not override variables here # with its own version, these generic definitions will be used. # HAVE_SHARED_LIBS = no STATIC_LIB_LINK_CMD = \ $(AR) $(ARFLAGS) $(AROUT)$(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^;\ $(RANLIB) $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) AFTER_INSTALL_STATIC_LIB_CMD = \ (cd $(LIB_LINK_INSTALL_DIR); \ $(RANLIB) $(LIB_LINK_VERSION_FILE)) SHARED_LIB_LINK_CMD = SHARED_CFLAGS = -pthread SHARED_LIBEXT = AFTER_INSTALL_SHARED_LIB_CMD = \ (cd $(LIB_LINK_INSTALL_DIR); \ $(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); \ chown $(CHOWN_TO) $(LIB_LINK_FILE)) HAVE_BUNDLES = no BUNDLE_LINK_CMD = $(BUNDLE_LD) $(BUNDLE_LDFLAGS) $(ALL_LDFLAGS) \ -o $(LDOUT)$(BUNDLE_FILE) $(OBJ_FILES_TO_LINK) \ $(ALL_LIB_DIRS) $(BUNDLE_LIBS) #################################################### # # Start of system specific settings # #################################################### #################################################### # # MacOSX-Server 1.0 # ifeq ($(findstring rhapsody5, $(GNUSTEP_TARGET_OS)), rhapsody5) ifeq ($(OBJC_RUNTIME_LIB), apple) HAVE_BUNDLES = yes endif HAVE_SHARED_LIBS = yes SHARED_LIBEXT = .dylib ifeq ($(FOUNDATION_LIB), apple) # Use the NeXT compiler CC = cc OBJC_COMPILER = NeXT ifneq ($(arch),) ARCH_FLAGS = $(foreach a, $(arch), -arch $(a)) INTERNAL_OBJCFLAGS += $(ARCH_FLAGS) INTERNAL_CFLAGS += $(ARCH_FLAGS) INTERNAL_LDFLAGS += $(ARCH_FLAGS) endif endif ifneq ($(OBJC_COMPILER), NeXT) SHARED_LIB_LINK_CMD = \ $(LD) $(SHARED_LD_PREFLAGS) \ -dynamiclib $(ARCH_FLAGS) -dynamic \ -compatibility_version 1 -current_version 1 \ -install_name $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR)/$(LIB_LINK_FILE) \ $(ALL_LDFLAGS) -o $@ \ -framework Foundation \ -framework System \ $(INTERNAL_LIBRARIES_DEPEND_UPON) $(LIBRARIES_FOUNDATION_DEPEND_UPON) \ -lobjc -lgcc $^ $(SHARED_LD_POSTFLAGS) \ && (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 = \ $(LD) $(SHARED_LD_PREFLAGS) \ -dynamiclib $(ARCH_FLAGS) -dynamic \ -compatibility_version 1 -current_version 1 \ -read_only_relocs warning -undefined warning \ -install_name $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR)/$(LIB_LINK_FILE) \ $(ALL_LDFLAGS) -o $@ \ $(INTERNAL_LIBRARIES_DEPEND_UPON) $(LIBRARIES_FOUNDATION_DEPEND_UPON) \ -framework Foundation \ $^ $(SHARED_LD_POSTFLAGS) \ && (cd $(LIB_LINK_OBJ_DIR); $(RM_LN_S) $(LIB_LINK_FILE); \ $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) endif # OBJC_COMPILER OBJ_MERGE_CMD = \ $(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) -d $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; STATIC_LIB_LINK_CMD = \ /usr/bin/libtool $(STATIC_LD_PREFLAGS) -static $(ARCH_FLAGS) $(ALL_LDFLAGS) -o $@ $^ \ $(STATIC_LD_POSTFLAGS) # This doesn't work with 4.1, what about others? #ADDITIONAL_LDFLAGS += -Wl,-read_only_relocs,suppress AFTER_INSTALL_STATIC_LIB_CMD = SHARED_CFLAGS += -dynamic SHARED_LIBEXT = .dylib BUNDLE_LD = $(LD) BUNDLE_LDFLAGS += -bundle -undefined suppress $(ARCH_FLAGS) endif # # end MacOSX-Server 1.0 # #################################################### #################################################### # # MacOSX, darwin # ifeq ($(findstring darwin, $(GNUSTEP_TARGET_OS)), darwin) ifeq ($(OBJC_RUNTIME_LIB), apple) HAVE_BUNDLES = yes # Set flags to ignore the MacOSX headers ifneq ($(FOUNDATION_LIB), apple) INTERNAL_OBJCFLAGS += -no-cpp-precomp -nostdinc -I/usr/include endif endif HAVE_SHARED_LIBS = yes SHARED_LIBEXT = .dylib # The output of nm is slightly different on Darwin, it doesn't support -P EXTRACT_CLASS_NAMES_COMMAND = $(NM) -g $$object_file | sed -n -e '/[^U] ___objc_class_name_/ {s/[0-9a-f]* [^U] ___objc_class_name_//p;}' ifeq ($(FOUNDATION_LIB), apple) ifneq ($(arch),) ARCH_FLAGS = $(foreach a, $(arch), -arch $(a)) INTERNAL_OBJCFLAGS += $(ARCH_FLAGS) INTERNAL_CFLAGS += $(ARCH_FLAGS) INTERNAL_LDFLAGS += $(ARCH_FLAGS) endif endif # The developer should set this explicitly #DYLIB_COMPATIBILITY_VERSION = -compatibility_version $(VERSION) DYLIB_CURRENT_VERSION = -current_version $(VERSION) # Remove empty dirs from the compiler/linker flags (ie, remove -Idir and # -Ldir flags where dir is empty). REMOVE_EMPTY_DIRS = yes ifeq ($(FOUNDATION_LIB), apple) DYLIB_DEF_FRAMEWORKS += -framework Foundation endif DYLIB_EXTRA_FLAGS += -undefined dynamic_lookup # Useful optimization flag: -Wl,-single_module. This flag only # works starting with 10.3 and is the default since 10.5. ifeq ($(findstring darwin7, $(GNUSTEP_TARGET_OS)), darwin7) DYLIB_EXTRA_FLAGS += -Wl,-single_module endif ifeq ($(findstring darwin8, $(GNUSTEP_TARGET_OS)), darwin8) DYLIB_EXTRA_FLAGS += -Wl,-single_module endif ifeq ($(OBJC_RUNTIME_LIB), gnu) # GNU runtime # Make sure that the compiler includes the right Objective-C runtime headers # when compiling plain C source files. When compiling Objective-C source files # the necessary directory is implicitly added by the -fgnu-runtime option, but # this option is ignored when compiling plain C files. ifneq ($(strip $(CC_GNURUNTIME)),) INTERNAL_CFLAGS += -isystem $(CC_GNURUNTIME) endif SHARED_LD_PREFLAGS += -Wl,-noall_load -read_only_relocs warning $(CC_LDFLAGS) ifeq ($(findstring darwin8, $(GNUSTEP_TARGET_OS)), darwin8) BUNDLE_LIBS += -lSystemStubs endif SHARED_LIB_LINK_CMD = \ $(LD) \ $(SHARED_LD_PREFLAGS) \ $(ARCH_FLAGS) -dynamic -dynamiclib \ $(DYLIB_COMPATIBILITY_VERSION) \ $(DYLIB_CURRENT_VERSION) \ -install_name $(LIB_LINK_INSTALL_NAME) \ $(DYLIB_EXTRA_FLAGS) \ $(ALL_LDFLAGS) -o $@ \ $(DYLIB_DEF_FRAMEWORKS) \ $^ $(INTERNAL_LIBRARIES_DEPEND_UPON) $(LIBRARIES_FOUNDATION_DEPEND_UPON) \ $(SHARED_LD_POSTFLAGS) \ && (cd $(LIB_LINK_OBJ_DIR); \ $(RM_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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 = $(LD) BUNDLE_LDFLAGS += -fgnu-runtime -bundle BUNDLE_LDFLAGS += -undefined dynamic_lookup else # Apple runtime SHARED_LIB_LINK_CMD = \ $(LD) $(SHARED_LD_PREFLAGS) \ -dynamiclib $(ARCH_FLAGS) \ $(DYLIB_COMPATIBILITY_VERSION) \ $(DYLIB_CURRENT_VERSION) \ -install_name $(LIB_LINK_INSTALL_NAME) \ $(DYLIB_EXTRA_FLAGS) \ $(ALL_LDFLAGS) -o $@ \ $(INTERNAL_LIBRARIES_DEPEND_UPON) $(LIBRARIES_FOUNDATION_DEPEND_UPON) \ $^ $(SHARED_LD_POSTFLAGS) \ && (cd $(LIB_LINK_OBJ_DIR); \ $(RM_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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)) SHARED_CFLAGS += -dynamic BUNDLE_LD = $(LD) BUNDLE_LDFLAGS += -bundle -undefined error $(ARCH_FLAGS) endif # CC_TYPE AFTER_INSTALL_SHARED_LIB_CMD = \ (cd $(LIB_LINK_INSTALL_DIR); \ $(RM_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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) ) OBJ_MERGE_CMD = \ $(LD) -nostdlib -keep_private_externs $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; STATIC_LIB_LINK_CMD = \ /usr/bin/libtool $(STATIC_LD_PREFLAGS) -static $(ARCH_FLAGS) $(ALL_LDFLAGS) -o $@ $^ \ $(STATIC_LD_POSTFLAGS) AFTER_INSTALL_STATIC_LIB_CMD = \ (cd $(LIB_LINK_INSTALL_DIR); \ $(RANLIB) $(LIB_LINK_VERSION_FILE)) SHARED_CFLAGS += -fno-common endif # # end MacOSX, darwin # #################################################### #################################################### # # OpenStep 4.x # ifeq ($(GNUSTEP_TARGET_OS), nextstep4) ifeq ($(OBJC_RUNTIME_LIB), nx) HAVE_BUNDLES = yes OBJC_COMPILER = NeXT endif HAVE_SHARED_LIBS = yes ifeq ($(FOUNDATION_LIB), nx) # Use the NeXT compiler CC = cc ifneq ($(arch),) ARCH_FLAGS = $(foreach a, $(arch), -arch $(a)) INTERNAL_OBJCFLAGS += $(ARCH_FLAGS) INTERNAL_CFLAGS += $(ARCH_FLAGS) INTERNAL_LDFLAGS += $(ARCH_FLAGS) endif endif ifneq ($(OBJC_COMPILER), NeXT) SHARED_LIB_LINK_CMD = \ /bin/libtool $(SHARED_LD_PREFLAGS) \ -dynamic -read_only_relocs suppress $(ARCH_FLAGS) \ -install_name $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR)/$(LIB_LINK_FILE) \ $(ALL_LDFLAGS) -o $@ \ -framework System \ $(INTERNAL_LIBRARIES_DEPEND_UPON) $(LIBRARIES_FOUNDATION_DEPEND_UPON) \ -lobjc -lgcc $^ $(SHARED_LD_POSTFLAGS) \ && (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 = \ /bin/libtool $(SHARED_LD_PREFLAGS) \ -dynamic -read_only_relocs suppress $(ARCH_FLAGS) \ -install_name $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR)/$(LIB_LINK_FILE) \ $(ALL_LDFLAGS) $@ \ -framework System \ $(INTERNAL_LIBRARIES_DEPEND_UPON) \ $(LIBRARIES_FOUNDATION_DEPEND_UPON) $^ \ $(SHARED_LD_POSTFLAGS) \ && (cd $(LIB_LINK_OBJ_DIR); $(RM_LN_S) $(LIB_LINK_FILE); \ $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) endif STATIC_LIB_LINK_CMD = \ /bin/libtool $(STATIC_LD_PREFLAGS) -static $(ARCH_FLAGS) $(ALL_LDFLAGS) -o $@ $^ \ $(STATIC_LD_POSTFLAGS) # This doesn't work with 4.1, what about others? #ADDITIONAL_LDFLAGS += -Wl,-read_only_relocs,suppress AFTER_INSTALL_STATIC_LIB_CMD = SHARED_CFLAGS += -dynamic SHARED_LIBEXT = .a # TODO: this should this be BUNDLE_LD = $(LD), and BUNDLE_LDFLAGS should use -Wl,-r instead of -r. # Unfortunately I can't test this change. Can anyone confirm that all still works with this change ? BUNDLE_LD = ld BUNDLE_LDFLAGS += -r $(ARCH_FLAGS) endif # # end OpenStep 4.x # #################################################### #################################################### # # NEXTSTEP 3.x # ifeq ($(GNUSTEP_TARGET_OS), nextstep3) ifeq ($(OBJC_RUNTIME_LIB), nx) HAVE_BUNDLES = yes OBJC_COMPILER = NeXT endif HAVE_SHARED_LIBS = yes ifeq ($(FOUNDATION_LIB), nx) # Use the NeXT compiler CC = cc ifneq ($(arch),) ARCH_FLAGS = $(foreach a, $(arch), -arch $(a)) INTERNAL_OBJCFLAGS += $(ARCH_FLAGS) INTERNAL_CFLAGS += $(ARCH_FLAGS) INTERNAL_LDFLAGS += $(ARCH_FLAGS) endif endif ifneq ($(OBJC_COMPILER), NeXT) SHARED_LIB_LINK_CMD = \ /bin/libtool $(SHARED_LD_PREFLAGS) -dynamic -read_only_relocs suppress \ $(ARCH_FLAGS) $(ALL_LDFLAGS) -o $@ -framework System \ $(INTERNAL_LIBRARIES_DEPEND_UPON) -lobjc -lgcc -undefined warning $^ \ $(SHARED_LD_POSTFLAGS) \ && (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 = \ /bin/libtool $(SHARED_LD_PREFLAGS) \ -dynamic -read_only_relocs suppress $(ARCH_FLAGS) $(ALL_LDFLAGS) -o $@ \ -framework System \ $(INTERNAL_LIBRARIES_DEPEND_UPON) $^ \ $(SHARED_LD_POSTFLAGS) \ && (cd $(LIB_LINK_OBJ_DIR); $(RM_LN_S) $(LIB_LINK_FILE); \ $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) endif STATIC_LIB_LINK_CMD = \ /bin/libtool $(STATIC_LD_PREFLAGS) \ -static $(ARCH_FLAGS) $(ALL_LDFLAGS) -o $@ $^ $(STATIC_LD_POSTFLAGS) ADDITIONAL_LDFLAGS += -Wl,-read_only_relocs,suppress AFTER_INSTALL_STATIC_LIB_CMD = SHARED_CFLAGS += -dynamic SHARED_LIBEXT = .a # TODO: this should this be BUNDLE_LD = $(LD), and BUNDLE_LDFLAGS should use -Wl,-r instead of -r. # Unfortunately I can't test this change. Can anyone confirm that all still works with this change ? BUNDLE_LD = ld BUNDLE_LDFLAGS += -r $(ARCH_FLAGS) endif # # end NEXTSTEP 3.x # #################################################### #################################################### # # Linux ELF or GNU/Hurd # # The following ifeq matches both 'linux-gnu' (which is GNU/Linux ELF) # and 'gnu0.3' (I've been told GNUSTEP_TARGET_OS is 'gnu0.3' on # GNU/Hurd at the moment). We want the same code in both cases. ifeq ($(findstring gnu, $(GNUSTEP_TARGET_OS)), gnu) HAVE_SHARED_LIBS = yes SHARED_LIB_LINK_CMD = \ $(LD) $(SHARED_LD_PREFLAGS) -shared -Wl,-soname,$(LIB_LINK_SONAME_FILE) \ $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ \ $(INTERNAL_LIBRARIES_DEPEND_UPON) \ $(SHARED_LD_POSTFLAGS) \ && (cd $(LIB_LINK_OBJ_DIR); \ $(RM_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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_CHOWN = \ (cd $(LIB_LINK_INSTALL_DIR); \ chown $(CHOWN_TO) $(LIB_LINK_SONAME_FILE); \ chown $(CHOWN_TO) $(LIB_LINK_FILE)) OBJ_MERGE_CMD = \ $(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; SHARED_CFLAGS += -fPIC SHARED_LIBEXT = .so HAVE_BUNDLES = yes BUNDLE_LD = $(LD) BUNDLE_LDFLAGS += -shared ADDITIONAL_LDFLAGS += -rdynamic STATIC_LDFLAGS += -static endif # # end Linux ELF # #################################################### #################################################### # # FreeBSD a.out (2.2.x) # ifeq ($(findstring freebsdaout, $(GNUSTEP_TARGET_OS)), freebsdaout) freebsdaout = yes HAVE_SHARED_LIBS = no SHARED_LIB_LINK_CMD = \ $(LD) -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_LN_S) $(LIB_LINK_FILE); \ $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) SHARED_CFLAGS += -fPIC SHARED_LIBEXT = .so HAVE_BUNDLES = yes BUNDLE_LD = $(LD) BUNDLE_LDFLAGS += -shared ADDITIONAL_LDFLAGS += -rdynamic STATIC_LDFLAGS += -static endif # # end FreeBSD A.out # #################################################### #################################################### # # FreeBSD ELF # ifeq ($(findstring freebsd, $(GNUSTEP_TARGET_OS)), freebsd) ifneq ($(freebsdaout), yes) HAVE_SHARED_LIBS = yes SHARED_LIB_LINK_CMD = \ $(LD) -shared -Wl,-soname,$(LIB_LINK_SONAME_FILE) \ $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ \ $(INTERNAL_LIBRARIES_DEPEND_UPON) \ $(SHARED_LD_POSTFLAGS) \ && (cd $(LIB_LINK_OBJ_DIR); \ $(RM_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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_CHOWN = \ (cd $(LIB_LINK_INSTALL_DIR); \ chown $(CHOWN_TO) $(LIB_LINK_SONAME_FILE); \ chown $(CHOWN_TO) $(LIB_LINK_FILE)) OBJ_MERGE_CMD = \ $(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; SHARED_CFLAGS += -fPIC SHARED_LIBEXT = .so HAVE_BUNDLES = yes BUNDLE_LD = $(LD) BUNDLE_LDFLAGS += -shared ADDITIONAL_LDFLAGS += -rdynamic STATIC_LDFLAGS += -static endif endif # # end FreeBSD # #################################################### #################################################### # # NetBSD (ELF) # ifeq ($(findstring netbsd, $(GNUSTEP_TARGET_OS)), netbsd) HAVE_SHARED_LIBS = yes SHARED_LD_POSTFLAGS = -Wl,-R/usr/pkg/lib -L/usr/pkg/lib SHARED_LIB_LINK_CMD = \ $(LD) -shared -Wl,-soname,$(LIB_LINK_VERSION_FILE) \ $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) \ $^ $(INTERNAL_LIBRARIES_DEPEND_UPON) \ $(SHARED_LD_POSTFLAGS) \ && (cd $(LIB_LINK_OBJ_DIR); \ $(RM_LN_S) $(LIB_LINK_FILE); \ $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) OBJ_MERGE_CMD = \ $(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; SHARED_CFLAGS += -fPIC SHARED_LIBEXT = .so HAVE_BUNDLES = yes BUNDLE_LD = $(LD) BUNDLE_LDFLAGS += -shared ADDITIONAL_LDFLAGS += -rdynamic -Wl,-R/usr/pkg/lib -L/usr/pkg/lib -Wl,-R/usr/X11R6/lib -L/usr/X11R6/lib ADDITIONAL_INCLUDE_DIRS += -I/usr/pkg/include STATIC_LDFLAGS += -static endif # # end NetBSD # #################################################### #################################################### # # DragonFly # ifeq ($(findstring dragonfly, $(GNUSTEP_TARGET_OS)), dragonfly) HAVE_SHARED_LIBS = yes SHARED_LD_POSTFLAGS = -Wl,-R/usr/pkg/lib -L/usr/pkg/lib SHARED_LIB_LINK_CMD = \ $(LD) -shared -Wl,-soname,$(LIB_LINK_VERSION_FILE) \ $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) \ $^ $(INTERNAL_LIBRARIES_DEPEND_UPON) \ $(SHARED_LD_POSTFLAGS) \ && (cd $(LIB_LINK_OBJ_DIR); \ $(RM_LN_S) $(LIB_LINK_FILE); \ $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) OBJ_MERGE_CMD = \ $(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; SHARED_CFLAGS += -fPIC SHARED_LIBEXT = .so HAVE_BUNDLES = yes BUNDLE_LD = $(LD) BUNDLE_LDFLAGS += -shared ADDITIONAL_LDFLAGS += -rdynamic -Wl,-R/usr/pkg/lib -L/usr/pkg/lib -Wl,-R/usr/X11R6/lib -L/usr/X11R6/lib ADDITIONAL_INCLUDE_DIRS += -I/usr/pkg/include STATIC_LDFLAGS += -static endif # # end DragonFly # #################################################### #################################################### # # OpenBSD 3.x (though set for 3.3) # ifeq ($(findstring openbsd, $(GNUSTEP_TARGET_OS)), openbsd) HAVE_SHARED_LIBS = yes SHARED_LIB_LINK_CMD = \ $(LD) -shared -Wl,-soname,$(LIB_LINK_SONAME_FILE) \ $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ \ $(INTERNAL_LIBRARIES_DEPEND_UPON) \ $(SHARED_LD_POSTFLAGS) \ && (cd $(LIB_LINK_OBJ_DIR); \ $(RM_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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); \ ) OBJ_MERGE_CMD = \ $(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; SHARED_CFLAGS += -fPIC SHARED_LIBEXT = .so HAVE_BUNDLES = yes BUNDLE_LD = $(LD) BUNDLE_LDFLAGS += -shared -fPIC ADDITIONAL_LDFLAGS += -Wl,-E STATIC_LDFLAGS += -static # nm on OpenBSD is rather like on Darwin EXTRACT_CLASS_NAMES_COMMAND = $(NM) -g $$object_file | sed -n -e '/[^U] __objc_class_name_/ {s/[0-9a-f]* [^U] __objc_class_name_//p;}' endif # # end OpenBSD 3.x # #################################################### #################################################### # # OSF # ifeq ($(findstring osf, $(GNUSTEP_TARGET_OS)), osf) HAVE_SHARED_LIBS = yes SHARED_LIB_LINK_CMD = \ $(LD) -shared -Wl,-soname,$(LIB_LINK_VERSION_FILE) \ $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ \ && (cd $(LIB_LINK_OBJ_DIR); \ $(RM_LN_S) $(LIB_LINK_FILE); \ $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) OBJ_MERGE_CMD = \ $(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; SHARED_CFLAGS += -fPIC SHARED_LIBEXT = .so HAVE_BUNDLES = yes BUNDLE_LD = $(LD) BUNDLE_LDFLAGS += -shared ADDITIONAL_LDFLAGS += -rdynamic STATIC_LDFLAGS += -static # Newer gcc's don't define this in Objective-C programs: AUXILIARY_CPPFLAGS += -D__LANGUAGES_C__ endif # # end OSF # #################################################### #################################################### # # IRIX # ifeq ($(findstring irix, $(GNUSTEP_TARGET_OS)), irix) HAVE_SHARED_LIBS = yes SHARED_LIB_LINK_CMD = \ $(LD) $(SHARED_LD_PREFLAGS) -shared -Wl,-soname,$(LIB_LINK_SONAME_FILE) \ $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ \ -Wl,-rpath,$(LIB_LINK_INSTALL_DIR) \ $(INTERNAL_LIBRARIES_DEPEND_UPON) \ $(SHARED_LD_POSTFLAGS) \ && (cd $(LIB_LINK_OBJ_DIR); \ $(RM_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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_CHOWN = \ (cd $(LIB_LINK_INSTALL_DIR); \ chown $(CHOWN_TO) $(LIB_LINK_SONAME_FILE); \ chown $(CHOWN_TO) $(LIB_LINK_FILE)) SHARED_CFLAGS += -fPIC SHARED_LIBEXT = .so OBJ_MERGE_CMD = \ $(LD) $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; ADDITIONAL_LDFLAGS += STATIC_LDFLAGS += HAVE_BUNDLES = yes BUNDLE_LD = $(LD) BUNDLE_LDFLAGS += -shared endif # end IRIX # #################################################### #################################################### # # Mingw32 # ifeq ($(findstring mingw32, $(GNUSTEP_TARGET_OS)), mingw32) shared = yes HAVE_SHARED_LIBS = yes # There's some sort of gcc bug that -pthread doesn't work on windows # so we need to reset the variables which use it. INTERNAL_CFLAGS = INTERNAL_OBJCFLAGS = INTERNAL_LDFLAGS = SHARED_CFLAGS = # This command links the library, generates automatically the list of # symbols to export, creates the DLL (eg, obj/gnustep-base-1_13.dll) # and the import library (eg, obj/libgnustep-base.dll.a). We pass # --export-all-symbols to make sure it is always used. Otherwise, # while it is the default, it might silently get disabled if a symbol # gets manually exported (eg, because a header of a library we include # exports a symbol by mistake). ifneq ($(CC),clang) SHARED_LIB_LINK_CMD = \ $(LD) $(SHARED_LD_PREFLAGS) -shared \ -Wl,--enable-auto-image-base \ -Wl,--export-all-symbols \ -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) else SHARED_LIB_LINK_CMD = \ $(LD) $(SHARED_LD_PREFLAGS) -shared \ -Wl,--enable-auto-image-base \ -Wl,--export-all-symbols \ -Wl,--out-implib,$(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) \ -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_DLL_FILE) \ -Wl,--whole-archive $^ $(ALL_LDFLAGS) -Wl,--no-whole-archive \ $(INTERNAL_LIBRARIES_DEPEND_UPON) \ $(SHARED_LD_POSTFLAGS) endif AFTER_INSTALL_SHARED_LIB_CMD = AFTER_INSTALL_SHARED_LIB_CHOWN = BUILD_DLL = yes 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 #SHARED_CFLAGS += ifneq ($(CC),clang) OBJ_MERGE_CMD = \ $(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; else OBJ_MERGE_CMD = \ ar cr $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; endif HAVE_BUNDLES = yes BUNDLE_LD = $(LD) ifeq ($(CC),clang) BUNDLE_LDFLAGS += -shared -Wl,--export-all-symbols \ -Wl,--enable-auto-import \ -Wl,--enable-auto-image-base \ -Wl,--whole-archive BUNDLE_LIBFLAGS += -Wl,--no-whole-archive BUNDLE_LINK_CMD = \ $(BUNDLE_LD) $(BUNDLE_LDFLAGS) $(ALL_LDFLAGS) \ -o $(LDOUT)$(BUNDLE_FILE) \ $(OBJ_FILES_TO_LINK) \ $(BUNDLE_LIBFLAGS) $(ALL_LIB_DIRS) $(BUNDLE_LIBS) else BUNDLE_LDFLAGS += -shared -Wl,--enable-auto-image-base endif ADDITIONAL_LDFLAGS += -Wl,--enable-auto-import ADDITIONAL_FLAGS += -fno-omit-frame-pointer # 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-z0-9_.]* [^U]/ {s/^___objc_class_name_\([A-Za-z0-9_.]*\) [^U].*/\1/p;}' endif # end Mingw32 # #################################################### #################################################### # # Mingw64 # ifeq ($(findstring mingw64, $(GNUSTEP_TARGET_OS)), mingw64) shared = yes HAVE_SHARED_LIBS = yes # There's some sort of gcc bug that -pthread doesn't work on windows # so we need to reset the variables which use it. INTERNAL_CFLAGS = INTERNAL_OBJCFLAGS = INTERNAL_LDFLAGS = SHARED_CFLAGS = # This command links the library, generates automatically the list of # symbols to export, creates the DLL (eg, obj/gnustep-base-1_13.dll) # and the import library (eg, obj/libgnustep-base.dll.a). We pass # --export-all-symbols to make sure it is always used. Otherwise, # while it is the default, it might silently get disabled if a symbol # gets manually exported (eg, because a header of a library we include # exports a symbol by mistake). ifneq ($(CC),clang) SHARED_LIB_LINK_CMD = \ $(LD) $(SHARED_LD_PREFLAGS) -shared \ -Wl,--enable-auto-image-base \ -Wl,--export-all-symbols \ -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) else SHARED_LIB_LINK_CMD = \ $(LD) $(SHARED_LD_PREFLAGS) -shared \ -Wl,--enable-auto-image-base \ -Wl,--export-all-symbols \ -Wl,--out-implib,$(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) \ -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_DLL_FILE) \ -Wl,--whole-archive $^ $(ALL_LDFLAGS) -Wl,--no-whole-archive \ $(INTERNAL_LIBRARIES_DEPEND_UPON) \ $(SHARED_LD_POSTFLAGS) endif AFTER_INSTALL_SHARED_LIB_CMD = AFTER_INSTALL_SHARED_LIB_CHOWN = BUILD_DLL = yes 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 #SHARED_CFLAGS += ifneq ($(CC),clang) OBJ_MERGE_CMD = \ $(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; else OBJ_MERGE_CMD = \ ar cr $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; endif HAVE_BUNDLES = yes BUNDLE_LD = $(LD) ifeq ($(CC),clang) BUNDLE_LDFLAGS += -shared -Wl,--export-all-symbols \ -Wl,--enable-auto-import \ -Wl,--enable-auto-image-base \ -Wl,--whole-archive BUNDLE_LIBFLAGS += -Wl,--no-whole-archive BUNDLE_LINK_CMD = \ $(BUNDLE_LD) $(BUNDLE_LDFLAGS) $(ALL_LDFLAGS) \ -o $(LDOUT)$(BUNDLE_FILE) \ $(OBJ_FILES_TO_LINK) \ $(BUNDLE_LIBFLAGS) $(ALL_LIB_DIRS) $(BUNDLE_LIBS) else BUNDLE_LDFLAGS += -shared -Wl,--enable-auto-image-base endif ADDITIONAL_LDFLAGS += -Wl,--enable-auto-import ADDITIONAL_FLAGS += -fno-omit-frame-pointer # On Mingw64, it looks like the class name symbols start with '__' rather # than '___' like Mingw32 EXTRACT_CLASS_NAMES_COMMAND = $(NM) -Pg $$object_file | sed -n -e '/^__objc_class_name_[A-Za-z0-9_.]* [^U]/ {s/^__objc_class_name_\([A-Za-z0-9_.]*\) [^U].*/\1/p;}' endif # end Mingw64 # #################################################### #################################################### # # Cygwin # ifeq ($(findstring cygwin, $(GNUSTEP_TARGET_OS)), cygwin) shared = yes HAVE_SHARED_LIBS = yes # There's some sort of gcc bug that -pthread doesn't work on windows # so we need to reset the variables which use it. INTERNAL_CFLAGS = INTERNAL_OBJCFLAGS = INTERNAL_LDFLAGS = SHARED_CFLAGS = # 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 SHARED_LIB_LINK_CMD = \ $(LD) $(SHARED_LD_PREFLAGS) -shared -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_DLL_FILE) \ -Wl,--enable-auto-image-base \ -Wl,--out-implib=$(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) \ -Wl,--export-all-symbols \ -Wl,--enable-auto-import \ -Wl,--whole-archive $(OBJ_FILES_TO_LINK) $(ALL_LDFLAGS) \ -Wl,--no-whole-archive $(INTERNAL_LIBRARIES_DEPEND_UPON) $(TARGET_SYSTEM_LIBS)\ $(SHARED_LD_POSTFLAGS) AFTER_INSTALL_SHARED_LIB_CMD = AFTER_INSTALL_SHARED_LIB_CHOWN = SHARED_LIBEXT = .dll.a BUILD_DLL = yes CYGWIN_DLL_SUPPORT = yes #SHARED_LIBEXT = .a DLL_PREFIX = cyg DLL_LIBEXT = .dll CYGWIN_LD_FLAGS = -Wl,--export-all-symbols -Wl,--enable-auto-import #SHARED_CFLAGS += OBJ_MERGE_CMD = \ $(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) $(CYGWIN_LD_FLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; HAVE_BUNDLES = yes BUNDLE_LD = $(LD) BUNDLE_LDFLAGS += -shared -Wl,--export-all-symbols \ -Wl,--enable-auto-import \ -Wl,--enable-auto-image-base \ -Wl,--whole-archive BUNDLE_LIBFLAGS += -Wl,--no-whole-archive BUNDLE_LINK_CMD = \ $(BUNDLE_LD) $(BUNDLE_LDFLAGS) $(ALL_LDFLAGS) \ -o $(LDOUT)$(BUNDLE_FILE) \ $(OBJ_FILES_TO_LINK) \ $(BUNDLE_LIBFLAGS) $(ALL_LIB_DIRS) $(BUNDLE_LIBS) endif # end Cygwin # #################################################### #################################################### # # Solaris # ifeq ($(findstring solaris, $(GNUSTEP_TARGET_OS)), solaris) ifeq ($(SOLARIS_SHARED), yes) GCC_LINK_FLAG=-shared else GCC_LINK_FLAG=-G endif HAVE_SHARED_LIBS = yes SHARED_LIB_LINK_CMD = \ $(LD) $(SHARED_LD_PREFLAGS) $(GCC_LINK_FLAG) \ -Wl,-h,$(LIB_LINK_SONAME_FILE) \ $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ \ $(INTERNAL_LIBRARIES_DEPEND_UPON) \ $(SHARED_LD_POSTFLAGS) \ && (cd $(LIB_LINK_OBJ_DIR); \ $(RM_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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_CHOWN = \ (cd $(LIB_LINK_INSTALL_DIR); \ chown $(CHOWN_TO) $(LIB_LINK_SONAME_FILE); \ chown $(CHOWN_TO) $(LIB_LINK_FILE)) OBJ_MERGE_CMD = \ $(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; SHARED_CFLAGS += -fpic -fPIC -std=gnu99 SHARED_LIBEXT = .so HAVE_BUNDLES = yes BUNDLE_LD = $(LD) BUNDLE_LDFLAGS = -shared -mimpure-text #BUNDLE_LDFLAGS = -nodefaultlibs -Xlinker -Wl,-r endif # end Solaris # #################################################### #################################################### # # Unixware # ifeq ($(findstring sysv4.2, $(GNUSTEP_TARGET_OS)), sysv4.2) HAVE_SHARED_LIBS = yes SHARED_LIB_LINK_CMD = \ $(LD) $(SHARED_LD_PREFLAGS) -shared $(ALL_LDFLAGS) -o $(LIB_LINK_VERSION_FILE) $^ \ $(SHARED_LD_POSTFLAGS);\ && (mv $(LIB_LINK_VERSION_FILE) $(LIB_LINK_OBJ_DIR);\ cd $(LIB_LINK_OBJ_DIR); \ $(RM_LN_S) $(LIB_LINK_FILE); \ $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) SHARED_CFLAGS += -fpic -fPIC SHARED_LIBEXT = .so HAVE_BUNDLES = yes BUNDLE_LD = $(LD) #BUNDLE_LDFLAGS += -shared -mimpure-text BUNDLE_LDFLAGS += -nodefaultlibs -Xlinker -Wl,-r endif # end Unixware # #################################################### #################################################### # # HP-UX # ifeq ($(findstring hpux, $(GNUSTEP_TARGET_OS)), hpux) HAVE_SHARED_LIBS = yes SHARED_LIB_LINK_CMD = \ $(LD) $(SHARED_LD_PREFLAGS) \ -v $(SHARED_CFLAGS) -shared \ $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ \ $(SHARED_LD_POSTFLAGS) ;\ && (cd $(LIB_LINK_OBJ_DIR); \ $(RM_LN_S) $(LIB_LINK_FILE); \ $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) OBJ_MERGE_CMD = \ $(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; ifeq ($(CC), cc) SHARED_CFLAGS += +z else SHARED_CFLAGS += -fPIC endif ifeq ($(GNUSTEP_HOST_CPU), ia64) SHARED_LIBEXT = .so else SHARED_LIBEXT = .sl endif HAVE_BUNDLES = yes BUNDLE_LD = $(LD) BUNDLE_LDFLAGS += -nodefaultlibs -Xlinker -Wl,-r ADDITIONAL_LDFLAGS += -Xlinker +s STATIC_LDFLAGS += -static endif # end HP-UX # #################################################### #################################################### # # QNX Neutrino ELF # # QNX does pretty straight-forward binutils based linking. ifeq ($(findstring nto-qnx, $(GNUSTEP_TARGET_OS)), nto-qnx) HAVE_SHARED_LIBS = yes SHARED_LIB_LINK_CMD = \ $(LD) $(SHARED_LD_PREFLAGS) -shared -Wl,-soname,$(LIB_LINK_SONAME_FILE) \ $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ \ $(INTERNAL_LIBRARIES_DEPEND_UPON) \ $(SHARED_LD_POSTFLAGS) \ && (cd $(LIB_LINK_OBJ_DIR); \ $(RM_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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_CHOWN = \ (cd $(LIB_LINK_INSTALL_DIR); \ chown $(CHOWN_TO) $(LIB_LINK_SONAME_FILE); \ chown $(CHOWN_TO) $(LIB_LINK_FILE)) OBJ_MERGE_CMD = \ $(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; SHARED_CFLAGS += -fPIC SHARED_LIBEXT = .so HAVE_BUNDLES = yes BUNDLE_LD = $(LD) BUNDLE_LDFLAGS += -shared ADDITIONAL_LDFLAGS += -rdynamic STATIC_LDFLAGS += -static endif # # end QNX Neutrino ELF # #################################################### #################################################### # # Linux Android # ifeq ($(findstring android, $(GNUSTEP_TARGET_OS)), android) HAVE_SHARED_LIBS = yes SHARED_LIB_LINK_CMD = \ $(LD) $(SHARED_LD_PREFLAGS) -shared -Wl,-soname,$(LIBRARY_FILE) \ $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ \ $(INTERNAL_LIBRARIES_DEPEND_UPON) \ $(SHARED_LD_POSTFLAGS) \ && (cd $(LIB_LINK_OBJ_DIR); \ $(RM_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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_LN_S) $(LIB_LINK_FILE); \ if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ $(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_CHOWN = \ (cd $(LIB_LINK_INSTALL_DIR); \ chown $(CHOWN_TO) $(LIB_LINK_SONAME_FILE); \ chown $(CHOWN_TO) $(LIB_LINK_FILE)) OBJ_MERGE_CMD = \ $(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; SHARED_CFLAGS += -fPIC SHARED_LIBEXT = .so HAVE_BUNDLES = yes BUNDLE_LD = $(LD) BUNDLE_LDFLAGS += -shared ADDITIONAL_LDFLAGS += -rdynamic STATIC_LDFLAGS += -static endif # # end Linux Android # #################################################### ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/test-tool.make�������������������������������������������������������������������0000664�0001750�0001750�00000001640�10711636501�016526� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # test-tool.make # # Makefile rules to build GNUstep-based test tools. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/test-tool.make else ifeq ($(GNUSTEP_TYPE),test_tool) include $(GNUSTEP_MAKEFILES)/Instance/test-tool.make endif endif ������������������������������������������������������������������������������������������������gnustep-make-2.7.0/bake_debian_files.sh�������������������������������������������������������������0000775�0001750�0001750�00000030172�12621742717�017675� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/bash # Copyright (C) 2014 Free Software Foundation, Inc. # # Author: Ivan Vucica <ivan@vucica.net> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. if [ -z "${1}" ] ; then echo "usage: "$(basename "${0}")" [source_code_directory]" exit 1 fi cd ${1} && destination="$(pwd)" && cd - destination="${destination}"/debian if mkdir -p "${destination}" ; then : else exit 1 ; fi rm "${destination}"/control 2> /dev/null rm "${destination}"/changelog 2> /dev/null deb_lowercase_package_name=$(echo ${PACKAGE_NAME} | sed -e 's/\(.*\)/\L\1/') if [ ! -z "${SVNPREFIX}" ] ; then svn_path="${SVNPREFIX}" fi if [ ! -z "${SVN_BASE_URL}" ] && [ ! -z "${SVN_MODULE_NAME}" ] ; then svn_path=${SVN_BASE_URL}/${SVN_MODULE_NAME} fi default_distribution="unstable" distrib_id="$(grep DISTRIB_ID /etc/lsb-release | sed 's/DISTRIB_ID=\(.*\)$/\1/')" if [[ "${distrib_id}" == "Ubuntu" ]] ; then default_distribution=$(grep DISTRIB_CODENAME /etc/lsb-release | sed 's/DISTRIB_CODENAME=//') fi if true ; then # Forcing 'any' as we'd like Launchpad to build packages for all architectures. # DEB_ARCHITECTURE can still be overridden. target_arch=any else target_arch=${GNUSTEP_TARGET_CPU:-any} if [[ "${target_arch}" == "i686" ]] ; then target_arch=i386 elif [[ "${target_arch}" == "x86_64" ]] ; then target_arch=amd64 fi fi PACKAGE_VERSION=${PACKAGE_VERSION:-${VERSION}} DEB_SOURCE=${DEB_SOURCE:-${deb_lowercase_package_name}} DEB_PACKAGE=${DEB_PACKAGE:-${deb_lowercase_package_name}} DEB_ARCHITECTURE=${DEB_ARCHITECTURE:-${target_arch}} #$(shell (/bin/bash -c "$(CC) -dumpmachine | sed -e 's,\\([^-]*\\).*,\\1,g'"))} DEB_SECTION=${DEB_SECTION:-gnustep} DEB_PRIORITY=${DEB_PRIORITY:-optional} DEB_VCS_SVN=${DEB_VCS_SVN:-${svn_path}} DEB_VERSION=${DEB_VERSION:-${TARBALL_VERSION:-${PACKAGE_VERSION}}} if [ -z "${DEB_BUILD_DEPENDS}" ] ; then DEB_BUILD_DEPENDS="debhelper (>= 9), cdbs" else DEB_BUILD_DEPENDS="${DEB_BUILD_DEPENDS}, debhelper (>= 9), cdbs" fi if [ ! -z "${DEB_DEPENDS}" ]; then DEB_DEPENDS=", ${DEB_DEPENDS}" fi DEB_DEPENDS='${shlibs:Depends}, ${misc:Depends}'" ${DEB_DEPENDS}" DEB_DISTRIBUTION=${DEB_DISTRIBUTION:-${default_distribution}} # DEB_VERSION_SUFFIX intentionally unset. # Attempt to extract information from a .spec or a .spec.in file. if which python > /dev/null ; then FN=$(python - << _EOF import tempfile import sys def process_specfile(specfilename): description_mode=False with open(specfilename) as specfile: with tempfile.NamedTemporaryFile(delete=False) as tf: print tf.name vars={} for line in specfile.readlines(): line=line.rstrip() for var in vars: line=line.replace('%{' + var + '}', vars[var]) if description_mode: if len(line.lstrip()) > 0 and line.lstrip()[0] == '#': continue if len(line.lstrip()) > 0 and line.lstrip()[0] == '%': description_mode=False continue tf.write("RPM_DESCRIPTION=\"\${RPM_DESCRIPTION}%s\\n\"\n" % line.replace('\\'', '\\\\\\'').replace('\\"', '\\\\\\"').replace('(', '\\(').replace(')', '\\)')) continue if not len(line): continue components=line.split(':') if len(components)>=2: key=components[0] value=':'.join(components[1:]).lstrip() if key=="Name": tf.write("DEB_PACKAGE=\${DEB_PACKAGE:-%s}\n" % value) tf.write("DEB_SOURCE=\${DEB_SOURCE:-%s}\n" % value) elif key=="Release": tf.write("DEB_VERSION_SUFFIX=\${DEB_VERSION_SUFFIX:-%s}\n" % value) elif key=="Source": # Source URL is not mappable to anything useful. # Possibly only includable in README.Debian. pass elif key=="License": tf.write("DEB_LICENSE=\${DEB_LICENSE:-%s}\n" % value) elif key=="Copyright": # Seems to do the same as License? pass elif key=="Group": # Ignore; not easily mappable, plus Debian has separate # 'gnustep' section. pass elif key=="Summary": # First line of 'Description' field tf.write("RPM_DESCRIPTION=\"%s\n\"\n" % value) elif key=="Packager": tf.write("DEB_MAINTAINER=\${DEB_MAINTAINER:-\"%s\"}\n" % value) elif key=="Vendor": # Ignore; not useful anywhere in .deb pass elif key=="URL": tf.write("DEB_HOMEPAGE=\${DEB_HOMEPAGE:-%s}\n" % value) elif key=="Requires": # We support only comma separated dependencies (to simplify version handling). # Also, version mapping is very trivial. rpmdeps = value.split(',') debdeps = [] for rpmdep in rpmdeps: rpmdepcomponents = rpmdep.split(' ') debdep = rpmdepcomponents[0] if len(rpmdepcomponents) > 1: debdep += ' (%s)' % ' '.join(rpmdepcomponents[1:]) debdeps.append(debdep) tf.write("if [ -z \\"\${DEB_DEPENDS}\\" ] ; then\n") tf.write(" DEB_DEPENDS=\"%s\"\n" % ', '.join(debdeps)) tf.write("else\n") tf.write(" DEB_DEPENDS=\"\${DEB_DEPENDS}, %s\"\n" % ', '.join(debdeps)) tf.write("fi\n") elif key=="Provides": tf.write("if [ -z \\"\${DEB_PROVIDES}\\" ] ; then\n") tf.write(" DEB_PROVIDES=\"%s\"\n" % value) tf.write("else\n") tf.write(" DEB_PROVIDES=\"\${DEB_PROVIDES}, %s\"\n" % value) elif key=="Version": tf.write("DEB_VERSION=\${DEB_VERSION:-%s}\n" % value) else: if line == "%description": description_mode = True elif line.startswith('%define'): segs=line[len('%define')+1:].lstrip().replace('\\t', ' ').split(' ') segs=[seg.rstrip().lstrip() for seg in segs] vars[segs[0]] = ' '.join(segs[1:]) try: process_specfile('${DEB_PACKAGE}.spec') except: try: process_specfile('${DEB_PACKAGE}.spec.in') except Exception as e: sys.stderr.write('could not process either ${DEB_PACKAGE}.spec or ${DEB_PACKAGE}.spec.in\n') raise _EOF ) if [ ! -z "${FN}" ] ; then . $FN DEB_DESCRIPTION="${DEB_DESCRIPTION:-${RPM_DESCRIPTION}}" fi fi DEB_DESCRIPTION="${DEB_DESCRIPTION:-$(printf "Debian packaging for GNUstep based software ${PACKAGE_NAME}.\nThis package was built using gnustep-make.\n")}" # Check that maintainer and package builder are set. if [ -z "${DEB_MAINTAINER}" ] ; then echo "error: You must set DEB_MAINTAINER in GNUmakefile, in .spec file, or on command line." exit 1 fi if [ -z "${DEB_PACKAGE_BUILDER}" ] ; then echo "error: You must set DEB_PACKAGE_BUILDER in GNUmakefile or on command line." echo "(It's recommended you set it on the command line, so other people" echo "don't accidentally claim you built their package.)" exit 1 fi # Check some other fields if [ -z "${DEB_PACKAGE}" ] ; then echo "error: Package name was not properly set in GNUmakefile." exit 1 fi if [ -z "${DEB_VERSION}" ] ; then echo "error: Package version was not properly set in GNUmakefile." exit 1 fi if [ ! -z "${DEB_VERSION_SUFFIX}" ] ; then DEB_VERSION=${DEB_VERSION}-${DEB_VERSION_SUFFIX} #ln -s ${destination}/../../${PACKAGE_NAME}-${VERSION}.orig.tar.gz ${destination}/../../${PACKAGE_NAME}-${DEB_VERSION}.orig.tar.gz fi echo ${destination} # For documentation, see: # https://www.debian.org/doc/debian-policy/ch-controlfields.html echo "Source: " ${DEB_SOURCE} >> "${destination}"/control echo "Maintainer:" ${DEB_MAINTAINER} >> "${destination}"/control echo "Section:" ${DEB_SECTION} >> "${destination}"/control echo "Priority:" ${DEB_PRIORITY} >> "${destination}"/control if [ ! -z "${DEB_BUILD_DEPENDS}" ] ; then echo "Build-Depends:" ${DEB_BUILD_DEPENDS} >> "${destination}"/control fi echo "Standards-Version: 3.9.4" >> "${destination}"/control if [ ! -z "${DEB_HOMEPAGE}" ] ; then echo "Homepage:" ${DEB_HOMEPAGE} >> "${destination}"/control fi if [ ! -z "${DEB_VCS_BROWSER}" ] ; then echo "Vcs-Browser:" ${DEB_VCS_BROWSER} >> "${destination}"/control fi if [ ! -z "${DEB_VCS_ARCH}" ] ; then echo "Vcs-Arch:" ${DEB_VCS_ARCH} >> "${destination}"/control fi if [ ! -z "${DEB_VCS_BZR}" ] ; then echo "Vcs-Bzr:" ${DEB_VCS_BZR} >> "${destination}"/control fi if [ ! -z "${DEB_VCS_CVS}" ] ; then echo "Vcs-Cvs:" ${DEB_VCS_CVS} >> "${destination}"/control fi if [ ! -z "${DEB_VCS_DARCS}" ] ; then echo "Vcs-Darcs:" ${DEB_VCS_DARCS} >> "${destination}"/control fi if [ ! -z "${DEB_VCS_GIT}" ] ; then echo "Vcs-Git:" ${DEB_VCS_GIT} >> "${destination}"/control fi if [ ! -z "${DEB_VCS_HG}" ] ; then echo "Vcs-Hg:" ${DEB_VCS_HG} >> "${destination}"/control fi if [ ! -z "${DEB_VCS_MTN}" ] ; then echo "Vcs-Mtn:" ${DEB_VCS_MTN} >> "${destination}"/control fi if [ ! -z "${DEB_VCS_SVN}" ] ; then echo "Vcs-Svn:" ${DEB_VCS_SVN} >> "${destination}"/control fi echo "" >> "${destination}"/control echo "Package:" ${DEB_PACKAGE} >> "${destination}"/control echo "Architecture:" ${DEB_ARCHITECTURE} >> "${destination}"/control # Comma-separated lists of packages if [ ! -z "${DEB_PRE_DEPENDS}" ] ; then echo "Pre-Depends:" ${DEB_PRE_DEPENDS} >> "${destination}"/control fi if [ ! -z "${DEB_DEPENDS}" ] ; then echo "Depends:" ${DEB_DEPENDS} >> "${destination}"/control fi if [ ! -z "${DEB_RECOMMENDS}" ] ; then echo "Recommends:" ${DEB_RECOMMENDS} >> "${destination}"/control fi if [ ! -z "${DEB_SUGGESTS}" ] ; then echo "Suggests:" ${DEB_SUGGESTS} >> "${destination}"/control fi if [ ! -z "${DEB_PROVIDES}" ] ; then echo "Provides:" ${DEB_PROVIDES} >> "${destination}"/control fi if [ ! -z "${DEB_REPLACES}" ] ; then echo "Replaces:" ${DEB_REPLACES} >> "${destination}"/control fi if [ ! -z "${DEB_ESSENTIAL}" ] ; then echo "Essential:" ${DEB_ESSENTIAL} >> "${destination}"/control fi echo "Description:" "$(echo "${DEB_DESCRIPTION}" | sed 's/^[\s]*$/./' | sed 's/\(.*\)/ \1/' | tail -c+2)" >> "${destination}"/control ########### echo "${DEB_SOURCE} (${DEB_VERSION}) ${DEB_DISTRIBUTION}; urgency=low" >> "${destination}"/changelog echo "" >> "${destination}"/changelog echo " * New build." >> "${destination}"/changelog echo "" >> "${destination}"/changelog echo "" >> "${destination}"/changelog echo " -- ${DEB_PACKAGE_BUILDER} $(date -R)" >> "${destination}"/changelog ########## # Intentionally overwriting. echo "9" > "${destination}"/compat mkdir -p "${destination}"/source echo "3.0 (quilt)" > "${destination}"/source/format ########### # Intentionally overwriting. cat > "${destination}"/rules << _EOF #!/usr/bin/make -f include /usr/share/cdbs/1/rules/debhelper.mk ifneq (\$(wildcard configure),) include /usr/share/cdbs/1/class/autotools.mk else include /usr/share/cdbs/1/class/makefile.mk DEB_MAKE_INSTALL_TARGET := install DESTDIR=\$(CURDIR)/debian/${deb_lowercase_package_name} endif DEB_BUILD_PARALLEL = 1 DEB_CONFIGURE_EXTRA_FLAGS += ${DEB_CONFIGURE_EXTRA_FLAGS} DEB_CONFIGURE_SCRIPT_ENV += ${DEB_CONFIGURE_SCRIPT_ENV} DEB_DH_LINK_ARGS += ${DEB_DH_LINK_ARGS} DEB_SHLIBS_ARGS_ALL += ${DEB_SHLIBS_ARGS_ALL} DEB_SHLIBS_ARGS += ${DEB_SHLIBS_ARGS} DEB_SHLIBS_INCLUDE += ${DEB_SHLIBS_INCLUDE} DEB_MAKE_ENVVARS += BUILDING_DEB=1 export build : ifneq (${PACKAGE_NAME}, gnustep-make) GNUSTEP_MAKEFILES = \$(shell gnustep-config --variable=GNUSTEP_MAKEFILES) ifneq (\$(GNUSTEP_MAKEFILES), ) DEB_MAKE_ENVVARS += \$(shell sh -c ". \$(GNUSTEP_MAKEFILES)/GNUstep.sh && env |grep GNUSTEP") else \$(error Failed to get GNUSTEP_MAKEFILES variable. Is gnustep-config properly installed?) exit 1 endif endif _EOF chmod 755 "${destination}"/rules ########## if [ -e COPYING ] ; then cp COPYING ${destination}/copyright fi if [ -e LICENSE ] ; then cp LICENSE ${destination}/copyright fi ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/������������������������������������������������������������������������0000775�0001750�0001750�00000000000�13074115160�015476� 5����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/Shared/�����������������������������������������������������������������0000775�0001750�0001750�00000000000�13074115157�016712� 5����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/Shared/java.make��������������������������������������������������������0000664�0001750�0001750�00000020444�12543041051�020465� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Shared/java.make # # Makefile fragment with rules to compile and install java files, # with associated property files. # # Copyright (C) 2000, 2002, 2009 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola.pero@meta-innovation.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # input variables: # # $(GNUSTEP_INSTANCE)_JAVA_FILES: The list of Java files to compile. # These are the files that will be batch-compiled unless # xxx_BATCH_COMPILE_JAVA_FILES is set to no, or unless they can't be # batch-compiled because each of them uses a different flag. # # JAVA_OBJ_FILES, JAVA_JNI_OBJ_FILES, SUBPROJECT_OBJ_FILES: the list # of object files (built by Instance/rules.make). These are the # files that will always be built. If some of the JAVA_OBJ_FILES are # not built from xxx_JAVA_FILES but from something else, they'll # still be compiled, but one by one - not batched with the # xxx_JAVA_FILES. # # $(GNUSTEP_INSTANCE)_JAVA_PROPERTIES_FILES : the list of .properties files # to install together with the .java files # # BATCH_COMPILE_JAVA_FILES: if this variable is set to 'no', batch compilation # of all Java files is disabled. # # $(GNUSTEP_INSTANCE)_BATCH_COMPILE_JAVA_FILES: if this variable is set to 'no', # batch compilation of xxx_JAVA_FILES is disabled and they are compiled one by one. # Else, it's enabled by default. # # GNUSTEP_SHARED_JAVA_INSTALLATION_DIR : the base directory where to # install the files. # # # public targets: # # shared-instance-java-all # shared-instance-java-install # shared-instance-java-uninstall # shared-instance-java-clean # .PHONY: \ shared-instance-java-all \ shared-instance-java-install \ shared-instance-java-install-dirs \ shared-instance-java-uninstall \ shared-instance-java-jar \ shared-instance-java-clean shared-instance-java-all: $(JAVA_OBJ_FILES) \ $(JAVA_JNI_OBJ_FILES) \ $(SUBPROJECT_OBJ_FILES) ifeq ($(strip $($(GNUSTEP_INSTANCE)_JAVA_JAR_NAME)),) JAVA_JAR_FILE = $(subst .,-,$(GNUSTEP_INSTANCE)).jar else JAVA_JAR_FILE = $($(GNUSTEP_INSTANCE)_JAVA_JAR_NAME).jar endif JAVA_MANIFEST_FILE = $($(GNUSTEP_INSTANCE)_JAVA_MANIFEST_FILE) ifeq ($(strip $(JAVA_MANIFEST_FILE)),) JAVA_JAR_FLAGS = cf else JAVA_JAR_FLAGS = cmf endif ifeq ($(strip $($(GNUSTEP_INSTANCE)_JAVA_INSTALL_AS_JAR)),yes) JAVA_JAR_INSTALL_DEP = $(JAVA_JAR_FILE) else JAVA_JAR_INSTALL_DEP = endif ifeq ($(strip $(as_jar)),yes) JAVA_JAR_INSTALL_DEP = $(JAVA_JAR_FILE) else ifeq ($(strip $(as_jar)),no) JAVA_JAR_INSTALL_DEP = endif endif # By default, we enable "batch compilation" of Java files. This means # that whenever make determines that a Java files needs recompilation, # the command that recompiles that files will actually recompile all # the files in the batch as well - causing make to then skip all # subsequent rebuilding - which is much more efficient. # # You can turn this off by setting # # xxx_BATCH_COMPILE_JAVA_FILES = no # # and this will cause all files to be always compiled one by one. ifeq ($(BATCH_COMPILE_JAVA_FILES),) BATCH_COMPILE_JAVA_FILES = $($(GNUSTEP_INSTANCE)_BATCH_COMPILE_JAVA_FILES) endif # First set it to an empty string, which disables batch compilation. JAVA_FILES_TO_BATCH_COMPILE = ifneq ($(BATCH_COMPILE_JAVA_FILES), no) # We can only batch compile the files if they all have the same flags. # So, if any file has a non-empty xxx_FILE_FILTER_OUT_FLAGS or # xxx_FILE_FLAGS set, we disable batch compilation. # # PS: Here it would be nicer if we could not disable it completely, # but only batch compile the files that require no special flags. ifeq ($(strip $(foreach f,$($(GNUSTEP_INSTANCE)_JAVA_FILES),$($(f)_FILE_FILTER_OUT_FLAGS))$(foreach f,$($(GNUSTEP_INSTANCE)_JAVA_FILES),$($(f)_FILE_FLAGS))),) # OK - batch compilation is enabled, and all files have the same compilation flags, so turn it on :-) # By default, batch compile all xxx_JAVA_FILES. JAVA_FILES_TO_BATCH_COMPILE = $($(GNUSTEP_INSTANCE)_JAVA_FILES) endif endif # Say that you have a Pisa.java source file. Here we install both # Pisa.class (the main class) and also, if they exist, all class files # with names beginning wih Pisa$ (such as Pisa$1$Nicola.class); these # files are generated for nested/inner classes, and must be installed # as well. The fact we need to install these files is the reason why # the following is more complicated than you would think at first # glance. # Build efficiently the list of possible inner/nested classes # We first build a list like in `Pisa[$]*.class Roma[$]*.class' by # taking the JAVA_OBJ_FILES and replacing .class with [$]*.class, then # we use wildcard to get the list of all files matching the pattern UNESCAPED_ADD_JAVA_OBJ_FILES = $(wildcard $(JAVA_OBJ_FILES:.class=[$$]*.class)) # Finally we need to escape the $s before passing the filenames to the # shell ADDITIONAL_JAVA_OBJ_FILES = $(subst $$,\$$,$(UNESCAPED_ADD_JAVA_OBJ_FILES)) JAVA_PROPERTIES_FILES = $($(GNUSTEP_INSTANCE)_JAVA_PROPERTIES_FILES) $(JAVA_JAR_FILE): $(JAVA_MANIFEST_FILE) \ $(JAVA_OBJ_FILES) \ $(ADDITIONAL_JAVA_OBJ_FILES) \ $(JAVA_PROPERTIES_FILES) $(ECHO_CREATING_JAR_FILE)$(JAR) $(JAVA_JAR_FLAGS) $(JAVA_MANIFEST_FILE) \ $(JAVA_JAR_FILE) $(subst $$,\$$,$(filter-out $(JAVA_MANIFEST_FILE),$^));\ $(END_ECHO) shared-instance-java-jar: $(JAVA_JAR_FILE) shared-instance-java-install: shared-instance-java-install-dirs $(JAVA_JAR_INSTALL_DEP) ifneq ($(strip $(JAVA_JAR_INSTALL_DEP)),) $(ECHO_NOTHING) $(INSTALL_DATA) $(JAVA_JAR_INSTALL_DEP) $(JAVA_INSTALL_DIR)/$(JAVA_JAR_INSTALL_DEP) \ $(END_ECHO) else ifneq ($(JAVA_OBJ_FILES),) $(ECHO_INSTALLING_CLASS_FILES)for file in $(JAVA_OBJ_FILES) __done; do \ if [ $$file != __done ]; then \ $(INSTALL_DATA) $$file \ $(GNUSTEP_SHARED_JAVA_INSTALLATION_DIR)/$$file ; \ fi; \ done$(END_ECHO) endif ifneq ($(ADDITIONAL_JAVA_OBJ_FILES),) $(ECHO_INSTALLING_ADD_CLASS_FILES)for file in $(ADDITIONAL_JAVA_OBJ_FILES) __done; do \ if [ $$file != __done ]; then \ $(INSTALL_DATA) $$file \ $(GNUSTEP_SHARED_JAVA_INSTALLATION_DIR)/$$file ; \ fi; \ done$(END_ECHO) endif ifneq ($(JAVA_PROPERTIES_FILES),) $(ECHO_INSTALLING_PROPERTIES_FILES)for file in $(JAVA_PROPERTIES_FILES) __done; do \ if [ $$file != __done ]; then \ $(INSTALL_DATA) $$file \ $(GNUSTEP_SHARED_JAVA_INSTALLATION_DIR)/$$file ; \ fi; \ done$(END_ECHO) endif endif shared-instance-java-install-dirs: $(GNUSTEP_SHARED_JAVA_INSTALLATION_DIR) ifneq ($(JAVA_OBJ_FILES),) $(ECHO_NOTHING)$(MKINSTALLDIRS) \ $(addprefix $(GNUSTEP_SHARED_JAVA_INSTALLATION_DIR)/,$(dir $(JAVA_OBJ_FILES)))$(END_ECHO) endif $(GNUSTEP_SHARED_JAVA_INSTALLATION_DIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) shared-instance-java-clean: $(ECHO_NOTHING)rm -f $(JAVA_OBJ_FILES) \ $(ADDITIONAL_JAVA_OBJ_FILES) \ $(JAVA_JAR_FILE) \ $(JAVA_JNI_OBJ_FILES)$(END_ECHO) shared-instance-java-uninstall: ifneq ($(strip $(JAVA_JAR_INSTALL_DEP)),) $(ECHO_NOTHING) rm -f $(JAVA_INSTALL_DIR)/$(JAVA_JAR_INSTALL_DEP) \ $(END_ECHO) else ifneq ($(JAVA_OBJ_FILES),) $(ECHO_NOTHING)for file in $(JAVA_OBJ_FILES) __done; do \ if [ $$file != __done ]; then \ rm -f $(GNUSTEP_SHARED_JAVA_INSTALLATION_DIR)/$$file ; \ fi; \ done$(END_ECHO) endif ifneq ($(ADDITIONAL_JAVA_OBJ_FILES),) $(ECHO_NOTHING)for file in $(ADDITIONAL_JAVA_OBJ_FILES) __done; do \ if [ $$file != __done ]; then \ rm -f $(GNUSTEP_SHARED_JAVA_INSTALLATION_DIR)/$$file ; \ fi; \ done$(END_ECHO) endif ifneq ($(JAVA_PROPERTIES_FILES),) $(ECHO_NOTHING)for file in $(JAVA_PROPERTIES_FILES) __done; do \ if [ $$file != __done ]; then \ rm -f $(GNUSTEP_SHARED_JAVA_INSTALLATION_DIR)/$$file ; \ fi; \ done$(END_ECHO) endif endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/Shared/stamp-string.make������������������������������������������������0000664�0001750�0001750�00000013140�11016022535�022167� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Shared/stamp-string.make # # Makefile fragment with rules to manage stamp strings # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Normally, make computes dependencies basing on files' timestamps. # You can have a target which depedends on some files. When the files # have changed since the last time the target was built, the target # is rebuilt. # # Inside gnustep-make, we have also a need for a different type of # dependency. We create/patch some .plist files basing on the value # of some make variables. In this case, we want some targets to # depend on some make variables; when the variables have changed since # the last time the target was built, the target is rebuilt. # # This file provides an efficient implementation of this feature. You # can have a target be rebuilt when a certain GNUSTEP_STAMP_STRING has # changed since the last time the target was built. By storing the # values of some variables, in a fixed order, in the # GNUSTEP_STAMP_STRING, you can then in practice have the result of # having the target depend on the variable values. # # # To use this file, define GNUSTEP_STAMP_STRING to be the string you # want to depend upon. This file will store the string into a # stamp.make; you need to provide the directory in which to store this # file, and a rule to create the directory. In practice, you need to # set GNUSTEP_STAMP_DIR and implement a $(GNUSTEP_STAMP_DIR): rule. # Then, you can have a target to depend on $(GNUSTEP_STAMP_DEPEND). # That will cause the target to store GNUSTEP_STAMP_STRING into # $(GNUSTEP_STAMP_DIR)/stamp.make the first time it's executed, and to # read it from the same file each time it's executed afterwards. # Whenever the stamp string in stamp.make does not match the curret # GNUSTEP_STAMP_STRING, the stamp file will be rebuilt, and the target # depending on $(GNUSTEP_STAMP_DEPEND) will be forced to be rebuilt. # # # Input variables: # # GNUSTEP_STAMP_STRING: This variable is the stamp; we check that it # has not changed since last time the target was rebuilt. You must # set this variable to the appropriate stamp string before including # this file; usually the stamp string is just a concatenation of the # values of the various variables (separated by some character you want, # such as '-') you want to depend upon. # # GNUSTEP_STAMP_DIR: The directory in which you want the stamp file to # be placed. Each time the target is rebuilt, GNUSTEP_STAMP_STRING is # recorded into the stamp file so that next time it can be compared. # Your code must provide a rule to build GNUSTEP_STAMP_DIR. # Typically, GNUSTEP_STAMP_DIR is the bundle dir for a bundle, the # application dir for an application, and so on. # # # Output variables: # # GNUSTEP_STAMP_DEPEND: If the value of GNUSTEP_STAMP_STRING is the # same as the value stored inside stamp.make, then this is set to ''. # Else, this is set to shared-instance-stamp-string, and causes both # GNUSTEP_STAMP_FILE to be regenerated, and any target depending on # GNUSTEP_STAMP_DEPEND to be rebuilt as well. # # # public targets: # # shared-instance-stamp-string: You do not refer this target directly; # you should instead depend on $(GNUSTEP_STAMP_DEPEND), which will expand # to shared-instance-stamp-string when a change in the stamp string is # detected, and to '' when not. # # To read the stamp file very quickly, we use a trick: we write the # file as a makefile fragment, and include it to read it. # This can be considered a trick to read the file very efficiently # without spanning a 'cat' subprocess in a subshell. GNUSTEP_STAMP_FILE = $(GNUSTEP_STAMP_DIR)/stamp.make # This rule tells make that GNUSTEP_STAMP_FILE is always up to date. # Else, because it is included as a makefile, make would try # rebuilding it, and moreover, after rebuilding it, it would run again # using the new one! We instead manage rules manually to have control # of it. $(GNUSTEP_STAMP_FILE): # By default, GNUSTEP_STAMP_DEPEND causes shared-instance-stamp-string to # be executed, and everything depending on GNUSTEP_STAMP_DEPEND to be # rebuilt. GNUSTEP_STAMP_DEPEND = shared-instance-stamp-string # We want to make sure the string put in the stamp.make is never empty. # To make sure it is so, we add an '_' at the beginning of the string. GNUSTEP_STAMP_ASTRING = _$(GNUSTEP_STAMP_STRING) OLD_GNUSTEP_STAMP_ASTRING = # Include the old stamp.make, but only if it exists. # stamp.make contains the line # OLD_GNUSTEP_STAMP_ASTRING = xxx -include $(GNUSTEP_STAMP_FILE) # If there was a stamp.make, and it contained the same # GNUSTEP_STAMP_ASTRING, then we drop GNUSTEP_STAMP_DEPEND, and do # nothing. ifneq ($(OLD_GNUSTEP_STAMP_ASTRING),) ifeq ($(OLD_GNUSTEP_STAMP_ASTRING), $(GNUSTEP_STAMP_ASTRING)) GNUSTEP_STAMP_DEPEND = endif endif # The actual target building the stamp string. .PHONY: shared-instance-stamp-string shared-instance-stamp-string: $(GNUSTEP_STAMP_DIR) $(ECHO_CREATING_STAMP_FILE)echo "OLD_GNUSTEP_STAMP_ASTRING = $(GNUSTEP_STAMP_ASTRING)" > $(GNUSTEP_STAMP_FILE)$(END_ECHO) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/Shared/headers.make�����������������������������������������������������0000664�0001750�0001750�00000012645�11433715150�021170� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Shared/headers.make # # Makefile fragment with rules to install header files # # Copyright (C) 2002, 2010 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola.pero@meta-innovation.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # input variables: # # $(GNUSTEP_INSTANCE)_HEADER_FILES : the list of .h files to install # # $(GNUSTEP_INSTANCE)_HEADER_FILES_DIR : the dir in which the .h files are; # defaults to `.' if no set. # # $(GNUSTEP_INSTANCE)_HEADER_FILES_INSTALL_DIR : the dir in which to install # the .h files; defaults to $(GNUSTEP_INSTANCE) if not set. Please set it # to `.' if you want it to be like empty. # # # public targets: # # shared-instance-headers-install # shared-instance-headers-uninstall # HEADER_FILES = $($(GNUSTEP_INSTANCE)_HEADER_FILES) .PHONY: \ shared-instance-headers-install \ shared-instance-headers-uninstall # We always compute HEADER_FILES_DIR and HEADER_FILES_INSTALL_DIR. # The reason is that frameworks might have headers in subprojects (and # not in the top framework makefile!). Those headers are # automatically used and installed, but in the top-level makefile, # HEADER_FILES = '', still you might want to have a special # HEADER_FILES_DIR and HEADER_FILES_INSTALL_DIR even in this case. # NB: Header installation for frameworks is done by the framework # code. HEADER_FILES_DIR = $($(GNUSTEP_INSTANCE)_HEADER_FILES_DIR) ifeq ($(HEADER_FILES_DIR),) HEADER_FILES_DIR = . endif HEADER_FILES_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_HEADER_FILES_INSTALL_DIR) # Please use `.' to force it to stay empty 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 # First of all, we need to deal with a special complication, which is # if any HEADER_FILES include a subdirectory component (allowed since # gnustep-make 2.2.1). Ie, something like # # HEADER_FILES = Beauty/Pride.h # # This is a complication because to install such a file we first need # to create the directory to install it into. # # The following command determines the install (sub)directories that # we need to create. 'dir' extracts the directory from each file # ("./" will be returned if there is no such subdirectory); 'sort' # removes duplicates from the results, and makes sure that the # directories are in the order that they should be created in # ("Pride/" comes before "Pride/Beauty"). Finally, filter-out removes # ./ from the results as we create the root directory separately. HEADER_SUBDIRS = $(strip $(filter-out ./,$(sort $(dir $(HEADER_FILES))))) # The complete (full path) directories that we need to create when # installing. HEADER_INSTALL_DIRS_TO_CREATE = $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR) $(addprefix $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR)/,$(HEADER_SUBDIRS)) # # We provide two different algorithms of installing headers. # ifeq ($(GNUSTEP_DEVELOPER),) # # The first one is the standard one. We run a subshell, loop on all the # header files, and install all of them. This is the default one. # shared-instance-headers-install: $(HEADER_INSTALL_DIRS_TO_CREATE) $(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; \ fi; \ done$(END_ECHO) else # # The second one (which you activate by setting GNUSTEP_DEVELOPER to # yes in your shell) is the one specifically optimized for faster # development. We only install headers which are newer than the # installed version. This is much faster if you are developing and # need to install headers often, and normally with just few changes. # It is slower the first time you install the headers, because we # install them using a lot of subshell processes (which is why it is not # the default - `users' install headers only once - the default # setup is for users). # shared-instance-headers-install: \ $(HEADER_INSTALL_DIRS_TO_CREATE) \ $(addprefix $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR)/,$(HEADER_FILES)) $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR)/% : $(HEADER_FILES_DIR)/% $(ECHO_NOTHING)$(INSTALL_DATA) $< $@$(END_ECHO) endif # Note that we create these directories, if not there yet. In the # same way, upon uninstall, we delete the directories if they are # empty. $(HEADER_INSTALL_DIRS_TO_CREATE): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) # TODO/FIXME: the uninstall should delete directories in reverse # order, else it will not work when more than one are created. shared-instance-headers-uninstall: $(ECHO_NOTHING)for file in $(HEADER_FILES) __done; do \ if [ $$file != __done ]; then \ rm -rf $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR)/$$file ; \ fi; \ done$(END_ECHO) -$(ECHO_NOTHING)rmdir $(HEADER_INSTALL_DIRS_TO_CREATE)$(END_ECHO) endif # HEADER_FILES = '' �������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/Shared/bundle.make������������������������������������������������������0000664�0001750�0001750�00000041466�12506226445�021037� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Shared/bundle.make # # Makefile fragment with rules to copy resource files # into a local bundle # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # input variables: # # # GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH : this is used when copying # resource files into the bundle. It's the path to the local resource # bundle where all resources will be put (this might be a subdirectory # of the actual bundle directory). This path must include # GNUSTEP_BUILD_DIR. Resource files will be copied into this path. # For example, for a normal bundle it would be # $(BUNDLE_DIR)/Resources; for an application it would be # $(APP_DIR)/Resources; for a library or a tool, # $(GNUSTEP_BUILD_DIR)/Resources/$(GNUSTEP_INSTANCE). This variable # is used during build, to copy the resources in place. # # GNUSTEP_BUILD_DIR : Implicitly used to find the bundle. # # GNUSTEP_SHARED_BUNDLE_INSTALL_NAME : this is used when installing. # It's the name of the directory that is installed. For example, for # a normal bundle it would be $(BUNDLE_DIR_NAME); for an application # it would be $(APP_DIR_NAME); for a tool $(GNUSTEP_INSTANCE); for a # library, $(INTERFACE_VERSION). # # GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH : this is used when # installing. It's the path to the directory that contains # GNUSTEP_SHARED_BUNDLE_INSTALL_NAME, but relative to # GNUSTEP_BUILD_DIR. For example, for a normal bundle or an # application this is simply ./; for a tool this is ./Resources; for a # library this is ./Resources/$(GNUSTEP_INSTANCE). This is relative # to GNUSTEP_BUILD_DIR so that it can be used by COPY_INTO_DIR as # well. When we are asked to COPY_INTO_DIR (instead of the standard # installation) then we copy the stuff from # GNUSTEP_BUILD_DIR/GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH into # COPY_INTO_DIR/GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH. This works # well for tool resources, for example, so that when you copy a tool # with resources into a framework, the tool resources and the tool # executable remain in the same relative relationship and tool # resources can be found. # # GNUSTEP_SHARED_BUNDLE_INSTALL_PATH : this is used when installing. # It's the path where we install the bundle; that is, we will take # GNUSTEP_SHARED_BUNDLE_INSTALL_NAME from # GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH and install it into # GNUSTEP_SHARED_BUNDLE_INSTALL_PATH. For example, for a normal # bundle it would be $(BUNDLE_INSTALL_DIR); for an application it # would be $(APP_INSTALL_DIR); for a tool, $(GNUSTEP_TOOL_RESOURCES); # for a library $(GNUSTEP_RESOURCES)/$(GNUSTEP_INSTANCE). # # Please note that the main constraint when installing is that your # local bundle should have the same name that it has when installed. # Paths can be changed arbitrarily though. # # $(GNUSTEP_INSTANCE)_RESOURCE_FILES : a list of resource files to install. # They are recursively copied (/symlinked), so it might also include dirs. # # $(GNUSTEP_INSTANCE)_RESOURCE_DIRS : a list of additional resource dirs # to create. # # $(GNUSTEP_INSTANCE)_RESOURCE_FILES_DIR : the directory in which the # resource files and localized resource files are to be found # (defaults to ./ if omitted). # # $(GNUSTEP_INSTANCE)_LANGUAGES : the list of languages of localized resource # files (processed in rules.make, and converted into a LANGUAGES list) # # $(GNUSTEP_INSTANCE)_LOCALIZED_RESOURCE_FILES : a list of localized # resource files to install. # # $(GNUSTEP_INSTANCE)_LOCALIZED_RESOURCE_DIRS : a list of additional localized # resource dirs to create. # # $(GNUSTEP_INSTANCE)_COMPONENTS : a list of directories which are # recursively copied (/locally symlinked if symlinks are available) # into the resource bundle. Basically, they are currently added to # $(GNUSTEP_INSTANCE)_RESOURCE_FILES. # # $(GNUSTEP_INSTANCE)_LOCALIZED_COMPONENTS : a list of localized # directories which are recursively copied (/locally symlinked if # symlinks are available) into the resource bundle. Currently, they # are simply added to $(GNUSTEP_INSTANCE)_LOCALIZED_RESOURCE_FILES. # # $(GNUSTEP_INSTANCE)_SUBPROJECTS : the list of subprojects is used # because the resources from each subproject are merged into the bundle # resources (by recursively copying from LLL/Resources/Subproject into # the GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH, where $(LLL) is the # subproject name. # # GNUSTEP_TYPE : used when printing the message 'Copying resources into # the $(GNUSTEP_TYPE) wrapper...' # # GSWeb related variables - # # $(GNUSTEP_INSTANCE)_WEBSERVER_RESOURCE_FILES : a list of resource files to # copy from the WebServerResources directory into the WebServer # subdirectory of the resource bundle # # $(GNUSTEP_INSTANCE)_WEBSERVER_LOCALIZED_RESOURCE_FILES : a list of # localized resource files to copy from the yyy.lproj subdir of the # WebServerResources directory into the yyy.lproj subdir of the # WebServer subdirectory of the resource bundle - this for each # language yyy. # # $(GNUSTEP_INSTANCE)_WEBSERVER_COMPONENTS: # $(GNUSTEP_INSTANCE)_WEBSERVER_LOCALIZED_COMPONENTS: # $(GNUSTEP_INSTANCE)_WEBSERVER_RESOURCE_DIRS: # $(GNUSTEP_INSTANCE)_WEBSERVER_LOCALIZED_RESOURCE_DIRS: # # # public targets: # # shared-instance-bundle-all # # $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH): Creates the bundle # resource path (invoked automatically) # # shared-instance-bundle-install # shared-instance-bundle-uninstall # shared-instance-bundle-copy_into_dir # # # Warning - the bundle install rules depend on the rule to create # $(GNUSTEP_SHARED_BUNDLE_INSTALL_PATH) - the rule to build it has to be # provided by the caller {we can't provide two rules to build the same # target; the caller might need to provide the rule for cases when we # are not included, so we let the caller always provide it} # # Determine the dir to take the resources from RESOURCE_FILES_DIR = $($(GNUSTEP_INSTANCE)_RESOURCE_FILES_DIR) ifeq ($(RESOURCE_FILES_DIR),) RESOURCE_FILES_DIR = ./ endif RESOURCE_FILES = $(strip $($(GNUSTEP_INSTANCE)_RESOURCE_FILES) \ $($(GNUSTEP_INSTANCE)_COMPONENTS)) RESOURCE_DIRS = $(strip $($(GNUSTEP_INSTANCE)_RESOURCE_DIRS)) LOCALIZED_RESOURCE_FILES = \ $(strip $($(GNUSTEP_INSTANCE)_LOCALIZED_RESOURCE_FILES) \ $($(GNUSTEP_INSTANCE)_LOCALIZED_COMPONENTS)) LOCALIZED_RESOURCE_DIRS = \ $(strip $($(GNUSTEP_INSTANCE)_LOCALIZED_RESOURCE_DIRS)) # NB: Use _SUBPROJECTS, not SUBPROJECTS here as that might conflict # with what is used in aggregate.make. _SUBPROJECTS = $(strip $($(GNUSTEP_INSTANCE)_SUBPROJECTS)) .PHONY: \ shared-instance-bundle-all \ shared-instance-bundle-all-resources \ shared-instance-bundle-all-gsweb \ shared-instance-bundle-install \ shared-instance-bundle-uninstall \ shared-instance-bundle-copy_into_dir ifneq ($(RESOURCE_DIRS),) FULL_RESOURCE_DIRS = \ $(foreach d, $(RESOURCE_DIRS), $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/$(d)) endif $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) $(FULL_RESOURCE_DIRS): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) # # We provide two different ways of building bundles, suited to # different usages - normal user and developer. # # `Normal user` builds the bundle once. We optimize for single-build # in this case. # # `Developer` builds and rebuilds the bundle a lot of times with minor # changes each time. We optimize for efficient rebuilding in this # case. # # The default behaviour is 'Normal user'. To switch to 'Developer' # mode, set GNUSTEP_DEVELOPER=yes in the environment. # # TODO - implement the `Developer` mode :-) # # Please note the trick when copying subproject resources - if there # is nothing inside $$subproject/Resources/Subproject/, in # $$subproject/Resources/Subproject/* the * expands to itself. So we # check if that is true before trying to copy. # Please note that if xxx/yyy is specified in RESOURCE_FILES, we # create the file {bundle}/yyy (not {bundle}/xxx/yyy), because people # usually can put resource files in subdirs, and want to copy them # just top-level. That is what currently happens, but often enough # you might want the other behaviour ({bundle}/xxx/yyy to be created), # and TODO: devise a way to support it. # # If instead xxx/yyy is specified in LOCALIZED_RESOURCE_FILES, we # 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 $(RESOURCE_FILES_DIR)/$$f -o -d $(RESOURCE_FILES_DIR)/$$f ]; then \ cp -fr $(RESOURCE_FILES_DIR)/$$f $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/; \ else \ echo "Warning: $(RESOURCE_FILES_DIR)/$$f not found - ignoring"; \ fi; \ done$(END_ECHO) endif ifneq ($(LOCALIZED_RESOURCE_DIRS),) $(ECHO_CREATING_LOC_RESOURCE_DIRS)for l in $(LANGUAGES); do \ if [ -d $(RESOURCE_FILES_DIR)/$$l.lproj ]; then \ $(MKDIRS) $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/$$l.lproj; \ for f in $(LOCALIZED_RESOURCE_DIRS); do \ $(MKDIRS) $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/$$l.lproj/$$f; \ done; \ else \ echo "Warning: $(RESOURCE_FILES_DIR)/$$l.lproj not found - ignoring"; \ fi; \ done$(END_ECHO) endif ifneq ($(LOCALIZED_RESOURCE_FILES),) $(ECHO_COPYING_LOC_RESOURCES)for l in $(LANGUAGES); do \ if [ -d $(RESOURCE_FILES_DIR)/$$l.lproj ]; then \ $(MKDIRS) $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/$$l.lproj; \ for f in $(LOCALIZED_RESOURCE_FILES); do \ if [ -f $(RESOURCE_FILES_DIR)/$$l.lproj/$$f -o -d $(RESOURCE_FILES_DIR)/$$l.lproj/$$f ]; then \ cp -fr $(RESOURCE_FILES_DIR)/$$l.lproj/$$f \ $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/$$l.lproj/; \ else \ echo "Warning: $(RESOURCE_FILES_DIR)/$$l.lproj/$$f not found - ignoring"; \ fi; \ done; \ else \ echo "Warning: $(RESOURCE_FILES_DIR)/$$l.lproj not found - ignoring"; \ fi; \ done$(END_ECHO) endif ifneq ($(_SUBPROJECTS),) $(ECHO_COPYING_RESOURCES_FROM_SUBPROJS)for subproject in $(_SUBPROJECTS); do \ if [ -d $$subproject/Resources/Subproject ]; then \ for f in $$subproject/Resources/Subproject/*; do \ if [ $$f != $$subproject'/Resources/Subproject/*' ]; then \ cp -fr $$f $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/; \ fi; \ done; \ fi; \ done$(END_ECHO) endif ## ## ## GSWeb code ## A main issue here is - executing *nothing* if gsweb is not used :-) ## ## WEBSERVER_RESOURCE_FILES = \ $(strip $($(GNUSTEP_INSTANCE)_WEBSERVER_RESOURCE_FILES) \ $($(GNUSTEP_INSTANCE)_WEBSERVER_COMPONENTS)) # For historical reasons, we recognized the old variant # xxx_LOCALIZED_WEBSERVER_RESOURCE_FILES - but we recommend to use # xxx_WEBSERVER_LOCALIZED_RESOURCE_FILES instead. WEBSERVER_LOCALIZED_RESOURCE_FILES = \ $(strip $($(GNUSTEP_INSTANCE)_LOCALIZED_WEBSERVER_RESOURCE_FILES) \ $($(GNUSTEP_INSTANCE)_WEBSERVER_LOCALIZED_RESOURCE_FILES) \ $($(GNUSTEP_INSTANCE)_WEBSERVER_LOCALIZED_COMPONENTS)) WEBSERVER_RESOURCE_DIRS = \ $(strip $($(GNUSTEP_INSTANCE)_WEBSERVER_RESOURCE_DIRS)) WEBSERVER_LOCALIZED_RESOURCE_DIRS = \ $(strip $($(GNUSTEP_INSTANCE)_WEBSERVER_LOCALIZED_RESOURCE_DIRS)) ifneq ($(WEBSERVER_RESOURCE_DIRS),) WEBSERVER_FULL_RESOURCE_DIRS = \ $(foreach d, $(WEBSERVER_RESOURCE_DIRS), $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer/$(d)) $(WEBSERVER_FULL_RESOURCE_DIRS): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) endif .PHONY: shared-instance-bundle-all-webresources \ shared-instance-bundle-all-localized-webresources shared-instance-bundle-all-gsweb: shared-instance-bundle-all-webresources \ shared-instance-bundle-all-localized-webresources ifneq ($(WEBSERVER_RESOURCE_FILES),) $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer: $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) shared-instance-bundle-all-webresources: \ $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer \ $(WEBSERVER_FULL_RESOURCE_DIRS) $(ECHO_COPYING_WEBSERVER_RESOURCES)for f in $(WEBSERVER_RESOURCE_FILES); do \ if [ -f ./WebServerResources/$$f \ -o -d ./WebServerResources/$$f ]; then \ cp -fr ./WebServerResources/$$f \ $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer/$$f; \ else \ echo "Warning: WebServerResources/$$f not found - ignoring"; \ fi; \ done$(END_ECHO) else shared-instance-bundle-all-webresources: endif ifneq ($(WEBSERVER_LOCALIZED_RESOURCE_FILES)$(WEBSERVER_LOCALIZED_RESOURCE_DIRS),) shared-instance-bundle-all-localized-webresources: \ $(WEBSERVER_FULL_RESOURCE_DIRS) ifneq ($(WEBSERVER_LOCALIZED_RESOURCE_DIRS),) $(ECHO_CREATING_WEBSERVER_LOC_RESOURCE_DIRS)for l in $(LANGUAGES); do \ if [ -d ./WebServerResources/$$l.lproj ]; then \ $(MKDIRS) \ $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer/$$l.lproj; \ for f in $(WEBSERVER_LOCALIZED_RESOURCE_DIRS); do \ $(MKDIRS) \ $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer/$$l.lproj/$$f; \ done; \ else \ echo "Warning: WebServer/$$l.lproj not found - ignoring"; \ fi; \ done$(END_ECHO) endif ifneq ($(WEBSERVER_LOCALIZED_RESOURCE_FILES),) $(ECHO_COPYING_WEBSERVER_LOC_RESOURCES)for l in $(LANGUAGES); do \ if [ -d ./WebServerResources/$$l.lproj ]; then \ $(MKDIRS) \ $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer/$$l.lproj;\ for f in $(WEBSERVER_LOCALIZED_RESOURCE_FILES); do \ if [ -f ./WebServerResources/$$l.lproj/$$f \ -o -d ./WebServerResources/$$l.lproj/$$f ]; then \ 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"; \ fi; \ done; \ else \ echo "Warning: WebServerResources/$$l.lproj not found - ignoring"; \ fi; \ done$(END_ECHO) endif else shared-instance-bundle-all-localized-webresources: endif # In the following rule, tar has the 'h' option, which dereferences # symbolic links. The idea is that you could specify symbolic links # to some templates as some of the resource files; then building the # bundle is quick, because you only copy the symlinks - not the actual # files; and the symlinks are dereferenced when the bundle is # installed (which is why the 'h' option is there). I've never used # this feature, but it was requested by some of our users. # # Another common request is to ignore/drop CVS and .svn # directories/files from the bundle when installing. You don't really # want to install those in case they ended up in the bundle when you # recursively copied some resources in it from your source code. # This is obtained by using the 'X' flag. # # Because of compatibility issues with older versions of GNU tar (not # to speak of non-GNU tars), we use the X option rather than the # --exclude= option. The X option requires as argument a file listing # files to exclude. We use a standard exclude file list which we store # in GNUSTEP_MAKEFILES. # shared-instance-bundle-install:: $(GNUSTEP_SHARED_BUNDLE_INSTALL_PATH) $(ECHO_INSTALLING_BUNDLE)rm -rf $(GNUSTEP_SHARED_BUNDLE_INSTALL_PATH)/$(GNUSTEP_SHARED_BUNDLE_INSTALL_NAME); \ $(MKINSTALLDIRS) $(GNUSTEP_SHARED_BUNDLE_INSTALL_PATH); \ (cd $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH); \ $(TAR) chfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list $(GNUSTEP_SHARED_BUNDLE_INSTALL_NAME)) \ | (cd $(GNUSTEP_SHARED_BUNDLE_INSTALL_PATH); $(TAR) xf -)$(END_ECHO) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) \ $(GNUSTEP_SHARED_BUNDLE_INSTALL_PATH)/$(GNUSTEP_SHARED_BUNDLE_INSTALL_NAME)$(END_ECHO) endif shared-instance-bundle-copy_into_dir:: $(ECHO_COPYING_BUNDLE_INTO_DIR)rm -rf $(COPY_INTO_DIR)/$(GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH)/$(GNUSTEP_SHARED_BUNDLE_INSTALL_NAME); \ (cd $(GNUSTEP_BUILD_DIR); \ $(TAR) chfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list $(GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH)/$(GNUSTEP_SHARED_BUNDLE_INSTALL_NAME)) \ | (cd $(COPY_INTO_DIR); $(TAR) xf -)$(END_ECHO) shared-instance-bundle-uninstall:: $(ECHO_NOTHING)cd $(GNUSTEP_SHARED_BUNDLE_INSTALL_PATH); rm -rf $(GNUSTEP_SHARED_BUNDLE_INSTALL_NAME)$(END_ECHO) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/Shared/strings.make�����������������������������������������������������0000664�0001750�0001750�00000004676�11433715150�021253� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Shared/strings.make # # Makefile fragment with rules to run make_strings # # Copyright (C) 2002, 2010 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola.pero@meta-innovation.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # input variables: # # $(GNUSTEP_INSTANCE)_LANGUAGES: the list of languages (processed in rules.make, # and converted into LANGUAGES) # # $(GNUSTEP_INSTANCE)_STRINGS_FILES: the list of ObjC/C/.h files to # parse; if not set, it defaults to $(GNUSTEP_INSTANCE)_OBJC_FILES and # $(GNUSTEP_INSTANCE)_C_FILES and $(GNUSTEP_INSTANCE)_HEADER_FILES # (header files interpreted as relative paths to HEADER_FILES_DIR). # # $(GNUSTEP_INSTANCE)_MAKE_STRINGS_OPTIONS: the make_strings special # options; defaults to $(MAKE_STRINGS_OPTIONS) (which defaults to # nothing :-) if not set. # # public targets: # # internal-$(GNUSTEP_TYPE)-strings # ifneq ($(strip $($(GNUSTEP_INSTANCE)_STRINGS_FILES)),) GNUSTEP_STRINGS_FILES = $(strip $($(GNUSTEP_INSTANCE)_STRINGS_FILES)) else GNUSTEP_STRINGS_FILES = $(strip \ $($(GNUSTEP_INSTANCE)_OBJC_FILES) \ $($(GNUSTEP_INSTANCE)_C_FILES) \ $(addprefix $($(GNUSTEP_INSTANCE)_HEADER_FILES_DIR),$($(GNUSTEP_INSTANCE)_HEADER_FILES))) endif .PHONY: internal-$(GNUSTEP_TYPE)-strings ifeq ($(GNUSTEP_STRINGS_FILES),) internal-$(GNUSTEP_TYPE)-strings:: $(ALWAYS_ECHO_NO_FILES) else # we have some GNUSTEP_STRINGS_FILES GNUSTEP_MAKE_STRINGS_OPTIONS = $(strip $($(GNUSTEP_INSTANCE)_MAKE_STRINGS_OPTIONS)) ifeq ($(GNUSTEP_MAKE_STRINGS_OPTIONS),) GNUSTEP_MAKE_STRINGS_OPTIONS = $(MAKE_STRINGS_OPTIONS) endif GNUSTEP_LANGUAGE_DIRS = $(foreach l, $(LANGUAGES), $(l).lproj) $(GNUSTEP_LANGUAGE_DIRS): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) internal-$(GNUSTEP_TYPE)-strings:: $(GNUSTEP_LANGUAGE_DIRS) $(ECHO_MAKING_STRINGS)make_strings $(GNUSTEP_MAKE_STRINGS_OPTIONS) \ -L "$(LANGUAGES)" \ $(GNUSTEP_STRINGS_FILES)$(END_ECHO) endif # GNUSTEP_STRING_FILES = '' ������������������������������������������������������������������gnustep-make-2.7.0/Instance/Shared/pkgconfig.make���������������������������������������������������0000664�0001750�0001750�00000004542�12737722775�021544� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� # -*-makefile-*- # Instance/Shared/pkgconifg.make # # Makefile fragment with rules for installing pkg-config files # # Copyright (C) 2016 Free Software Foundation, Inc. # # Author: Niels Grewe <niels.grewe@halbordnugn.de> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # input variables: # # $(GNUSTEP_INSTANCE)_PKGCONFIG_FILES : the list of .pc files to install # # # # public targets: # # shared-instance-pkgconfig-install # shared-instance-pkgconfig-uninstall # # Only add the pc files if pkg-config is enabled in gnustep-make ifeq ($(GNUSTEP_HAS_PKGCONFIG),yes) PC_FILES = $($(GNUSTEP_INSTANCE)_PKGCONFIG_FILES) endif .PHONY: \ shared-instance-pkgconfig-install \ shared-instance-pkgconfig-uninstall # This is either the case if no pkg-config files are set or pkg-config has been # disabled ifeq ($(PC_FILES),) shared-instance-pkgconfig-install: shared-instance-pkgconfig-uninstall: else # PC_FILES non-emtpy ifeq ($(GNUSTEP_PKGCONFIG_FRAGMENT),) GNUSTEP_PKGCONFIG_FRAGMENT=pkgconfig endif ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),) PC_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_PKGCONFIG_FRAGMENT) else PC_INSTALL_DIR = $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_PKGCONFIG_FRAGMENT) endif shared-instance-pkgconfig-install: $(PC_INSTALL_DIR) $(ECHO_INSTALLING_PKGCONFIG)for file in $(PC_FILES) __done; do \ if [ $$file != __done ]; then \ $(INSTALL_DATA) $$file \ $(PC_INSTALL_DIR)/$$file; \ fi; \ done$(END_ECHO) # Create the installation directory $(PC_INSTALL_DIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) shared-instance-pkgconfig-uninstall: $(ECHO_NOTHING)for file in $(PC_FILES) __done; do \ if [ $$file != __done ]; then \ rm -rf $(PC_INSTALL_DIR)/$$file ; \ fi; \ done$(END_ECHO) -$(ECHO_NOTHING)rmdir $(PC_INSTALL_DIR)$(END_ECHO) endif # PC_FILES = '' ��������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/Shared/README�����������������������������������������������������������0000664�0001750�0001750�00000004652�10377003773�017604� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Files in this directory are makefile fragments which might be included by arbitrary project types during the instance make invocation. You can think of it as a little library of makefile fragments which can be used to build project types more easily, and to favour code reuse and API consistency between different project types. Each of the makefile fragments will normally contain * standalone makefile code * make targets and rules The makefile fragment must document (ie list at the very least) very clear which variables are used by the makefile fragment. Normally, the variables are either * $($(GNUSTEP_INSTANCE)_XXX) variables, such as $($(GNUSTEP_INSTANCE)_HEADERS) for a makefile fragment installing headers. Because GNUSTEP_INSTANCE is guaranteed to be the name of the instance we process during an instance invocation, this will extract xxx_HEADERS regardless of the type of project. Most variables should be of this type. * GNUSTEP_SHARED_XXX_YYY, where XXX should be the makefile fragment name (such as 'HEADERS', or 'JAVA'), and YYY is the variable specific name. These variables are to be thought as arguments being passed from the project makefile to the shared makefile fragment. For example, GNUSTEP_SHARED_JAVA_INSTALLATION_DIR will be set to JAVA_INSTALLATION_DIR by Instance/java.make and to JAVA_TOOL_INSTALLATION_DIR/Java by Instance/java-tool.make, before including Shared/java.make. Shared/java.make will install the java files into GNUSTEP_SHARED_JAVA_INSTALLATION_DIR, which will point to the correct location in both cases. Please note that in this case you can't use $($(GNUSTEP_INSTANCE)_XXX) variables because the end-user API explicitly allow them to set a single JAVA_[TOOL_]INSTALLATION_DIR for the whole GNUmakefile. The make fragments rules should be named as follows - shared-instance-xxx-yyy where xxx is the name of the makefile fragment (such as 'java' or 'headers'), and yyy is the actual target (such as 'clean', 'install', 'all'). If possible, the standard targets should be provided (all, install, uninstall, clean, distclean). In certain cases, additional targets might be provided, or empty standard targets omitted. It should be clear which ones are 'public' targets, and which ones are 'private' targets (internal to the implementation of the makefile fragment). The make fragments do not need to be protected against multiple inclusions. ��������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/java.make���������������������������������������������������������������0000664�0001750�0001750�00000006714�12445471664�017305� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/java.make # # Instance Makefile rules to build java-based (not necessarily # GNUstep) packages. # # Copyright (C) 2000 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # # You can compile any set of java classes, it does not need to be strictly # a single package in the java sense. Please put a single class in each # source file. Multiple classes in a single source file are not supported. # # The name of the Java package is in the JAVA_PACKAGE_NAME variable. # The java files to be compiled are in the xxx_JAVA_FILES variable; # they should be specified in full relative path, such as: # test_JAVA_FILES = gnu/gnustep/base/NSArray.java # # The relative path is important because things will be installed # in $(JAVA_INSTALL_DIR)/{relative_path}; for example, # the file above would be installed in # ${JAVA_INSTALL_DIR)/gnu/gnustep/base/NSArray.class # # JAVA_INSTALL_DIR contains the directory where you want to # install your classes - it defaults to $(GNUSTEP_JAVA), which is # $(GNUSTEP_LOCAL_ROOT)/Library/Libraries/Java/. # # If you have all your files in a directory but want them to be # installed with a different relative path, you can simply redefine # JAVA_INSTALL_DIR, as in the following example - # JAVA_INSTALL_DIR = $(GNUSTEP_JAVA)/gnu/gnustep/base/ # # If you have java sources to be processed throught JAVAH to create # JNI headers, specify the files in xxx_JAVA_JNI_FILES. The headers # will be placed together with the source file (example: the header of # gnu/gnustep/base/NSObject.java will be created as # gnu/gnustep/base/NSObject.h) These headers are not installed. # # If you have properties file to install, put them in the # xxx_JAVA_PROPERTIES_FILES .PHONY: internal-java_package-all_ \ internal-java_package-jar \ internal-java_package-clean \ internal-java_package-distclean \ internal-java_package-install_ \ internal-java_package-uninstall_ # # For backwards compatibility ... will be removed! # ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),) JAVA_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR) endif ifneq ($(JAVA_INSTALLATION_DIR),) JAVA_INSTALL_DIR = $(JAVA_INSTALLATION_DIR) endif # This is the directory where the java classses get # installed. Normally this is /usr/GNUstep/Local/Library/Libraries/Java/ ifeq ($(JAVA_INSTALL_DIR),) JAVA_INSTALL_DIR = $(GNUSTEP_JAVA) endif GNUSTEP_SHARED_JAVA_INSTALLATION_DIR = $(JAVA_INSTALL_DIR) include $(GNUSTEP_MAKEFILES)/Instance/Shared/java.make internal-java_package-all_:: shared-instance-java-all internal-java_package-jar:: shared-instance-java-jar internal-java_package-install_:: shared-instance-java-install internal-java_package-clean:: shared-instance-java-clean internal-java_package-distclean:: internal-java_package-uninstall_:: shared-instance-java-uninstall ����������������������������������������������������gnustep-make-2.7.0/Instance/service.make������������������������������������������������������������0000664�0001750�0001750�00000013402�12257324554�020010� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/service.make # # Instance Makefile rules to build GNUstep-based services. # # Copyright (C) 1998, 2001 Free Software Foundation, Inc. # # Author: Richard Frith-Macdonald <richard@brainstorm.co.uk> # Based on the makefiles by Scott Christley. # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # # The name of the service is in the SERVICE_NAME variable. # The NSServices info should be in $(SERVICE_NAME)Info.plist # The list of service resource file are in xxx_RESOURCE_FILES # The list of service resource directories are in xxx_RESOURCE_DIRS # where xxx is the service name # .PHONY: internal-service-all_ \ internal-service-install_ \ internal-service-uninstall_ \ internal-service-copy_into_dir \ service-resource-files \ internal-service-run-compile-submake \ internal-service-compile # Libraries that go before the GUI libraries ALL_SERVICE_LIBS = \ $(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) # Don't include these definitions the first time make is invoked. This part is # included when make is invoked the second time from the %.build rule (see # rules.make). SERVICE_DIR_NAME = $(GNUSTEP_INSTANCE:=.service) SERVICE_DIR = $(GNUSTEP_BUILD_DIR)/$(SERVICE_DIR_NAME) # # Internal targets # SERVICE_FILE_NAME = $(SERVICE_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE) SERVICE_FILE = $(GNUSTEP_BUILD_DIR)/$(SERVICE_FILE_NAME) ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),) SERVICE_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR) endif ifeq ($(SERVICE_INSTALL_DIR),) SERVICE_INSTALL_DIR = $(GNUSTEP_SERVICES) endif GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(SERVICE_DIR)/Resources GNUSTEP_SHARED_BUNDLE_INSTALL_NAME = $(SERVICE_DIR_NAME) GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH = . GNUSTEP_SHARED_BUNDLE_INSTALL_PATH = $(SERVICE_INSTALL_DIR) include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make internal-service-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) \ $(OBJ_DIRS_TO_CREATE) \ $(SERVICE_DIR)/$(GNUSTEP_TARGET_LDIR) \ internal-service-run-compile-submake \ $(SERVICE_DIR)/Resources/Info-gnustep.plist \ shared-instance-bundle-all # If they specified Info-gnustep.plist in the xxx_RESOURCE_FILES, # print a warning. They are supposed to provide a xxxInfo.plist which # gets merged with the automatically generated entries to generate # Info-gnustep.plist. ifneq ($(FOUNDATION_LIB), apple) ifneq ($(filter Info-gnustep.plist,$($(GNUSTEP_INSTANCE)_RESOURCE_FILES)),) $(WARNING_INFO_GNUSTEP_PLIST) endif else ifneq ($(filter Info.plist,$($(GNUSTEP_INSTANCE)_RESOURCE_FILES)),) $(WARNING_INFO_PLIST) endif endif ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) # Standard building internal-service-run-compile-submake: $(SERVICE_FILE) else # Parallel building. The actual compilation is delegated to a # sub-make invocation where _GNUSTEP_MAKE_PARALLEL is set to yet. # That sub-make invocation will compile files in parallel. internal-service-run-compile-submake: $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-service-compile \ GNUSTEP_TYPE=$(GNUSTEP_TYPE) \ GNUSTEP_INSTANCE=$(GNUSTEP_INSTANCE) \ GNUSTEP_OPERATION=compile \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) internal-service-compile: $(SERVICE_FILE) endif $(SERVICE_FILE): $(OBJ_FILES_TO_LINK) ifeq ($(OBJ_FILES_TO_LINK),) $(WARNING_EMPTY_LINKING) endif $(ECHO_LINKING)$(LD) $(ALL_LDFLAGS) $(CC_LDFLAGS) -o $(LDOUT)$@ \ $(OBJ_FILES_TO_LINK) $(ALL_SERVICE_LIBS)$(END_ECHO) $(SERVICE_DIR)/$(GNUSTEP_TARGET_LDIR): $(ECHO_CREATING)$(MKDIRS) $(SERVICE_DIR)/$(GNUSTEP_TARGET_LDIR)$(END_ECHO) # Allow the gui library to redefine make_services to use its local one ifeq ($(GNUSTEP_MAKE_SERVICES),) GNUSTEP_MAKE_SERVICES = make_services endif ifeq ($(GNUSTEP_PLIST_DEPEND),) $(warning Service $(GNUSTEP_INSTANCE) missing $(GNUSTEP_INSTANCE)Info.plist) endif # FIXME - xxxInfo.plist in this case is not really a plist! $(SERVICE_DIR)/Resources/Info-gnustep.plist: \ $(SERVICE_DIR)/Resources $(GNUSTEP_PLIST_DEPEND) $(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \ echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \ if [ -r "$(GNUSTEP_PLIST_DEPEND)" ]; then \ cat $(GNUSTEP_PLIST_DEPEND); \ fi; \ echo "}") >$@ ;\ if $(GNUSTEP_MAKE_SERVICES) --test $@; then : ; else rm -f $@; false; \ fi$(END_ECHO) internal-service-copy_into_dir:: shared-instance-bundle-copy_into_dir # # Install targets # $(SERVICE_INSTALL_DIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) internal-service-install_:: shared-instance-bundle-install ifeq ($(strip),yes) $(ECHO_STRIPPING)$(STRIP) $(SERVICE_INSTALL_DIR)/$(SERVICE_FILE_NAME)$(END_ECHO) endif internal-service-uninstall_:: shared-instance-bundle-uninstall include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/clibrary.make�����������������������������������������������������������0000664�0001750�0001750�00000004740�11335212276�020155� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/clibrary.make # # Instance Makefile rules to build C libraries. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola.pero@meta-innovation.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 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 # main difference from library.make, currently, is that it installs # outside the library_combo dir. (because this is the status of this # makefile, we currently simply inherit from library.make. Once we # actually implement C libraries, we might want to make this makefile # partially independent from library.make) # # It all works as for library.make but we install outside library-combo # # Other differences are: # # The name of the library is in the CLIBRARY_NAME variable, rather # than in the LIBRARY_NAME variable as it happens for libraries. # # Similarly, the install dir is controlled by CLIBRARY_INSTALL_DIR # rather than LIBRARY_INSTALL_DIR. # .PHONY: internal-clibrary-all_ \ internal-clibrary-install_ \ internal-clibrary-uninstall_ # This is the directory where the lib get installed. ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),) CLIBRARY_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR) endif ifeq ($(CLIBRARY_INSTALL_DIR),) CLIBRARY_INSTALL_DIR = $(GNUSTEP_LIBRARIES) endif # And this is used internally - it is the final directory where we put # the library - it includes target arch, os dir but not the # library_combo - this variable is PRIVATE to gnustep-make FINAL_LIBRARY_INSTALL_DIR = $(CLIBRARY_INSTALL_DIR)/$(GNUSTEP_TARGET_DIR) # Drag in library.make rules include $(GNUSTEP_MAKEFILES)/Instance/library.make # Now call them from our own rules internal-clibrary-all_:: internal-library-all_ internal-clibrary-install_:: internal-library-install_ internal-clibrary-uninstall_:: internal-library-uninstall_ internal-clibrary-check:: internal-library-check ��������������������������������gnustep-make-2.7.0/Instance/subproject.make���������������������������������������������������������0000664�0001750�0001750�00000011606�11336101653�020522� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/subproject.make # # Instance Makefile rules to build subprojects in GNUstep projects. # # Copyright (C) 1998, 2001, 2010 Free Software Foundation, Inc. # # Author: Jonathan Gapen <jagapen@whitewater.chem.wisc.edu> # Author: Nicola Pero <nicola.pero@meta-innovation.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif .PHONY: internal-subproject-all_ \ internal-subproject-install_ \ internal-subproject-uninstall_ \ internal-subproject-compile # # Compilation targets # ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) # Standard building internal-subproject-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) \ $(OBJ_DIRS_TO_CREATE) \ $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) else # Parallel building. The actual compilation is delegated to a # sub-make invocation where _GNUSTEP_MAKE_PARALLEL is set to yet. # That sub-make invocation will compile files in parallel. internal-subproject-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) $(OBJ_DIRS_TO_CREATE) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-subproject-compile \ GNUSTEP_TYPE=$(GNUSTEP_TYPE) \ GNUSTEP_INSTANCE=$(GNUSTEP_INSTANCE) \ GNUSTEP_OPERATION=compile \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) internal-subproject-compile: $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) endif # We need to depend on SUBPROJECT_OBJ_FILES to account for sub-subprojects. $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT): $(OBJ_FILES_TO_LINK) ifeq ($(OBJ_FILES_TO_LINK),) $(WARNING_EMPTY_LINKING) endif $(ECHO_LINKING)$(OBJ_MERGE_CMD)$(END_ECHO) # # Build-header target for framework subprojects # # If we are called with OWNING_PROJECT_HEADER_DIR_NAME which is not empty, # we need to copy our headers into that directory during the # build-headers stage, and to disable installation/uninstallation of # headers. # ifneq ($(OWNING_PROJECT_HEADER_DIR_NAME),) .PHONY: internal-subproject-build-headers # NB: See headers.make for an explanation of how HEADER_SUBDIRS is # computed. OWNING_PROJECT_HEADER_DIR = $(GNUSTEP_BUILD_DIR)/$(OWNING_PROJECT_HEADER_DIR_NAME) HEADER_FILES = $($(GNUSTEP_INSTANCE)_HEADER_FILES) HEADER_SUBDIRS = $(strip $(filter-out ./,$(sort $(dir $(HEADER_FILES))))) HEADER_FILES_DIR = $($(GNUSTEP_INSTANCE)_HEADER_FILES_DIR) ifeq ($(HEADER_FILES_DIR),) HEADER_FILES_DIR = . endif OWNING_PROJECT_HEADER_FILES = $(addprefix $(OWNING_PROJECT_HEADER_DIR)/,$(HEADER_FILES)) OWNING_PROJECT_HEADER_SUBDIRS = $(addprefix $(OWNING_PROJECT_HEADER_DIR)/,$(HEADER_SUBDIRS)) # 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 internal-subproject-build-headers:: $(OWNING_PROJECT_HEADER_DIR) \ $(OWNING_PROJECT_HEADER_SUBDIRS) \ $(OWNING_PROJECT_HEADER_FILES) $(OWNING_PROJECT_HEADER_DIR): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) $(OWNING_PROJECT_HEADER_SUBDIRS): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) $(OWNING_PROJECT_HEADER_DIR)/%.h: $(HEADER_FILES_DIR)/%.h $(ECHO_CREATING)$(INSTALL_DATA) $< $@$(END_ECHO) # End FRAMEWORK code else # Start no FRAMEWORK code # # Installation targets - we only need to install headers and only # if this is not in a framework # include $(GNUSTEP_MAKEFILES)/Instance/Shared/headers.make internal-subproject-install_:: shared-instance-headers-install internal-subproject-uninstall_:: shared-instance-headers-uninstall endif # no FRAMEWORK # # A subproject can have resources, which it stores into the # Resources/Subproject directory. If you want your subproject # to have resources, you need to put # xxx_HAS_RESOURCE_BUNDLE = yes # in your GNUmakefile. The project which owns us can then # copy recursively this directory into its own Resources directory # (that is done automatically if the project uses # Instance/Shared/bundle.make to manage its own resource bundle) # ifeq ($($(GNUSTEP_INSTANCE)_HAS_RESOURCE_BUNDLE), yes) GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(GNUSTEP_BUILD_DIR)/Resources/Subproject include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make # Only build, not install internal-subproject-all_:: shared-instance-bundle-all endif include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make ��������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/objc.make���������������������������������������������������������������0000664�0001750�0001750�00000006633�11336101653�017263� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/objc.make # # Instance Makefile rules to build ObjC-based (but not GNUstep) programs. # # Copyright (C) 1997, 2001 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The name of the ObjC program(s) is in the OBJC_PROGRAM_NAME variable. # # xxx We need to prefix the target name when cross-compiling # ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif .PHONY: internal-objc_program-all_ \ internal-objc_program-install_ \ internal-objc_program-uninstall_ \ internal-objc_program-compile # This is the directory where the objc programs get installed. If you # don't specify a directory they will get installed in the Tools # directory in GNUSTEP_LOCAL_ROOT. ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),) OBJC_PROGRAM_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR) endif ifeq ($(OBJC_PROGRAM_INSTALL_DIR),) OBJC_PROGRAM_INSTALL_DIR = $(GNUSTEP_TOOLS) endif ALL_OBJC_LIBS = \ $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) \ $(TARGET_SYSTEM_LIBS) ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) # Standard building internal-objc_program-all_:: \ $(GNUSTEP_OBJ_INSTANCE_DIR) \ $(OBJ_DIRS_TO_CREATE) \ $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT) else # Parallel building. The actual compilation is delegated to a # sub-make invocation where _GNUSTEP_MAKE_PARALLEL is set to yet. # That sub-make invocation will compile files in parallel. internal-objc_program-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) $(OBJ_DIRS_TO_CREATE) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-objc_program-compile \ GNUSTEP_TYPE=$(GNUSTEP_TYPE) \ GNUSTEP_INSTANCE=$(GNUSTEP_INSTANCE) \ GNUSTEP_OPERATION=compile \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) internal-objc_program-compile: $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT) endif $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT): $(OBJ_FILES_TO_LINK) ifeq ($(OBJ_FILES_TO_LINK),) $(WARNING_EMPTY_LINKING) endif $(ECHO_LINKING)$(LD) $(ALL_LDFLAGS) $(CC_LDFLAGS) -o $(LDOUT)$@ \ $(OBJ_FILES_TO_LINK) $(ALL_LIB_DIRS) $(ALL_OBJC_LIBS)$(END_ECHO) internal-objc_program-install_:: $(OBJC_PROGRAM_INSTALL_DIR)/$(GNUSTEP_TARGET_LDIR) $(ECHO_INSTALLING)$(INSTALL_PROGRAM) -m 0755 \ $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT) \ $(OBJC_PROGRAM_INSTALL_DIR)/$(GNUSTEP_TARGET_LDIR)$(END_ECHO) $(OBJC_PROGRAM_INSTALL_DIR)/$(GNUSTEP_TARGET_LDIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) internal-objc_program-uninstall_:: $(ECHO_UNINSTALLING)rm -f $(OBJC_PROGRAM_INSTALL_DIR)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)$(EXEEXT)$(END_ECHO) include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make �����������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/java-tool.make����������������������������������������������������������0000664�0001750�0001750�00000006643�10711636501�020244� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # Instance/java-tool.make # # Instance makefile rules to build Java command-line tools. # # Copyright (C) 2001 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 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. # # The name of the tools is in the JAVA_TOOL_NAME variable. # The main class (the one implementing main) is in the # xxx_PRINCIPAL_CLASS variable. # ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif .PHONY: internal-java_tool-all_ \ internal-java_tool-clean \ internal-java_tool-distclean \ internal-java_tool-install_ \ internal-java_tool-uninstall_ \ _FORCE # This is the directory where the shell wrapper gets installed. You # want this on your path! If you don't specify a directory they will # get installed in $(GNUSTEP_LOCAL_ROOT)/Tools/. ifeq ($(JAVA_TOOL_INSTALLATION_DIR),) JAVA_TOOL_INSTALLATION_DIR = $(GNUSTEP_TOOLS) endif # This is the directory where the java classes get installed. # Normally this is /usr/GNUstep/Local/Library/Libraries/Java/ ifeq ($(JAVA_INSTALLATION_DIR),) JAVA_INSTALLATION_DIR = $(GNUSTEP_JAVA) endif GNUSTEP_SHARED_JAVA_INSTALLATION_DIR = $(JAVA_INSTALLATION_DIR) include $(GNUSTEP_MAKEFILES)/Instance/Shared/java.make internal-java_tool-all_:: shared-instance-java-all internal-java_tool-install_:: shared-instance-java-install \ $(JAVA_TOOL_INSTALLATION_DIR)/$(GNUSTEP_INSTANCE) PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS)) ifeq ($(PRINCIPAL_CLASS),) $(warning You must specify PRINCIPAL_CLASS, which should be set to the full classname) # But then, we are good, and try guessing. This will only work if the class # is not in a package though, which sounds unlikely. PRINCIPAL_CLASS = $(word 1 $(JAVA_OBJ_FILES)) endif # Remove an eventual extension (.class or .java) from PRINCIPAL_CLASS; # only take the first word of it NORMALIZED_PRINCIPAL_CLASS = $(basename $(word 1 $(PRINCIPAL_CLASS))) # Escape '/' so it can be passes to sed ESCAPED_PRINCIPAL_CLASS = $(subst /,\/,$(PRINCIPAL_CLASS)) # Always rebuild this because if the PRINCIPAL_CLASS changes... $(JAVA_TOOL_INSTALLATION_DIR)/$(GNUSTEP_INSTANCE): _FORCE $(ECHO_NOTHING)sed -e 's/JAVA_OBJ_FILE/$(ESCAPED_PRINCIPAL_CLASS)/g' \ $(GNUSTEP_MAKEFILES)/java-executable.template \ > $(JAVA_TOOL_INSTALLATION_DIR)/$(GNUSTEP_INSTANCE); \ chmod a+x $(JAVA_TOOL_INSTALLATION_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)$(CHOWN) $(CHOWN_TO) \ $(JAVA_TOOL_INSTALLATION_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) endif _FORCE:: internal-java_tool-uninstall_:: shared-instance-java-uninstall $(ECHO_UNINSTALLING)rm -f $(JAVA_TOOL_INSTALLATION_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) internal-java_tool-clean:: shared-instance-java-clean internal-java_tool-distclean:: ���������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/Documentation/����������������������������������������������������������0000775�0001750�0001750�00000000000�13074115160�020307� 5����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/Documentation/autogsdoc.make��������������������������������������������0000664�0001750�0001750�00000005056�10711636501�023146� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/Documentation/autogsdoc.make # # Instance Makefile rules to build Autogsdoc documentation. # # Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(BASE_MAKE_LOADED), yes) ifeq ($(GNUSTEP_BASE_HAVE_LIBXML), 1) ifeq ($(AUTOGSDOC),) AUTOGSDOC = autogsdoc endif AGSDOC_FLAGS = $($(GNUSTEP_INSTANCE)_AGSDOC_FLAGS) INTERNAL_AGSDOCFLAGS = -Project $(GNUSTEP_INSTANCE) INTERNAL_AGSDOCFLAGS += -DocumentationDirectory $(GNUSTEP_INSTANCE) INTERNAL_AGSDOCFLAGS += $(AGSDOC_FLAGS) internal-doc-all_:: $(GNUSTEP_INSTANCE)/dependencies # Only include (and implicitly automatically rebuild if needed) the # dependencies file when we are compiling. Ignore it when cleaning or # installing. ifeq ($(GNUSTEP_OPERATION), all) -include $(GNUSTEP_INSTANCE)/dependencies endif $(GNUSTEP_INSTANCE)/dependencies: $(ECHO_AUTOGSDOC)$(AUTOGSDOC) $(INTERNAL_AGSDOCFLAGS) -MakeDependencies $(GNUSTEP_INSTANCE)/dependencies $(AGSDOC_FILES)$(END_ECHO) internal-doc-install_:: $(ECHO_INSTALLING)rm -rf $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE); \ $(TAR) cfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list $(GNUSTEP_INSTANCE) | \ (cd $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR); $(TAR) xf -)$(END_ECHO) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) endif internal-doc-uninstall_:: -$(ECHO_UNINSTALLING)rm -f $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) internal-doc-clean:: -$(ECHO_NOTHING)rm -Rf $(GNUSTEP_INSTANCE)$(END_ECHO) else internal-doc-all_:: @echo "No libxml - processing of autogsdoc files skipped" endif # GNUSTEP_BASE_HAVE_LIBXML else internal-doc-all_:: @echo "GNUstep-Base not installed - processing of autogsdoc files skipped" @echo "If you want to generate documentation, install GNUstep-base first" @echo "and then rerun make here" endif # BASE_MAKE_LOADED ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/Documentation/javadoc.make����������������������������������������������0000664�0001750�0001750�00000005460�11344477626�022602� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/Documentation/javadoc.make # # Instance Makefile rules to build JavaDoc documentation. # # Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. JAVADOC_SOURCEPATH = $($(GNUSTEP_INSTANCE)_JAVADOC_SOURCEPATH) .PHONY: generate-javadoc ifeq ($(JAVADOC),) JAVADOC = $(JAVA_HOME)/bin/javadoc endif ifeq ($(JAVADOC_SOURCEPATH),) INTERNAL_JAVADOCFLAGS = -sourcepath ./ else INTERNAL_JAVADOCFLAGS = -sourcepath ./:$(strip $(JAVADOC_SOURCEPATH)) endif ifneq ($(messages),yes) INTERNAL_JAVADOCFLAGS += -quiet endif ALL_JAVADOCFLAGS = $(INTERNAL_CLASSPATHFLAGS) $(INTERNAL_JAVADOCFLAGS) \ $(ADDITIONAL_JAVADOCFLAGS) $(AUXILIARY_JAVADOCFLAGS) # incremental compilation with javadoc is not supported - you can only # build once, or always. by default we build only once - use # `JAVADOC_BUILD_ALWAYS = yes' to force rebuilding it always # Recognize both 'YES' and 'yes' ifeq ($(JAVADOC_BUILD_ALWAYS),YES) JAVADOC_BUILD_ALWAYS = yes endif ifneq ($(JAVADOC_BUILD_ALWAYS),yes) # Build only once internal-doc-all_:: $(GNUSTEP_INSTANCE)/index.html $(GNUSTEP_INSTANCE)/index.html: $(ECHO_JAVADOC)$(MKDIRS) $(GNUSTEP_INSTANCE); \ $(JAVADOC) $(ALL_JAVADOCFLAGS) $(JAVADOC_FILES) -d $(GNUSTEP_INSTANCE)$(END_ECHO) else # Build always internal-doc-all_:: generate-javadoc generate-javadoc: $(ECHO_JAVADOC)$(MKDIRS) $(GNUSTEP_INSTANCE); \ $(JAVADOC) $(ALL_JAVADOCFLAGS) $(JAVADOC_FILES) -d $(GNUSTEP_INSTANCE)$(END_ECHO) endif # # Javadoc installation # ifneq ($(JAVADOC_FILES),) internal-doc-install_:: $(ECHO_INSTALLING)rm -rf $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE); \ $(TAR) cfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list $(GNUSTEP_INSTANCE) | \ (cd $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR); $(TAR) xf -)$(END_ECHO) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) endif internal-doc-uninstall_:: -$(ECHO_UNINSTALLING)rm -f $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) endif # JAVADOC_FILES internal-doc-clean:: -$(ECHO_NOTHING)rm -Rf $(GNUSTEP_INSTANCE)$(END_ECHO) internal-doc-distclean:: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/Documentation/gsdoc.make������������������������������������������������0000664�0001750�0001750�00000003205�10711636501�022247� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/Documentation/gsdoc.make # # Instance Makefile rules to build gsdoc documentation. # # Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 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 # %.html file, we rebuild them all. GSDOC_OBJECT_FILES = $(patsubst %.gsdoc,%.html,$(GSDOC_FILES)) internal-doc-all_:: $(GSDOC_OBJECT_FILES) $(GSDOC_OBJECT_FILES): $(GSDOC_FILES) autogsdoc $(GSDOC_FILES) internal-doc-install_:: \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE) $(ECHO_INSTALLING)$(INSTALL_DATA) $(GSDOC_OBJECT_FILES) \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) internal-doc-uninstall_:: $(ECHO_UNINSTALLING)rm -f \ $(addprefix $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/\ $(GNUSTEP_INSTANCE)/,$(GSDOC_OBJECT_FILES))$(END_ECHO) internal-doc-clean:: -$(ECHO_NOTHING)rm -f $(GSDOC_OBJECT_FILES)$(END_ECHO) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/Documentation/texi.make�������������������������������������������������0000664�0001750�0001750�00000015045�12715423750�022134� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/Documentation/texi.make # # Instance Makefile rules to build Texinfo documentation. # # Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # To override GNUSTEP_MAKEINFO, define it differently in # GNUmakefile.preamble ifeq ($(GNUSTEP_MAKEINFO),) GNUSTEP_MAKEINFO = makeinfo endif # To override GNUSTEP_MAKEINFO_FLAGS, define it differently in # GNUmakefile.premable. To only add new flags to the existing ones, # set ADDITIONAL_MAKEINFO_FLAGS in GNUmakefile.preamble. ifeq ($(GNUSTEP_MAKEINFO_FLAGS),) GNUSTEP_MAKEINFO_FLAGS = -D NO-TEXI2HTML endif ifeq ($(GNUSTEP_MAKETEXT),) GNUSTEP_MAKETEXT = makeinfo endif ifeq ($(GNUSTEP_MAKETEXT_FLAGS),) GNUSTEP_MAKETEXT_FLAGS = -D NO-TEXI2HTML -D TEXT-ONLY --no-header --no-split endif ifeq ($(GNUSTEP_TEXI2DVI),) GNUSTEP_TEXI2DVI = texi2dvi endif ifeq ($(GNUSTEP_TEXI2DVI_FLAGS),) GNUSTEP_TEXI2DVI_FLAGS = endif ifeq ($(GNUSTEP_TEXI2PDF),) GNUSTEP_TEXI2PDF = texi2pdf endif ifeq ($(GNUSTEP_TEXI2PDF_FLAGS),) GNUSTEP_TEXI2PDF_FLAGS = endif ifeq ($(GNUSTEP_TEXI2HTML),) GNUSTEP_TEXI2HTML = makeinfo --html endif ifeq ($(GNUSTEP_TEXI2HTML_FLAGS),) GNUSTEP_TEXI2HTML_FLAGS = endif internal-doc-all_:: $(GNUSTEP_INSTANCE).info \ $(GNUSTEP_INSTANCE).pdf \ $(GNUSTEP_INSTANCE)/index.html internal-textdoc-all_:: $(GNUSTEP_INSTANCE) # If we don't have these programs, just don't build them but don't # abort the make. This allows projects to automatically build documentation # without worring that the build will crash if the user doesn't have the # doc programs. Also don't install them if they haven't been generated. $(GNUSTEP_INSTANCE).info: $(TEXI_FILES) -$(GNUSTEP_MAKEINFO) $(GNUSTEP_MAKEINFO_FLAGS) $(ADDITIONAL_MAKEINFO_FLAGS) \ -o $@ $(GNUSTEP_INSTANCE).texi $(GNUSTEP_INSTANCE).dvi: $(TEXI_FILES) -$(GNUSTEP_TEXI2DVI) $(GNUSTEP_TEXI2DVI_FLAGS) $(ADDITIONAL_TEXI2DVI_FLAGS) \ $(GNUSTEP_INSTANCE).texi $(GNUSTEP_INSTANCE).ps: $(GNUSTEP_INSTANCE).dvi -$(GNUSTEP_DVIPS) $(GNUSTEP_DVIPS_FLAGS) $(ADDITIONAL_DVIPS_FLAGS) \ $(GNUSTEP_INSTANCE).dvi -o $@ $(GNUSTEP_INSTANCE).pdf: $(TEXI_FILES) -$(GNUSTEP_TEXI2PDF) $(GNUSTEP_TEXI2PDF_FLAGS) $(ADDITIONAL_TEXI2PDF_FLAGS) \ $(GNUSTEP_INSTANCE).texi -o $@ # Some versions of texi2html placed the html files in a subdirectory, # so after running it we try to move any from the subdirectory to # where they are expected. $(GNUSTEP_INSTANCE)/index.html: $(TEXI_FILES) -$(GNUSTEP_TEXI2HTML) \ $(GNUSTEP_TEXI2HTML_FLAGS) $(ADDITIONAL_TEXI2HTML_FLAGS) \ $(GNUSTEP_INSTANCE).texi; \ if [ -f $(GNUSTEP_INSTANCE)/$(GNUSTEP_INSTANCE)_toc.html ]; \ then \ mv $(GNUSTEP_INSTANCE)/$(GNUSTEP_INSTANCE).html .; \ mv $(GNUSTEP_INSTANCE)/$(GNUSTEP_INSTANCE)_*.html .; \ rmdir $(GNUSTEP_INSTANCE)/$(GNUSTEP_INSTANCE); \ fi $(GNUSTEP_INSTANCE): $(TEXI_FILES) $(TEXT_MAIN) -$(GNUSTEP_MAKETEXT) $(GNUSTEP_MAKETEXT_FLAGS) $(ADDITIONAL_MAKETEXT_FLAGS) \ -o $@ $(TEXT_MAIN) internal-doc-clean:: -$(ECHO_NOTHING) rm -f $(GNUSTEP_INSTANCE).aux \ $(GNUSTEP_INSTANCE).cp \ $(GNUSTEP_INSTANCE).cps \ $(GNUSTEP_INSTANCE).dvi \ $(GNUSTEP_INSTANCE).fn \ $(GNUSTEP_INSTANCE).info* \ $(GNUSTEP_INSTANCE).ky \ $(GNUSTEP_INSTANCE).log \ $(GNUSTEP_INSTANCE).pg \ $(GNUSTEP_INSTANCE).ps \ $(GNUSTEP_INSTANCE).pdf \ $(GNUSTEP_INSTANCE).toc \ $(GNUSTEP_INSTANCE).tp \ $(GNUSTEP_INSTANCE).vr \ $(GNUSTEP_INSTANCE).vrs \ $(GNUSTEP_INSTANCE).html \ $(GNUSTEP_INSTANCE)_*.html \ $(GNUSTEP_INSTANCE).ps.gz \ $(GNUSTEP_INSTANCE).tar.gz \ $(GNUSTEP_INSTANCE)/*$(END_ECHO) -$(ECHO_NOTHING) rmdir $(GNUSTEP_INSTANCE) $(END_ECHO) # NB: Only install doc files if they have been generated # We install all info files in the same directory, which is # GNUSTEP_DOC_INFO. TODO: I think we should run # install-info too - to keep up-to-date the dir index in that # directory. internal-doc-install_:: $(GNUSTEP_DOC_INFO) if [ -f $(GNUSTEP_INSTANCE).pdf ]; then \ $(INSTALL_DATA) $(GNUSTEP_INSTANCE).pdf \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR); \ fi if [ -f $(GNUSTEP_INSTANCE).info ]; then \ $(INSTALL_DATA) $(GNUSTEP_INSTANCE).info* $(GNUSTEP_DOC_INFO); \ fi if [ -f i$(GNUSTEP_INSTANCE)_toc.html ]; then \ $(INSTALL_DATA) $(GNUSTEP_INSTANCE)_*.html \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR) || true ; \ fi if [ -f $(GNUSTEP_INSTANCE)/index.html ]; then \ $(MKINSTALLDIRS) $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE); \ $(INSTALL_DATA) $(GNUSTEP_INSTANCE)/*.html \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE); \ fi $(GNUSTEP_DOC_INFO): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) internal-doc-uninstall_:: rm -f \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE).pdf rm -f \ $(GNUSTEP_DOC_INFO)/$(GNUSTEP_INSTANCE).info* rm -f \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)_*.html rm -f \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE).html rm -f \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)/*.html # # textdoc targets - these should be merged with the doc targets # # Make sure we don't install only files that have been generated! internal-textdoc-install_:: $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR) $(ECHO_NOTHING)if [ -f $(GNUSTEP_INSTANCE) ]; then \ $(INSTALL_DATA) $(GNUSTEP_INSTANCE) $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR); \ else \ $(ALWAYS_INSIDE_ECHO_MISSING_DOCUMENTATION) \ fi$(END_ECHO) internal-textdoc-uninstall_:: $(ECHO_UNINSTALLING)rm -f \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) internal-textdoc-clean:: $(ECHO_NOTHING) rm -f $(GNUSTEP_INSTANCE) $(END_ECHO) internal-textdoc-distclean:: �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/Documentation/install_files.make����������������������������������������0000664�0001750�0001750�00000002511�10711636501�023777� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/Documentation/install_files.make # # Instance Makefile rules to install pre-made documentation # # Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. internal-doc-install_:: $(ECHO_INSTALLING)for file in $($(GNUSTEP_INSTANCE)_INSTALL_FILES) __done; do \ if [ $$file != __done ]; then \ $(INSTALL_DATA) $$file \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$$file ; \ fi; \ done$(END_ECHO) internal-doc-uninstall_:: $(ECHO_UNINSTALLING)for file in $($(GNUSTEP_INSTANCE)_INSTALL_FILES) __done; do \ if [ $$file != __done ]; then \ rm -f $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$$file ; \ fi; \ done$(END_ECHO) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/Documentation/latex.make������������������������������������������������0000664�0001750�0001750�00000006442�10711636501�022273� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/Documentation/latex.make # # Instance Makefile rules to build LaTeX documentation. # # Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. $(GNUSTEP_INSTANCE).dvi: $(LATEX_FILES) latex $(GNUSTEP_INSTANCE).tex latex $(GNUSTEP_INSTANCE).tex $(GNUSTEP_INSTANCE).ps: $(GNUSTEP_INSTANCE).dvi $(GNUSTEP_DVIPS) $(GNUSTEP_DVIPS_FLAGS) $(ADDITIONAL_DVIPS_FLAGS) \ $(GNUSTEP_INSTANCE).dvi -o $@ $(GNUSTEP_INSTANCE).ps.gz: $(GNUSTEP_INSTANCE).ps gzip $(GNUSTEP_INSTANCE).ps -c > $(GNUSTEP_INSTANCE).ps.gz internal-doc-all_:: $(GNUSTEP_INSTANCE).ps.gz internal-doc-install_:: $(INSTALL_DATA) $(GNUSTEP_INSTANCE).ps \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR) internal-doc-uninstall_:: $(ECHO_UNINSTALLING)rm -f \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE).ps$(END_ECHO) internal-doc-clean:: -$(ECHO_NOTHING)rm -f $(GNUSTEP_INSTANCE).aux \ $(GNUSTEP_INSTANCE).cp \ $(GNUSTEP_INSTANCE).cps \ $(GNUSTEP_INSTANCE).dvi \ $(GNUSTEP_INSTANCE).fn \ $(GNUSTEP_INSTANCE).info* \ $(GNUSTEP_INSTANCE).ky \ $(GNUSTEP_INSTANCE).log \ $(GNUSTEP_INSTANCE).pg \ $(GNUSTEP_INSTANCE).ps \ $(GNUSTEP_INSTANCE).toc \ $(GNUSTEP_INSTANCE).tp \ $(GNUSTEP_INSTANCE).vr \ $(GNUSTEP_INSTANCE).vrs \ $(GNUSTEP_INSTANCE)_*.html \ $(GNUSTEP_INSTANCE).ps.gz \ $(GNUSTEP_INSTANCE).tar.gz \ $(GNUSTEP_INSTANCE)/* \ *.aux$(END_ECHO) # # Targets built only if we can find `latex2html' # ifneq ($(LATEX2HTML),) HAS_LATEX2HTML = yes endif ifeq ($(HAS_LATEX2HTML),yes) internal-doc-all_:: $(GNUSTEP_INSTANCE).tar.gz $(GNUSTEP_INSTANCE)/$(GNUSTEP_INSTANCE).html: $(GNUSTEP_INSTANCE).dvi $(LATEX2HTML) $(GNUSTEP_INSTANCE) $(GNUSTEP_INSTANCE).tar.gz: $(GNUSTEP_INSTANCE)/$(GNUSTEP_INSTANCE).html $(TAR) cfzX $(GNUSTEP_INSTANCE).tar.gz $(GNUSTEP_MAKEFILES)/tar-exclude-list $(GNUSTEP_INSTANCE) internal-doc-install_:: $(INSTALL_DATA) $(GNUSTEP_INSTANCE)/*.html \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR) $(INSTALL_DATA) $(GNUSTEP_INSTANCE)/*.css \ $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR) # Yeah - I know - the following is dangerous if you have misused the # DOC_INSTALL_DIR - but it's the only way to do it internal-doc-uninstall_:: -$(ECHO_UNINSTALLING)rm -f $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/*.html; \ rm -f $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/*.css$(END_ECHO) internal-doc-distclean:: $(ECHO_NOTHING) if [ -d "$(GNUSTEP_INSTANCE)" ]; then \ rm -rf $(GNUSTEP_INSTANCE)/; \ fi$(END_ECHO) endif # LATEX2HTML ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/gswbundle.make����������������������������������������������������������0000664�0001750�0001750�00000023325�11433715150�020336� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # Instance/gswbundle.make # # Instance Makefile rules to build GNUstep web bundles. # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Manuel Guesdon <mguesdon@sbuilders.com> # Based on WOBundle.make by Helge Hess, MDlink online service center GmbH. # Based on bundle.make by Ovidiu Predescu <ovidiu@net-community.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(NEEDS_GUI),) NEEDS_GUI = no endif ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # FIXME - this file has not been updated to use Shared/bundle.make # because it is using symlinks rather than copying resources. # TODO: We should remove this makefile since it's not really supported. COMPONENTS = $($(GNUSTEP_INSTANCE)_COMPONENTS) WEBSERVER_RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_WEBSERVER_RESOURCE_FILES) LOCALIZED_WEBSERVER_RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_LOCALIZED_WEBSERVER_RESOURCE_FILES) WEBSERVER_RESOURCE_DIRS = $($(GNUSTEP_INSTANCE)_WEBSERVER_RESOURCE_DIRS) LOCALIZED_RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_LOCALIZED_RESOURCE_FILES) RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_RESOURCE_FILES) RESOURCE_DIRS = $($(GNUSTEP_INSTANCE)_RESOURCE_DIRS) include $(GNUSTEP_MAKEFILES)/Instance/Shared/headers.make ifeq ($(strip $(GSWBUNDLE_EXTENSION)),) GSWBUNDLE_EXTENSION = .gswbundle endif GSWBUNDLE_LD = $(BUNDLE_LD) GSWBUNDLE_LDFLAGS = $(BUNDLE_LDFLAGS) ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),) GSWBUNDLE_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR) endif ifeq ($(GSWBUNDLE_INSTALL_DIR),) GSWBUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARIES) endif # The name of the bundle is in the BUNDLE_NAME variable. # The list of languages the bundle is localized in are in xxx_LANGUAGES # The list of bundle resource file are in xxx_RESOURCE_FILES # The list of localized bundle resource file are in xxx_LOCALIZED_RESOURCE_FILES # The list of bundle resource directories are in xxx_RESOURCE_DIRS # The name of the principal class is xxx_PRINCIPAL_CLASS # The header files are in xxx_HEADER_FILES # 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 # where xxx is the bundle name # xxx_WEBSERVER_RESOURCE_DIRS <== # The list of localized application web server resource directories are in # xxx_LOCALIZED_WEBSERVER_RESOURCE_DIRS # where xxx is the application name <== .PHONY: internal-gswbundle-all_ \ internal-gswbundle-install_ \ internal-gswbundle-uninstall_ \ build-bundle-dir \ build-bundle \ gswbundle-components \ gswbundle-resource-files \ gswbundle-localized-resource-files \ gswbundle-webresource-dir \ gswbundle-webresource-files \ gswbundle-localized-webresource-files # On Solaris we don't need to specifies the libraries the bundle needs. # How about the rest of the systems? ALL_BUNDLE_LIBS is temporary empty. #ALL_GSWBUNDLE_LIBS = $(ADDITIONAL_GSW_LIBS) $(AUXILIARY_GSW_LIBS) $(GSW_LIBS) $(ALL_LIBS) internal-gswbundle-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) \ $(OBJ_DIRS_TO_CREATE) \ build-bundle-dir \ build-bundle GSWBUNDLE_DIR_NAME = $(GNUSTEP_INSTANCE:=$(GSWBUNDLE_EXTENSION)) GSWBUNDLE_DIR = $(GNUSTEP_BUILD_DIR)/$(GSWBUNDLE_DIR_NAME) GSWBUNDLE_FILE_NAME = \ $(GSWBUNDLE_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE) GSWBUNDLE_FILE = $(GNUSTEP_BUILD_DIR)/$(GSWBUNDLE_FILE_NAME) GSWBUNDLE_RESOURCE_DIRS = $(foreach d, $(RESOURCE_DIRS), $(GSWBUNDLE_DIR)/Resources/$(d)) GSWBUNDLE_WEBSERVER_RESOURCE_DIRS = $(foreach d, $(WEBSERVER_RESOURCE_DIRS), $(GSWBUNDLE_DIR)/Resources/WebServer/$(d)) build-bundle-dir: $(GSWBUNDLE_DIR)/Resources \ $(GSWBUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR) \ $(GSWBUNDLE_RESOURCE_DIRS) $(GSWBUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR): $(ECHO_CREATING)$(MKDIRS) $(GSWBUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR)$(END_ECHO) $(GSWBUNDLE_RESOURCE_DIRS): $(ECHO_CREATING)$(MKDIRS) $(GSWBUNDLE_RESOURCE_DIRS)$(END_ECHO) build-bundle: $(GSWBUNDLE_FILE) \ gswbundle-components \ gswbundle-resource-files \ gswbundle-localized-resource-files \ gswbundle-localized-webresource-files \ gswbundle-webresource-files $(GSWBUNDLE_FILE): $(OBJ_FILES_TO_LINK) ifeq ($(OBJ_FILES_TO_LINK),) $(WARNING_EMPTY_LINKING) endif $(ECHO_LINKING)$(GSWBUNDLE_LD) $(GSWBUNDLE_LDFLAGS) \ $(ALL_LDFLAGS) -o $(LDOUT)$(GSWBUNDLE_FILE) \ $(OBJ_FILES_TO_LINK) \ $(ALL_LIB_DIRS) $(ALL_GSWBUNDLE_LIBS)$(END_ECHO) gswbundle-components: $(GSWBUNDLE_DIR) ifneq ($(strip $(COMPONENTS)),) @(echo "Linking components into the bundle wrapper..."; \ cd $(GSWBUNDLE_DIR)/Resources; \ for component in $(COMPONENTS); do \ if [ -d ../../$$component ]; then \ $(LN_S) -f ../../$$component ./;\ fi; \ done; \ echo "Linking localized components into the bundle wrapper..."; \ for l in $(LANGUAGES); do \ if [ -d ../../$$l.lproj ]; then \ $(MKDIRS) $$l.lproj; \ cd $$l.lproj; \ for f in $(COMPONENTS); do \ if [ -d ../../../$$l.lproj/$$f ]; then \ $(LN_S) -f ../../../$$l.lproj/$$f .;\ fi;\ done;\ cd ..; \ fi;\ done) endif 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/; \ for ff in $(RESOURCE_FILES); do \ $(LN_S) -f ../../$$ff .;\ done) endif 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; \ for l in $(LANGUAGES); do \ if [ -d ../../$$l.lproj ]; then \ $(MKDIRS) $$l.lproj; \ cd $$l.lproj; \ for f in $(LOCALIZED_RESOURCE_FILES); do \ if [ -f ../../../$$l.lproj/$$f ]; then \ $(LN_S) -f ../../../$$l.lproj/$$f .;\ fi;\ done;\ cd ..;\ else\ echo "Warning - $$l.lproj not found - ignoring";\ fi;\ done) endif gswbundle-webresource-dir: $(ECHO_CREATING)$(MKDIRS) $(GSWBUNDLE_WEBSERVER_RESOURCE_DIRS)$(END_ECHO) gswbundle-webresource-files: $(GSWBUNDLE_DIR)/Resources/WebServer \ gswbundle-webresource-dir ifneq ($(strip $(WEBSERVER_RESOURCE_FILES)),) @(echo "Linking webserver resources into the application wrapper..."; \ cd $(GSWBUNDLE_DIR)/Resources/WebServer; \ for ff in $(WEBSERVER_RESOURCE_FILES); do \ $(LN_S) -f ../../WebServerResources/$$ff .;\ done) endif 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..."; \ cd $(GSWBUNDLE_DIR)/Resources/WebServer; \ for l in $(LANGUAGES); do \ if [ -d ../../WebServerResources/$$l.lproj ]; then \ $(MKDIRS) $$l.lproj; \ cd $$l.lproj; \ for f in $(LOCALIZED_WEBSERVER_RESOURCE_FILES); do \ if [ -f ../../../WebServerResources/$$l.lproj/$$f ]; then \ if [ ! -r $$f ]; then \ $(LN_S) ../../../WebServerResources/$$l.lproj/$$f $$f;\ fi;\ fi;\ done;\ cd ..; \ else \ echo "Warning - WebServerResources/$$l.lproj not found - ignoring";\ fi;\ done) endif PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS)) ifeq ($(PRINCIPAL_CLASS),) PRINCIPAL_CLASS = $(GNUSTEP_INSTANCE) endif $(GSWBUNDLE_DIR)/bundle-info.plist: $(GSWBUNDLE_DIR) @(cd $(GSWBUNDLE_DIR); $(LN_S) -f ../bundle-info.plist .) HAS_GSWCOMPONENTS = $($(GNUSTEP_INSTANCE)_HAS_GSWCOMPONENTS) $(GSWBUNDLE_DIR)/Resources/Info-gnustep.plist: $(GSWBUNDLE_DIR)/Resources $(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \ echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \ echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \ if [ "$(HAS_GSWCOMPONENTS)" != "" ]; then \ echo " HasGSWComponents = \"$(HAS_GSWCOMPONENTS)\";"; \ fi; \ echo "}") >$@$(END_ECHO) $(GSWBUNDLE_DIR)/Resources: $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) $(GSWBUNDLE_DIR)/Resources/WebServer: $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) internal-gswbundle-install_:: $(GSWBUNDLE_INSTALL_DIR) shared-instance-headers-install $(ECHO_INSTALLING)rm -rf $(GSWBUNDLE_INSTALL_DIR)/$(GSWBUNDLE_DIR_NAME); \ (cd $(GNUSTEP_BUILD_DIR); $(TAR) chX - $(GNUSTEP_MAKEFILES)/tar-exclude-list $(GSWBUNDLE_DIR_NAME)) | (cd $(GSWBUNDLE_INSTALL_DIR); $(TAR) xf -)$(END_ECHO) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $(GSWBUNDLE_INSTALL_DIR)/$(GSWBUNDLE_DIR_NAME)$(END_ECHO) endif ifeq ($(strip),yes) $(ECHO_STRIPPING)$(STRIP) $(GSWBUNDLE_INSTALL_DIR)/$(GSWBUNDLE_FILE_NAME)$(END_ECHO) endif $(GSWBUNDLE_INSTALL_DIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) internal-gswbundle-uninstall_:: shared-instance-headers-uninstall $(ECHO_UNINSTALLING)rm -rf $(GSWBUNDLE_INSTALL_DIR)/$(GSWBUNDLE_DIR_NAME)$(END_ECHO) include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/resource-set.make�������������������������������������������������������0000664�0001750�0001750�00000024264�13072377141�020774� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/resource-set.make # # Instance makefile rules to install resource files # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # # This is used to install a bunch of resource files somewhere. It is # different from a bundle without resources; in a bundle without # resources, we first create the bundle in the build directory, then # copy the build to the install dir, overwriting anything already # there. This instead will install the separate resource files # directly in the installation directory; it's more efficient as it # doesn't create a local bundle, and it doesn't overwrite an existing # bundle in the installation directory. # # # The name of the set of resources is in the RESOURCE_SET_NAME variable. # The list of resource files/dirs is in xxx_RESOURCE_FILES # The list of resource directories to create are in xxx_RESOURCE_DIRS # The directory in which to install the resources is in the # xxx_INSTALL_DIR # The directory in which the resources are found is # xxx_RESOURCE_FILES_DIR (defaults to ./ if omitted) # The list of LANGUAGES is in the xxx_LANGUAGES variable. # The list of localized files/dirs to be read # from $(xxx_RESOURCE_FILES_DIR)/yyy.lproj and copied # into $(RESOURCE_FILES_INSTALL_DIR)/yyy.lproj for each language yyy # is in the xxx_LOCALIZED_RESOURCE_FILES variable. # The list of localized dirs to be created empty inside each # $(RESOURCE_FILES_INSTALL_DIR)/yyy.lproj for each language yyy # is in the xxx_LOCALIZED_RESOURCE_DIRS variable. # # NB. Info-gnustep.plist and Info.plist are NOT considered resource files. # These files are generated automatically by certain projects, and if you # want to insert your own entries into Info0gnustep.plist or Info.plist # you should create a xxxInfo.plist file (where xxx is the application name) # in the same directory as your makefile, and gnustep-make will automatically # read it and merge it into the generated Info-gnustep.plist. # For more detail, see rules.make .PHONY: internal-resource_set-install_ \ internal-resource_set-uninstall_ # # Determine where to install. # By default, install into GNUSTEP_RESOURCES/GNUSTEP_INSTANCE # ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),) RESOURCE_FILES_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR) endif ifeq ($(RESOURCE_FILES_INSTALL_DIR),) RESOURCE_FILES_INSTALL_DIR = $(GNUSTEP_RESOURCES)/$(GNUSTEP_INSTANCE) endif # Determine the dir to take the resources from RESOURCE_FILES_DIR = $($(GNUSTEP_INSTANCE)_RESOURCE_FILES_DIR) ifeq ($(RESOURCE_FILES_DIR),) RESOURCE_FILES_DIR = ./ endif # Determine the list of resource files RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_RESOURCE_FILES) RESOURCE_DIRS = $($(GNUSTEP_INSTANCE)_RESOURCE_DIRS) ifneq ($(RESOURCE_DIRS),) # Rule to build the additional installation dirs $(addprefix $(RESOURCE_FILES_INSTALL_DIR)/,$(RESOURCE_DIRS)): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $@$(END_ECHO) endif endif # Rule to build the installation dir $(RESOURCE_FILES_INSTALL_DIR): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $@$(END_ECHO) endif # Determine the list of localized resource files LOCALIZED_RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_LOCALIZED_RESOURCE_FILES) LOCALIZED_RESOURCE_DIRS = $($(GNUSTEP_INSTANCE)_LOCALIZED_RESOURCE_DIRS) ifneq ($(LOCALIZED_RESOURCE_DIRS),) # The following expression will create all the # RESOURCE_FILES_INSTALL_DIR/LANGUAGE/LOCALIZED_RESOURCE_DIR that we # need to build. $(foreach LANGUAGE,$(LANGUAGES),$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/$(LANGUAGE), $(LOCALIZED_RESOURCE_DIRS))): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $@$(END_ECHO) endif endif # # We provide two different algorithms of installing resource files. # ifeq ($(GNUSTEP_DEVELOPER),) # Standard one - just run a subshell and loop, and install everything. internal-resource_set-install_: \ $(RESOURCE_FILES_INSTALL_DIR) \ $(addprefix $(RESOURCE_FILES_INSTALL_DIR)/,$(RESOURCE_DIRS)) \ $(foreach LANGUAGE,$(LANGUAGES),$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/$(LANGUAGE), $(LOCALIZED_RESOURCE_DIRS))) ifneq ($(RESOURCE_FILES),) $(ECHO_NOTHING)for f in $(RESOURCE_FILES); do \ if [ -f $(RESOURCE_FILES_DIR)/$$f -o -d $(RESOURCE_FILES_DIR)/$$f ]; then \ rm -rf $(RESOURCE_FILES_INSTALL_DIR)/$$f;\ cp -fr $(RESOURCE_FILES_DIR)/$$f \ $(RESOURCE_FILES_INSTALL_DIR)/$$f; \ else \ echo "Warning: $$f not found - ignoring"; \ fi; \ done$(END_ECHO) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)for f in $(RESOURCE_FILES); do \ if [ -f $(RESOURCE_FILES_DIR)/$$f -o -d $(RESOURCE_FILES_DIR)/$$f ]; then \ $(CHOWN) -R $(CHOWN_TO) $(RESOURCE_FILES_INSTALL_DIR)/$$f; \ fi; \ done$(END_ECHO) endif endif ifneq ($(LOCALIZED_RESOURCE_FILES),) $(ECHO_NOTHING)for l in $(LANGUAGES); do \ if [ -d $(RESOURCE_FILES_DIR)/$$l.lproj ]; then \ $(MKINSTALLDIRS) $(RESOURCE_FILES_INSTALL_DIR)/$$l.lproj; \ for f in $(LOCALIZED_RESOURCE_FILES); do \ if [ -f $(RESOURCE_FILES_DIR)/$$l.lproj/$$f -o -d $(RESOURCE_FILES_DIR)$$l.lproj/$$f ]; then \ cp -fr $(RESOURCE_FILES_DIR)/$$l.lproj/$$f \ $(RESOURCE_FILES_INSTALL_DIR)/$$l.lproj; \ else \ echo "Warning: $(RESOURCE_FILES_DIR)/$$l.lproj/$$f not found - ignoring"; \ fi; \ done; \ else \ echo "Warning: $(RESOURCE_FILES_DIR)/$$l.lproj not found - ignoring"; \ fi; \ done$(END_ECHO) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)for l in $(LANGUAGES); do \ if [ -d $(RESOURCE_FILES_DIR)/$$l.lproj ]; then \ $(CHOWN) -R $(CHOWN_TO) $(RESOURCE_FILES_INSTALL_DIR)/$$l.lproj; \ for f in $(LOCALIZED_RESOURCE_FILES); do \ if [ -f $(RESOURCE_FILES_DIR)/$$l.lproj/$$f -o -d $(RESOURCE_FILES_DIR)/$$l.lproj/$$f ]; then \ $(CHOWN) -R $(CHOWN_TO) $(RESOURCE_FILES_INSTALL_DIR)/$$l.lproj/$$f; \ fi; \ done; \ fi; \ done$(END_ECHO) endif endif else # Following code turned on by setting GNUSTEP_DEVELOPER=yes in the shell # TODO/FIXME: Update the code; implement proper # LOCALIZED_RESOURCE_FILES that also allows directories etc. .PHONY: internal-resource-set-install-languages # One optimized for recurrent installations during development - this # rule installs a single file only if strictly needed $(RESOURCE_FILES_INSTALL_DIR)/% : $(RESOURCE_FILES_DIR)/% $(ECHO_NOTHING)cp -fr $< $(RESOURCE_FILES_DIR)$(END_ECHO) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $@$(END_ECHO) endif # This rule depends on having installed all files internal-resource_set-install_: \ $(RESOURCE_FILES_INSTALL_DIR) \ $(addprefix $(RESOURCE_FILES_INSTALL_DIR)/,$(RESOURCE_DIRS)) \ $(addprefix $(RESOURCE_FILES_INSTALL_DIR)/,$(RESOURCE_FILES)) \ internal-resource-set-install-languages ifeq ($(LOCALIZED_RESOURCE_FILES),) internal-resource-set-install-languages: else # Rule to build the language installation directories $(addsuffix .lproj,$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/,$(LANGUAGES))): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) # install the localized resources, checking the installation date by # using test -nt ... this doesn't seem to be easy to do using make # rules because we want to issue a warning if the directory/file can't # be found, rather than aborting with an error as make would do. internal-resource-set-install-languages: \ $(addsuffix .lproj,$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/,$(LANGUAGES))) $(ECHO_NOTHING)for l in $(LANGUAGES); do \ if [ -d $(RESOURCE_FILES_DIR)/$$l.lproj ]; then \ for f in $(LOCALIZED_RESOURCE_FILES); do \ if [ -f $(RESOURCE_FILES_DIR)/$$l.lproj/$$f ]; then \ if [ $(RESOURCE_FILES_DIR)/$$l.lproj -nt $(RESOURCE_FILES_INSTALL_DIR)/$$l.lproj/$$f ]; then \ $(INSTALL_DATA) $(RESOURCE_FILES_DIR)/$$l.lproj/$$f \ $(RESOURCE_FILES_INSTALL_DIR)/$$l.lproj; \ fi; \ else \ echo "Warning: $(RESOURCE_FILES_DIR)/$$l.lproj/$$f not found - ignoring"; \ fi; \ done; \ else \ echo "Warning: $(RESOURCE_FILES_DIR)/$$l.lproj not found - ignoring"; \ fi; \ done$(END_ECHO) endif # LOCALIZED_RESOURCE_FILES endif # Here we try to remove the directories that we created on install. # We use a plain rmdir to remove them; if you're manually installing # any files in them (eg, in an 'after-install' custom rule), you need # to make sure you remove them (in an 'before-uninstall' custom rule) internal-resource_set-uninstall_: ifneq ($(LOCALIZED_RESOURCE_FILES),) $(ECHO_NOTHING)for language in $(LANGUAGES); do \ for file in $(LOCALIZED_RESOURCE_FILES); do \ rm -rf $(RESOURCE_FILES_INSTALL_DIR)/$$language.lproj/$$file;\ done; \ done$(END_ECHO) endif ifneq ($(LOCALIZED_RESOURCE_DIRS),) -$(ECHO_NOTHING)for language in $(LANGUAGES); do \ for dir in $(LOCALIZED_RESOURCE_DIRS); do \ rmdir $(RESOURCE_FILES_INSTALL_DIR)/$$language.lproj/$$dir;\ done; \ done$(END_ECHO) endif ifneq ($(LOCALIZED_RESOURCE_FILES)$(LOCALIZED_RESOURCE_DIRS),) -$(ECHO_NOTHING)for language in $(LANGUAGES); do \ rmdir $(RESOURCE_FILES_INSTALL_DIR)/$$language.lproj; \ done$(END_ECHO) endif ifneq ($(RESOURCE_FILES),) $(ECHO_NOTHING)for file in $(RESOURCE_FILES); do \ rm -rf $(RESOURCE_FILES_INSTALL_DIR)/$$file ; \ done$(END_ECHO) endif ifneq ($(RESOURCE_DIRS),) -$(ECHO_NOTHING)for dir in $(RESOURCE_DIRS); do \ rmdir $(RESOURCE_FILES_INSTALL_DIR)/$$dir ; \ done$(END_ECHO) endif ifneq ($(RESOURCE_FILES)$(RESOURCE_DIRS),) -$(ECHO_NOTHING)rmdir $(RESOURCE_FILES_INSTALL_DIR)$(END_ECHO) endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/test-tool.make����������������������������������������������������������0000664�0001750�0001750�00000001772�11041141034�020265� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/test-tool.make # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Tools don't link against gui by default ifeq ($(NEEDS_GUI),) NEEDS_GUI = no endif ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # Just inherit the build rule from tool.make include $(GNUSTEP_MAKEFILES)/Instance/tool.make internal-test_tool-all_:: internal-tool-all_ ������gnustep-make-2.7.0/Instance/rules.make��������������������������������������������������������������0000664�0001750�0001750�00000053072�12445471664�017515� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # rules.make # # Makefile rules for the Instance invocation. # # Copyright (C) 1997, 2001, 2002 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Ovidiu Predescu <ovidiu@net-community.com> # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Every project should have its internal-xxx-all depend first on # before-$(GNUSTEP_INSTANCE)-all, and last on # after-$(GNUSTEP_INSTANCE)-all. We declare them here, empty, so that # the user can add them if he wants, but if he doesn't, make doesn't # complain about missing targets. # NB: internal-$(GNUSTEP_TYPE)-all_ should not be declared .PHONY # here, because it's not implemented here. (example of how could go # wrong otherwise: if say internal-clibrary-all_ depends on # internal-library-all_, both of them should be declared .PHONY, while # here we would only declare one of them .PHONY, so it should be done # by the project specific makefile fragments). .PHONY: \ internal-precompile-headers \ before-$(GNUSTEP_INSTANCE)-all after-$(GNUSTEP_INSTANCE)-all \ internal-$(GNUSTEP_TYPE)-all \ before-$(GNUSTEP_INSTANCE)-jar after-$(GNUSTEP_INSTANCE)-jar \ internal-$(GNUSTEP_TYPE)-jar \ before-$(GNUSTEP_INSTANCE)-install after-$(GNUSTEP_INSTANCE)-install \ internal-$(GNUSTEP_TYPE)-install \ before-$(GNUSTEP_INSTANCE)-uninstall after-$(GNUSTEP_INSTANCE)-uninstall \ internal-$(GNUSTEP_TYPE)-uninstall # By adding the line # xxx_COPY_INTO_DIR = ../Vanity.framework/Resources # to you GNUmakefile, you cause the after-xxx-all:: stage of # compilation of xxx to copy the created stuff into the *local* # directory ../Vanity.framework/Resources (this path should be # relative). It also disables installation of xxx. # # This is normally used, for example, to bundle a tool into a # framework. You compile the framework, then the tool, then you can # request the tool to be copied into the framework, becoming part of # the framework (it is installed with the framework etc). # COPY_INTO_DIR = $(strip $($(GNUSTEP_INSTANCE)_COPY_INTO_DIR)) # If COPY_INTO_DIR is non-empty, we'll execute below an additional # target at the end of compilation: # internal-$(GNUSTEP_TYPE)-copy_into_dir # Centrally disable standard installation if COPY_INTO_DIR is non-empty. ifneq ($(COPY_INTO_DIR),) $(GNUSTEP_INSTANCE)_STANDARD_INSTALL = no endif before-$(GNUSTEP_INSTANCE)-all:: after-$(GNUSTEP_INSTANCE)-all:: # Automatically run before-$(GNUSTEP_INSTANCE)-all before building, # and after-$(GNUSTEP_INSTANCE)-all after building. # The project-type specific makefile instance fragment only needs to provide # the internal-$(GNUSTEP_TYPE)-all_ rule. ifeq ($(COPY_INTO_DIR),) internal-$(GNUSTEP_TYPE)-all:: internal-precompile-headers \ before-$(GNUSTEP_INSTANCE)-all \ internal-$(GNUSTEP_TYPE)-all_ \ after-$(GNUSTEP_INSTANCE)-all else internal-$(GNUSTEP_TYPE)-all:: internal-precompile-headers \ before-$(GNUSTEP_INSTANCE)-all \ internal-$(GNUSTEP_TYPE)-all_ \ after-$(GNUSTEP_INSTANCE)-all \ internal-$(GNUSTEP_TYPE)-copy_into_dir # To copy into a dir, we always have to first make sure the dir exists :-) $(COPY_INTO_DIR): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) # The specific project-type makefiles will add more commands. internal-$(GNUSTEP_TYPE)-copy_into_dir:: $(COPY_INTO_DIR) endif before-$(GNUSTEP_INSTANCE)-jar:: after-$(GNUSTEP_INSTANCE)-jar:: before-$(GNUSTEP_INSTANCE)-install:: after-$(GNUSTEP_INSTANCE)-install:: before-$(GNUSTEP_INSTANCE)-uninstall:: after-$(GNUSTEP_INSTANCE)-uninstall:: # By adding the line # xxxx_STANDARD_INSTALL = no # to your GNUmakefile, you can disable the standard installation code # for a certain GNUSTEP_INSTANCE. This can be useful if you are # installing manually in some other way (or for some other reason you # don't want installation to be performed ever) and don't want the # standard installation to be performed. Please note that # before-xxx-install and after-xxx-install are still executed, so if # you want, you can add your code in those targets to perform your # custom installation. ifeq ($($(GNUSTEP_INSTANCE)_STANDARD_INSTALL),no) internal-$(GNUSTEP_TYPE)-install:: before-$(GNUSTEP_INSTANCE)-install \ after-$(GNUSTEP_INSTANCE)-install @echo "Skipping standard installation of $(GNUSTEP_INSTANCE) as requested by makefile" internal-$(GNUSTEP_TYPE)-uninstall:: before-$(GNUSTEP_INSTANCE)-uninstall \ after-$(GNUSTEP_INSTANCE)-uninstall @echo "Skipping standard uninstallation of $(GNUSTEP_INSTANCE) as requested by makefile" else # By adding an xxx_INSTALL_DIRS variable you can request additional # installation directories to be created before the first installation # target is executed. You can also have general # ADDITIONAL_INSTALL_DIRS directories that are always created before # install is executed; this is done top-level in the Master # invocation. $($(GNUSTEP_INSTANCE)_INSTALL_DIRS): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) internal-$(GNUSTEP_TYPE)-install:: $($(GNUSTEP_INSTANCE)_INSTALL_DIRS) \ before-$(GNUSTEP_INSTANCE)-install \ internal-$(GNUSTEP_TYPE)-install_ \ after-$(GNUSTEP_INSTANCE)-install # Here we remove the xxx_INSTALL_DIRS of this specific instance. The # global ADDITIONAL_INSTALL_DIRS are removed in the top-level Master # invocation. If we were to remove all of ADDITIONAL_INSTALL_DIRS # here, we'd be doing that at every single uninstall target. internal-$(GNUSTEP_TYPE)-uninstall:: before-$(GNUSTEP_INSTANCE)-uninstall \ internal-$(GNUSTEP_TYPE)-uninstall_ \ after-$(GNUSTEP_INSTANCE)-uninstall ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIRS),) -$(ECHO_NOTHING)for dir in $($(GNUSTEP_INSTANCE)_INSTALL_DIRS); do \ rmdir $$dir ; \ done$(END_ECHO) endif endif # before-$(GNUSTEP_INSTANCE)-clean and similar for after and distclean # are not supported -- they wouldn't be executed most of the times, since # most of the times we don't perform an Instance invocation at all on # make clean or make distclean. # # The list of Objective-C source files to be compiled # are in the OBJC_FILES variable. # # The list of C source files to be compiled # are in the C_FILES variable. # # The list of C++ source files to be compiled # are in the CC_FILES variable. # # The list of Objective-C++ source files to be compiled # are in the OBJCC_FILES variable. # # The list of PSWRAP source files to be compiled # are in the PSWRAP_FILES variable. # # The list of JAVA source files to be compiled # are in the JAVA_FILES variable. # # The list of JAVA source files from which to generate jni headers # are in the JAVA_JNI_FILES variable. # # The list of WINDRES source files to be compiled # are in the WINDRES_FILES variable. # # # Please note the subtle difference: # # At `user' level (ie, in the user's GNUmakefile), # the SUBPROJECTS variable is reserved for use with aggregate.make # (this will be renamed to AGGREGATE_PROJECTS in a future version of # gnustep-make); the xxx_SUBPROJECTS variable is reserved for use with # subproject.make. # # This separation *must* be enforced strictly, because nothing prevents # a GNUmakefile from including both aggregate.make and subproject.make! # ifneq ($($(GNUSTEP_INSTANCE)_SUBPROJECTS),) SUBPROJECT_OBJ_FILES = $(foreach d, $($(GNUSTEP_INSTANCE)_SUBPROJECTS), \ $(addprefix $(GNUSTEP_BUILD_DIR)/$(d)/, $(GNUSTEP_OBJ_DIR_NAME)/$(SUBPROJECT_PRODUCT))) endif OBJC_OBJS = $(patsubst %.m,%.m$(OEXT),$($(GNUSTEP_INSTANCE)_OBJC_FILES)) OBJC_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_INSTANCE_DIR)/,$(OBJC_OBJS)) OBJCC_OBJS = $(patsubst %.mm,%.mm$(OEXT),$($(GNUSTEP_INSTANCE)_OBJCC_FILES)) OBJCC_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_INSTANCE_DIR)/,$(OBJCC_OBJS)) JAVA_OBJS = $(patsubst %.java,%.class,$($(GNUSTEP_INSTANCE)_JAVA_FILES)) JAVA_OBJ_FILES = $(JAVA_OBJS) JAVA_JNI_OBJS = $(patsubst %.java,%.h,$($(GNUSTEP_INSTANCE)_JAVA_JNI_FILES)) JAVA_JNI_OBJ_FILES = $(JAVA_JNI_OBJS) PSWRAP_C_FILES = $(patsubst %.psw,%.c,$($(GNUSTEP_INSTANCE)_PSWRAP_FILES)) PSWRAP_H_FILES = $(patsubst %.psw,%.h,$($(GNUSTEP_INSTANCE)_PSWRAP_FILES)) PSWRAP_OBJS = $(patsubst %.psw,%.c$(OEXT),$($(GNUSTEP_INSTANCE)_PSWRAP_FILES)) PSWRAP_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_INSTANCE_DIR)/,$(PSWRAP_OBJS)) C_OBJS = $(patsubst %.c,%.c$(OEXT),$($(GNUSTEP_INSTANCE)_C_FILES)) C_OBJ_FILES = $(PSWRAP_OBJ_FILES) $(addprefix $(GNUSTEP_OBJ_INSTANCE_DIR)/,$(C_OBJS)) # C++ files might end in .C, .cc, .cpp, .cxx, .cp so we replace multiple times CC_OBJS = $(patsubst %.cc,%.cc$(OEXT),\ $(patsubst %.C,%.C$(OEXT),\ $(patsubst %.cp,%.cp$(OEXT),\ $(patsubst %.cpp,%.cpp$(OEXT),\ $(patsubst %.cxx,%.cxx$(OEXT),$($(GNUSTEP_INSTANCE)_CC_FILES)))))) CC_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_INSTANCE_DIR)/,$(CC_OBJS)) ifeq ($(findstring mingw32, $(GNUSTEP_TARGET_OS)), mingw32) WINDRES_OBJS = $(patsubst %.rc,%.rc$(OEXT),$($(GNUSTEP_INSTANCE)_WINDRES_FILES)) WINDRES_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_INSTANCE_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 # into the result - please note that you can add to OBJ_FILES_TO_LINK # by defining manually some special xxx_OBJ_FILES for your # tool/app/whatever. Strip the variable so that by comparing # 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) $(OBJCC_OBJ_FILES) $(WINDRES_OBJ_FILES) $(SUBPROJECT_OBJ_FILES) $(OBJ_FILES)) # This is the subset of OBJ_FILES_TO_LINK that includes all the files # that we compile ourselves. Since we compile them ourselves, we are # responsible for creating the directories in which they are stored. # We exclude SUBPROJECT_OBJ_FILES since we are not responsible for # creating subproject's directories, and OBJ_FILES since again these # are obj files already available / built using some other process # over which we have no control, so we are not responsible for # creating the directories for them. OBJ_FILES_TO_LINK_THAT_WE_CREATE = $(strip $(C_OBJ_FILES) $(OBJC_OBJ_FILES) $(CC_OBJ_FILES) $(OBJCC_OBJ_FILES) $(WINDRES_OBJ_FILES)) # OBJ_DIRS_TO_CREATE is the set of all directories that contain # OBJ_FILES_TO_LINK. For example, if you want to compile # ./Source/File.m, you'd generate a obj/Tool/Source/File.o file, and # we first need to create the directory obj/Tool/Source. # Tool/Source/File.m would be in OBJC_FILES, obj/Tool/Source/File.o # would be in OBJ_FILES_TO_LINK_WE_CREATE, and obj/Tool/Source would # be in OBJ_DIRS_TO_CREATE. # # Explanation: $(dir ...) is used to extract the directory; $(sort # ...) is used to remove duplicates; $(filter-out ...) is used to # remove $(GNUSTEP_OBJ_INSTANCE_DIR) which would always # appear and is already covered by default. OBJ_DIRS_TO_CREATE = $(filter-out $(GNUSTEP_OBJ_INSTANCE_DIR)/,$(sort $(dir $(OBJ_FILES_TO_LINK_THAT_WE_CREATE)))) # Note that when doing a parallel build, we build instances in # parallel. To prevent race conditions in building the directories or # compiling the files, each instance has its own build directory to # store its own object files, completely separate from the other # instances. The GNUSTEP_OBJ_DIR is built during the Master # invocation (so no concurrency issues there); each instance then # builds its own GNUSTEP_OBJ_DIR/GNUSTEP_INSTANCE/ subdirectory and # puts its object file in there. $(OBJ_DIRS_TO_CREATE): $(ECHO_CREATING)cd $(GNUSTEP_BUILD_DIR); $(MKDIRS) $@$(END_ECHO) # The rule to create the objects file directory for this specific # instance. $(GNUSTEP_OBJ_INSTANCE_DIR): $(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR); \ $(MKDIRS) ./$(GNUSTEP_OBJ_INSTANCE_DIR_NAME)/$(END_ECHO) # If C++ or ObjC++ are involved, we use the C++ compiler instead of # the C/ObjC one to link; this happens automatically when compiling # C++ or ObjC++ files, but we also want it to happen when linking, # because we want g++ to be used instead of gcc to link. All the # linking commands use $(LD) to link; this is set by default to # be the same as $(CC). If C++ or ObjC++ is involved, we want # to replace that one with the C++ compiler. Hence the following. ifneq ($(CC_OBJ_FILES)$(OBJCC_OBJ_FILES),) LD = $(CXX) endif ifeq ($(AUTO_DEPENDENCIES),yes) ifneq ($(strip $(OBJ_FILES_TO_LINK)),) -include $(addsuffix .d, $(basename $(OBJ_FILES_TO_LINK))) endif endif # The following is for precompiled headers, only executed if GCC # supports them. ifeq ($(GCC_WITH_PRECOMPILED_HEADERS),yes) # # The following are useful to speed up compilation by using # precompiled headers. If GCC_WITH_PRECOMPILED_HEADERS is '', then # these variables do nothing. If GCC_WITH_PRECOMPILED_HEADERS is yes, # then these variables cause all the listed headers to be precompiled # with the specified compiler before the compilation of the main files # starts; the precompiled files will be put in the # GNUSTEP_OBJ_DIR/PrecompiledHeaders/{language} directory, and # -I$GNUSTEP_OBJ_DIR/PrecompiledHeaders/{language} -Winvalid-pch will # automatically be added to the command line to make sure they are # used. # # The list of C header files to be precompiled is in the # C_PRECOMPILED_HEADERS variable # # The list of Objective-C header files to be precompiled is in the # OBJC_PRECOMPILED_HEADERS variable # # The list of C++ header files to be precompiled is in the # CC_PRECOMPILED_HEADERS variable # # The list of Objective-C++ header files to be precompiled is in the # OBJCC_PRECOMPILED_HEADERS variable # C_PRECOMPILED_OBJS = $(patsubst %,%.gch,$($(GNUSTEP_INSTANCE)_C_PRECOMPILED_HEADERS)) C_PRECOMPILED_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/C/,$(C_PRECOMPILED_OBJS)) OBJC_PRECOMPILED_OBJS = $(patsubst %,%.gch,$($(GNUSTEP_INSTANCE)_OBJC_PRECOMPILED_HEADERS)) OBJC_PRECOMPILED_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/ObjC/,$(OBJC_PRECOMPILED_OBJS)) CC_PRECOMPILED_OBJS = $(patsubst %,%.gch,$($(GNUSTEP_INSTANCE)_CC_PRECOMPILED_HEADERS)) CC_PRECOMPILED_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/CC/,$(CC_PRECOMPILED_OBJS)) OBJCC_PRECOMPILED_OBJS = $(patsubst %,%.gch,$($(GNUSTEP_INSTANCE)_OBJCC_PRECOMPILED_HEADERS)) OBJCC_PRECOMPILED_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/ObjCC/,$(OBJCC_PRECOMPILED_OBJS)) # If any of those variables is not empty ifneq ($(C_PRECOMPILED_OBJ_FILES)$(OBJC_PRECOMPILED_OBJ_FILES)$(CC_PRECOMPILED_OBJ_FILES)$(OBJCC_PRECOMPILED_OBJ_FILES),) # Then we need to build the files before everything else! internal-precompile-headers: $(C_PRECOMPILED_OBJ_FILES)\ $(OBJC_PRECOMPILED_OBJ_FILES)\ $(CC_PRECOMPILED_OBJ_FILES)\ $(OBJCC_PRECOMPILED_OBJ_FILES) # We put all the PrecompiledHeaders/xx/ dirs in xx_PRECOMPILED_HEADERS_INCLUDE_FLAGS, # which will be put before any other header include (this is what we want, as we # want a precompiled header, if available, to be used in preference # to the non-precompiled header, no matter where the non-precompiled # header is). ifneq ($(C_PRECOMPILED_OBJ_FILES),) C_PRECOMPILED_HEADERS_INCLUDE_FLAGS += -I$(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/C endif ifneq ($(OBJC_PRECOMPILED_OBJ_FILES),) OBJC_PRECOMPILED_HEADERS_INCLUDE_FLAGS += -I$(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/ObjC endif ifneq ($(CC_PRECOMPILED_OBJ_FILES),) CC_PRECOMPILED_HEADERS_INCLUDE_FLAGS += -I$(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/CC endif ifneq ($(OBJCC_PRECOMPILED_OBJ_FILES),) OBJCC_PRECOMPILED_HEADERS_INCLUDE_FLAGS += -I$(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/ObjCC endif else internal-precompile-headers: endif # End of precompiled headers code else internal-precompile-headers: endif ## ## Library and related special flags. ## BUNDLE_LIBS += $($(GNUSTEP_INSTANCE)_BUNDLE_LIBS) ADDITIONAL_INCLUDE_DIRS += $($(GNUSTEP_INSTANCE)_INCLUDE_DIRS) ADDITIONAL_GUI_LIBS += $($(GNUSTEP_INSTANCE)_GUI_LIBS) ADDITIONAL_TOOL_LIBS += $($(GNUSTEP_INSTANCE)_TOOL_LIBS) ADDITIONAL_OBJC_LIBS += $($(GNUSTEP_INSTANCE)_OBJC_LIBS) ADDITIONAL_LIBRARY_LIBS += $($(GNUSTEP_INSTANCE)_LIBS) \ $($(GNUSTEP_INSTANCE)_LIBRARY_LIBS) ADDITIONAL_NATIVE_LIBS += $($(GNUSTEP_INSTANCE)_NATIVE_LIBS) ADDITIONAL_LIB_DIRS += $($(GNUSTEP_INSTANCE)_LIB_DIRS) ADDITIONAL_CPPFLAGS += $($(GNUSTEP_INSTANCE)_CPPFLAGS) ADDITIONAL_CFLAGS += $($(GNUSTEP_INSTANCE)_CFLAGS) ADDITIONAL_OBJCFLAGS += $($(GNUSTEP_INSTANCE)_OBJCFLAGS) ADDITIONAL_CCFLAGS += $($(GNUSTEP_INSTANCE)_CCFLAGS) ADDITIONAL_OBJCCFLAGS += $($(GNUSTEP_INSTANCE)_OBJCCFLAGS) ADDITIONAL_LDFLAGS += $($(GNUSTEP_INSTANCE)_LDFLAGS) ADDITIONAL_CLASSPATH += $($(GNUSTEP_INSTANCE)_CLASSPATH) LIBRARIES_DEPEND_UPON += $($(GNUSTEP_INSTANCE)_LIBRARIES_DEPEND_UPON) # You can control whether you want to link against the gui library # by using one of the two commands -- # # xxx_NEEDS_GUI = yes # xxx_NEEDS_GUI = no # (where 'xxx' is the name of your application/bundle/etc.) # # You can also change it for all applications/bundles/etc by doing # # NEEDS_GUI = yes (or no) # # If you don't specify anything, the default for the project type will # be used (this is the NEEDS_GUI = yes/no that is at the top of all # project types). # # If the project type doesn't specify anything (eg, doesn't need # linking to ObjC libraries, or it is buggy/old or it is from a # third-party and hasn't been updated yet) then the default is NO. INTERNAL_NEEDS_GUI = $($(GNUSTEP_INSTANCE)_NEEDS_GUI) ifeq ($(INTERNAL_NEEDS_GUI),) INTERNAL_NEEDS_GUI = $(NEEDS_GUI) ifeq ($(INTERNAL_NEEDS_GUI),) INTERNAL_NEEDS_GUI = no endif endif # Recognize 'YES' as well as 'yes' ifeq ($(INTERNAL_NEEDS_GUI),YES) INTERNAL_NEEDS_GUI = yes endif # Now we prepare a variable, ALL_LIBS, containing the list of all LIBS # that should be used when linking. This is different depending on # whether we need to link against the gui library or not. ifeq ($(INTERNAL_NEEDS_GUI), yes) # Please note that you usually need to add ALL_LIB_DIRS before # ALL_LIBS when linking. It's kept separate because sometimes (eg, # bundles) we only use ALL_LIB_DIRS and not ALL_LIBS (not sure how # useful ALL_LIB_DIRS would be without ALL_LIBS, anyway touching flags # is dangerous as things might stop compiling for some people who # were relying on the old behaviour) ALL_LIBS = \ $(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) else ALL_LIBS = \ $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \ $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) \ $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS) endif # # Determine the languages used by this instance. This is used in # various places (bundles, resource sets, make_strings) where language # resources are managed. # LANGUAGES = $(strip $($(GNUSTEP_INSTANCE)_LANGUAGES)) ifeq ($(LANGUAGES),) LANGUAGES = English endif # You can have a single xxxInfo.plist for both GNUstep and Apple. # Often enough, you can just put in it all fields required by both # GNUstep and Apple; if there is a conflict, you can provide # axxxInfo.cplist (please note the suffix!) - that file is # automatically run through the C preprocessor to generate a # xxxInfo.plist file from it. The preprocessor will define GNUSTEP # when using gnustep-base, APPLE when using Apple FoundationKit, NEXT # when using NeXT/OPENStep FoundationKit, and UNKNOWN when using # something else, so you can use # #ifdef GNUSTEP # ... some plist code for GNUstep ... # #else # ... some plist code for Apple ... # #endif # to have your .cplist use different code for each. # # Our problem is that we'd like to always depend on xxxInfo.plist if # it's there, and not depend on it if it's not there - which we solve # by expanding $(wildcard $(GNUSTEP_INSTANCE)Info.plist) GNUSTEP_PLIST_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)Info.plist) # older versions of XCode use the form Info-xxx.plist ifeq ($(GNUSTEP_PLIST_DEPEND),) GNUSTEP_PLIST_DEPEND = $(wildcard Info-$(GNUSTEP_INSTANCE).plist) endif # Newer versions of XCode use the form xxx-Info.plist ifeq ($(GNUSTEP_PLIST_DEPEND),) GNUSTEP_PLIST_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)-Info.plist) endif # As a special case, if xxxInfo.cplist is there, in this case as well # we'd like to depend on xxxInfo.plist. ifeq ($(GNUSTEP_PLIST_DEPEND),) # xxxInfo.plist is not there. Check if xxxInfo.cplist is there, and # if so, convert it to xxxInfo.plist and add it to the dependencies. GNUSTEP_PLIST_DEPEND = $(patsubst %.cplist,%.plist,$(wildcard $(GNUSTEP_INSTANCE)Info.cplist)) endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/gswapp.make�������������������������������������������������������������0000664�0001750�0001750�00000014022�12257324554�017650� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # Instance/gswapp.make # # Instance Makefile rules to build GNUstep web based applications. # # Copyright (C) 1997-2004 Free Software Foundation, Inc. # # Author: Manuel Guesdon <mguesdon@sbuilders.com>, # Nicola Pero <n.pero@mi.flashnet.it> # Based on application.make by Ovidiu Predescu <ovidiu@net-community.com> # Based on gswapp.make by Helge Hess, MDlink online service center GmbH. # Based on the original version by Scott Christley. # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(NEEDS_GUI),) NEEDS_GUI = no endif ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # FIXME/TODO - this file has not been updated to use # Instance/Shared/bundle.make because it is linking resources instead of # copying them. # TODO: We should remove this makefile since it's not really supported. # The name of the application is in the GSWAPP_NAME variable. # The list of languages the app is localized in are in xxx_LANGUAGES <== # The list of application resource file are in xxx_RESOURCE_FILES # The list of localized application resource file are in # xxx_LOCALIZED_RESOURCE_FILES <== # The list of application resource directories are in xxx_RESOURCE_DIRS # The list of application web server resource directories are in # xxx_WEBSERVER_RESOURCE_DIRS <== # The list of localized application web server resource directories are in # xxx_LOCALIZED_WEBSERVER_RESOURCE_DIRS # where xxx is the application name <== # Determine the application directory extension GSWAPP_EXTENSION = gswa .PHONY: internal-gswapp-all_ \ internal-gswapp-install_ \ internal-gswapp-uninstall_ \ internal-gswapp-copy_into_dir # # Determine where to install. By default, install into GNUSTEP_WEB_APPS. # ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),) GSWAPP_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR) endif ifeq ($(GSWAPP_INSTALL_DIR),) GSWAPP_INSTALL_DIR = $(GNUSTEP_WEB_APPS) endif # Libraries that go before the WO libraries ALL_GSW_LIBS = \ $(ADDITIONAL_GSW_LIBS) $(AUXILIARY_GSW_LIBS) $(GSW_LIBS) \ $(ALL_LIBS) GSWAPP_DIR_NAME = $(GNUSTEP_INSTANCE:=.$(GSWAPP_EXTENSION)) GSWAPP_DIR = $(GNUSTEP_BUILD_DIR)/$(GSWAPP_DIR_NAME) # # Now include the standard resource-bundle routines from Shared/bundle.make # ifneq ($(FOUNDATION_LIB), apple) # GNUstep bundle GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(GSWAPP_DIR)/Resources GSWAPP_INFO_PLIST_FILE = $(GSWAPP_DIR)/Resources/Info-gnustep.plist else # OSX bundle GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(GSWAPP_DIR)/Contents/Resources GSWAPP_INFO_PLIST_FILE = $(GSWAPP_DIR)/Contents/Info.plist endif GNUSTEP_SHARED_BUNDLE_INSTALL_NAME = $(GSWAPP_DIR_NAME) GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH = . GNUSTEP_SHARED_BUNDLE_INSTALL_PATH = $(GSWAPP_INSTALL_DIR) include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make ifneq ($(FOUNDATION_LIB), apple) GSWAPP_FILE_NAME = $(GSWAPP_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)$(EXEEXT) else GSWAPP_FILE_NAME = $(GSWAPP_DIR_NAME)/Contents/MacOS/$(GNUSTEP_INSTANCE)$(EXEEXT) endif GSWAPP_FILE = $(GNUSTEP_BUILD_DIR)/$(GSWAPP_FILE_NAME) # # Internal targets # $(GSWAPP_FILE): $(OBJ_FILES_TO_LINK) ifeq ($(OBJ_FILES_TO_LINK),) $(WARNING_EMPTY_LINKING) endif $(ECHO_LINKING)$(LD) $(ALL_LDFLAGS) $(CC_LDFLAGS) -o $(LDOUT)$@ \ $(OBJ_FILES_TO_LINK) $(ALL_LIB_DIRS) $(ALL_GSW_LIBS)$(END_ECHO) # # Compilation targets # ifeq ($(FOUNDATION_LIB), apple) internal-gswapp-all_:: \ $(GNUSTEP_OBJ_INSTANCE_DIR) \ $(OBJ_DIRS_TO_CREATE) \ $(GSWAPP_DIR)/Contents/MacOS \ $(GSWAPP_FILE) \ shared-instance-bundle-all \ $(GSWAPP_INFO_PLIST_FILE) $(GSWAPP_DIR)/Contents/MacOS: $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) else internal-gswapp-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) \ $(OBJ_DIRS_TO_CREATE) \ $(GSWAPP_DIR)/$(GNUSTEP_TARGET_LDIR) \ $(GSWAPP_FILE) \ $(GSWAPP_DIR)/Resources \ $(GSWAPP_INFO_PLIST_FILE) \ shared-instance-bundle-all $(GSWAPP_DIR)/$(GNUSTEP_TARGET_LDIR): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) endif PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS)) ifeq ($(PRINCIPAL_CLASS),) PRINCIPAL_CLASS = $(GNUSTEP_INSTANCE) endif HAS_GSWCOMPONENTS = $($(GNUSTEP_INSTANCE)_HAS_GSWCOMPONENTS) GSWAPP_INFO_PLIST = $($(GNUSTEP_INSTANCE)_GSWAPP_INFO_PLIST) MAIN_MODEL_FILE = $(strip $(subst .gmodel,,$(subst .gorm,,$(subst .nib,,$($(GNUSTEP_INSTANCE)_MAIN_MODEL_FILE))))) $(GSWAPP_INFO_PLIST_FILE): $(GNUSTEP_PLIST_DEPEND) $(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \ echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \ echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \ if [ "$(HAS_GSWCOMPONENTS)" != "" ]; then \ echo " HasGSWComponents = \"$(HAS_GSWCOMPONENTS)\";"; \ fi; \ echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \ if [ -r "$(GNUSTEP_PLIST_DEPEND)" ]; then \ cat $(GNUSTEP_PLIST_DEPEND); \ fi; \ if [ "$(GSWAPP_INFO_PLIST)" != "" ]; then \ cat $(GSWAPP_INFO_PLIST); \ fi; \ echo "}") >$@$(END_ECHO) internal-gswapp-copy_into_dir:: shared-instance-bundle-copy_into_dir # install/uninstall targets $(GSWAPP_INSTALL_DIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) internal-gswapp-install_:: shared-instance-bundle-install ifeq ($(strip),yes) $(ECHO_STRIPPING)$(STRIP) $(GSWAPP_INSTALL_DIR)/$(GSWAPP_FILE_NAME)$(END_ECHO) endif internal-gswapp-uninstall_:: shared-instance-bundle-uninstall include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/bundle.make�������������������������������������������������������������0000664�0001750�0001750�00000027750�12257324554�017634� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instace/bundle.make # # Instance makefile rules to build GNUstep-based bundles. # # Copyright (C) 1997, 2001, 2002 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Ovidiu Predescu <ovidiu@net-community.com> # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Bundles usually link against a gui library (if available). If you # don't need a gui library, use xxx_NEEDS_GUI = no. ifeq ($(NEEDS_GUI),) NEEDS_GUI = yes endif ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif include $(GNUSTEP_MAKEFILES)/Instance/Shared/headers.make # The name of the bundle is in the BUNDLE_NAME variable. # The list of bundle resource file are in xxx_RESOURCE_FILES # The list of localized bundle resource files is in # xxx_LOCALIZED_RESOURCE_FILES # The list of languages the bundle supports is in xxx_LANGUAGES # The list of bundle resource directories are in xxx_RESOURCE_DIRS # The name of the principal class is xxx_PRINCIPAL_CLASS # The header files are in xxx_HEADER_FILES # 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 # where xxx is the bundle name # # If you want to insert your own entries into Info.plist (or # Info-gnustep.plist) you should create a xxxInfo.plist file (where # xxx is the bundle name) and gnustep-make will automatically # read it and merge it into Info-gnustep.plist. # .PHONY: internal-bundle-all_ \ internal-bundle-install_ \ internal-bundle-uninstall_ \ internal-bundle-copy_into_dir \ build-bundle \ internal-bundle-run-compile-submake \ internal-bundle-compile # In some cases, a bundle without any object file in it is useful - to # just store some resources which can be loaded comfortably using the # gnustep-base NSBundle API. In this case - which we detect because # OBJ_FILES_TO_LINK is empty - we skip any code related to linking etc ifneq ($(OBJ_FILES_TO_LINK),) # NB: we don't need to link the bundle against the system libraries, # which are already linked in the application ... linking them both in # the bundle and in the application would just make things more # difficult when the bundle is loaded (eg, if the application and the # bundle end up being linked to different versions of the system # libraries ...) # On windows, this is unfortunately required. ifeq ($(BUILD_DLL), yes) LINK_BUNDLE_AGAINST_ALL_LIBS = yes endif # Apple CC two-level namespaces requires all symbols in bundles # to be resolved at link time. ifeq ($(CC_BUNDLE), yes) LINK_BUNDLE_AGAINST_ALL_LIBS = yes endif ifeq ($(LINK_BUNDLE_AGAINST_ALL_LIBS), yes) BUNDLE_LIBS += $(ALL_LIBS) endif ifeq ($(BUILD_DLL),yes) BUNDLE_OBJ_EXT = $(DLL_LIBEXT) endif endif # OBJ_FILES_TO_LINK # # GNUstep bundles are built in the following way on all platforms: # xxx.bundle/Resources/Info-gnustep.plist # xxx.bundle/Resources/<all resources here> # # We also support building Apple bundles using Apple frameworks # on Apple platforms - in which case, the bundle has a different # structure: # xxx.bundle/Contents/Info.plist # xxx.bundle/Contents/Resources/<all resources here> # This second way of building bundles is triggered by FOUNDATION_LIB = # apple. # internal-bundle-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) $(OBJ_DIRS_TO_CREATE) build-bundle # If they specified Info-gnustep.plist in the xxx_RESOURCE_FILES, # print a warning. They are supposed to provide a xxxInfo.plist which # gets merged with the automatically generated entries to generate # Info-gnustep.plist. ifneq ($(FOUNDATION_LIB), apple) ifneq ($(filter Info-gnustep.plist,$($(GNUSTEP_INSTANCE)_RESOURCE_FILES)),) $(WARNING_INFO_GNUSTEP_PLIST) endif else ifneq ($(filter Info.plist,$($(GNUSTEP_INSTANCE)_RESOURCE_FILES)),) $(WARNING_INFO_PLIST) endif endif BUNDLE_DIR_NAME = $(GNUSTEP_INSTANCE:=$(BUNDLE_EXTENSION)) BUNDLE_DIR = $(GNUSTEP_BUILD_DIR)/$(BUNDLE_DIR_NAME) ifneq ($(OBJ_FILES_TO_LINK),) ifneq ($(FOUNDATION_LIB), apple) BUNDLE_FILE_NAME = \ $(BUNDLE_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)$(BUNDLE_OBJ_EXT) else BUNDLE_FILE_NAME = \ $(BUNDLE_DIR_NAME)/Contents/MacOS/$(GNUSTEP_INSTANCE)$(BUNDLE_OBJ_EXT) endif BUNDLE_FILE = $(GNUSTEP_BUILD_DIR)/$(BUNDLE_FILE_NAME) endif # # Determine where to install. By default, install into GNUSTEP_BUNDLES. # ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),) BUNDLE_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR) endif ifeq ($(BUNDLE_INSTALL_DIR),) BUNDLE_INSTALL_DIR = $(GNUSTEP_BUNDLES) endif ifneq ($(FOUNDATION_LIB), apple) # GNUstep bundle GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(BUNDLE_DIR)/Resources BUNDLE_INFO_PLIST_FILE = $(BUNDLE_DIR)/Resources/Info-gnustep.plist else # OSX bundle GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(BUNDLE_DIR)/Contents/Resources BUNDLE_INFO_PLIST_FILE = $(BUNDLE_DIR)/Contents/Info.plist endif GNUSTEP_SHARED_BUNDLE_INSTALL_NAME = $(BUNDLE_DIR_NAME) GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH = . GNUSTEP_SHARED_BUNDLE_INSTALL_PATH = $(BUNDLE_INSTALL_DIR) include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make ifneq ($(OBJ_FILES_TO_LINK),) ifneq ($(FOUNDATION_LIB),apple) build-bundle: $(BUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR) \ internal-bundle-run-compile-submake \ shared-instance-bundle-all \ $(BUNDLE_INFO_PLIST_FILE) else build-bundle: $(BUNDLE_DIR)/Contents/MacOS \ internal-bundle-run-compile-submake \ shared-instance-bundle-all \ $(BUNDLE_INFO_PLIST_FILE) endif # The rule to build $(BUNDLE_DIR)/Resources (ie, # $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH) is already provided by # Instance/Shared/bundle.make $(BUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) # Standard building internal-bundle-run-compile-submake: $(BUNDLE_FILE) else # Parallel building. The actual compilation is delegated to a # sub-make invocation where _GNUSTEP_MAKE_PARALLEL is set to yet. # That sub-make invocation will compile files in parallel. internal-bundle-run-compile-submake: $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-bundle-compile \ GNUSTEP_TYPE=$(GNUSTEP_TYPE) \ GNUSTEP_INSTANCE=$(GNUSTEP_INSTANCE) \ GNUSTEP_OPERATION=compile \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) internal-bundle-compile: $(BUNDLE_FILE) endif $(BUNDLE_FILE): $(OBJ_FILES_TO_LINK) $(ECHO_LINKING)$(BUNDLE_LINK_CMD)$(END_ECHO) PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS)) ifeq ($(PRINCIPAL_CLASS),) PRINCIPAL_CLASS = $(GNUSTEP_INSTANCE) endif else # Following code for the case OBJ_FILES_TO_LINK is empty - bundle with # no shared object in it. build-bundle: shared-instance-bundle-all $(BUNDLE_INFO_PLIST_FILE) $(NOTICE_EMPTY_LINKING) endif # OBJ_FILES_TO_LINK MAIN_MODEL_FILE = $(strip $(subst .gmodel,,$(subst .gorm,,$(subst .nib,,$($(GNUSTEP_INSTANCE)_MAIN_MODEL_FILE))))) # We must recreate Info.plist if the values of PRINCIPAL_CLASS and/or # of MAIN_MODEL_FILE has changed since last time we built Info.plist. # We use stamp-string.make, which will store the variables in a stamp # file inside GNUSTEP_STAMP_DIR, and rebuild Info.plist if # GNUSTEP_STAMP_STRING changes GNUSTEP_STAMP_STRING = $(PRINCIPAL_CLASS)-$(MAIN_MODEL_FILE) ifneq ($(FOUNDATION_LIB), apple) GNUSTEP_STAMP_DIR = $(BUNDLE_DIR) else # Everything goes in Contents/ on Apple GNUSTEP_STAMP_DIR = $(BUNDLE_DIR)/Contents endif ifeq ($(FOUNDATION_LIB), apple) # For efficiency, depend on the rule to build # BUNDLE_DIR/Contents/Resources (which would be used anyway when # building the bundle), so that first we use the rule to create # BUNDLE_DIR/Contents/Resources, and then we can avoid executing a # separate rule/subshell to create GNUSTEP_STAMP_DIR which has already # been implicitly created by the other rule! $(GNUSTEP_STAMP_DIR): $(BUNDLE_DIR)/Contents/Resources else $(GNUSTEP_STAMP_DIR): $(BUNDLE_DIR)/Resources endif include $(GNUSTEP_MAKEFILES)/Instance/Shared/stamp-string.make ifeq ($(FOUNDATION_LIB), apple) # MacOSX bundles $(BUNDLE_DIR)/Contents: $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) $(BUNDLE_DIR)/Contents/MacOS: $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) ifneq ($(OBJ_FILES_TO_LINK),) $(BUNDLE_DIR)/Contents/Info.plist: $(GNUSTEP_STAMP_DEPEND) $(ECHO_CREATING)(echo "<?xml version='1.0' encoding='utf-8'?>";\ echo "<!DOCTYPE plist SYSTEM 'file://localhost/System/Library/DTDs/PropertyList.dtd'>";\ echo "<!-- Automatically generated, do not edit! -->";\ echo "<plist version='0.9'>";\ echo " <dict>";\ echo " <key>CFBundleExecutable</key>";\ echo " <string>$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)$(BUNDLE_OBJ_EXT)</string>";\ echo " <key>CFBundleInfoDictionaryVersion</key>";\ echo " <string>6.0</string>";\ echo " <key>CFBundlePackageType</key>";\ echo " <string>BNDL</string>";\ echo " <key>NSPrincipalClass</key>";\ echo " <string>$(PRINCIPAL_CLASS)</string>";\ echo " </dict>";\ echo "</plist>";\ ) >$@$(END_ECHO) else $(BUNDLE_DIR)/Contents/Info.plist: $(GNUSTEP_STAMP_DEPEND) $(ECHO_CREATING)(echo "<?xml version='1.0' encoding='utf-8'?>";\ echo "<!DOCTYPE plist SYSTEM 'file://localhost/System/Library/DTDs/PropertyList.dtd'>";\ echo "<!-- Automatically generated, do not edit! -->";\ echo "<plist version='0.9'>";\ echo " <dict>";\ echo " <key>CFBundleInfoDictionaryVersion</key>";\ echo " <string>6.0</string>";\ echo " <key>CFBundlePackageType</key>";\ echo " <string>BNDL</string>";\ echo " </dict>";\ echo "</plist>";\ ) >$@$(END_ECHO) endif else # following executed if FOUNDATION_LIB != apple ifneq ($(OBJ_FILES_TO_LINK),) # GNUstep bundles $(BUNDLE_DIR)/Resources/Info-gnustep.plist: $(GNUSTEP_STAMP_DEPEND) \ $(GNUSTEP_PLIST_DEPEND) $(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \ echo " NSExecutable = \"$(GNUSTEP_INSTANCE)$(BUNDLE_OBJ_EXT)\";"; \ echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \ echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \ echo "}") >$@$(END_ECHO) $(ECHO_NOTHING)if [ -r "$(GNUSTEP_PLIST_DEPEND)" ]; then \ plmerge $@ $(GNUSTEP_PLIST_DEPEND); \ fi$(END_ECHO) else # following code for when no object file is built # GNUstep bundles $(BUNDLE_DIR)/Resources/Info-gnustep.plist: $(GNUSTEP_STAMP_DEPEND) \ $(GNUSTEP_PLIST_DEPEND) $(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \ echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \ echo "}") >$@$(END_ECHO) $(ECHO_NOTHING)if [ -r "$(GNUSTEP_PLIST_DEPEND)" ]; then \ plmerge $@ $(GNUSTEP_PLIST_DEPEND); \ fi$(END_ECHO) endif endif # FOUNDATION_LIB != apple internal-bundle-copy_into_dir:: shared-instance-bundle-copy_into_dir $(BUNDLE_INSTALL_DIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) internal-bundle-install_:: shared-instance-headers-install \ shared-instance-bundle-install ifeq ($(strip),yes) ifneq ($(OBJ_FILES_TO_LINK),) $(ECHO_STRIPPING)$(STRIP) $(BUNDLE_INSTALL_DIR)/$(BUNDLE_FILE_NAME)$(END_ECHO) endif endif internal-bundle-uninstall_:: shared-instance-headers-uninstall \ shared-instance-bundle-uninstall include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make ������������������������gnustep-make-2.7.0/Instance/palette.make������������������������������������������������������������0000664�0001750�0001750�00000016202�12257324554�020007� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/palette.make # # Instance Makefile rules to build GNUstep-based palettes. # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Ovidiu Predescu <ovidiu@net-community.com> # Author: Richard Frith-Macdonald <richard@brainstorm.co.uk> # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Palettes usually link against a gui library (if available). ifeq ($(NEEDS_GUI),) NEEDS_GUI = yes endif ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # The name of the palette is in the PALETTE_NAME variable. # The list of palette resource file are in xxx_RESOURCE_FILES # The list of palette resource directories are in xxx_RESOURCE_DIRS # The name of the palette class is xxx_PRINCIPAL_CLASS # The name of the palette nib is xxx_MAIN_MODEL_FILE # The name of the palette icon is xxx_PALETTE_ICON # The name of a file containing info.plist entries to be inserted into # Info-gnustep.plist (if any) is xxxInfo.plist where xxx is the palette name # The name of a file containing palette.table entries to be inserted into # palette.table (if any) is xxxpalette.table where xxx is the palette name # .PHONY: internal-palette-all_ \ internal-palette-install_ \ internal-palette-uninstall_ \ internal-palette-copy_into_dir \ internal-palette-run-compile-submake \ internal-palette-compile # On windows, this is unfortunately required. ifeq ($(BUILD_DLL), yes) LINK_PALETTE_AGAINST_ALL_LIBS = yes endif # On Apple, two-level namespaces require all symbols in bundles # to be resolved at link time. Also on gnu/darwin ifeq ($(CC_BUNDLE), yes) LINK_PALETTE_AGAINST_ALL_LIBS = yes endif ifeq ($(LINK_PALETTE_AGAINST_ALL_LIBS), yes) PALETTE_LIBS += $(ALL_LIBS) endif ifeq ($(BUILD_DLL),yes) PALETTE_OBJ_EXT = $(DLL_LIBEXT) endif PALETTE_DIR_NAME = $(GNUSTEP_INSTANCE).palette PALETTE_DIR = $(GNUSTEP_BUILD_DIR)/$(PALETTE_DIR_NAME) PALETTE_FILE_NAME = $(PALETTE_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/$(PALETTE_NAME)$(PALETTE_OBJ_EXT) PALETTE_FILE = $(GNUSTEP_BUILD_DIR)/$(PALETTE_FILE_NAME) ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),) PALETTE_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR) endif ifeq ($(PALETTE_INSTALL_DIR),) PALETTE_INSTALL_DIR = $(GNUSTEP_PALETTES) endif GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(PALETTE_DIR)/Resources GNUSTEP_SHARED_BUNDLE_INSTALL_NAME = $(PALETTE_DIR_NAME) GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH = . GNUSTEP_SHARED_BUNDLE_INSTALL_PATH = $(PALETTE_INSTALL_DIR) include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make internal-palette-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) \ $(OBJ_DIRS_TO_CREATE) \ $(PALETTE_DIR)/Resources \ $(PALETTE_DIR)/$(GNUSTEP_TARGET_LDIR) \ internal-palette-run-compile-submake \ $(PALETTE_DIR)/Resources/Info-gnustep.plist \ $(PALETTE_DIR)/Resources/palette.table \ shared-instance-bundle-all # If they specified Info-gnustep.plist in the xxx_RESOURCE_FILES, # print a warning. They are supposed to provide a xxxInfo.plist which # gets merged with the automatically generated entries to generate # Info-gnustep.plist. ifneq ($(FOUNDATION_LIB), apple) ifneq ($(filter Info-gnustep.plist,$($(GNUSTEP_INSTANCE)_RESOURCE_FILES)),) $(WARNING_INFO_GNUSTEP_PLIST) endif else ifneq ($(filter Info.plist,$($(GNUSTEP_INSTANCE)_RESOURCE_FILES)),) $(WARNING_INFO_PLIST) endif endif $(PALETTE_DIR)/$(GNUSTEP_TARGET_LDIR): $(ECHO_CREATING)$(MKDIRS) $(PALETTE_DIR)/$(GNUSTEP_TARGET_LDIR)$(END_ECHO) ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) # Standard building internal-palette-run-compile-submake: $(PALETTE_FILE) else # Parallel building. The actual compilation is delegated to a # sub-make invocation where _GNUSTEP_MAKE_PARALLEL is set to yet. # That sub-make invocation will compile files in parallel. internal-palette-run-compile-submake: $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-palette-compile \ GNUSTEP_TYPE=$(GNUSTEP_TYPE) \ GNUSTEP_INSTANCE=$(GNUSTEP_INSTANCE) \ GNUSTEP_OPERATION=compile \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) internal-palette-compile: $(PALETTE_FILE) endif # Standard bundle build using the rules for this target $(PALETTE_FILE): $(OBJ_FILES_TO_LINK) ifeq ($(OBJ_FILES_TO_LINK),) $(WARNING_EMPTY_LINKING) endif $(ECHO_LINKING)$(BUNDLE_LD) $(BUNDLE_LDFLAGS) \ -o $(LDOUT)$(PALETTE_FILE) \ $(OBJ_FILES_TO_LINK) $(ALL_LDFLAGS) \ $(BUNDLE_LIBFLAGS) $(ALL_LIB_DIRS) $(PALETTE_LIBS)$(END_ECHO) PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS)) ifeq ($(PRINCIPAL_CLASS),) PRINCIPAL_CLASS = $(GNUSTEP_INSTANCE) endif PALETTE_ICON = $($(GNUSTEP_INSTANCE)_PALETTE_ICON) ifeq ($(PALETTE_ICON),) PALETTE_ICON = $(GNUSTEP_INSTANCE) endif # FIXME - xxxInfo.plist in this case is not really a plist! $(PALETTE_DIR)/Resources/Info-gnustep.plist: $(PALETTE_DIR)/Resources $(GNUSTEP_PLIST_DEPEND) $(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \ echo " NSExecutable = \"$(PALETTE_NAME)$(PALETTE_OBJ_EXT)\";"; \ if [ -r "$(GNUSTEP_PLIST_DEPEND)" ]; then \ cat $(GNUSTEP_PLIST_DEPEND); \ fi; \ echo "}") >$@$(END_ECHO) MAIN_MODEL_FILE = $(strip $(subst .gmodel,,$(subst .gorm,,$(subst .nib,,$($(GNUSTEP_INSTANCE)_MAIN_MODEL_FILE))))) # Depend on xxxpalette.table but only if it exists. PALETTE_TABLE_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)palette.table) # FIXME - use stamp.make to depend on the value of the variables # MAIN_MODEL_FILE, PRINCIPAL_CLASS and PALETTE_ICON $(PALETTE_DIR)/Resources/palette.table: $(PALETTE_DIR)/Resources $(PALETTE_TABLE_DEPEND) $(ECHO_CREATING)(echo "{";\ echo ' NOTE = "Automatically generated, do not edit!";'; \ echo " NibFile = \"$(MAIN_MODEL_FILE)\";"; \ echo " Class = \"$(PRINCIPAL_CLASS)\";"; \ echo " Icon = \"$(PALETTE_ICON)\";"; \ echo "}"; \ if [ -r "$(GNUSTEP_INSTANCE)palette.table" ]; then \ cat $(GNUSTEP_INSTANCE)palette.table; \ fi; \ ) >$@$(END_ECHO) internal-palette-copy_into_dir:: shared-instance-bundle-copy_into_dir # # Install targets # $(PALETTE_INSTALL_DIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) internal-palette-install_:: shared-instance-bundle-install ifeq ($(strip),yes) $(ECHO_STRIPPING)$(STRIP) $(PALETTE_INSTALL_DIR)/$(PALETTE_FILE_NAME)$(END_ECHO) endif internal-palette-uninstall_:: shared-instance-bundle-uninstall include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/test-application.make���������������������������������������������������0000664�0001750�0001750�00000002046�11041141034�021606� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/test-application.make # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Applications usually link against a gui library (if available). ifeq ($(NEEDS_GUI),) NEEDS_GUI = yes endif ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # Just inherit the build rule from application.make include $(GNUSTEP_MAKEFILES)/Instance/application.make internal-test_app-all_:: internal-app-all_ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/README������������������������������������������������������������������0000664�0001750�0001750�00000002263�10377003773�016372� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Makefiles in this directory are only used during the 'Instance' make invocation. The 'Master' invocation (see explanation in Master/README) decides which tasks are to be done; for each of them, it calls a recursive make invocation (called an 'Instance' make invocation), setting GNUSTEP_INSTANCE to the instance name (for example, 'defaults'), and GNUSTEP_TYPE to the type of instance type (for example, 'tool'). The make target to build is as in internal-tool-all. This means that all makefiles in this directory are executed with a well defined GNUSTEP_INSTANCE, GNUSTEP_TYPE, and target. It is safe/required in all these makefiles/makefile fragments to access the variables needed to build the target for this instance by using $($(GNUSTEP_INSTANCE)_VARIABLE). For example, the list of OBJC_FILES needed to compile the `defaults' instance will have been defined by the user in the defaults_OBJC_FILES variable. In this directory, we access this list using $($(GNUSTEP_INSTANCE)_OBJC_FILES). Please note that this makefiles/makefile fragments can't be included in the Master invocation, they are actually useless in the Master invocation, because $(GNUSTEP_INSTANCE) is undefined in that case. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/tool.make���������������������������������������������������������������0000664�0001750�0001750�00000012326�11336101653�017317� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/tool.make # # Instance Makefile rules to build GNUstep-based command line tools. # # Copyright (C) 1997, 2001 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Tools don't link against gui by default ifeq ($(NEEDS_GUI),) NEEDS_GUI = no endif # # The name of the tools is in the TOOL_NAME variable. # # xxx We need to prefix the target name when cross-compiling # ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif .PHONY: internal-tool-all_ \ internal-tool-install_ \ internal-tool-uninstall_ \ internal-tool-copy_into_dir \ internal-tool-compile # 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),) TOOL_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR) endif ifeq ($(TOOL_INSTALL_DIR),) TOOL_INSTALL_DIR = $(GNUSTEP_TOOLS) endif # This is the 'final' directory in which we copy the tool executable, including # the target and library-combo paths. You can override it in special occasions # (eg, installing an executable into a web server's cgi dir). ifeq ($(FINAL_TOOL_INSTALL_DIR),) FINAL_TOOL_INSTALL_DIR = $(TOOL_INSTALL_DIR)/$(GNUSTEP_TARGET_LDIR) endif # # Compilation targets # ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) # Standard building internal-tool-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) \ $(OBJ_DIRS_TO_CREATE) \ $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT) else # Parallel building. The actual compilation is delegated to a # sub-make invocation where _GNUSTEP_MAKE_PARALLEL is set to yes. # That sub-make invocation will compile files in parallel. internal-tool-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) $(OBJ_DIRS_TO_CREATE) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-tool-compile \ GNUSTEP_TYPE=$(GNUSTEP_TYPE) \ GNUSTEP_INSTANCE=$(GNUSTEP_INSTANCE) \ GNUSTEP_OPERATION=compile \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) internal-tool-compile: $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT) endif $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT): $(OBJ_FILES_TO_LINK) ifeq ($(OBJ_FILES_TO_LINK),) $(WARNING_EMPTY_LINKING) endif $(ECHO_LINKING)$(LD) $(ALL_LDFLAGS) $(CC_LDFLAGS) -o $(LDOUT)$@ \ $(OBJ_FILES_TO_LINK) \ $(ALL_LIB_DIRS) $(ALL_LIBS)$(END_ECHO) internal-tool-copy_into_dir:: $(ECHO_COPYING_INTO_DIR)$(MKDIRS) $(COPY_INTO_DIR)/$(GNUSTEP_TARGET_LDIR);\ $(INSTALL_PROGRAM) -m 0755 \ $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT) \ $(COPY_INTO_DIR)/$(GNUSTEP_TARGET_LDIR)$(END_ECHO) # This rule runs $(MKDIRS) only if needed $(FINAL_TOOL_INSTALL_DIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) internal-tool-install_:: $(FINAL_TOOL_INSTALL_DIR) $(ECHO_INSTALLING)$(INSTALL_PROGRAM) -m 0755 \ $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT) \ $(FINAL_TOOL_INSTALL_DIR)$(END_ECHO) internal-tool-uninstall_:: rm -f $(FINAL_TOOL_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT) # NB: We don't have any cleaning targets for tools here, because we # clean during the Master make invocation. # # If the user makefile contains the command # xxx_HAS_RESOURCE_BUNDLE = yes # then we need to build a resource bundle for the tool, and install it. # You can then add resources to the tool, any sort of, with the usual # xxx_RESOURCE_FILES, xxx_LOCALIZED_RESOURCE_FILES, xxx_LANGUAGES, etc. # The tool resource bundle (and all resources inside it) can be # accessed at runtime very comfortably, by using gnustep-base's # [NSBundle +mainBundle] (exactly as you would do for an application). # ifeq ($($(GNUSTEP_INSTANCE)_HAS_RESOURCE_BUNDLE),yes) # Include the rules to build resource bundles GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(GNUSTEP_BUILD_DIR)/Resources/$(GNUSTEP_INSTANCE) GNUSTEP_SHARED_BUNDLE_INSTALL_NAME = $(GNUSTEP_INSTANCE) GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH = Resources GNUSTEP_SHARED_BUNDLE_INSTALL_PATH = $(GNUSTEP_LIBRARY)/Tools/Resources include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make internal-tool-all_:: shared-instance-bundle-all internal-tool-copy_into_dir:: shared-instance-bundle-copy_into_dir $(TOOL_INSTALL_DIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) $(GNUSTEP_LIBRARY)/Tools/Resources: $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) internal-tool-install_:: $(GNUSTEP_LIBRARY)/Tools/Resources \ shared-instance-bundle-install internal-tool-uninstall:: shared-instance-bundle-uninstall endif include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/ctool.make��������������������������������������������������������������0000664�0001750�0001750�00000007315�11336101653�017464� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/ctool.make # # Instance Makefile rules to build GNUstep-based command line ctools. # # Copyright (C) 1997, 2001 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The name of the ctools is in the CTOOL_NAME variable. # # xxx We need to prefix the target name when cross-compiling # # This is the same as a tool, but it is not linked against libobjc and # it is not linked against the foundation library. This is good if # you are not using any Objective-C stuff in here. # # PS: this means you must leave the variable xxx_OBJC_FILES (and # xxx_OBJCC_FILES) empty (if you don't, it won't work). If you need # to compile Objective-C stuff, please use tool.make. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # This is the directory where the ctools get installed. If you don't # specify a directory they will get installed in the GNUstep Local # root. ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),) CTOOL_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR) endif ifeq ($(CTOOL_INSTALL_DIR),) CTOOL_INSTALL_DIR = $(GNUSTEP_TOOLS) endif .PHONY: internal-ctool-all_ \ internal-ctool-install_ \ internal-ctool-uninstall_ \ internal-ctool-compile # Override the default with just the minimal C libs required to link ALL_LIBS = \ $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \ $(TARGET_SYSTEM_LIBS) # # Compilation targets # ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) # Standard building internal-ctool-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) \ $(OBJ_DIRS_TO_CREATE) \ $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT) else # Parallel building. The actual compilation is delegated to a # sub-make invocation where _GNUSTEP_MAKE_PARALLEL is set to yet. # That sub-make invocation will compile files in parallel. internal-ctool-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) $(OBJ_DIRS_TO_CREATE) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-ctool-compile \ GNUSTEP_TYPE=$(GNUSTEP_TYPE) \ GNUSTEP_INSTANCE=$(GNUSTEP_INSTANCE) \ GNUSTEP_OPERATION=compile \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) internal-ctool-compile: $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT) endif $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT): $(OBJ_FILES_TO_LINK) ifeq ($(OBJ_FILES_TO_LINK),) $(WARNING_EMPTY_LINKING) endif $(ECHO_LINKING)$(LD) $(ALL_LDFLAGS) -o $(LDOUT)$@ \ $(OBJ_FILES_TO_LINK) \ $(ALL_LIB_DIRS) $(ALL_LIBS)$(END_ECHO) internal-ctool-install_:: $(CTOOL_INSTALL_DIR)/$(GNUSTEP_TARGET_DIR) $(ECHO_INSTALLING)$(INSTALL_PROGRAM) -m 0755 \ $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT) \ $(CTOOL_INSTALL_DIR)/$(GNUSTEP_TARGET_DIR)$(END_ECHO) $(CTOOL_INSTALL_DIR)/$(GNUSTEP_TARGET_DIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) internal-ctool-uninstall_:: $(ECHO_UNINSTALLING)rm -f $(CTOOL_INSTALL_DIR)/$(GNUSTEP_TARGET_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT)$(END_ECHO) include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/test-library.make�������������������������������������������������������0000664�0001750�0001750�00000001745�11335212276�020771� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/test-library.make # # Instance Makefile rules for test/non-installed libraries # # Copyright (C) 2005 Free Software Foundation, Inc. # # Author: Adam Fedor <fedor@gnu.org> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # Just inherit the build rule from library.make include $(GNUSTEP_MAKEFILES)/Instance/library.make internal-test_library-all_:: internal-library-all_ ���������������������������gnustep-make-2.7.0/Instance/documentation.make������������������������������������������������������0000664�0001750�0001750�00000011660�12262632347�021223� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/documentation.make # # Instance Makefile rules to build GNUstep-based documentation. # # Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # NB: Parallel building is not supported here (yet?). # # TODO: Remove DOCUMENT_TEXT_NAME and use only DOCUMENT_NAME. # DOCUMENT_TEXT_NAME is only used by texi.make. # # The names of the documents are in the DOCUMENT_NAME variable. # These final documents will be generated in info, dvi, ps, and html output. # # The names of text documents are in the DOCUMENT_TEXT_NAME variable. # # The main file for text document is in the xxx_TEXT_MAIN variable. # Files already ready to be installed without pre-processing (eg, html, rtf) # are in the xxx_INSTALL_FILES # The Texinfo files that needs pre-processing are in xxx_TEXI_FILES # The GSDoc files that needs pre-processing are in xxx_GSDOC_FILES # The files for processing by autogsdoc are in xxx_AGSDOC_FILES # The options for controlling autogsdoc are in xxx_AGSDOC_FLAGS # # Javadoc support: # The Java classes and packages that needs documenting using javadoc # are in xxx_JAVADOC_FILES (could contain both packages, as # `gnu.gnustep.base', and standalone classes, as # `gnu.gnustep.base.NSArray.java') # # The sourcepath to the Java classes source code in in xxx_JAVADOC_SOURCEPATH # (it can contain more than one path, as CLASSPATH or LD_LIBRARY_PATH do). # To set special flags for javadoc (eg, -public), use ADDITIONAL_JAVADOCFLAGS # # The installation directory is in the xxx_DOC_INSTALL_DIR variable # (eg, Gui_DOC_INSTALL_DIR = Developer/Gui/Reference # Things should be installed under `Developer/YourProjectName' or # `User/YourProjectName' - for Javadoc, use `Developer/YourProjectName' or # `Developer/YourProjectName/Java' if your project has both java and # non java) # # Where xxx is the name of the document # TEXI_FILES = $($(GNUSTEP_INSTANCE)_TEXI_FILES) GSDOC_FILES = $($(GNUSTEP_INSTANCE)_GSDOC_FILES) AGSDOC_FILES = $($(GNUSTEP_INSTANCE)_AGSDOC_FILES) LATEX_FILES = $($(GNUSTEP_INSTANCE)_LATEX_FILES) JAVADOC_FILES = $($(GNUSTEP_INSTANCE)_JAVADOC_FILES) DOC_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_DOC_INSTALL_DIR) TEXT_MAIN = $($(GNUSTEP_INSTANCE)_TEXT_MAIN) # # GNUSTEP_DVIPS is here because it's common to texi.make and latex.make # # To override GNUSTEP_DVIPS, define it differently in # GNUmakefile.preamble ifeq ($(GNUSTEP_DVIPS),) GNUSTEP_DVIPS = dvips endif # To override GNUSTEP_DVIPS_FLAGS, define it differently in # GNUmakefile.premable. To only add new flags to the existing ones, # set ADDITIONAL_DVIPS_FLAGS in GNUmakefile.preamble. ifeq ($(GNUSTEP_DVIPS_FLAGS),) GNUSTEP_DVIPS_FLAGS = endif .PHONY: internal-doc-all_ \ internal-doc-clean \ internal-doc-distclean \ internal-doc-install_ \ internal-doc-uninstall_ \ internal-textdoc-all_ \ internal-textdoc-clean \ internal-textdoc-distclean \ internal-textdoc-install_ \ internal-textdoc-uninstall_ # # Common code. # # Installation directory - always created. This rule should be before # the makefile fragments' internal-doc-install_, so that # GNUSTEP_DOC/DOC_INSTALL_DIR is built before their targets # are. FIXME: Maybe this dependency should be in the submakefiles # themselves. internal-doc-install_:: $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR) $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)$(END_ECHO) $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE): $(ECHO_CREATING)$(MKINSTALLDIRS) $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) ifneq ($(TEXI_FILES),) include $(GNUSTEP_MAKEFILES)/Instance/Documentation/texi.make endif ifneq ($(GSDOC_FILES),) include $(GNUSTEP_MAKEFILES)/Instance/Documentation/gsdoc.make endif ifneq ($(AGSDOC_FILES),) include $(GNUSTEP_MAKEFILES)/Instance/Documentation/autogsdoc.make endif ifneq ($(LATEX_FILES),) include $(GNUSTEP_MAKEFILES)/Instance/Documentation/latex.make endif ifneq ($(JAVADOC_FILES),) include $(GNUSTEP_MAKEFILES)/Instance/Documentation/javadoc.make endif ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_FILES),) include $(GNUSTEP_MAKEFILES)/Instance/Documentation/install_files.make endif ��������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/framework.make����������������������������������������������������������0000664�0001750�0001750�00000104223�12737722775�020361� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-gmake-*- # Instance/framework.make # # Instance Makefile rules to build GNUstep-based frameworks. # # Copyright (C) 2000, 2001, 2002, 2003, 2004, 2010 Free Software Foundation, Inc. # # Author: Mirko Viviani <mirko.viviani@rccr.cremona.it> # Author: Nicola Pero <nicola.pero@meta-innovation.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Frameworks usually link against a gui library (if available). If # you don't need a gui library, use xxx_NEEDS_GUI = no. ifeq ($(NEEDS_GUI),) NEEDS_GUI = yes endif ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif .PHONY: internal-framework-all_ \ build-framework \ internal-framework-build-headers \ build-framework-dirs \ internal-framework-install_ \ internal-framework-distclean \ internal-framework-clean \ internal-framework-uninstall_ \ internal-framework-run-compile-submake \ internal-framework-compile # The name of the framework is in the FRAMEWORK_NAME variable. # The list of framework resource files are in xxx_RESOURCE_FILES # The list of framework web server resource files are in # xxx_WEBSERVER_RESOURCE_FILES # The list of localized framework resource files is in # xxx_LOCALIZED_RESOURCE_FILES # The list of localized framework web server resource files is in # xxx_WEBSERVER_LOCALIZED_RESOURCE_FILES # The list of framework GSWeb components are in xxx_COMPONENTS # The list of languages the framework supports is in xxx_LANGUAGES # The list of framework resource directories are in xxx_RESOURCE_DIRS # The list of framework subprojects directories are in xxx_SUBPROJECTS # The name of the principal class is xxx_PRINCIPAL_CLASS # The header files are in xxx_HEADER_FILES # The directory where the header files are located is xxx_HEADER_FILES_DIR # (defaults to ./) # The directory where to install the header files inside the library # installation directory is xxx_HEADER_FILES_INSTALL_DIR # (defaults to the framework name [without .framework]). Can't be `.' # The list of framework web server resource directories are in # xxx_WEBSERVER_RESOURCE_DIRS # The list of localized framework web server GSWeb components are in # xxx_WEBSERVER_LOCALIZED_RESOURCE_DIRS # xxx_CURRENT_VERSION_NAME is the compiled version name (default "0") # xxx_MAKE_CURRENT_VERSION is used to decide if the framework version # we compiling should be made the current/default version or not # (default is "yes") # xxx_TEST_DIR is the directory in which 'make check' will cause tests # to be run using gnustep-tests. # # where xxx is the framework name # # # The HEADER_FILES_INSTALL_DIR might look somewhat weird - because in # most if not all cases, you want it to be the framework name. At the # moment, it allows you to put headers for framework XXX in directory # YYY, so that you can refer to them by using #include # <YYY/MyHeader.h> rather than #include <XXX/MyHeader.h>. It seems to # be mostly used to have a framework with name XXX work as a drop-in # replacement for another framework, which has name YYY -- and which # might be installed at the same time :-). # # If you want to insert your own entries into Info.plist (or # Info-gnustep.plist) you should create a xxxInfo.plist file (where # xxx is the framework name) and gnustep-make will automatically # read it and merge it into Info-gnustep.plist. # # Set VERSION from xxx_VERSION ifneq ($($(GNUSTEP_INSTANCE)_VERSION),) VERSION = $($(GNUSTEP_INSTANCE)_VERSION) endif ifeq ($(VERSION),) VERSION = 0.0.1 endif # By setting xxx_INTERFACE_VERSION you can change the soversion used # when linking the library. See comments in library.make for the # variables with the same name for libraries. ifeq ($($(GNUSTEP_INSTANCE)_INTERFACE_VERSION),) # By default, if VERSION is 1.0.0, INTERFACE_VERSION is 1 INTERFACE_VERSION = $(word 1,$(subst ., ,$(VERSION))) else INTERFACE_VERSION = $($(GNUSTEP_INSTANCE)_INTERFACE_VERSION) endif # CURRENT_VERSION_NAME is the name of the version as used when # building the library structure. We recommend just using # INTERFACE_VERSION for that, so your resources and your shared # library have the same versioning. # Warning - the following variable is also used in Master/rules.make # to build the OWNING_PROJECT_HEADER_DIR for the framework's # subprojects. Make sure you keep them in sync if you change them. CURRENT_VERSION_NAME = $($(GNUSTEP_INSTANCE)_CURRENT_VERSION_NAME) ifeq ($(CURRENT_VERSION_NAME),) CURRENT_VERSION_NAME = $(INTERFACE_VERSION) endif # xxx_MAKE_CURRENT_VERSION can be set to 'no' if you do not want the # framework version that we are building from becoming the Current # one. ifneq ($($(GNUSTEP_INSTANCE)_MAKE_CURRENT_VERSION),) MAKE_CURRENT_VERSION = $($(GNUSTEP_INSTANCE)_MAKE_CURRENT_VERSION) endif 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 # This is used on Apple to build frameworks which can be embedded into # applications. You usually set it to something like # @executable_path/../Frameworks and then you can embed the framework # in an application. DYLIB_INSTALL_NAME_BASE = $($(GNUSTEP_INSTANCE)_DYLIB_INSTALL_NAME_BASE) FRAMEWORK_DIR_NAME = $(GNUSTEP_INSTANCE).framework FRAMEWORK_DIR = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_DIR_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, it is only defining # HEADER_FILES, HEADER_SUBDIRS, HEADER_FILES_DIR and # HEADER_FILES_INSTALL_DIR in the 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 include $(GNUSTEP_MAKEFILES)/Instance/Shared/pkgconfig.make # 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), $(ALL_LIBS)) endif INTERNAL_LIBRARIES_DEPEND_UPON = \ $(ALL_LIB_DIRS) \ $(LIBRARIES_DEPEND_UPON) ifeq ($(FOUNDATION_LIB),gnu) # On GNUstep, build our dummy class to store information which # 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_INSTANCE_DIR)/,$(DUMMY_FRAMEWORK).o) # The following file will hold the list of classes compiled into the # framework, ready to be included in the .plist file. We include the # list of classes twice, in the object file itself (for when the # framework is loaded) and in the .plist (for tools which let you # browse in frameworks on disk and see lists of classes). Please note # that reading the class list from the .plist requires gnustep-base to # have properly located the framework bundle on disk, while reading # the list from the object file itself does not (and so it's more # likely to work in a portable way), which is why we still save the # list in the object file rather than only putting it in the .plist. # Maybe this point should be discarded, and we should only store the class # list in the .plist file. DUMMY_FRAMEWORK_CLASS_LIST = $(DERIVED_SOURCES_DIR)/$(GNUSTEP_INSTANCE)-class-list endif FRAMEWORK_HEADER_FILES = $(addprefix $(FRAMEWORK_VERSION_DIR)/Headers/,$(HEADER_FILES)) FRAMEWORK_HEADER_SUBDIRS = $(addprefix $(FRAMEWORK_VERSION_DIR)/Headers/,$(HEADER_SUBDIRS)) # FIXME - do we really those variables too ? 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 = $(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) ifeq ($(findstring darwin, $(GNUSTEP_TARGET_OS)), darwin) # On Mac OS X the version number conventionally precedes the shared # library suffix, e.g., libgnustep-base.1.16.1.dylib. VERSION_FRAMEWORK_LIBRARY_FILE = lib$(GNUSTEP_INSTANCE).$(VERSION)$(SHARED_LIBEXT) SONAME_FRAMEWORK_FILE = lib$(GNUSTEP_INSTANCE).$(INTERFACE_VERSION)$(SHARED_LIBEXT) else VERSION_FRAMEWORK_LIBRARY_FILE = $(FRAMEWORK_LIBRARY_FILE).$(VERSION) SONAME_FRAMEWORK_FILE = $(FRAMEWORK_LIBRARY_FILE).$(INTERFACE_VERSION) endif 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_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-0.dll # (cygRenaissance-0.dll on Cygwin). Include the INTERFACE_VERSION in # the DLL library name. Applications are linked explicitly to this # INTERFACE_VERSION of the library; this works exactly in the same way # as under Unix. LIB_LINK_DLL_FILE = $(DLL_PREFIX)$(GNUSTEP_INSTANCE)-$(subst .,_,$(INTERFACE_VERSION))$(DLL_LIBEXT) FRAMEWORK_OBJ_EXT = $(DLL_LIBEXT) endif # BUILD_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) endif ifeq ($(FRAMEWORK_INSTALL_DIR),) FRAMEWORK_INSTALL_DIR = $(GNUSTEP_FRAMEWORKS) endif # # Now prepare the variables which are used by target-dependent commands # defined in target.make # LIB_LINK_OBJ_DIR = $(FRAMEWORK_LIBRARY_DIR) LIB_LINK_VERSION_FILE = $(VERSION_FRAMEWORK_LIBRARY_FILE) LIB_LINK_SONAME_FILE = $(SONAME_FRAMEWORK_FILE) LIB_LINK_FILE = $(FRAMEWORK_LIBRARY_FILE) LIB_LINK_INSTALL_DIR = $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_LIBRARY_DIR_NAME) ifneq ($(DYLIB_INSTALL_NAME_BASE),) LIB_LINK_INSTALL_NAME = $(DYLIB_INSTALL_NAME_BASE)/$(FRAMEWORK_FILE_NAME) else # Use a relative path for easy relocation. LIB_LINK_INSTALL_NAME = $(GNUSTEP_INSTANCE).framework/$(GNUSTEP_INSTANCE) # On Mac OS X, set absolute install_name if requested ifeq ($(findstring darwin, $(GNUSTEP_TARGET_OS)), darwin) ifeq ($(GNUSTEP_ABSOLUTE_INSTALL_PATHS), yes) LIB_LINK_INSTALL_NAME = $(LIB_LINK_INSTALL_DIR)/$(GNUSTEP_INSTANCE) endif endif endif GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(FRAMEWORK_VERSION_DIR)/Resources include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make internal-framework-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) $(OBJ_DIRS_TO_CREATE) \ build-framework # If they specified Info-gnustep.plist in the xxx_RESOURCE_FILES, # print a warning. They are supposed to provide a xxxInfo.plist which # gets merged with the automatically generated entries to generate # Info-gnustep.plist. ifneq ($(FOUNDATION_LIB), apple) ifneq ($(filter Info-gnustep.plist,$($(GNUSTEP_INSTANCE)_RESOURCE_FILES)),) $(WARNING_INFO_GNUSTEP_PLIST) endif else ifneq ($(filter Info.plist,$($(GNUSTEP_INSTANCE)_RESOURCE_FILES)),) $(WARNING_INFO_PLIST) endif endif internal-framework-build-headers:: $(FRAMEWORK_VERSION_DIR)/Headers \ $(FRAMEWORK_HEADER_SUBDIRS) \ $(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, # and only executed if the symlink doesn't exist yet, or if # FRAMEWORK_VERSION_DIR is newer than the symlink. This is to avoid # rebuilding the symlink every single time, which is a waste of time. UPDATE_CURRENT_SYMLINK_RULE = $(FRAMEWORK_DIR)/Versions/Current $(FRAMEWORK_DIR)/Versions/Current: $(FRAMEWORK_VERSION_DIR) $(ECHO_UPDATING_VERSION_SYMLINK)cd $(FRAMEWORK_DIR)/Versions; \ $(RM_LN_S) Current; \ $(LN_S) $(CURRENT_VERSION_NAME) Current$(END_ECHO) else UPDATE_CURRENT_SYMLINK_RULE = endif # FIXME/TODO - the following rule is always executed. This is stupid. # We should have some decent dependencies so that it's not executed if # there is nothing to build. :-) # 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)/Resources \ $(FRAMEWORK_RESOURCE_DIRS) \ $(UPDATE_CURRENT_SYMLINK_RULE) ifeq ($(FRAMEWORK_VERSION_SUPPORT), yes) $(ECHO_NOTHING)cd $(FRAMEWORK_DIR); \ if [ ! -h "Resources" ]; then \ $(RM_LN_S) Resources; \ $(LN_S_RECURSIVE) Versions/Current/Resources Resources; \ fi; \ if [ ! -h "Headers" ]; then \ $(RM_LN_S) Headers; \ $(LN_S_RECURSIVE) Versions/Current/Headers Headers; \ fi$(END_ECHO) endif $(ECHO_NOTHING)cd $(DERIVED_SOURCES_DIR); \ if [ ! -h "$(HEADER_FILES_INSTALL_DIR)" ]; then \ $(RM_LN_S) ./$(HEADER_FILES_INSTALL_DIR); \ $(LN_S_RECURSIVE) ../$(FRAMEWORK_DIR_NAME)/Headers \ ./$(HEADER_FILES_INSTALL_DIR); \ fi$(END_ECHO) $(FRAMEWORK_LIBRARY_DIR): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) $(FRAMEWORK_VERSION_DIR)/Headers: $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) $(FRAMEWORK_HEADER_SUBDIRS): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) $(DERIVED_SOURCES_DIR): $(DERIVED_SOURCES_DIR)/.stamp $(DERIVED_SOURCES_DIR)/.stamp: $(ECHO_CREATING)$(MKDIRS) $(DERIVED_SOURCES_DIR); \ touch $@$(END_ECHO) # Need to share this code with the headers code ... but how. # IMPORTANT: It is tempting to have a file (a header, in this case) # depend on the directory in which we want to create it (the # .../Headers/ directory in this case). The idea being that make # would automatically create the directory before the file. That # might work for a single file, but could trigger spurious rebuilds if # you have more than one file in the directory. The first file will # create the directory, then create the file. The second file will be # created inside the directory; but on some filesystems, creating the # file inside the directory then updates the 'last modified' timestamp # of the directory. So next time you run make, the directory is # 'newer' than the first file, and because the first file depends on # the directory, make will determine that it needs to be updated, # triggering a spurious recreation of the file. If you also have # auto-dependencies turned on, this might in turn cause recompilation # and further spurious rebuilding to happen. $(FRAMEWORK_VERSION_DIR)/Headers/%.h: $(HEADER_FILES_DIR)/%.h $(ECHO_CREATING)$(INSTALL_DATA) $< $@$(END_ECHO) OBJC_OBJ_FILES_TO_INSPECT = $(OBJC_OBJ_FILES) $(SUBPROJECT_OBJ_FILES) # FIXME - We should not depend on GNUmakefile - rather we should use # Instance/Shared/stamp-string.make if we need to depend on the value # of some make variables. That would also detect a change in # FRAMEWORK_INSTALL_DIR from the command line, not currently covered # at the moment! # # To get the list of all classes, we use # $(EXTRACT_CLASS_NAMES_COMMAND), which is defined in target.make # # # The following rule will also build the DUMMY_FRAMEWORK_CLASS_LIST # file. This file is always created/deleted at the same time as the # DUMMY_FRAMEWORK_FILE. $(DUMMY_FRAMEWORK_FILE): $(DERIVED_SOURCES_DIR)/.stamp $(OBJ_FILES_TO_LINK) GNUmakefile $(ECHO_CREATING) classes=""; \ for object_file in $(OBJC_OBJ_FILES_TO_INSPECT) __dummy__; do \ if [ "$$object_file" != "__dummy__" ]; then \ sym=`$(EXTRACT_CLASS_NAMES_COMMAND)`; \ classes="$$classes $$sym"; \ fi; \ done; \ classlist=""; \ classarray=""; \ for f in $$classes __dummy__ ; do \ if [ "$$f" != "__dummy__" ]; then \ if [ "$$classlist" = "" ]; then \ classlist="@\"$$f\""; \ classarray="(\"$$f\""; \ else \ classlist="$$classlist, @\"$$f\""; \ classarray="$$classarray, \"$$f\""; \ fi; \ fi; \ done; \ if [ "$$classlist" = "" ]; then \ classlist="NULL"; \ classarray="()"; \ else \ classlist="$$classlist, NULL"; \ classarray="$$classarray)"; \ fi; \ echo "$$classarray" > $(DUMMY_FRAMEWORK_CLASS_LIST); \ echo "#include <Foundation/NSObject.h>" > $@; \ echo "#include <Foundation/NSString.h>" > $@; \ echo "@interface $(DUMMY_FRAMEWORK) : NSObject" >> $@; \ echo "+ (NSString *)frameworkVersion;" >> $@; \ echo "+ (NSString *const*)frameworkClasses;" >> $@; \ echo "@end" >> $@; \ echo "@implementation $(DUMMY_FRAMEWORK)" >> $@; \ echo "+ (NSString *)frameworkVersion { return @\"$(CURRENT_VERSION_NAME)\"; }" >> $@; \ echo "static NSString *allClasses[] = {$$classlist};" >> $@; \ echo "+ (NSString *const*)frameworkClasses { return allClasses; }" >> $@;\ echo "@end" >> $@$(END_ECHO) ifeq ($(FOUNDATION_LIB),gnu) $(DUMMY_FRAMEWORK_OBJ_FILE): $(DUMMY_FRAMEWORK_FILE) $(ECHO_COMPILING)$(CC) $< -c $(ALL_CPPFLAGS) $(ALL_OBJCFLAGS) -o $@$(END_ECHO) endif ifeq ($(FOUNDATION_LIB),gnu) FRAMEWORK_INFO_PLIST_FILE = Info-gnustep.plist else FRAMEWORK_INFO_PLIST_FILE = Info.plist endif ifeq ($(FRAMEWORK_VERSION_SUPPORT), yes) build-framework: internal-framework-run-compile-submake \ shared-instance-bundle-all \ $(FRAMEWORK_VERSION_DIR)/Resources/$(FRAMEWORK_INFO_PLIST_FILE) \ $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE) else build-framework: internal-framework-run-compile-submake \ shared-instance-bundle-all \ $(FRAMEWORK_VERSION_DIR)/Resources/$(FRAMEWORK_INFO_PLIST_FILE) endif 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. On Darwin (non-Apple) we do this as well since we can partially # emulate frameworks (see the ld_lib_path.sh comments on this). # Please note that the following keeps the top-level symlink pointing # to the framework in Current. This is always correct, even if what # we are compiling is not made the Current framework version, but if # what we are compiling is not made the Current framework version, I # think it's not our business to touch the Current stuff, so let's # ignore it. It's faster to ignore it anyway. ;-) $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE): $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR) ifeq ($(MAKE_CURRENT_VERSION),yes) $(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework; \ $(RM_LN_S) $(GNUSTEP_INSTANCE); \ $(LN_S) Versions/Current/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE) $(GNUSTEP_INSTANCE)$(END_ECHO) endif else # We create a top-level symlink (/copy) # # xxx.framework/{TARGET_LDIR}/xxx --> <the Current framework {TARGET_LDIR}/object file> # # And also # # xxx.framework/{TARGET_LDIR}/libxxx.so --> <the Current framework {TARGET_LDIR}/libxxx.so file> # # On Windows, we don't do any of this since there are no versions anyway. # # The reason for doing this is that you can link against the uninstalled framework # by just using -Lpath_to_the_framework/xxx.framework/$TARGET_LDIR # ifeq ($(FRAMEWORK_VERSION_SUPPORT), yes) $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE): $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR) ifeq ($(MAKE_CURRENT_VERSION),yes) $(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR); \ $(RM_LN_S) $(GNUSTEP_INSTANCE) $(FRAMEWORK_LIBRARY_FILE); \ $(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_TARGET_LDIR) \ Versions/Current/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE) short` \ $(GNUSTEP_INSTANCE); \ $(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_TARGET_LDIR) \ Versions/Current/$(GNUSTEP_TARGET_LDIR)/$(FRAMEWORK_LIBRARY_FILE) short` \ $(FRAMEWORK_LIBRARY_FILE)$(END_ECHO) endif endif endif ifneq ($(BUILD_DLL), yes) LIB_LINK_FRAMEWORK_FILE = $(LIB_LINK_FILE) else LIB_LINK_FRAMEWORK_FILE = $(LIB_LINK_DLL_FILE) endif LIB_LINK_FILES_TO_LINK = $(OBJ_FILES_TO_LINK) # Important: FRAMEWORK_FILE (which is created in the parallel # 'compile' invocation) depends on DUMMY_FRAMEWORK_OBJ_FILES as well, # which depends on a lot of other rules. These rules *must* be safe # for parallel building, because they will be used during a parallel # build. In particular, note that DUMMY_FRAMEWORK_OBJ_FILE must # itself depend on OBJ_FILES_TO_LINK else it might be built before all # files are compiled. $(FRAMEWORK_FILE): $(DUMMY_FRAMEWORK_OBJ_FILE) $(OBJ_FILES_TO_LINK) ifeq ($(OBJ_FILES_TO_LINK),) $(WARNING_EMPTY_LINKING) endif $(ECHO_LINKING) \ $(LIB_LINK_CMD) || $(RM) $(FRAMEWORK_FILE) ; \ (cd $(LIB_LINK_OBJ_DIR); \ $(RM_LN_S) $(GNUSTEP_INSTANCE); \ $(LN_S) $(LIB_LINK_FRAMEWORK_FILE) $(GNUSTEP_INSTANCE)) \ $(END_ECHO) ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) # Standard building internal-framework-run-compile-submake: $(FRAMEWORK_FILE) else # Parallel building. The actual compilation is delegated to a # sub-make invocation where _GNUSTEP_MAKE_PARALLEL is set to yet. # That sub-make invocation will compile files in parallel. internal-framework-run-compile-submake: $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-framework-compile \ GNUSTEP_TYPE=$(GNUSTEP_TYPE) \ GNUSTEP_INSTANCE=$(GNUSTEP_INSTANCE) \ GNUSTEP_OPERATION=compile \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) internal-framework-compile: $(FRAMEWORK_FILE) endif PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS)) ifeq ($(PRINCIPAL_CLASS),) PRINCIPAL_CLASS = $(GNUSTEP_INSTANCE) endif MAIN_MODEL_FILE = $(strip $(subst .gmodel,,$(subst .gorm,,$(subst .nib,,$($(GNUSTEP_INSTANCE)_MAIN_MODEL_FILE))))) # FIXME: Use stamp.make to depend on the value of MAIN_MODEL_FILE and PRINCIPAL_CLASS # FIXME: MacOSX frameworks should also merge xxxInfo.plist into them # MacOSX-S frameworks $(FRAMEWORK_VERSION_DIR)/Resources/Info.plist: $(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \ echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \ echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \ echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \ echo "}") >$@$(END_ECHO) # GNUstep frameworks $(FRAMEWORK_VERSION_DIR)/Resources/Info-gnustep.plist: \ $(DUMMY_FRAMEWORK_FILE) \ $(GNUSTEP_PLIST_DEPEND) $(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \ echo " NSExecutable = \"$(GNUSTEP_INSTANCE)$(FRAMEWORK_OBJ_EXT)\";"; \ echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \ echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \ echo " Classes = "; \ cat $(DUMMY_FRAMEWORK_CLASS_LIST); \ echo " ;"; \ echo "}") >$@$(END_ECHO) $(ECHO_NOTHING)if [ -r "$(GNUSTEP_PLIST_DEPEND)" ]; then \ plmerge $@ $(GNUSTEP_PLIST_DEPEND); \ fi$(END_ECHO) ifneq ($(BUILD_DLL),yes) ifeq ($(FOUNDATION_LIB),gnu) internal-framework-install_:: $(FRAMEWORK_INSTALL_DIR) \ $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) \ $(GNUSTEP_HEADERS) shared-instance-pkgconfig-install $(ECHO_INSTALLING)(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 ifeq ($(strip),yes) $(ECHO_STRIPPING)$(STRIP) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_FILE_NAME)$(END_ECHO) endif $(ECHO_INSTALLING_HEADERS)cd $(GNUSTEP_HEADERS); \ $(RM_LN_S) $(HEADER_FILES_INSTALL_DIR); \ $(LN_S_RECURSIVE) `$(REL_PATH_SCRIPT) $(GNUSTEP_HEADERS) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_DIR_NAME)/Headers short` $(HEADER_FILES_INSTALL_DIR); \ $(END_ECHO) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)cd $(GNUSTEP_HEADERS); \ $(CHOWN) $(CHOWN_TO) $(HEADER_FILES_INSTALL_DIR); \ $(END_ECHO) endif $(ECHO_NOTHING)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); \ $(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_CURRENT_LIBRARY_DIR_NAME)/$(FRAMEWORK_LIBRARY_FILE) short` $(FRAMEWORK_LIBRARY_FILE); \ if test -r "$(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_LIBRARY_DIR_NAME)/$(SONAME_FRAMEWORK_FILE)"; then \ $(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_LIBRARY_DIR_NAME)/$(SONAME_FRAMEWORK_FILE) short` $(SONAME_FRAMEWORK_FILE); \ fi; \ $(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_LIBRARY_DIR_NAME)/$(VERSION_FRAMEWORK_LIBRARY_FILE) short` $(VERSION_FRAMEWORK_LIBRARY_FILE)$(END_ECHO) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)cd $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR); \ $(CHOWN) $(CHOWN_TO) $(FRAMEWORK_LIBRARY_FILE); \ if test -r "$(SONAME_FRAMEWORK_FILE)"; then \ $(CHOWN) $(CHOWN_TO) $(SONAME_FRAMEWORK_FILE); \ fi; \ $(CHOWN) $(CHOWN_TO) $(VERSION_FRAMEWORK_LIBRARY_FILE)$(END_ECHO) endif else # This code for Apple OSX internal-framework-install_:: $(FRAMEWORK_INSTALL_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) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_DIR_NAME)$(END_ECHO) endif ifeq ($(strip),yes) $(ECHO_STRIPPING)$(STRIP) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_FILE_NAME)$(END_ECHO) endif endif else # install DLL 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) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_DIR_NAME)$(END_ECHO) endif ifeq ($(strip),yes) $(ECHO_STRIPPING)$(STRIP) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_FILE_NAME)$(END_ECHO) endif $(ECHO_INSTALLING_HEADERS)cd $(GNUSTEP_HEADERS); \ 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); \ $(CHOWN) -R $(CHOWN_TO) $(HEADER_FILES_INSTALL_DIR); \ $(END_ECHO) endif $(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): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) # 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): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) $(GNUSTEP_HEADERS): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) 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_:: shared-instance-pkgconfig-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_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_LN_S) $(FRAMEWORK_LIBRARY_FILE); \ cd $(DLL_INSTALLATION_DIR); \ $(RM_LN_S) $(LIB_LINK_DLL_FILE); \ $(END_ECHO) endif internal-framework-check:: ifneq ($($(GNUSTEP_INSTANCE)_TEST_DIR),) @(\ touch $($(GNUSTEP_INSTANCE)_TEST_DIR)/TestInfo; \ echo "# Generated by 'make check'" \ > $($(GNUSTEP_INSTANCE)_TEST_DIR)/make-check.env; \ echo "export LD_LIBRARY_PATH=\"$$(pwd)/$(GNUSTEP_INSTANCE).framework:$(LD_LIBRARY_PATH)\"" > $($(GNUSTEP_INSTANCE)_TEST_DIR)/make-check.env; \ echo "# Generated by 'make check'" \ > $($(GNUSTEP_INSTANCE)_TEST_DIR)/make-check.mak; \ echo "ADDITIONAL_INCLUDE_DIRS += \"-I$(GNUSTEP_MAKEFILES)/TestFramework -I$(FRAMEWORK_VERSION_DIR)/Headers\"" \ >> $($(GNUSTEP_INSTANCE)_TEST_DIR)/make-check.mak; \ echo "ADDITIONAL_LIB_DIRS += \"-L$(FRAMEWORK_VERSION_DIR))\"" \ >> $($(GNUSTEP_INSTANCE)_TEST_DIR)/make-check.mak; \ echo "ADDITIONAL_TOOL_LIBS += \"-l$(GNUSTEP_INSTANCE)\"" \ >> $($(GNUSTEP_INSTANCE)_TEST_DIR)/make-check.mak; \ unset MAKEFLAGS; \ if [ "$(DEBUG)" = "" ]; then \ gnustep-tests --verbose $($(GNUSTEP_INSTANCE)_TEST_DIR);\ else \ gnustep-tests --debug $($(GNUSTEP_INSTANCE)_TEST_DIR);\ fi;\ ) endif # # Cleaning targets # internal-framework-clean:: $(ECHO_NOTHING)rm -rf \ $(PSWRAP_C_FILES) $(PSWRAP_H_FILES) \ $(FRAMEWORK_DIR) $(DERIVED_SOURCES_DIR)$(END_ECHO) internal-framework-distclean:: include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/application.make��������������������������������������������������������0000664�0001750�0001750�00000034220�12717263316�020653� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # application.make # # Instance Makefile rules to build GNUstep-based applications. # # Copyright (C) 1997 - 2010 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola.pero@meta-innovation.com> # Author: Ovidiu Predescu <ovidiu@net-community.com> # Based on the original version by Scott Christley. # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Applications usually link against a gui library (if available). ifeq ($(NEEDS_GUI),) NEEDS_GUI = yes endif # # Include in the common makefile rules # ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # # The name of the application is in the APP_NAME variable. # The list of application resource directories is in xxx_RESOURCE_DIRS # The list of application resource files is in xxx_RESOURCE_FILES # The list of localized resource files is in xxx_LOCALIZED_RESOURCE_FILES # The list of supported languages is in xxx_LANGUAGES # The name of the application icon (if any) is in xxx_APPLICATION_ICON # The name of the app class is xxx_PRINCIPAL_CLASS (defaults to NSApplication). # # If you want to insert your own entries into Info.plist (or # Info-gnustep.plist) you should create a xxxInfo.plist file (where # xxx is the application name) and gnustep-make will automatically # read it and merge it into Info-gnustep.plist. # .PHONY: internal-app-all_ \ internal-app-install_ \ internal-app-uninstall_ \ internal-app-copy_into_dir \ internal-application-build-template \ internal-app-run-compile-submake \ internal-app-compile # # Determine where to install. By default, install into GNUSTEP_APPS. # ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),) APP_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR) endif ifeq ($(APP_INSTALL_DIR),) APP_INSTALL_DIR = $(GNUSTEP_APPS) endif APP_DIR_NAME = $(GNUSTEP_INSTANCE:=.$(APP_EXTENSION)) APP_DIR = $(GNUSTEP_BUILD_DIR)/$(APP_DIR_NAME) # # Now include the standard resource-bundle routines from Shared/bundle.make # ifneq ($(FOUNDATION_LIB), apple) # GNUstep bundle GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(APP_DIR)/Resources APP_INFO_PLIST_FILE = $(APP_DIR)/Resources/Info-gnustep.plist else # OSX bundle GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(APP_DIR)/Contents/Resources APP_INFO_PLIST_FILE = $(APP_DIR)/Contents/Info.plist endif GNUSTEP_SHARED_BUNDLE_INSTALL_NAME = $(APP_DIR_NAME) GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH = . GNUSTEP_SHARED_BUNDLE_INSTALL_PATH = $(APP_INSTALL_DIR) include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make ifneq ($(FOUNDATION_LIB), apple) APP_FILE_NAME = $(APP_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)$(EXEEXT) else APP_FILE_NAME = $(APP_DIR_NAME)/Contents/MacOS/$(GNUSTEP_INSTANCE)$(EXEEXT) endif 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) ALL_LDFLAGS += -Wl,--export-all-symbols -Wl,--out-implib,$(GNUSTEP_BUILD_DIR)/$(APP_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE).exe$(LIBEXT) endif # If building on MinGW, also mark the application as a 'GUI' # application. This prevents an ugly terminal window from being # automatically opened when you start your application directly by # double-clicking on the .exe icon in the Windows file manager. TODO: # Move this into target.make, but somehow make sure it is only used # when linking applications. ifeq ($(findstring mingw32, $(GNUSTEP_TARGET_OS)), mingw32) ALL_LDFLAGS += -Wl,-subsystem,windows else ifeq ($(findstring mingw64, $(GNUSTEP_TARGET_OS)), mingw32) ALL_LDFLAGS += -Wl,-subsystem,windows endif $(APP_FILE): $(OBJ_FILES_TO_LINK) ifeq ($(OBJ_FILES_TO_LINK),) $(WARNING_EMPTY_LINKING) endif $(ECHO_LINKING)$(LD) $(ALL_LDFLAGS) $(CC_LDFLAGS) -o $(LDOUT)$@ \ $(OBJ_FILES_TO_LINK) $(ALL_LIB_DIRS) $(ALL_LIBS)$(END_ECHO) # # Compilation targets # ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) # Standard building internal-app-run-compile-submake: $(APP_FILE) else # Parallel building. The actual compilation is delegated to a # sub-make invocation where _GNUSTEP_MAKE_PARALLEL is set to yet. # That sub-make invocation will compile files in parallel. internal-app-run-compile-submake: $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-app-compile \ GNUSTEP_TYPE=$(GNUSTEP_TYPE) \ GNUSTEP_INSTANCE=$(GNUSTEP_INSTANCE) \ GNUSTEP_OPERATION=compile \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) internal-app-compile: $(APP_FILE) endif ifeq ($(FOUNDATION_LIB), apple) internal-app-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) \ $(OBJ_DIRS_TO_CREATE) \ $(APP_DIR)/Contents/MacOS \ internal-app-run-compile-submake \ shared-instance-bundle-all \ $(APP_INFO_PLIST_FILE) # If they specified Info.plist in the xxx_RESOURCE_FILES, print a # warning. They are supposed to provide a xxxInfo.plist which gets # merged with the automatically generated entries to generate # Info.plist. ifneq ($(filter Info.plist,$($(GNUSTEP_INSTANCE)_RESOURCE_FILES)),) $(WARNING_INFO_PLIST) endif $(APP_DIR)/Contents/MacOS: $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) else internal-app-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) \ $(OBJ_DIRS_TO_CREATE) \ $(APP_DIR)/$(GNUSTEP_TARGET_LDIR) \ internal-app-run-compile-submake \ internal-application-build-template \ $(APP_DIR)/Resources \ $(APP_INFO_PLIST_FILE) \ $(APP_DIR)/Resources/$(GNUSTEP_INSTANCE).desktop \ shared-instance-bundle-all # If they specified Info-gnustep.plist in the xxx_RESOURCE_FILES, # print a warning. They are supposed to provide a xxxInfo.plist which # gets merged with the automatically generated entries to generate # Info-gnustep.plist. ifneq ($(filter Info-gnustep.plist,$($(GNUSTEP_INSTANCE)_RESOURCE_FILES)),) $(WARNING_INFO_GNUSTEP_PLIST) endif $(APP_DIR)/$(GNUSTEP_TARGET_LDIR): $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) ifeq ($(GNUSTEP_IS_FLATTENED), no) internal-application-build-template: $(APP_DIR)/$(GNUSTEP_INSTANCE) $(APP_DIR)/$(GNUSTEP_INSTANCE): $(ECHO_NOTHING)cp $(GNUSTEP_MAKEFILES)/executable.template \ $(APP_DIR)/$(GNUSTEP_INSTANCE); \ chmod a+x $(APP_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)$(CHOWN) $(CHOWN_TO) $(APP_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) endif else internal-application-build-template: endif endif PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS)) ifeq ($(PRINCIPAL_CLASS),) PRINCIPAL_CLASS = NSApplication endif APPLICATION_ICON = $($(GNUSTEP_INSTANCE)_APPLICATION_ICON) MAIN_MODEL_FILE = $(strip $(subst .gmodel,,$(subst .gorm,,$(subst .nib,,$($(GNUSTEP_INSTANCE)_MAIN_MODEL_FILE))))) MAIN_MARKUP_FILE = $(strip $(subst .gsmarkup,,$($(GNUSTEP_INSTANCE)_MAIN_MARKUP_FILE))) # We must recreate Info.plist if PRINCIPAL_CLASS and/or # APPLICATION_ICON and/or MAIN_MODEL_FILE and/or MAIN_MARKUP_FILE has # changed since last time we built Info.plist. We use # stamp-string.make, which will store the variables in a stamp file # inside GNUSTEP_STAMP_DIR, and rebuild Info.plist if # GNUSTEP_STAMP_STRING changes. We will also depend on xxxInfo.plist # if any. GNUSTEP_STAMP_STRING = $(PRINCIPAL_CLASS)-$(APPLICATION_ICON)-$(MAIN_MODEL_FILE)-$(MAIN_MARKUP_FILE) ifneq ($(FOUNDATION_LIB),apple) GNUSTEP_STAMP_DIR = $(APP_DIR) # Only for efficiency $(GNUSTEP_STAMP_DIR): $(APP_DIR)/$(GNUSTEP_TARGET_LDIR) else # Everything goes in $(APP_DIR)/Contents on Apple GNUSTEP_STAMP_DIR = $(APP_DIR)/Contents endif include $(GNUSTEP_MAKEFILES)/Instance/Shared/stamp-string.make # On Apple we assume that xxxInfo.plist has a '{' (and nothing else) # on the first line, and the rest of the file is a plain property list # dictionary. You must make sure your xxxInfo.plist is in this format # to use it on Apple. # The problem is, we need to add the automatically generated entries # to this custom dictionary on Apple - to do that, we generate '{' # followed by the custom entries, followed by xxxInfo.plist (with the # first line removed), or by '}'. NB: "sed '1d' filename" prints out # filename, except the first line. # On GNUstep we use plmerge which is much slower, but should probably # be safer, because as soon as xxxInfo.plist is in plist format, it # should always work (even if the first line is not just a '{' and # nothing else). ifeq ($(FOUNDATION_LIB), apple) $(APP_INFO_PLIST_FILE): $(GNUSTEP_STAMP_DEPEND) $(GNUSTEP_PLIST_DEPEND) $(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \ echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \ echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \ echo " GSMainMarkupFile = \"$(MAIN_MARKUP_FILE)\";"; \ if [ "$(APPLICATION_ICON)" != "" ]; then \ echo " CFBundleIconFile = \"$(APPLICATION_ICON)\";"; \ fi; \ echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \ if [ -r "$(GNUSTEP_PLIST_DEPEND)" ]; then \ sed '1d' "$(GNUSTEP_PLIST_DEPEND)"; \ else \ echo "}"; \ fi) > $@$(END_ECHO) else $(APP_INFO_PLIST_FILE): $(GNUSTEP_STAMP_DEPEND) $(GNUSTEP_PLIST_DEPEND) $(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \ echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \ echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \ echo " GSMainMarkupFile = \"$(MAIN_MARKUP_FILE)\";"; \ if [ "$(APPLICATION_ICON)" != "" ]; then \ echo " NSIcon = \"$(APPLICATION_ICON)\";"; \ fi; \ echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \ echo "}") >$@$(END_ECHO) -$(ECHO_NOTHING)if [ -r "$(GNUSTEP_PLIST_DEPEND)" ]; then \ plmerge $@ "$(GNUSTEP_PLIST_DEPEND)"; \ fi$(END_ECHO) $(APP_DIR)/Resources/$(GNUSTEP_INSTANCE).desktop: $(APP_INFO_PLIST_FILE) $(ECHO_CREATING)pl2link $^ $(APP_DIR)/Resources/$(GNUSTEP_INSTANCE).desktop; \ chmod a+x $(APP_DIR)/Resources/$(GNUSTEP_INSTANCE).desktop$(END_ECHO) endif internal-app-copy_into_dir:: shared-instance-bundle-copy_into_dir # # install/uninstall targets # $(APP_INSTALL_DIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) internal-app-install_:: shared-instance-bundle-install internal-install-app-wrapper ifeq ($(strip),yes) $(ECHO_STRIPPING)$(STRIP) $(APP_INSTALL_DIR)/$(APP_FILE_NAME)$(END_ECHO) endif internal-app-uninstall_:: shared-instance-bundle-uninstall internal-uninstall-app-wrapper # # Normally, to start up an application from the command-line you would # need to use something like 'openapp Gorm.app'. To make this easier # for end-users, we create a 'Gorm' executable inside GNUSTEP_TOOLS # that does just that. Your environment needs to be setup (PATH and # library path properly setup) to use this executable. But that's OK; # if your environment is not setup, then GNUSTEP_TOOLS wouldn't be # in your PATH and so typing 'openapp' or 'Gorm' at the command-line # would do nothing anyway because they wouldn't be found! ;-) # # If your environment is difficult (and you can't fix it), then you # should stick with 'openapp', and you may need to specify the whole # PATH to openapp so that it is found. Eg, # /usr/GNUstep/System/Tools/openapp Gorm.app. That will do a full # GNUstep environment setup and should work no matter what. # # If we have symlinks, we simply create a symlink from # GNUSTEP_TOOLS/GNUSTEP_TARGET_LDIR to APP_INSTALL_DIR/APP_FILE_NAME. # This is the fastest way to start up your application; it just jumps # to the executable file. In fact, it is much faster than openapp. # # If we don't have symlinks, we install an app-wrapper consisting of a # one-liner shell script that will start openapp. This will be # slower. # # These are the rules to create/delete this 'wrapper'. # $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) ifeq ($(HAS_LN_S), yes) # We generate a relative symlink. This makes it easier to use DESTDIR # and other packaging relocation tricks. internal-install-app-wrapper: $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR) $(ECHO_NOTHING)\ cd $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR); \ $(RM_LN_S) $(GNUSTEP_INSTANCE); \ $(LN_S_RECURSIVE) `$(REL_PATH_SCRIPT) $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR) $(APP_INSTALL_DIR)/$(APP_FILE_NAME) short` \ $(GNUSTEP_INSTANCE)$(END_ECHO) else # Not sure that we can use relative paths with 'exec' in a portable # way. We want the stuff to work with DESTDIR, so in this case we use # openapp in the app wrapper. Much slower, but should work fine. internal-install-app-wrapper: $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR) $(ECHO_NOTHING)cat $(GNUSTEP_MAKEFILES)/app-wrapper.template \ | sed -e "s@GNUSTEP_INSTANCE@$(GNUSTEP_INSTANCE)@" > $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE); \ chmod a+x $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) ifneq ($(CHOWN_TO),) $(ECHO_CHOWNING)$(CHOWN) $(CHOWN_TO) $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) endif endif internal-uninstall-app-wrapper: $(ECHO_NOTHING)$(RM) -f $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Instance/library.make������������������������������������������������������������0000664�0001750�0001750�00000036605�12737722775�020040� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Instance/library.make # # Instance Makefile rules to build GNUstep-based libraries. # # Copyright (C) 1997, 2001 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Ovidiu Predescu <ovidiu@net-community.com> # Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Libraries usually link against a gui library (if available). If you # don't need a gui library, use xxx_NEEDS_GUI = no. ifeq ($(NEEDS_GUI),) NEEDS_GUI = yes endif ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif include $(GNUSTEP_MAKEFILES)/Instance/Shared/headers.make include $(GNUSTEP_MAKEFILES)/Instance/Shared/pkgconfig.make # # The name of the library (including the 'lib' prefix) is # in the LIBRARY_NAME variable. # The Objective-C files that gets included in the library are in xxx_OBJC_FILES # The C files are in xxx_C_FILES # The pswrap files are in xxx_PSWRAP_FILES # The header files are in xxx_HEADER_FILES # 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 directory in which 'make check' will cause tests to be run using # gnustep-tests is xxx_TEST_DIR # # Where xxx is the name of the library # .PHONY: internal-library-all_ \ internal-library-install_ \ internal-library-uninstall_ \ internal-install-lib \ internal-install-dirs \ internal-library-compile # This is the directory where the libs get installed. This should *not* # include the target arch, os directory or library_combo. ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),) LIBRARY_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR) endif ifeq ($(LIBRARY_INSTALL_DIR),) LIBRARY_INSTALL_DIR = $(GNUSTEP_LIBRARIES) endif # And this is used internally - it is the final directory where we put the # library - it includes target arch, os dir and library_combo - this variable # is PRIVATE to gnustep-make # # Do not set this variable if it is already set ... this allows other # makefiles (Instance/clibrary.make) to use the code in this file with # a different FINAL_LIBRARY_INSTALL_DIR ! # ifeq ($(FINAL_LIBRARY_INSTALL_DIR),) FINAL_LIBRARY_INSTALL_DIR = $(LIBRARY_INSTALL_DIR)/$(GNUSTEP_TARGET_LDIR) endif # Set VERSION from xxx_VERSION ifneq ($($(GNUSTEP_INSTANCE)_VERSION),) VERSION = $($(GNUSTEP_INSTANCE)_VERSION) endif ifeq ($(VERSION),) # Check if we can guess VERSION from one of the other version variables ifneq ($($(GNUSTEP_INSTANCE)_INTERFACE_VERSION),) VERSION = $($(GNUSTEP_INSTANCE)_INTERFACE_VERSION).0 else # For backwards compatibility we also check xxx_SOVERSION, which # is the old name for xxx_INTERFACE_VERSION ifneq ($($(GNUSTEP_INSTANCE)_SOVERSION),) VERSION = $($(GNUSTEP_INSTANCE)_SOVERSION).0 else # No luck with those. Use the default. VERSION = 0.0.1 endif endif endif # # Manage the case that LIBRARY_NAME starts with 'lib', and the case # that it doesn't start with 'lib'. In both cases, we need to create # a .so file whose name starts with 'lib'. # 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), $(ALL_LIBS)) endif INTERNAL_LIBRARIES_DEPEND_UPON = \ $(ALL_LIB_DIRS) \ $(LIBRARIES_DEPEND_UPON) ifeq ($(shared), yes) # Allow the user GNUmakefile to define xxx_INTERFACE_VERSION to # replace the default INTERFACE_VERSION for this library. # Effect of the value of xxx_INTERFACE_VERSION - # suppose your library is libgnustep-base.1.0.0 - if you do nothing, # INTERFACE_VERSION=1, and we prepare the symlink # libgnustep-base.so.1 --> libgnustep-base.so.1.0.0 and tell the # linker that it should remember that any application compiled # against this library need to use version .1 of the library. So at # runtime, the dynamical linker will search for libgnustep-base.so.1. # This is important if you install multiple versions of the same # library. The default is that if you install a new version of a # library with the same major number, the new version replaces the # old one, and all applications which were using the old one now use # the new one. If you install a library with a different major # number, the old apps will still use the old library, while newly # compiled apps will use the new one. # If you redefine xxx_INTERFACE_VERSION to be for example 1.0, then # we prepare the symlink libgnustep-base.so.1.0 --> # libgnustep-base.so.1.0.0 instead, and tell the linker to remember # 1.0. So at runtime, the dynamic linker will search for # libgnustep-base.so.1.0. The effect of changing # xxx_INTERFACE_VERSION to major.minor as in this example is that if # you install a new version with the same major.minor version, that # replaces the old one also for old applications, but if you install # a new library with the same major version but a *different* minor # version, that is used in new apps, but old apps still use the old # version. ifeq ($($(GNUSTEP_INSTANCE)_INTERFACE_VERSION),) # Backwards compatibility: xxx_SOVERSION was the old name for # xxx_INTERFACE_VERSION. There was no support for setting SOVERSION # (without xxx_), like there is no support for setting # INTERFACE_VERSION (without xxx_) now. # TODO: Remove xxx_SOVERSION at some point in the next few # years. NB: Likely the only user of this is Helge Hess, so once he's # upgraded, let's remove the backwards compatibility code. :-) ifneq ($($(GNUSTEP_INSTANCE)_SOVERSION),) INTERFACE_VERSION = $($(GNUSTEP_INSTANCE)_SOVERSION) else # This is the current code - by default, if VERSION is # 1.0.0, INTERFACE_VERSION is 1 INTERFACE_VERSION = $(word 1,$(subst ., ,$(VERSION))) endif else INTERFACE_VERSION = $($(GNUSTEP_INSTANCE)_INTERFACE_VERSION) endif ifneq ($(BUILD_DLL),yes) LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB)$(SHARED_LIBEXT) ifeq ($(findstring darwin, $(GNUSTEP_TARGET_OS)), darwin) # On Mac OS X the version number conventionally precedes the shared # library suffix, e.g., libgnustep-base.1.16.1.dylib. VERSION_LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB).$(VERSION)$(SHARED_LIBEXT) SONAME_LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB).$(INTERFACE_VERSION)$(SHARED_LIBEXT) else VERSION_LIBRARY_FILE = $(LIBRARY_FILE).$(VERSION) SONAME_LIBRARY_FILE = $(LIBRARY_FILE).$(INTERFACE_VERSION) endif 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 # LIBRARY_FILE is the import library, libgnustep-base.dll.a LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB)$(DLL_LIBEXT)$(LIBEXT) VERSION_LIBRARY_FILE = $(LIBRARY_FILE) SONAME_LIBRARY_FILE = $(LIBRARY_FILE) # LIB_LINK_DLL_FILE is the DLL library, gnustep-base-1.dll # (cyggnustep-base-1.dll on Cygwin). Include the INTERFACE_VERSION in # the DLL library name. Applications are linked explicitly to this # INTERFACE_VERSION of the library; this works exactly in the same way # as under Unix. LIB_LINK_DLL_FILE = $(DLL_PREFIX)$(LIBRARY_NAME_WITHOUT_LIB)-$(subst .,_,$(INTERFACE_VERSION))$(DLL_LIBEXT) endif # BUILD_DLL else # following code for static libs LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB)$(LIBEXT) VERSION_LIBRARY_FILE = $(LIBRARY_FILE) SONAME_LIBRARY_FILE = $(LIBRARY_FILE) endif # shared # # Now prepare the variables which are used by target-dependent commands # defined in target.make # LIB_LINK_OBJ_DIR = $(GNUSTEP_OBJ_DIR) LIB_LINK_VERSION_FILE = $(VERSION_LIBRARY_FILE) LIB_LINK_SONAME_FILE = $(SONAME_LIBRARY_FILE) LIB_LINK_FILE = $(LIBRARY_FILE) LIB_LINK_INSTALL_NAME = $(SONAME_LIBRARY_FILE) LIB_LINK_INSTALL_DIR = $(FINAL_LIBRARY_INSTALL_DIR) # On Mac OS X, set absolute install_name if requested ifeq ($(findstring darwin, $(GNUSTEP_TARGET_OS)), darwin) ifeq ($(GNUSTEP_ABSOLUTE_INSTALL_PATHS), yes) LIB_LINK_INSTALL_NAME = $(LIB_LINK_INSTALL_DIR)/$(SONAME_LIBRARY_FILE) endif endif # # Internal targets # # # Compilation targets # ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) # Standard building internal-library-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) \ $(OBJ_DIRS_TO_CREATE) \ $(GNUSTEP_OBJ_DIR)/$(VERSION_LIBRARY_FILE) else # Parallel building. The actual compilation is delegated to a # sub-make invocation where _GNUSTEP_MAKE_PARALLEL is set to yet. # That sub-make invocation will compile files in parallel. internal-library-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) $(OBJ_DIRS_TO_CREATE) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-library-compile \ GNUSTEP_TYPE=$(GNUSTEP_TYPE) \ GNUSTEP_INSTANCE=$(GNUSTEP_INSTANCE) \ GNUSTEP_OPERATION=compile \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) internal-library-compile: $(GNUSTEP_OBJ_DIR)/$(VERSION_LIBRARY_FILE) endif $(GNUSTEP_OBJ_DIR)/$(VERSION_LIBRARY_FILE): $(OBJ_FILES_TO_LINK) ifeq ($(OBJ_FILES_TO_LINK),) $(WARNING_EMPTY_LINKING) endif $(ECHO_LINKING)$(LIB_LINK_CMD)$(END_ECHO) # # Install and uninstall targets # internal-library-install_:: internal-install-dirs \ internal-install-lib \ shared-instance-headers-install \ shared-instance-pkgconfig-install # Depend on creating all the dirs internal-install-dirs:: $(FINAL_LIBRARY_INSTALL_DIR) \ $(DLL_INSTALLATION_DIR) # Now the rule to create each dir. NB: Nothing gets executed if the dir # already exists $(FINAL_LIBRARY_INSTALL_DIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) $(DLL_INSTALLATION_DIR): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) internal-install-lib:: $(ECHO_INSTALLING)if [ -f $(GNUSTEP_OBJ_DIR)/$(VERSION_LIBRARY_FILE) ]; then \ $(INSTALL_PROGRAM) $(GNUSTEP_OBJ_DIR)/$(VERSION_LIBRARY_FILE) \ $(FINAL_LIBRARY_INSTALL_DIR) ; \ $(AFTER_INSTALL_LIBRARY_CMD) \ fi$(END_ECHO) ifeq ($(BUILD_DLL),yes) # For 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 internal-library-uninstall_:: shared-instance-headers-uninstall shared-instance-pkgconfig-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 DLLs, also remove the DLL file. internal-library-uninstall_:: $(ECHO_UNINSTALLING)rm -f $(DLL_INSTALLATION_DIR)/$(LIB_LINK_DLL_FILE)$(END_ECHO) endif # # Testing targets # # Put the path to the directory containing the library to be tested in # LD_LIBRARY_PATH for running the tests and then invoke gnustep-tests internal-library-check:: ifneq ($($(GNUSTEP_INSTANCE)_TEST_DIR),) @(\ touch $($(GNUSTEP_INSTANCE)_TEST_DIR)/TestInfo; \ echo "# Generated by 'make check'" \ > $($(GNUSTEP_INSTANCE)_TEST_DIR)/make-check.env; \ echo "export LD_LIBRARY_PATH=\"$$(pwd)/$(GNUSTEP_OBJ_DIR):$(LD_LIBRARY_PATH)\"" >> $($(GNUSTEP_INSTANCE)_TEST_DIR)/make-check.env; \ echo "# Generated by 'make check'" \ > $($(GNUSTEP_INSTANCE)_TEST_DIR)/make-check.mak; \ echo "ADDITIONAL_INCLUDE_DIRS += \"-I$(GNUSTEP_MAKEFILES)/TestFramework -I$$(pwd)\"" \ >> $($(GNUSTEP_INSTANCE)_TEST_DIR)/make-check.mak; \ echo "ADDITIONAL_LIB_DIRS += \"-L$$(pwd)/$(GNUSTEP_OBJ_DIR)\"" \ >> $($(GNUSTEP_INSTANCE)_TEST_DIR)/make-check.mak; \ echo "ADDITIONAL_TOOL_LIBS += \"-l$(LIBRARY_NAME_WITHOUT_LIB)\"" \ >> $($(GNUSTEP_INSTANCE)_TEST_DIR)/make-check.mak; \ unset MAKEFLAGS; \ if [ "$(DEBUG)" = "" ]; then \ gnustep-tests --verbose $($(GNUSTEP_INSTANCE)_TEST_DIR);\ else \ gnustep-tests --debug $($(GNUSTEP_INSTANCE)_TEST_DIR);\ fi;\ ) endif # # If the user makefile contains the command # xxx_HAS_RESOURCE_BUNDLE = yes # then we need to build a resource bundle for the library, and install it. # You can then add resources to the library, any sort of, with the usual # xxx_RESOURCE_FILES, xxx_LOCALIZED_RESOURCE_FILES, xxx_LANGUAGES, etc. # The library resource bundle (and all resources inside it) can be # accessed at runtime very comfortably, by using gnustep-base's # [NSBundle +bundleForLibrary:version:]. # ifeq ($($(GNUSTEP_INSTANCE)_HAS_RESOURCE_BUNDLE),yes) # Include the rules to build resource bundles GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(GNUSTEP_BUILD_DIR)/$(LIBRARY_NAME_WITHOUT_LIB)/Versions/$(INTERFACE_VERSION)/Resources/ # We want to install gnustep-base resources into # GNUSTEP_LIBRARY/Libraries/gnustep-base/Versions/1.14/Resources/ # This is similar to a framework resource directory, which might be # helpful in the future. GNUSTEP_SHARED_BUNDLE_INSTALL_NAME = Resources GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH = $(LIBRARY_NAME_WITHOUT_LIB)/Versions/$(INTERFACE_VERSION) GNUSTEP_SHARED_BUNDLE_INSTALL_PATH = $(GNUSTEP_LIBRARY)/Libraries/$(LIBRARY_NAME_WITHOUT_LIB)/Versions/$(INTERFACE_VERSION) include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make internal-library-all_:: shared-instance-bundle-all internal-library-copy_into_dir:: shared-instance-bundle-copy_into_dir $(GNUSTEP_LIBRARY)/Libraries/$(LIBRARY_NAME_WITHOUT_LIB)/Versions/$(INTERFACE_VERSION): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) internal-library-install_:: $(GNUSTEP_LIBRARY)/Libraries/$(LIBRARY_NAME_WITHOUT_LIB)/Versions/$(INTERFACE_VERSION) \ shared-instance-bundle-install internal-library-uninstall:: shared-instance-bundle-uninstall endif include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make ���������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/rules.make�����������������������������������������������������������������������0000664�0001750�0001750�00000072346�12733427351�015750� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # rules.make # # All of the common makefile rules. # # Copyright (C) 1997, 2001, 2009 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Ovidiu Predescu <ovidiu@net-community.com> # Author: Nicola Pero <nicola.pero@meta-innovation.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # prevent multiple inclusions # NB: This file is internally protected against multiple inclusions. # But for perfomance reasons, you might want to check the # RULES_MAKE_LOADED variable yourself and include this file only if it # is empty. That allows make to skip reading the file entirely when it # has already been read. We use this trick for all system makefiles. ifeq ($(RULES_MAKE_LOADED),) RULES_MAKE_LOADED=yes # Include the Master rules at the beginning because the 'all' rule must be # first on the first invocation without a specified target. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/rules.make endif # # If INSTALL_AS_USER and/or INSTALL_AS_GROUP are defined, pass them down # to submakes. There are two reasons - # # 1. so that if you set them in a GNUmakefile, they get passed down # to automatically generated sources/GNUmakefiles (such as Java wrappers) # 2. so that if you type `make install INSTALL_AS_USER=nicola' in a directory, # the INSTALL_AS_USER=nicola gets automatically used in all subdirectories. # # Warning - if you want to hardcode a INSTALL_AS_USER in a GNUmakefile, then # you shouldn't rely on us to pass it down to subGNUmakefiles - you should # rather hardcode INSTALL_AS_USER in all your GNUmakefiles (or better have # a makefile fragment defining INSTALL_AS_USER in the top-level and include # it in all GNUmakefiles) - otherwise what happens is that if you go in a # subdirectory and type 'make install' there, it will not get the # INSTALL_AS_USER from the higher level GNUmakefile, so it will install with # the wrong user! For this reason, if you need to hardcode INSTALL_AS_USER # in GNUmakefiles, make sure it's hardcoded *everywhere*. # ifneq ($(INSTALL_AS_USER),) export INSTALL_AS_USER endif ifneq ($(INSTALL_AS_GROUP),) export INSTALL_AS_GROUP endif # In subprojects, will be set by the recursive make invocation on the # make command line to be [../../]../derived_src DERIVED_SOURCES = derived_src DERIVED_SOURCES_DIR = $(GNUSTEP_BUILD_DIR)/$(DERIVED_SOURCES) # Always include all the compilation flags and generic compilation # rules, because the user, in his GNUmakefile.postamble, might want to # add manual commands for example to after-all, which are processed # during the Master invocation, but yet can compile or install stuff # and need access to all compilation/installation flags and locations # and basic rules. # # Manage stripping # ifeq ($(strip),yes) INSTALL_PROGRAM += -s export strip endif # # Manage jar installation # ifeq ($(as_jar),yes) export as_jar else ifeq ($(as_jar),no) export as_jar endif endif # # Prepare the arguments to install to set user/group of installed files # INSTALL_AS = ifneq ($(INSTALL_AS_USER),) INSTALL_AS += -o $(INSTALL_AS_USER) endif ifneq ($(INSTALL_AS_GROUP),) INSTALL_AS += -g $(INSTALL_AS_GROUP) endif # Redefine INSTALL to include these flags. This automatically # redefines INSTALL_DATA and INSTALL_PROGRAM as well, because they are # define in terms of INSTALL. INSTALL += $(INSTALL_AS) # Sometimes, we install without using INSTALL - typically using tar. # In those cases, we run chown after having installed, in order to # fixup the user/group. # # Prepare the arguments to chown to set user/group of installed files. # ifneq ($(INSTALL_AS_GROUP),) CHOWN_TO = $(strip $(INSTALL_AS_USER)).$(strip $(INSTALL_AS_GROUP)) else CHOWN_TO = $(strip $(INSTALL_AS_USER)) endif # You need to run CHOWN manually, but only if CHOWN_TO is non-empty. # # Pass the CHOWN_TO argument to MKINSTALLDIRS # All installation directories should be created using MKINSTALLDIRS # to make sure we set the correct user/group. Local directories should # be created using MKDIRS instead because we don't want to set user/group. # ifneq ($(CHOWN_TO),) MKINSTALLDIRS = $(MKDIRS) -c $(CHOWN_TO) # Fixup the library installation commands if needed so that we change # ownership of the links as well ifeq ($(shared),yes) AFTER_INSTALL_LIBRARY_CMD += ; $(AFTER_INSTALL_SHARED_LIB_CHOWN) endif else MKINSTALLDIRS = $(MKDIRS) endif # # If this is part of the compilation of a framework, # add -I[$GNUSTEP_BUILD_DIR][../../../etc]derived_src so that the code # can include framework headers simply using `#include # <MyFramework/MyHeader.h>' # # If it's a framework makefile, FRAMEWORK_NAME will be non-empty. If # it's a framework subproject, OWNING_PROJECT_HEADER_DIR_NAME will be # non-empty. # ifneq ($(FRAMEWORK_NAME)$(OWNING_PROJECT_HEADER_DIR_NAME),) DERIVED_SOURCES_HEADERS_FLAG = -I$(DERIVED_SOURCES_DIR) endif # # Include rules to built the instance # # this fixes up ADDITIONAL_XXXFLAGS as well, which is why we include it # before using ADDITIONAL_XXXFLAGS # ifneq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Instance/rules.make endif # # Implement ADDITIONAL_NATIVE_LIBS/ADDITIONAL_NATIVE_LIB_DIRS # # A native lib is a framework on apple, and a shared library # everywhere else. Here we provide the appropriate link flags # to support it transparently on the two platforms. # ifeq ($(FOUNDATION_LIB),apple) ADDITIONAL_OBJC_LIBS += $(foreach lib,$(ADDITIONAL_NATIVE_LIBS),-framework $(lib)) ADDITIONAL_FRAMEWORK_DIRS += $(foreach libdir,$(ADDITIONAL_NATIVE_LIB_DIRS),-F$(libdir)) else ADDITIONAL_OBJC_LIBS += $(foreach lib,$(ADDITIONAL_NATIVE_LIBS),-l$(lib)) ADDITIONAL_LIB_DIRS += $(foreach libdir,$(ADDITIONAL_NATIVE_LIB_DIRS),-L$(libdir)/$(GNUSTEP_OBJ_DIR)) endif # # Auto dependencies # # -MMD -MP tells gcc to generate a .d file for each compiled file, # which includes makefile rules adding dependencies of the compiled # file on all the header files the source file includes ... # # next time `make' is run, we include the .d files for the previous # run (if we find them) ... this automatically adds dependencies on # the appropriate header files # # Warning - the following variable name might change ifeq ($(AUTO_DEPENDENCIES),yes) ifeq ($(AUTO_DEPENDENCIES_FLAGS),) AUTO_DEPENDENCIES_FLAGS = -MMD -MP endif endif # The difference between ADDITIONAL_XXXFLAGS and AUXILIARY_XXXFLAGS is the # following: # # ADDITIONAL_XXXFLAGS are set freely by the user GNUmakefile # # AUXILIARY_XXXFLAGS are set freely by makefile fragments installed by # auxiliary packages. For example, gnustep-db installs # a gdl.make file. If you want to use gnustep-db in # your tool, you `include $(GNUSTEP_MAKEFILES)/gdl.make' # and that will add the appropriate flags to link against # gnustep-db. Those flags are added to AUXILIARY_XXXFLAGS. # # Why can't ADDITIONAL_XXXFLAGS and AUXILIARY_XXXFLAGS be the same variable ? # Good question :-) I'm not sure but I think the original reason is that # users tend to think they can do whatever they want with ADDITIONAL_XXXFLAGS, # like writing # ADDITIONAL_XXXFLAGS = -Verbose # (with a '=' instead of a '+=', thus discarding the previous value of # ADDITIONAL_XXXFLAGS) without caring for the fact that other makefiles # might need to add something to ADDITIONAL_XXXFLAGS. # # So the idea is that ADDITIONAL_XXXFLAGS is reserved for the users to # do whatever mess they like with them, while in makefile fragments # from packages we use a different variable, which is subject to a stricter # control, requiring package authors to always write # # AUXILIARY_XXXFLAGS += -Verbose # # in their auxiliary makefile fragments, to make sure they don't # override flags from different packages, just add to them. # # When building up command lines inside gnustep-make, we always need # to add both AUXILIARY_XXXFLAGS and ADDITIONAL_XXXFLAGS to all # compilation/linking/etc command. # ALL_CPPFLAGS = $(AUTO_DEPENDENCIES_FLAGS) $(CPPFLAGS) $(ADDITIONAL_CPPFLAGS) \ $(AUXILIARY_CPPFLAGS) # -I./obj/PrecompiledHeaders/ObjC must be before anything else because # we want an existing and working precompiled header to be used before # the non-precompiled header no matter how/where the non-precompiled # header is found. ALL_OBJCFLAGS = $(OBJC_PRECOMPILED_HEADERS_INCLUDE_FLAGS) \ $(INTERNAL_OBJCFLAGS) $(ADDITIONAL_OBJCFLAGS) \ $(AUXILIARY_OBJCFLAGS) $(ADDITIONAL_INCLUDE_DIRS) \ $(AUXILIARY_INCLUDE_DIRS) \ $(DERIVED_SOURCES_HEADERS_FLAG) \ -I. \ $(GNUSTEP_HEADERS_FLAGS) \ $(GNUSTEP_FRAMEWORKS_FLAGS) \ $(SYSTEM_INCLUDES) ALL_CFLAGS = $(C_PRECOMPILED_HEADERS_INCLUDE_FLAGS) \ $(INTERNAL_CFLAGS) $(ADDITIONAL_CFLAGS) \ $(AUXILIARY_CFLAGS) $(ADDITIONAL_INCLUDE_DIRS) \ $(AUXILIARY_INCLUDE_DIRS) \ $(DERIVED_SOURCES_HEADERS_FLAG) \ -I. \ $(GNUSTEP_HEADERS_FLAGS) \ $(GNUSTEP_FRAMEWORKS_FLAGS) \ $(SYSTEM_INCLUDES) # if you need, you can define ADDITIONAL_CCFLAGS to add C++ specific flags ALL_CCFLAGS = $(CC_PRECOMPILED_HEADERS_INCLUDE_FLAGS) \ $(CCFLAGS) $(ADDITIONAL_CCFLAGS) $(AUXILIARY_CCFLAGS) # If you need, you can define ADDITIONAL_OBJCCFLAGS to add ObjC++ # specific flags. Please note that for maximum flexibility, # ADDITIONAL_OBJCFLAGS are *not* used to compile ObjC++. You can add # different additional flags to ObjC and to ObjC++ by specifying # different ADDITIONAL_OBJCFLAGS and ADDITIONAL_OBJCCFLAGS. The # internal ObjC flags instead are used in the same way for ObjC and # ObjC++. We have to use AUXILIARY_OBJCFLAGS though as gnustep-base # puts its NXConstantString flags in there. Presumably gnustep-base # could be changed to put them in AUXILIARY_OBJCCFLAGS too and then we # can remove AUXILIARY_OBJCCFLAGS from the following line, which would # be cleaner. :-) ALL_OBJCCFLAGS = $(OBJCC_PRECOMPILED_HEADERS_INCLUDE_FLAGS) \ $(INTERNAL_OBJCFLAGS) \ $(ADDITIONAL_OBJCCFLAGS) \ $(AUXILIARY_OBJCFLAGS) \ $(AUXILIARY_OBJCCFLAGS) $(ADDITIONAL_INCLUDE_DIRS) \ $(AUXILIARY_INCLUDE_DIRS) \ $(DERIVED_SOURCES_HEADERS_FLAG) \ -I. \ $(GNUSTEP_HEADERS_FLAGS) \ $(GNUSTEP_FRAMEWORKS_FLAGS) \ $(SYSTEM_INCLUDES) INTERNAL_CLASSPATHFLAGS = -classpath ./$(subst ::,:,:$(strip $(ADDITIONAL_CLASSPATH)):)$(CLASSPATH) ALL_JAVACFLAGS = $(INTERNAL_CLASSPATHFLAGS) $(INTERNAL_JAVACFLAGS) \ $(ADDITIONAL_JAVACFLAGS) $(AUXILIARY_JAVACFLAGS) ALL_JAVAHFLAGS = $(INTERNAL_CLASSPATHFLAGS) $(ADDITIONAL_JAVAHFLAGS) \ $(AUXILIARY_JAVAHFLAGS) ifeq ($(shared),no) ALL_LDFLAGS = $(STATIC_LDFLAGS) else ALL_LDFLAGS = endif ALL_LDFLAGS += $(ADDITIONAL_LDFLAGS) $(AUXILIARY_LDFLAGS) $(GUI_LDFLAGS) \ $(BACKEND_LDFLAGS) $(SYSTEM_LDFLAGS) $(INTERNAL_LDFLAGS) # In some cases, ld is used for linking instead of $(CC), so we can't use # this in ALL_LDFLAGS CC_LDFLAGS = $(RUNTIME_FLAG) ALL_LIB_DIRS = $(ADDITIONAL_FRAMEWORK_DIRS) $(AUXILIARY_FRAMEWORK_DIRS) \ $(ADDITIONAL_LIB_DIRS) $(AUXILIARY_LIB_DIRS) \ $(GNUSTEP_LIBRARIES_FLAGS) \ $(GNUSTEP_FRAMEWORKS_FLAGS) \ $(SYSTEM_LIB_DIR) # We use .plist (property-list files, see gnustep-base) in quite a few # cases. Whenever a .plist file is required, you can/will be allowed # to provide a .cplist file instead (at the moment, it is only # implemented for applications' xxxInfo.plist). A .cplist file is a # property-list file with C preprocessor conditionals. gnustep-make # will automatically generate the .plist file from the .cplist file by # running the C preprocessor. # The CPLISTFLAGS are the flags used when running the C preprocessor # to generate a .plist file from a .cplist file. ALL_CPLISTFLAGS = -P -x c -traditional ifeq ($(FOUNDATION_LIB), gnu) ALL_CPLISTFLAGS += -DGNUSTEP else ifeq ($(FOUNDATION_LIB), apple) ALL_CPLISTFLAGS += -DAPPLE else ifeq ($(FOUNDATION_LIB), nx) ALL_CPLISTFLAGS += -DNEXT else ALL_CPLISTFLAGS += -DUNKNOWN endif endif endif ALL_CPLISTFLAGS += $(ADDITIONAL_CPLISTFLAGS) $(AUXILIARY_CPLISTFLAGS) # If we are using Windows32 DLLs, we pass -DGNUSTEP_WITH_DLL to the # compiler. This preprocessor define might be used by library header # files to know they are included from external code needing to use # the library symbols, so that the library header files can in this # 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. # # 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 # General rules VPATH = . # Set .DELETE_ON_ERROR. This means that if the rule to build a target # file fails, but the rule had modified the target file, the target # file is automatically deleted by GNU make when exiting with an # error. The idea is to removed corrupt/partially built files when an # error occurs. .DELETE_ON_ERROR: # gnustep-make supports inherently sequential targets such as # 'before-install' and 'after-install' which make it really difficult # to support parallel building. So we don't enable paralell building # in general. We only enable it when GNUSTEP_MAKE_PARALLEL_BUILDING = # yes and even then only in specific 'Compile' sub-invocations of # make, tagged with _GNUSTEP_MAKE_PARALLEL = yes. All the # compilations are done in such invocations, so in practical terms, a # lot of actual parallelization will be going on for large projects, # with a very visible compilation speedup. # # Note that .NOTPARALLEL was added to GNU make on November 1999, so we # consider it safe to use to control the parallel building. If you # have an older GNU make, don't use parallel building because it's # unsupported. ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) .NOTPARALLEL: else ifneq ($(_GNUSTEP_MAKE_PARALLEL), yes) .NOTPARALLEL: endif endif # Disable all built-in suffixes for performance. .SUFFIXES: # Then define our own. .SUFFIXES: .m .c .psw .java .h .cpp .cxx .C .cc .cp .mm .PRECIOUS: %.c %.h $(GNUSTEP_OBJ_DIR)/%$(OEXT) # Disable all built-in rules with a vague % as target, for performance. %: %.c %: %.cpp %: %.cc %: %.C (%): % %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% # C/ObjC/C++ files are always compiled as part of the instance # invocation (eg, while building a tool or an app). We put the object # files (eg, NSObject.o, ie the result of compiling a C/ObjC/C++ file) # in separate directories, one for each GNUSTEP_INSTANCE. The # directories are $(GNUSTEP_OBJ_INSTANCE_DIR) (which usually is, eg, # ./obj/gdomap.obj/). This allows different GNUSTEP_INSTANCEs to be # built in parallel with no particular conflict. Here we include the # rules for building C/ObjC/C++ files; they are only included when # GNUSTEP_INSTANCE is defined. ifneq ($(GNUSTEP_INSTANCE),) # # In exceptional conditions, you might need to want to use different compiler # flags for a file (for example, if a file doesn't compile with optimization # turned on, you might want to compile that single file with optimizations # turned off). gnustep-make allows you to do this - you can specify special # flags to be used when compiling a *specific* file in two ways - # # xxx_FILE_FLAGS (where xxx is the file name, such as main.m) # are special compilation flags to be used when compiling xxx # # xxx_FILE_FILTER_OUT_FLAGS (where xxx is the file name, such as mframe.m) # is a filter-out make pattern of flags to be filtered out # from the compilation flags when compiling xxx. # # Typical examples: # # Disable optimization flags for the file NSInvocation.m: # NSInvocation.m_FILE_FILTER_OUT_FLAGS = -O% # # Disable optimization flags for the same file, and also remove # -fomit-frame-pointer: # NSInvocation.m_FILE_FILTER_OUT_FLAGS = -O% -fomit-frame-pointer # # Force the compiler to warn for #import if used in file file.m: # file.m_FILE_FLAGS = -Wimport # file.m_FILE_FILTER_OUT_FLAGS = -Wno-import # # Please don't be scared by the following rules ... In normal # situations, $<_FILTER_OUT_FLAGS is empty, and $<_FILE_FLAGS is empty # as well, so the following rule is simply equivalent to # $(CC) $< -c $(ALL_CPPFLAGS) $(ALL_CFLAGS) -o $@ # and similarly all the rules below $(GNUSTEP_OBJ_INSTANCE_DIR)/%.c$(OEXT) : %.c $(ECHO_COMPILING)$(CC) $< -c \ $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ $(ALL_CFLAGS)) \ $($<_FILE_FLAGS) -o $@$(END_ECHO) $(GNUSTEP_OBJ_INSTANCE_DIR)/%.m$(OEXT) : %.m $(ECHO_COMPILING)$(CC) $< -c \ $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ $(ALL_OBJCFLAGS)) \ $($<_FILE_FLAGS) -o $@$(END_ECHO) $(GNUSTEP_OBJ_INSTANCE_DIR)/%.C$(OEXT) : %.C $(ECHO_COMPILING)$(CXX) $< -c \ $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ $(ALL_CFLAGS) \ $(ALL_CCFLAGS)) \ $($<_FILE_FLAGS) -o $@$(END_ECHO) $(GNUSTEP_OBJ_INSTANCE_DIR)/%.cc$(OEXT) : %.cc $(ECHO_COMPILING)$(CXX) $< -c \ $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ $(ALL_CFLAGS) \ $(ALL_CCFLAGS)) \ $($<_FILE_FLAGS) -o $@$(END_ECHO) $(GNUSTEP_OBJ_INSTANCE_DIR)/%.cpp$(OEXT) : %.cpp $(ECHO_COMPILING)$(CXX) $< -c \ $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ $(ALL_CFLAGS) \ $(ALL_CCFLAGS)) \ $($<_FILE_FLAGS) -o $@$(END_ECHO) $(GNUSTEP_OBJ_INSTANCE_DIR)/%.cxx$(OEXT) : %.cxx $(ECHO_COMPILING)$(CXX) $< -c \ $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ $(ALL_CFLAGS) \ $(ALL_CCFLAGS)) \ $($<_FILE_FLAGS) -o $@$(END_ECHO) $(GNUSTEP_OBJ_INSTANCE_DIR)/%.cp$(OEXT) : %.cp $(ECHO_COMPILING)$(CXX) $< -c \ $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ $(ALL_CFLAGS) \ $(ALL_CCFLAGS)) \ $($<_FILE_FLAGS) -o $@$(END_ECHO) $(GNUSTEP_OBJ_INSTANCE_DIR)/%.mm$(OEXT) : %.mm $(ECHO_COMPILING)$(CXX) $< -c \ $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ $(ALL_OBJCCFLAGS)) \ $($<_FILE_FLAGS) -o $@$(END_ECHO) # # Special mingw 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_INSTANCE_DIR)/%.rc$(OEXT): %.rc $(ECHO_COMPILING)windres $< $@$(END_ECHO) else ifeq ($(findstring mingw64, $(GNUSTEP_TARGET_OS)), mingw64) # Add the .rc suffix on Windows. .SUFFIXES: .rc # A rule to generate a .o file from the .rc file. $(GNUSTEP_OBJ_INSTANCE_DIR)/%.rc$(OEXT): %.rc $(ECHO_COMPILING)windres $< $@$(END_ECHO) endif ifeq ($(GCC_WITH_PRECOMPILED_HEADERS),yes) # We put the precompiled headers in different directories (depending # on the language) so that we can easily have different rules (that # use the appropriate compilers/flags) for the different languages. $(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/C/%.gch : % $(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/C/ $(ECHO_PRECOMPILING)$(CC) $< -c \ $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ $(ALL_CFLAGS)) \ $($<_FILE_FLAGS) -o $@$(END_ECHO) $(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/ObjC/%.gch : % $(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/ObjC/ $(ECHO_PRECOMPILING)$(CC) -x objective-c-header $< -c \ $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ $(ALL_OBJCFLAGS)) \ $($<_FILE_FLAGS) -o $@$(END_ECHO) $(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/CC/%.gch : % $(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/CC/ $(ECHO_PRECOMPILING)$(CXX) -x c++-header $< -c \ $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ $(ALL_CFLAGS) \ $(ALL_CCFLAGS)) \ $($<_FILE_FLAGS) -o $@$(END_ECHO) $(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/ObjCC/%.gch : % $(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/ObjCC/ $(ECHO_COMPILING)$(CXX) -x objective-c++-header $< -c \ $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ $(ALL_OBJCCFLAGS)) \ $($<_FILE_FLAGS) -o $@$(END_ECHO) # These rules create these directories as needed. The directories # (and the precompiled files in them) will automatically be removed # when the GNUSTEP_OBJ_DIR is deleted as part of a clean. $(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/C/: $(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR); \ $(MKDIRS) ./$(GNUSTEP_OBJ_INSTANCE_DIR_NAME)/PrecompiledHeaders/C/$(END_ECHO) $(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/ObjC/: $(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR); \ $(MKDIRS) ./$(GNUSTEP_OBJ_INSTANCE_DIR_NAME)/PrecompiledHeaders/ObjC/$(END_ECHO) $(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/CC/: $(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR); \ $(MKDIRS) ./$(GNUSTEP_OBJ_INSTANCE_DIR_NAME)/PrecompiledHeaders/CC/$(END_ECHO) $(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/ObjCC/: $(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR); \ $(MKDIRS) ./$(GNUSTEP_OBJ_INSTANCE_DIR_NAME)/PrecompiledHeaders/ObjCC/$(END_ECHO) endif endif # End of code included only when GNUSTEP_INSTANCE is not empty # FIXME - using a different build dir with java # This rule is complicated because it supports for compiling a single # file, and batch-compiling a chunk of files. By default, every file # is compiled separately. But if you set JAVA_FILES_TO_BATCH_COMPILE # to a list of .java files, and the file we are compiling falls in # that list, we compile all the JAVA_FILES_TO_BATCH_COMPILE in this # invocation instead of just that file. This is worth it as it # can speed up compilation by orders of magnitude. %.class : %.java ifeq ($(BATCH_COMPILE_JAVA_FILES), no) $(ECHO_COMPILING)$(JAVAC) $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_JAVACFLAGS)) \ $($<_FILE_FLAGS) $<$(END_ECHO) else # Explanation: $(filter $<,$(JAVA_FILES_TO_BATCH_COMPILE)) is empty if # $< (the file we are compiling) does not appear in # $(JAVA_FILES_TO_BATCH_COMPILE), and not-empty if it appears in # there. $(ECHO_NOTHING)if [ "$(filter $<,$(JAVA_FILES_TO_BATCH_COMPILE))"x != ""x ]; then \ $(INSIDE_ECHO_JAVA_BATCH_COMPILING)$(JAVAC) $(ALL_JAVACFLAGS) $(JAVA_FILES_TO_BATCH_COMPILE); \ else \ $(INSIDE_ECHO_JAVA_COMPILING)$(JAVAC) $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_JAVACFLAGS)) \ $($<_FILE_FLAGS) $<; \ fi$(END_ECHO) endif # A jni header file which is created using JAVAH # Example of how this rule will be applied: # gnu/gnustep/base/NSObject.h : gnu/gnustep/base/NSObject.java # javah -o gnu/gnustep/base/NSObject.h gnu.gnustep.base.NSObject %.h : %.java $(ECHO_JAVAHING)$(JAVAH) \ $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_JAVAHFLAGS)) \ $($<_FILE_FLAGS) -o $@ $(subst /,.,$*)$(END_ECHO) %.c : %.psw pswrap -h $*.h -o $@ $< # The following rule is needed because in frameworks you might need # the .h files before the .c files are compiled. %.h : %.psw pswrap -h $@ -o $*.c $< # Rule to generate a .plist file (a property list file) by running the # preprocessor on a .cplist file (a property list file with embedded C # preprocessor conditionals). Useful in order to have a single # xxxInfo.plist file for multiple platforms (read GNUstep and Apple) # for the same application (to make portability easier). You can have # a single xxxInfo.cplist file, and xxxInfo.plist will automatically # be generated by gnustep-make from xxxInfo.cplist by running the # preprocessor. # # Unfortunately, on some platforms (Apple) the preprocessor emits # unwanted and unrequested #pragma statements. We use sed to filter # them out. # %.plist : %.cplist $(ECHO_PREPROCESSING)$(CPP) \ $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPLISTFLAGS))\ $($<_FILE_FLAGS) $< | sed -e '/^#pragma/d' -e '/^ *$$/d' > $@$(END_ECHO) # The following rule builds a .c file from a lex .l file. # You can define LEX_FLAGS if you need them. %.c: %.l $(LEX) $(LEX_FLAGS) -t $< > $@ # The following rule builds a .c file from a yacc/bison .y file. # You can define YACC_FLAGS if you need them. %.c: %.y $(YACC) $(YACC_FLAGS) $< mv -f y.tab.c $@ # 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 # are always up-to-date $(GNUSTEP_MAKEFILES)/*.make: ; $(GNUSTEP_MAKEFILES)/Additional/*.make: ; $(GNUSTEP_MAKEFILES)/Master/*.make: ; $(GNUSTEP_MAKEFILES)/Instance/*.make: ; $(GNUSTEP_MAKEFILES)/Instance/Shared/*.make: ; $(GNUSTEP_MAKEFILES)/Instance/Documentation/*.make: ; # Rules to stop 'make' from wasting time trying to rebuild the config # files from implicit rules. $(GNUSTEP_CONFIG_FILE): ; ifneq ($(GNUSTEP_USER_CONFIG_FILE),) # FIXME - Checking for relative vs. absolute paths! ifneq ($(filter /%, $(GNUSTEP_USER_CONFIG_FILE)),) # Path starts with '/', consider it absolute $(GNUSTEP_USER_CONFIG_FILE): ; else # Path does no start with '/', try it as relative $(GNUSTEP_HOME)/$(GNUSTEP_USER_CONFIG_FILE): ; endif endif # Now the print targets. .PHONY: print-gnustep-make-help \ print-gnustep-make-objc-flags \ print-gnustep-make-objc-libs \ print-gnustep-make-base-libs \ print-gnustep-make-gui-libs \ print-gnustep-make-installation-domain \ print-gnustep-make-host-dir \ print-gnustep-make-host-ldir \ print-gnustep-make-target-dir \ print-gnustep-make-target-ldir \ print-gnustep-install-headers \ print-gnustep-install-libraries # Print GNUstep make help. The sed command '/^#.*/d' is used to strip # all lines beginning with '#' from the file. It will find all lines # that match the pattern ^#.* (which means that they have a '#' at the # beginning of the line, followed by any number of chars), and applies # to them the operation d, which means delete. # # The gnustep-make-help file uses the string _MAKE_ whenever referring # to the 'make' executable - for example, when if it says "type # '_MAKE_ install' to install". We need to replace _MAKE_ with the # correct name of GNU make on the system - usually 'make', but for # example 'gmake' on OpenBSD. The sed command 's/_MAKE_/$(notdir # $(MAKE))/' does that - it replaces everywhere the string _MAKE_ with # the basename of $(MAKE). print-gnustep-make-help: @(cat $(GNUSTEP_MAKEFILES)/gnustep-make-help | sed -e '/^#.*/d' -e 's/_MAKE_/$(notdir $(MAKE))/') # These targets are used by gnustep-config to allow people to see the # basic compilation/link flags for GNUstep ObjC code. # Flags used when compiling ObjC print-gnustep-make-objc-flags: @(echo $(ALL_CPPFLAGS) $(ALL_OBJCFLAGS)) # Flags used when linking against libobjc only print-gnustep-make-objc-libs: @(echo $(ALL_LDFLAGS) $(CC_LDFLAGS) $(ALL_LIB_DIRS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) $(TARGET_SYSTEM_LIBS)) # Flags used when linking against Foundation print-gnustep-make-base-libs: @(echo $(ALL_LDFLAGS) $(CC_LDFLAGS) $(ALL_LIB_DIRS) $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) $(TARGET_SYSTEM_LIBS)) # Flags used when linking against Foundation and GUI print-gnustep-make-gui-libs: @(echo $(ALL_LDFLAGS) $(CC_LDFLAGS) $(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)) print-gnustep-make-installation-domain: @(echo $(GNUSTEP_INSTALLATION_DOMAIN)) print-gnustep-make-host-dir: @(echo $(GNUSTEP_HOST_DIR)) print-gnustep-make-target-ldir: @(echo $(GNUSTEP_TARGET_LDIR)) print-gnustep-make-target-dir: @(echo $(GNUSTEP_TARGET_DIR)) print-gnustep-make-host-ldir: @(echo $(GNUSTEP_HOST_LDIR)) # These targets are used if gnustep-config can't be found but GNUSTEP_MAKEFILES # is defined ... they let you get libraries and their headers (eg libobjc2) # installed in the right place. print-gnustep-install-headers: @(echo $(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_HEADERS)) print-gnustep-install-libraries: @(echo $(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_LIBRARIES)) endif # rules.make loaded ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/clean_os.sh����������������������������������������������������������������������0000775�0001750�0001750�00000002664�10773772643�016106� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # clean_os.sh # # Clean up the target OS name for GNUstep. # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Nothing to clean right now case "$1" in # Remove version number for FreeBSD freebsd2*) echo freebsdaout exit 0 ;; freebsd*) echo freebsd exit 0 ;; # Remove version number for Darwin # Versions currently most common have a quick hardcoded lookup darwin9*) echo darwin9 exit 0 ;; darwin8*) echo darwin8 exit 0 ;; darwin7*) echo darwin7 exit 0 ;; # Any other Darwin version falls here, where we use a slower sed # subprocess to remove everything but the first major number. darwin*) echo `echo "$1" | sed s/\\\\..*//` exit 0 ;; *) echo $1 exit 0 ;; esac ����������������������������������������������������������������������������gnustep-make-2.7.0/configure.ac���������������������������������������������������������������������0000664�0001750�0001750�00000224552�13001521665�016233� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # configure.ac # # Copyright (C) 1997-2007 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Ovidiu Predescu <ovidiu@net-community.com> # Rewrite: Adam Fedor <fedor@gnu.org> # Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. AC_INIT AC_PREREQ(2.57) AC_CONFIG_SRCDIR([application.make]) # # TODO: This configure file should not contain any checks that depend on the # Objective-C runtime being used or available. This is because on # some platforms the Objective-C runtime itself is compiled using # gnustep-make! # # All the runtime-dependent checks should go in gnustep-base. # # We still need compiler checks, because if we are compiling the # Objective-C runtime itself, we need to know what compiler we have # and what flags we can use. But these checks should test # compilation, not linking or execution, because we don't necessarily # have an Objective-C runtime available yet. # targetArgument=${target} AC_CANONICAL_TARGET([]) AC_PATH_PROG(GNUSTEP_HAS_PKGCONFIG, pkgconfig, yes, no) #-------------------------------------------------------------------- # Setup the library combination #-------------------------------------------------------------------- AC_MSG_CHECKING(for library combo) AC_ARG_WITH(library-combo,[ --with-library-combo Define the default "library combo". The library combo is a string of the form aaa-bbb-ccc where 'aaa' is the Objective-C runtime library to use (examples are 'gnu' and 'apple'), 'bbb' is the Foundation library to use (examples are 'gnu' for gnustep-base, and 'apple' for Apple Cocoa FoundationKit), and 'ccc' is the ApplicationKit to use (examples are 'gnu' for gnustep-gui and 'apple' for Apple Cocoa AppKit). Use this option if you want to force a different default library combo than the one that would be used by default. For example, on Darwin GNUstep will automatically use the Apple Objective-C frameworks by default (library-combo=apple-apple-apple); if you are planning on installing and using gnustep-base on there, you would need to use --with-library-combo=gnu-gnu-gnu instead. Please notice that if --disable-flattened is used, gnustep-make can have fat binaries that support multiple library combos. In that case, this flag will only configure the default one, but you can still use other ones at run-time. Please use 'ng-gnu-gnu' to build with 'next generation' cutting edge runtime and compile time featured (requires a recent version of clang). ], ac_cv_library_combo=$withval, ac_cv_library_combo=$ac_cv_library_combo ) if test "$ac_cv_library_combo" = "" -o "$ac_cv_library_combo" = "no"; then case "$host_os" in darwin*) ac_cv_library_combo=apple-apple-apple ;; nextstep4) ac_cv_library_combo=nx-nx-nx ;; openstep4) ac_cv_library_combo=nx-nx-nx ;; *) ac_cv_library_combo=gnu-gnu-gnu ;; esac fi case "$ac_cv_library_combo" in apple) ac_cv_library_combo=apple-apple-apple ;; gnu) ac_cv_library_combo=gnu-gnu-gnu ;; ng) ac_cv_library_combo=ng-gnu-gnu ;; nx) ac_cv_library_combo=nx-nx-nx ;; esac AC_SUBST(ac_cv_library_combo) AC_MSG_RESULT($ac_cv_library_combo) OBJC_RUNTIME_LIB=`echo $ac_cv_library_combo | awk -F- '{print $1}'` # The ng runtime library setting requires clang rather than gcc if test "$OBJC_RUNTIME_LIB" = "ng"; then defaultng=yes; if test "$OBJCC" = ""; then OBJCC=clang fi if test "$CC" = ""; then CC=clang fi if test "$OBJCXX" = ""; then OBJCXX=clang++ fi if test "$CXX" = ""; then CXX=clang++ fi else defaultng=no; fi AC_PROG_CC AC_PROG_CPP # We also look for a C++ compiler. While not strictly needed, some # people use gnustep-make to compile C++ code. It's nice to detect a # C++ compiler, if we have one, and automatically use it to # compile/link C++ code. :-) AC_PROG_CXX # Similarly for the ObjC++ compiler ... but only new versions of autoconf # support it, so we pretend by using the C++ compiler #AC_PROG_OBJCXX OBJCXX="${CXX}" # We may use egrep for some tests further down below AC_PROG_EGREP #-------------------------------------------------------------------- # Check if we are using Apple cc #-------------------------------------------------------------------- cc_cppprecomp=0 cc_byndle=0 AC_MSG_CHECKING([for apple compiler flags]) cc_cppprecomp=`${CC} -no-cpp-precomp 2>&1 | grep -c "unrecognized"` cc_bundle=`${CC} -bundle 2>&1 | grep -c "couldn"` # 0 means we have the flag if test $cc_cppprecomp = 0; then cc_cppprecomp=yes else cc_cppprecomp=no fi if test $cc_bundle = 0; then cc_bundle=yes else cc_bundle=no fi AC_MSG_RESULT($cc_bundle) AC_SUBST(cc_cppprecomp) AC_SUBST(cc_bundle) #-------------------------------------------------------------------- # specific target_os options #-------------------------------------------------------------------- case "$target_os" in freebsd* | openbsd* ) INCLUDES="$INCLUDES -I/usr/local/include" LIB_DIR="$LIB_DIR -L/usr/local/lib";; netbsd*) INCLUDES="$INCLUDES -I/usr/pkg/include" LIB_DIR="$LIB_DIR -Wl,-R/usr/pkg/lib -L/usr/pkg/lib";; esac #-------------------------------------------------------------------- # Determine the host, build, and target systems #-------------------------------------------------------------------- case $host_os in *cygwin* ) MINGW32=no MINGW64=no CYGWIN=yes MSWIND=yes;; *mingw32* ) MINGW32=yes MINGW64=no CYGWIN=no MSWIND=yes;; *mingw64* ) MINGW32=no MINGW64=yes CYGWIN=no MSWIND=yes;; * ) MINGW32=no MINGW64=no CYGWIN=no MSWIND=no;; esac AC_SUBST(CYGWIN) AC_EXEEXT AC_OBJEXT if test "$MINGW32" = yes; then echo "hosted on mingw32 .." export SHELL=sh if test "$OBJC_RUNTIME_LIB" = ng; then export CC=${CC:-clang} else export CC=${CC:-gcc} fi export AR=${AR:-ar} export RANLIB=${RANLIB:-ranlib} export DLLTOOL=${DLLTOOL:-dlltool} elif test "$MINGW64" = yes; then echo "hosted on mingw64 .." export SHELL=sh if test "$OBJC_RUNTIME_LIB" = ng; then export CC=${CC:-clang} else export CC=${CC:-gcc} fi export AR=${AR:-ar} export RANLIB=${RANLIB:-ranlib} export DLLTOOL=${DLLTOOL:-dlltool} elif test "$CYGWIN" = yes; then echo "hosted on cygwin .." if test "$OBJC_RUNTIME_LIB" = ng; then export CC=${CC:-clang} else export CC=${CC:-gcc} fi export AR=${AR:-ar} export RANLIB=${RANLIB:-ranlib} export DLLTOOL=${DLLTOOL:-dlltool} fi #-------------------------------------------------------------------- # Find the binary and compile tools #-------------------------------------------------------------------- if test "x$target" != "x$host"; then echo "cross compiling from $host to $target .." cross_compiling="yes" if test "$OBJC_RUNTIME_LIB" = ng; then AC_CHECK_PROG(CC, "${targetArgument}-clang", dnl "${targetArgument}-clang", clang) else AC_CHECK_PROG(CC, "${targetArgument}-gcc", dnl "${targetArgument}-gcc", gcc) fi AC_CHECK_PROG(RANLIB, "${targetArgument}-ranlib", dnl "${targetArgument}-ranlib", ranlib) AC_CHECK_PROG(AR, "${targetArgument}-ar", dnl "${targetArgument}-ar", ar) AC_CHECK_PROG(DLLTOOL, "${targetArgument}-dlltool", dnl "${targetArgument}-dlltool", dlltool) else if test "$OBJC_RUNTIME_LIB" = ng; then # # Detect compiler support for Blocks; perhaps someday -fblocks won't be # required, in which case we'll need to change this. # saveCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fblocks" AC_LANG_PUSH(C) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[(void)^{int i; i = 0; }();])], [ ac64v_blocks="yes" ], [ ac_cv_blocks="no" ]) CFLAGS="$saveCFLAGS" AC_LANG_POP(C) if test "$ac_cv_blocks" = no; then AC_MSG_ERROR([Your compiler doesn't appear to support blocks. To fix this use the CC environment varibale to specify a different compiler (or use a different library-combo)]); fi fi AC_CHECK_PROG(AR, ar, ar) AC_CHECK_PROG(DLLTOOL, dlltool, dlltool) AC_PROG_RANLIB fi AC_PROG_INSTALL AC_MSG_CHECKING([if 'install -p' works]) gs_install_p_test_builddir="`pwd`" gs_install_p_test_results=`(INSTALL="$INSTALL"; export INSTALL; cd "$srcdir/config-install-p-test/"; ./run-test.sh "$gs_install_p_test_builddir"; echo $?) 2>&5` if test "$gs_install_p_test_results" = "0"; then AC_MSG_RESULT(yes); else AC_MSG_RESULT(no); fi AC_MSG_CHECKING([if we should use 'install -p' when installing files]) AC_ARG_ENABLE(install-p, [ --disable-install-p Disable using 'install -p' when installing files. By default, assuming that 'install -p' works, when installing files such as header files or libraries, gnustep-make uses 'install -p', which preserves the original timestamp of the header file or library. If you do not want the timestamp to be preserved, use this option to have gnustep-make use 'install' instead of 'install -p'. Unless you have a specific reason for not liking the default behaviour this option is most likely irrelevant for you. ], ac_cv_install_p=$enableval, ac_cv_install_p="yes") if test "$ac_cv_install_p" = "yes"; then if test "$gs_install_p_test_results" = "0"; then AC_MSG_RESULT(yes); INSTALL="${INSTALL} -p" else AC_MSG_RESULT(no: install -p does not work); fi else AC_MSG_RESULT(no); fi AC_PROG_LN_S([]) AC_CHECK_PROGS(NM, gnm, nm) AC_CHECK_PROGS(TAR, gnutar gtar, tar) AC_ARG_WITH(tar,[ --with-tar Set the name of the tar program to use. Use this option if the default choice does not work for you. ], TAR="$withval",) AC_CHECK_PROG(CHOWN, chown, chown, none) if test "$MINGW32" = no; then if test "$MINGW64" = no; then if test "$CHOWN" = "none"; then AC_MSG_ERROR("Could not find chown."); fi fi fi #------------------------------------------------------------------- # GNUstep specific options follow #------------------------------------------------------------------- #------------------------------------------------------------------- # Determine if we should enable strict gnustep-make v2 mode by default #------------------------------------------------------------------- AC_MSG_CHECKING([if we should enable strict gnustep-make version 2 mode by default]) AC_ARG_ENABLE(strict-v2-mode, [ --enable-strict-v2-mode Enable strict gnustep-make version 2 mode by default. Use this option to have gnustep-make be aggressively backwards-incompatible with gnustep-make version 1. You should use it to help upgrade old makefiles. Packegers should make sure that old makefiles have been upgraded before releasing builds using this option. ], ac_cv_strict_v2_mode=$enableval, ac_cv_strict_v2_mode="yes") if test "$ac_cv_strict_v2_mode" = "yes"; then AC_MSG_RESULT(yes); GNUSTEP_MAKE_STRICT_V2_MODE="yes" AC_MSG_WARN(Useing strict version 2 mode; ancient makefiles may need to be updated) else AC_MSG_RESULT(no); GNUSTEP_MAKE_STRICT_V2_MODE="no" AC_MSG_WARN(Disable strict version 2 mode at your own risk; it may allow faulty makefiles to go unnoticed) fi AC_SUBST(GNUSTEP_MAKE_STRICT_V2_MODE) #------------------------------------------------------------------- # Determine filesystem layout to use #------------------------------------------------------------------- AC_MSG_CHECKING([for GNUstep filesystem layout to use]) AC_ARG_WITH(layout,[ --with-layout=FILE Set the type of filesystem layout that you want your GNUstep installation to use. The layout described by FILE will be read from the FilesystemLayouts directory. Check the FilesystemLayouts subdirectory for a list of layouts and how to choose which one you want (or create your own). If you do not specify a layout then 'fhs' is used except when the library-combo is apple-apple-apple, in which case it is 'apple'. Example: --with-layout=fhs ], GNUSTEP_FILESYSTEM_LAYOUT="$withval",) # The variable GNUSTEP_FILESYSTEM_LAYOUT is empty if no layout was # specified on the command line. if test ! x"$GNUSTEP_FILESYSTEM_LAYOUT" = x""; then AC_MSG_RESULT($GNUSTEP_FILESYSTEM_LAYOUT) GNUSTEP_FILESYSTEM_LAYOUT_FILE="$GNUSTEP_FILESYSTEM_LAYOUT" else # This is the default layout that is used when installing # GNUstep with no other indication. We normally use 'fhs'. # However, if the library-combo is apple-apple-apple we use # 'apple' irrespective of the target OS. if test "$ac_cv_library_combo" = "apple-apple-apple"; then AC_MSG_RESULT(default layout: 'apple' since we're on apple-apple-apple) GNUSTEP_FILESYSTEM_LAYOUT_FILE=apple else GNUSTEP_FILESYSTEM_LAYOUT_FILE=fhs AC_MSG_RESULT(default layout: '$GNUSTEP_FILESYSTEM_LAYOUT_FILE') fi fi if test ! -f "$srcdir/FilesystemLayouts/$GNUSTEP_FILESYSTEM_LAYOUT_FILE" >&5 2>&5; then echo "Can not find $srcdir/FilesystemLayouts/$GNUSTEP_FILESYSTEM_LAYOUT_FILE" echo "Please check your --with-layout=xxx argument and try again." echo "Valid arguments for --with-layout= are:" echo `ls "$srcdir/FilesystemLayouts/" | grep -v README` exit 1 fi # Need to do some checks related to building dylibs on darwin. GNUSTEP_ABSOLUTE_INSTALL_PATHS=; case "$target_os" in darwin*) AC_MSG_CHECKING([if we should build dynamic libraries with an absolute install_name]) AC_ARG_ENABLE(absolute-install-paths, [ --enable-absolute-install-paths Enable the use of absolute paths for the install_name of dynamic libraries on Darwin. This option is specific to Darwin and is ignored on all other platforms. Any code that links against a dynamic library with an absolute install_name will tell dyld to find the library at that location. Enabling this option allows one to place libraries in non-standard locations without having to set DYLD_LIBRARY_PATH and DYLD_FRAMEWORK_PATH in the shell and ~/.MacOSX/environment.plist, but libraries built with an absolute install_name are not relocatable. By default, this setting is disabled unless the gnu-gnu-gnu library combo is used, in which case it is enabled. ], ac_cv_absolute_install_paths=$enableval, ac_cv_absolute_install_paths="undefined") if test "$ac_cv_absolute_install_paths" = "yes"; then AC_MSG_RESULT(yes) GNUSTEP_ABSOLUTE_INSTALL_PATHS=yes; else if test "$ac_cv_absolute_install_paths" = "undefined"; then # gnu-gnu-gnu on darwin is difficult because of the risk of # conflicts between the GNU Objective-C runtime and the Apple # one. absolute-install-paths makes this slightly easier # by hardcoding the absolute path of dynamic libraries into the # programs that link them so that it's less likely that the # wrong dynamic libraries will be pulled in. So we enable it # by default in that case. if test "$ac_cv_library_combo" = "gnu-gnu-gnu"; then GNUSTEP_ABSOLUTE_INSTALL_PATHS=yes; AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi else AC_MSG_RESULT(no) fi fi ;; esac AC_SUBST(GNUSTEP_ABSOLUTE_INSTALL_PATHS) #------------------------------------------------------------------- # Read filesystem layout from file #------------------------------------------------------------------- AC_MSG_CHECKING([if we manage to import the filesystem layout configuration]) . "$srcdir/FilesystemLayouts/$GNUSTEP_FILESYSTEM_LAYOUT_FILE" if test ! x"$GNUSTEP_DEFAULT_PREFIX" = x""; then AC_MSG_RESULT(ok) else AC_MSG_RESULT(failed) echo "Please check your $srcdir/FilesystemLayouts/$GNUSTEP_FILESYSTEM_LAYOUT_FILE" echo "layout file, as it can not be loaded (GNUSTEP_DEFAULT_PREFIX missing)" exit 1 fi # Now, all MAKEFILES/SYSTEM/LOCAL/NETWORK paths in the filesystem # layout file will be relative to prefix. So we need to immediately # determine prefix, and use it. #-------------------------------------------------------------------- # Process --prefix #-------------------------------------------------------------------- # We use this to make sure we know if the user has passed a # --prefix=xxx option or not. We use it if it was passed. # # If it wasn't passed, then we want to know because in that case we # want to use the specified default prefix for that filesystem. For # example, the 'gnustep' filesystem will install by default in # /usr/GNUstep, while the 'fhs' filesystem will install by default in # /usr/local. Please note that AC_PREFIX_DEFAULT will actually be # done at the very beginning of ./configure, not here. So we wouldn't # have access to all the filesystem layout information yet, which is # why we only use the macro to know if a --prefix=xxx was passed or # not. AC_PREFIX_DEFAULT(NONE) AC_MSG_CHECKING([for prefix]) if test "x$prefix" = "xNONE"; then # Use the default prefix for this filesystem layout GNUSTEP_PREFIX="$GNUSTEP_DEFAULT_PREFIX"; else # Use the prefix that the user specified GNUSTEP_PREFIX="$prefix"; fi # Remove any '/' at the end of prefix. All system/network/local paths # from layout files must start with a '/'. We don't want a '/' at the # end of the prefix to generate a '//' mostly because common.make will # try to double-check that GNUSTEP_SYSTEM_TOOLS is in your PATH. Any # '//' in GNUSTEP_SYSTEM_TOOLS will have been normalized to '/' in # PATH (on some systems at least) and so comparing them won't find a # match and the check will fail even if GNUSTEP_SYSTEM_TOOLS is in # PATH and a spurious warning will be produced. GNUSTEP_PREFIX=`echo "$GNUSTEP_PREFIX" | sed 's%/*$%%'` AC_MSG_RESULT($GNUSTEP_PREFIX) AC_SUBST(GNUSTEP_PREFIX) # Now we apply the prefix (we don't need to apply it to # GNUSTEP_SYSTEM_USERS_DIR and similar, which are something like # '/home' - we never install anything in there). GNUSTEP_MAKEFILES="$GNUSTEP_PREFIX$GNUSTEP_MAKEFILES" GNUSTEP_SYSTEM_APPS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_APPS" GNUSTEP_SYSTEM_ADMIN_APPS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_ADMIN_APPS" GNUSTEP_SYSTEM_WEB_APPS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_WEB_APPS" GNUSTEP_SYSTEM_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_TOOLS" GNUSTEP_SYSTEM_ADMIN_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_ADMIN_TOOLS" GNUSTEP_SYSTEM_LIBRARY="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_LIBRARY" GNUSTEP_SYSTEM_HEADERS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_HEADERS" GNUSTEP_SYSTEM_LIBRARIES="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_LIBRARIES" GNUSTEP_SYSTEM_DOC="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_DOC" GNUSTEP_SYSTEM_DOC_MAN="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_DOC_MAN" GNUSTEP_SYSTEM_DOC_INFO="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_DOC_INFO" GNUSTEP_NETWORK_APPS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_APPS" GNUSTEP_NETWORK_ADMIN_APPS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_ADMIN_APPS" GNUSTEP_NETWORK_WEB_APPS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_WEB_APPS" GNUSTEP_NETWORK_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_TOOLS" GNUSTEP_NETWORK_ADMIN_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_ADMIN_TOOLS" GNUSTEP_NETWORK_LIBRARY="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_LIBRARY" GNUSTEP_NETWORK_HEADERS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_HEADERS" GNUSTEP_NETWORK_LIBRARIES="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_LIBRARIES" GNUSTEP_NETWORK_DOC="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_DOC" GNUSTEP_NETWORK_DOC_MAN="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_DOC_MAN" GNUSTEP_NETWORK_DOC_INFO="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_DOC_INFO" GNUSTEP_LOCAL_APPS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_APPS" GNUSTEP_LOCAL_ADMIN_APPS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_ADMIN_APPS" GNUSTEP_LOCAL_WEB_APPS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_WEB_APPS" GNUSTEP_LOCAL_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_TOOLS" GNUSTEP_LOCAL_ADMIN_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_ADMIN_TOOLS" GNUSTEP_LOCAL_LIBRARY="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_LIBRARY" GNUSTEP_LOCAL_HEADERS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_HEADERS" GNUSTEP_LOCAL_LIBRARIES="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_LIBRARIES" GNUSTEP_LOCAL_DOC="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_DOC" GNUSTEP_LOCAL_DOC_MAN="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_DOC_MAN" GNUSTEP_LOCAL_DOC_INFO="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_DOC_INFO" #--------------------------------------------------------------------- # Location of the GNUstep.conf config file (--with-config-file) #--------------------------------------------------------------------- AC_MSG_CHECKING([for GNUstep configuration file to use]) AC_ARG_WITH(config-file,[ --with-config-file=PATH Set the path of the system GNUstep config file. Use this option if you want to have the GNUstep config file in a non-standard place. Example: --with-config-file=/usr/GNUstep/GNUstep.conf By default, if this option is not specified, the config file is /etc/GNUstep/GNUstep.conf if the prefix is /, /usr or /usr/GNUstep and $prefix/etc/GNUstep/GNUstep.conf otherwise. On Apple, it is always /Library/GNUstep/GNUstep.conf regardless of prefix. ], GNUSTEP_CONFIG_FILE="$withval",) if test "$GNUSTEP_CONFIG_FILE" = "" -o "$GNUSTEP_CONFIG_FILE" = "no"; then case "$target_os" in darwin*) GNUSTEP_CONFIG_FILE=/Library/GNUstep/GNUstep.conf ;; *) case x"$GNUSTEP_PREFIX" in x) GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf;; x/usr) GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf;; x/usr/GNUstep) GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf;; *) GNUSTEP_CONFIG_FILE="$GNUSTEP_PREFIX/etc/GNUstep/GNUstep.conf";; esac ;; esac fi if echo "$GNUSTEP_CONFIG_FILE" | grep '[[ \\]] > /dev/null' then echo "found a backslash or space (illegal) in '$GNUSTEP_CONFIG_FILE'" echo "Please try again using --with-config-file= to specify a valid path." if test "$MSWIND" = "yes" then echo "Please note that on windows you must use unix-style paths within" echo "the make package even though gnustep programs built in the mingw" echo "environment use native paths throughout." fi exit 1 fi AC_MSG_RESULT($GNUSTEP_CONFIG_FILE) AC_SUBST(GNUSTEP_CONFIG_FILE) #--------------------------------------------------------------------- # Now read/import the existing configuration file, if any #--------------------------------------------------------------------- # Reading/importing the existing configuration file might be good as a # default because it means that you don't have to type in your # layout/prefix settings every time you configure # gnustep-make. (please note we only read the system-wide one, not the # user one. Reason being that the settings we read will be used to # generate the new system-wide one, while the user one will be left # untouched). # Please note that this option will override any --with-layout=xxx and # --prefix=yyy options. AC_MSG_CHECKING([if we should import an existing configuration file]) AC_ARG_ENABLE(importing-config-file, [ --enable-importing-config-file Enable importing the existing system GNUstep configuration file. Use this option to use an existing configuration file for setting up the filesystem layout and prefix. If you specify this option, all the configuration will be read from the existing system GNUstep configuration file and any --with-layout=xxx and --prefix=yyy options will be ignored. ], ac_cv_importing_config_file=$enableval, ac_cv_importing_config_file="no") if test "$ac_cv_importing_config_file" = "yes"; then if test ! -f "$GNUSTEP_CONFIG_FILE"; then AC_MSG_RESULT([no: file "$GNUSTEP_CONFIG_FILE" does not exist]) AC_MSG_ERROR([asked to import non-existing configuration file. To fix this problem, make sure you have a config file to import, or remove the --enable-importing-config-file option.]) else AC_MSG_RESULT([yes: trying to import "$GNUSTEP_CONFIG_FILE"]) AC_MSG_NOTICE([If this fails, run configure again with --disable-importing-config-file]) . "$GNUSTEP_CONFIG_FILE" fi else AC_MSG_RESULT([no]) fi #-------------------------------------------------------------------- # Important - from now on, any variable that is set in the filesystem # layout and/or configuration file (eg, GNUSTEP_SYSTEM_TOOLS) could # already have a value that we have imported from the files. # ./configure command line options should override those values, but # otherwise we should keep them! #-------------------------------------------------------------------- #-------------------------------------------------------------------- # Process --with-user-config-file #-------------------------------------------------------------------- AC_MSG_CHECKING(for user config file to use) AC_ARG_WITH(user-config-file,[ --with-user-config-file Set the name of the user config file to use. This can be relative to the user's home directory if it is a relative path, or an absolute directory (the same for all users) if it is an absolute path. Use '' if you want to disable user config files. The default is .GNUstep.conf if not specified. Example: --with-user-config-file=GNUstep/GNUstep.conf ], GNUSTEP_USER_CONFIG_FILE="$withval",) # Keep in mind we already have a default value set by the filesystem # layout, so it should never be empty. if echo "$GNUSTEP_USER_CONFIG_FILE" | grep '[[ \\]] > /dev/null' then echo "found a backslash or space (illegal) in '$GNUSTEP_USER_CONFIG_FILE'" echo "Please try again using --with-user-config-file= to specify a value." if test "$MSWIND" = "yes" then echo "Please note that on windows you must use unix-style paths within" echo "the make package even though gnustep programs built in the mingw" echo "environment use native paths throughout." fi exit 1 fi AC_MSG_RESULT($GNUSTEP_USER_CONFIG_FILE) AC_SUBST(GNUSTEP_USER_CONFIG_FILE) #-------------------------------------------------------------------- # Process --with-user-dir #-------------------------------------------------------------------- AC_MSG_CHECKING(if the obsolete --with-user-dir option was used) AC_ARG_WITH(user-dir,[ --with-user-dir This is an obsolete option. It used to determine the location of the USER domain directory (inside of each user's home directory) under the 'gnustep' layout. We ignore this option so that you can write ./configure commands that work with both old and new gnustep-makes. To get the effect of this option with this version of gnustep-make, please create your own layout file and use --with-layout=xxx to use it. ], OBSOLETE_GNUSTEP_USER_DIR="$withval",) if test ! x"$OBSOLETE_GNUSTEP_USER_DIR" = x"" && test ! x"$OBSOLETE_GNUSTEP_USER_DIR" = x"no"; then AC_MSG_RESULT([$OBSOLETE_GNUSTEP_USER_DIR: ignored]) AC_MSG_WARN([ignoring --with-user-dir=$OBSOLETE_GNUSTEP_USER_DIR option]) else AC_MSG_RESULT(no: good) fi #-------------------------------------------------------------------- # Process --with-user-defaults-dir #-------------------------------------------------------------------- AC_MSG_CHECKING(for user defaults dir to use) AC_ARG_WITH(user-defaults-dir,[ --with-user-defaults-dir Set the GNUstep user defaults directory for all users. This can be relative to the user's home directory if it is a relative path, or an absolute directory (the same for all users) if it is an absolute path. Use this option if you want to have the GNUSTEP_USER_DEFAULTS_DIR directory in a non default place for all users. The default is 'GNUstep/Defaults' Example: --with-user-defaults-dir='GNUstep/Library/Defaults' ], GNUSTEP_USER_DEFAULTS_DIR="$withval",) # Keep in mind we already have a default value set by the filesystem # layout, so it should never be empty. if echo "$GNUSTEP_USER_DEFAULTS_DIR" | grep '[[ \\]] > /dev/null' then echo "found a backslash or space (illegal) in '$GNUSTEP_USER_DEFAULTS_DIR'" echo "Please try again using --with-user-defaults-dir= to specify a value." if test "$MSWIND" = "yes" then echo "Please note that on windows you must use unix-style paths within" echo "the make package even though gnustep programs built in the mingw" echo "environment use native paths throughout." fi exit 1 fi AC_MSG_RESULT($GNUSTEP_USER_DEFAULTS_DIR) AC_SUBST(GNUSTEP_USER_DEFAULTS_DIR) #-------------------------------------------------------------------- # Setting up GNUSTEP_MAKEFILES #-------------------------------------------------------------------- # # This is where you install gnustep-make. We just print it out. # AC_MSG_CHECKING(for GNUSTEP_MAKEFILES to use) AC_SUBST(GNUSTEP_MAKEFILES) AC_MSG_RESULT($GNUSTEP_MAKEFILES) # If GNUSTEP_MAKEFILES contains a space, we may have problems later # because make does not really support having spaces in filenames if echo "$GNUSTEP_MAKEFILES" | grep " " >/dev/null 2>&1; then AC_MSG_WARN([GNUSTEP_MAKEFILES ($GNUSTEP_MAKEFILES) contains spaces: this may not work]) fi #-------------------------------------------------------------------- # Setting up the install-sh script #-------------------------------------------------------------------- # HOST_INSTALL is the name of the install program in config.make so set it up # to point to the install-sh script in the GNUstep tree if no system install is # found. AC_SUBST(HOST_INSTALL) if test "$INSTALL" = "$ac_install_sh"; then HOST_INSTALL="$GNUSTEP_MAKEFILES/$INSTALL" else HOST_INSTALL="$INSTALL" fi #-------------------------------------------------------------------- # Is the system flattened? #-------------------------------------------------------------------- AC_MSG_CHECKING(for flattened directory structure) AC_ARG_ENABLE(flattened, [ --disable-flattened Disable flattened directory structure. Use this option if you want to have support for multiple library combos and fat binaries. A library combo specifies the Objective-C frameworks to use to compile a program, so having multiple library combos is only useful if you have (or plan to have) multiple OpenStep-like Objective-C frameworks installed on your machine, for example both the Apple Cocoa Objective-C frameworks and the GNUstep frameworks. Fat binaries allow you to have multiple versions for different CPUs and Operating Systems. Please note that using the fat directory structure will not blend easily with native filesystems and so if you want the non-flattened directory structure you probably want to install GNUstep using its own default filesystem layout. To switch between different library-combos, you also need to source GNUstep.sh after setting the LIBRARY_COMBO environment variable. Please refer to the documentation for more information on library-combos and fat binaries. ], ac_cv_flattened=$enableval, ac_cv_flattened="undefined") if test "$ac_cv_flattened" = "no"; then # GNUSTEP_FLATTENED is here for backwards compatibility only and # should be removed at some point. It has the problem that it # defaults to 'no' while we want the default to be 'yes'! # The new GNUSTEP_IS_FLATTENED variable defaults to 'yes'. :-) GNUSTEP_FLATTENED=; GNUSTEP_IS_FLATTENED=no; # FIXME - maybe we should have a warning here if you try to # use 'fhs' or 'fhs-system' layout with non-flattened! else GNUSTEP_FLATTENED=yes; GNUSTEP_IS_FLATTENED=yes; fi AC_SUBST(GNUSTEP_FLATTENED) AC_SUBST(GNUSTEP_IS_FLATTENED) if test "$GNUSTEP_IS_FLATTENED" = "yes"; then AC_MSG_RESULT(yes); else AC_MSG_RESULT(no); fi #-------------------------------------------------------------------- # Output the full filesystem layout #-------------------------------------------------------------------- # Note: We print out the entire filesystem layout so that people can # see with their eyes the result of the configuration options that # they used. This is good to immediately spot mistakes. AC_MSG_NOTICE([Now printing the filesystem layout configuration.]) AC_MSG_CHECKING([for System Applications directory]) AC_MSG_RESULT($GNUSTEP_SYSTEM_APPS) AC_SUBST(GNUSTEP_SYSTEM_APPS) AC_MSG_CHECKING([for System Admin Applications directory]) AC_MSG_RESULT($GNUSTEP_SYSTEM_ADMIN_APPS) AC_SUBST(GNUSTEP_SYSTEM_ADMIN_APPS) AC_MSG_CHECKING([for System Web Applications directory]) AC_MSG_RESULT($GNUSTEP_SYSTEM_WEB_APPS) AC_SUBST(GNUSTEP_SYSTEM_WEB_APPS) AC_MSG_CHECKING([for System Tools directory]) AC_MSG_RESULT($GNUSTEP_SYSTEM_TOOLS) AC_SUBST(GNUSTEP_SYSTEM_TOOLS) AC_MSG_CHECKING([for System Admin Tools directory]) AC_MSG_RESULT($GNUSTEP_SYSTEM_ADMIN_TOOLS) AC_SUBST(GNUSTEP_SYSTEM_ADMIN_TOOLS) AC_MSG_CHECKING([for System Library directory]) AC_MSG_RESULT($GNUSTEP_SYSTEM_LIBRARY) AC_SUBST(GNUSTEP_SYSTEM_LIBRARY) AC_MSG_CHECKING([for System Headers directory]) AC_MSG_RESULT($GNUSTEP_SYSTEM_HEADERS) AC_SUBST(GNUSTEP_SYSTEM_HEADERS) AC_MSG_CHECKING([for System Libraries directory]) AC_MSG_RESULT($GNUSTEP_SYSTEM_LIBRARIES) AC_SUBST(GNUSTEP_SYSTEM_LIBRARIES) AC_MSG_CHECKING([for System Documentation directory]) AC_MSG_RESULT($GNUSTEP_SYSTEM_DOC) AC_SUBST(GNUSTEP_SYSTEM_DOC) AC_MSG_CHECKING([for System Info Documentation directory]) AC_MSG_RESULT($GNUSTEP_SYSTEM_DOC_INFO) AC_SUBST(GNUSTEP_SYSTEM_DOC_INFO) AC_MSG_CHECKING([for System Man Documentation directory]) AC_MSG_RESULT($GNUSTEP_SYSTEM_DOC_MAN) AC_SUBST(GNUSTEP_SYSTEM_DOC_MAN) AC_MSG_CHECKING([for Network Applications directory]) AC_MSG_RESULT($GNUSTEP_NETWORK_APPS) AC_SUBST(GNUSTEP_NETWORK_APPS) AC_MSG_CHECKING([for Network Admin Applications directory]) AC_MSG_RESULT($GNUSTEP_NETWORK_ADMIN_APPS) AC_SUBST(GNUSTEP_NETWORK_ADMIN_APPS) AC_MSG_CHECKING([for Network Web Applications directory]) AC_MSG_RESULT($GNUSTEP_NETWORK_WEB_APPS) AC_SUBST(GNUSTEP_NETWORK_WEB_APPS) AC_MSG_CHECKING([for Network Tools directory]) AC_MSG_RESULT($GNUSTEP_NETWORK_TOOLS) AC_SUBST(GNUSTEP_NETWORK_TOOLS) AC_MSG_CHECKING([for Network Admin Tools directory]) AC_MSG_RESULT($GNUSTEP_NETWORK_ADMIN_TOOLS) AC_SUBST(GNUSTEP_NETWORK_ADMIN_TOOLS) AC_MSG_CHECKING([for Network Library directory]) AC_MSG_RESULT($GNUSTEP_NETWORK_LIBRARY) AC_SUBST(GNUSTEP_NETWORK_LIBRARY) AC_MSG_CHECKING([for Network Headers directory]) AC_MSG_RESULT($GNUSTEP_NETWORK_HEADERS) AC_SUBST(GNUSTEP_NETWORK_HEADERS) AC_MSG_CHECKING([for Network Libraries directory]) AC_MSG_RESULT($GNUSTEP_NETWORK_LIBRARIES) AC_SUBST(GNUSTEP_NETWORK_LIBRARIES) AC_MSG_CHECKING([for Network Documentation directory]) AC_MSG_RESULT($GNUSTEP_NETWORK_DOC) AC_SUBST(GNUSTEP_NETWORK_DOC) AC_MSG_CHECKING([for Network Info Documentation directory]) AC_MSG_RESULT($GNUSTEP_NETWORK_DOC_INFO) AC_SUBST(GNUSTEP_NETWORK_DOC_INFO) AC_MSG_CHECKING([for Network Man Documentation directory]) AC_MSG_RESULT($GNUSTEP_NETWORK_DOC_MAN) AC_SUBST(GNUSTEP_NETWORK_DOC_MAN) AC_MSG_CHECKING([for Local Applications directory]) AC_MSG_RESULT($GNUSTEP_LOCAL_APPS) AC_SUBST(GNUSTEP_LOCAL_APPS) AC_MSG_CHECKING([for Local Admin Applications directory]) AC_MSG_RESULT($GNUSTEP_LOCAL_ADMIN_APPS) AC_SUBST(GNUSTEP_LOCAL_ADMIN_APPS) AC_MSG_CHECKING([for Local Web Applications directory]) AC_MSG_RESULT($GNUSTEP_LOCAL_WEB_APPS) AC_SUBST(GNUSTEP_LOCAL_WEB_APPS) AC_MSG_CHECKING([for Local Tools directory]) AC_MSG_RESULT($GNUSTEP_LOCAL_TOOLS) AC_SUBST(GNUSTEP_LOCAL_TOOLS) AC_MSG_CHECKING([for Local Admin Tools directory]) AC_MSG_RESULT($GNUSTEP_LOCAL_ADMIN_TOOLS) AC_SUBST(GNUSTEP_LOCAL_ADMIN_TOOLS) AC_MSG_CHECKING([for Local Library directory]) AC_MSG_RESULT($GNUSTEP_LOCAL_LIBRARY) AC_SUBST(GNUSTEP_LOCAL_LIBRARY) AC_MSG_CHECKING([for Local Headers directory]) AC_MSG_RESULT($GNUSTEP_LOCAL_HEADERS) AC_SUBST(GNUSTEP_LOCAL_HEADERS) AC_MSG_CHECKING([for Local Libraries directory]) AC_MSG_RESULT($GNUSTEP_LOCAL_LIBRARIES) AC_SUBST(GNUSTEP_LOCAL_LIBRARIES) AC_MSG_CHECKING([for Local Documentation directory]) AC_MSG_RESULT($GNUSTEP_LOCAL_DOC) AC_SUBST(GNUSTEP_LOCAL_DOC) AC_MSG_CHECKING([for Local Info Documentation directory]) AC_MSG_RESULT($GNUSTEP_LOCAL_DOC_INFO) AC_SUBST(GNUSTEP_LOCAL_DOC_INFO) AC_MSG_CHECKING([for Local Man Documentation directory]) AC_MSG_RESULT($GNUSTEP_LOCAL_DOC_MAN) AC_SUBST(GNUSTEP_LOCAL_DOC_MAN) AC_MSG_CHECKING([for User Applications directory]) AC_MSG_RESULT($GNUSTEP_USER_DIR_APPS) AC_SUBST(GNUSTEP_USER_DIR_APPS) AC_MSG_CHECKING([for User Admin Applications directory]) AC_MSG_RESULT($GNUSTEP_USER_DIR_ADMIN_APPS) AC_SUBST(GNUSTEP_USER_DIR_ADMIN_APPS) AC_MSG_CHECKING([for User Web Applications directory]) AC_MSG_RESULT($GNUSTEP_USER_DIR_WEB_APPS) AC_SUBST(GNUSTEP_USER_DIR_WEB_APPS) AC_MSG_CHECKING([for User Tools directory]) AC_MSG_RESULT($GNUSTEP_USER_DIR_TOOLS) AC_SUBST(GNUSTEP_USER_DIR_TOOLS) AC_MSG_CHECKING([for User Admin Tools directory]) AC_MSG_RESULT($GNUSTEP_USER_DIR_ADMIN_TOOLS) AC_SUBST(GNUSTEP_USER_DIR_ADMIN_TOOLS) AC_MSG_CHECKING([for User Library directory]) AC_MSG_RESULT($GNUSTEP_USER_DIR_LIBRARY) AC_SUBST(GNUSTEP_USER_DIR_LIBRARY) AC_MSG_CHECKING([for User Headers directory]) AC_MSG_RESULT($GNUSTEP_USER_DIR_HEADERS) AC_SUBST(GNUSTEP_USER_DIR_HEADERS) AC_MSG_CHECKING([for User Libraries directory]) AC_MSG_RESULT($GNUSTEP_USER_DIR_LIBRARIES) AC_SUBST(GNUSTEP_USER_DIR_LIBRARIES) AC_MSG_CHECKING([for User Documentation directory]) AC_MSG_RESULT($GNUSTEP_USER_DIR_DOC) AC_SUBST(GNUSTEP_USER_DIR_DOC) AC_MSG_CHECKING([for User Info Documentation directory]) AC_MSG_RESULT($GNUSTEP_USER_DIR_DOC_INFO) AC_SUBST(GNUSTEP_USER_DIR_DOC_INFO) AC_MSG_CHECKING([for User Man Documentation directory]) AC_MSG_RESULT($GNUSTEP_USER_DIR_DOC_MAN) AC_SUBST(GNUSTEP_USER_DIR_DOC_MAN) AC_MSG_CHECKING([for System User directory]) AC_MSG_RESULT($GNUSTEP_SYSTEM_USERS_DIR) AC_SUBST(GNUSTEP_SYSTEM_USERS_DIR) AC_MSG_CHECKING([for Network User directory]) AC_MSG_RESULT($GNUSTEP_NETWORK_USERS_DIR) AC_SUBST(GNUSTEP_NETWORK_USERS_DIR) AC_MSG_CHECKING([for Local User directory]) AC_MSG_RESULT($GNUSTEP_LOCAL_USERS_DIR) AC_SUBST(GNUSTEP_LOCAL_USERS_DIR) #-------------------------------------------------------------------- # These variables no longer exist! We try to set some compatibility # values for them that should work with the old 'gnustep' layout. # So things using the old 'gnustep' layout should keep working. # These variables won't have any meaning with the new layouts. # They are deprecated and they *will* be removed. #-------------------------------------------------------------------- GNUSTEP_SYSTEM_ROOT="$GNUSTEP_PREFIX/System" GNUSTEP_NETWORK_ROOT="$GNUSTEP_PREFIX/Network" GNUSTEP_LOCAL_ROOT="$GNUSTEP_PREFIX/Local" GNUSTEP_USER_DIR="GNUstep" AC_SUBST(GNUSTEP_SYSTEM_ROOT) AC_SUBST(GNUSTEP_NETWORK_ROOT) AC_SUBST(GNUSTEP_LOCAL_ROOT) AC_SUBST(GNUSTEP_USER_DIR) #-------------------------------------------------------------------- # Is the system multi-platform? #-------------------------------------------------------------------- # # Multi-platform means that GNUstep.sh will determine the host # platform (by running config.guess) each time that it is sourced. # This is good if you are sharing your GNUstep.sh across your network # (for example, mounting the makefiles via NFS), but it requires you # to be able to run config.guess on your machine(s), which usually # requires a development environment (compiler, libc etc). # # The default instead is not using multi-platform, which means the # local host os, cpu and version is hardcoded in GNUstep.sh. This # works nicely for a single machine using this gnustep-make # installation, and it works even if you don't have development # packages (gcc, binutils, libc-dev etc) installed. We had to make # this the default after end-users (with no development packages # installed) complained that binary packages wouldn't work (and the # reason turned out to be that GNUstep.sh was running config.guess # which was returning the wrong platform because the development # tools needed/used to determine the platform were not available). # # Unless you know what you are doing, stick with the default, which is # also much faster when sourcing GNUstep.sh. # AC_ARG_ENABLE(multi-platform, [ --enable-multi-platform Enable run-time multi-platform support. If this option is enabled, then every time GNUstep.sh is run it will determine/guess the type of local host machine instead of using the hardcoded value. Use this together with --disable-flattened if you have a single GNUstep installation with fat binaries that is being shared over the network by a variety of machines with different hardware and o/s. ], ac_cv_multi_platform=$enableval, ac_cv_multi_platform="undefined") if test "$ac_cv_multi_platform" = "yes"; then GNUSTEP_MULTI_PLATFORM=yes; else GNUSTEP_MULTI_PLATFORM=; fi AC_SUBST(GNUSTEP_MULTI_PLATFORM) #-------------------------------------------------------------------- # Build backend bundles (on by default) #-------------------------------------------------------------------- AC_ARG_ENABLE(backend-bundle, [ --disable-backend-bundle Compile GUI backend as a library. Use this option if the default compilation of the GUI backend as a bundle (loadable module) is not supported / does not work on your machine. ], ac_cv_backend=$enableval, ac_cv_backend="yes") if test "$ac_cv_backend" = "yes"; then BACKEND_BUNDLE=yes; else BACKEND_BUNDLE=; fi AC_SUBST(BACKEND_BUNDLE) #-------------------------------------------------------------------- # Enable installation of ld.so.conf.d/gnustep-make.conf #-------------------------------------------------------------------- AC_ARG_ENABLE(install-ld-so-conf, [ --enable-install-ld-so-conf Enable installation of ld.so.conf/gnustep-make.conf. This is useful if you are installing in a non-standard prefix, and a component of the build system needs to be able to find libraries even without GNUstep.sh or equivalent providing environment. Some packaging systems clear out the environment at certain points during the packaging build process, hence making LD_LIBRARY_PATH set by gnustep-make.conf ineffective. ], ac_cv_install_ld_so_conf=$enableval, ac_cv_install_ld_so_conf="undefined") if test "$ac_cv_install_ld_so_conf" = "yes"; then GNUSTEP_INSTALL_LD_SO_CONF=yes; else GNUSTEP_INSTALL_LD_SO_CONF=; fi AC_SUBST(GNUSTEP_INSTALL_LD_SO_CONF) #-------------------------------------------------------------------- # Miscellaneous flags and setup #-------------------------------------------------------------------- # TODO: This check for a custom ObjC library needs to be moved to # gnustep-base since it concerns the runtime library (see explanations # at the beginning of this file). if test "$GNUSTEP_IS_FLATTENED" != yes; then clean_target_os=`$srcdir/clean_os.sh $target_os` clean_target_cpu=`$srcdir/clean_cpu.sh $target_cpu` obj_dir="$clean_target_cpu/$clean_target_os" fi # Check to see if the libobjc library is in our GNUSTEP_SYSTEM_LIBRARIES # If so, there are probably other libraries that we want there also, so # leave the proper includes in CPPFLAGS and LDFLAGS AC_MSG_CHECKING(for custom shared objc library) AC_CACHE_VAL(gs_cv_objc_libdir, [dnl gs_cv_objc_libdir=NONE gs_cv_objc_incdir=NONE # Try GNUSTEP_SYSTEM_LIBRARIES first if test "$GNUSTEP_IS_FLATTENED" = yes; then GNUSTEP_LDIR="$GNUSTEP_SYSTEM_LIBRARIES" GNUSTEP_HDIR="$GNUSTEP_SYSTEM_HEADERS" else GNUSTEP_LDIR="$GNUSTEP_SYSTEM_LIBRARIES/$obj_dir" GNUSTEP_HDIR="$GNUSTEP_SYSTEM_HEADERS/$LIBRARY_COMBO" fi if test -f "$GNUSTEP_HDIR/objc/objc.h"; then if test -f "$GNUSTEP_LDIR/libobjc.a" -o -f "$GNUSTEP_LDIR/libobjc.so" -o -f "$GNUSTEP_LDIR/libobjc.dll.a" -o -f "$GNUSTEP_LDIR/libobjc-gnu.dylib"; then gs_cv_objc_libdir="$GNUSTEP_LDIR" gs_cv_objc_incdir="$GNUSTEP_HDIR" gs_cv_objc_tools="$GNUSTEP_SYSTEM_TOOLS" fi fi # Try GNUSTEP_NETWORK_LIBRARIES second (override GNUSTEP_SYSTEM if # found) if test "$GNUSTEP_IS_FLATTENED" = yes; then GNUSTEP_LDIR="$GNUSTEP_NETWORK_LIBRARIES" GNUSTEP_HDIR="$GNUSTEP_NETWORK_HEADERS" else GNUSTEP_LDIR="$GNUSTEP_NETWORK_LIBRARIES/$obj_dir" GNUSTEP_HDIR="$GNUSTEP_NETWORK_HEADERS/$LIBRARY_COMBO" fi if test -f "$GNUSTEP_HDIR/objc/objc.h"; then if test -f "$GNUSTEP_LDIR/libobjc.a" -o -f "$GNUSTEP_LDIR/libobjc.so" -o -f "$GNUSTEP_LDIR/libobjc.dll.a" -o -f "$GNUSTEP_LDIR/libobjc-gnu.dylib"; then gs_cv_objc_libdir="$GNUSTEP_LDIR" gs_cv_objc_incdir="$GNUSTEP_HDIR" gs_cv_objc_tools="$GNUSTEP_NETWORK_TOOLS" fi fi # Try GNUSTEP_LOCAL_LIBRARIES third (override GNUSTEP_SYSTEM and # GNUSTEP_NETWORK if found) if test "$GNUSTEP_IS_FLATTENED" = yes; then GNUSTEP_LDIR="$GNUSTEP_LOCAL_LIBRARIES" GNUSTEP_HDIR="$GNUSTEP_LOCAL_HEADERS" else GNUSTEP_LDIR="$GNUSTEP_LOCAL_LIBRARIES/$obj_dir" GNUSTEP_HDIR="$GNUSTEP_LOCAL_HEADERS/$LIBRARY_COMBO" fi if test -f "$GNUSTEP_HDIR/objc/objc.h"; then if test -f "$GNUSTEP_LDIR/libobjc.a" -o -f "$GNUSTEP_LDIR/libobjc.so" -o -f "$GNUSTEP_LDIR/libobjc.dll.a" -o -f "$GNUSTEP_LDIR/libobjc-gnu.dylib"; then gs_cv_objc_libdir="$GNUSTEP_LDIR" gs_cv_objc_incdir="$GNUSTEP_HDIR" gs_cv_objc_tools="$GNUSTEP_LOCAL_TOOLS" fi fi #gcc_shared_libobjc=`gcc -print-file-name=libobjc.so` #if test -f "$gcc_shared_libobjc"; then # gs_cv_objc_libdir=`dirname $gcc_shared_libobjc` #fi ]) AC_MSG_RESULT($gs_cv_objc_libdir) if test "$gs_cv_objc_libdir" != "NONE"; then # The following are needed to compile the test programs OBJC_CPPFLAGS="$CPPFLAGS $INCLUDES -I$gs_cv_objc_incdir" OBJC_LDFLAGS="$LDFLAGS $LIB_DIR -L$gs_cv_objc_libdir" # And the following to execute them LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gs_cv_objc_libdir" export LD_LIBRARY_PATH # Need to also add the Tools library on mingw case $host_os in *mingw32* ) PATH=$PATH:$gs_cv_objc_tools;; * ) ;; esac fi # Special case for Apple systems: When compiling plain C source files that # include Objective-C runtime headers we must make sure that the correct # header files are used with a gnu-*-* combo. The -fgnu-runtime compiler # option takes care of this when compiling Objective-C source files, but # has no effect when compiling plain C (or C++) source files. cc_gnuruntime= case $target_os-$ac_cv_library_combo in darwin*-gnu-*-* ) if test "$gs_cv_objc_libdir" = "NONE"; then AC_MSG_CHECKING(GNU Objective-C runtime header directory) install_dir="`$CC -print-search-dirs | sed -n 's/install: //p'`" if test -n "${install_dir}" && \ test -d "${install_dir}"include-gnu-runtime; then cc_gnuruntime="${install_dir}"include-gnu-runtime AC_MSG_RESULT($cc_gnuruntime) else AC_MSG_RESULT(NONE) fi fi ;; esac AC_SUBST(cc_gnuruntime) # TODO: This flag needs to be moved to gnustep-base since it concerns # the runtime library (see explanations at the beginning of this # file). AC_MSG_CHECKING(for the flag to link libobjc) AC_ARG_WITH(objc-lib-flag,[ --with-objc-lib-flag Specify a different flag to link libobjc (the Objective-C runtime library). The default is -lobjc. In some situations you may have multiple versions of libobjc installed and if your linker supports it you may want to specify exactly which one must be used; for example on GNU/Linux you should be able to use --with-objc-lib-flag=-l:libobjc.so.1 to request libobjc.so.1 (as opposed to, say, libobjc.so.2) to be linked. ], OBJC_LIB_FLAG="$withval", OBJC_LIB_FLAG="" ) # We pass the flag, unchanged, to gnustep-make - if it's empty, # gnustep-make will be free to use -lobjc AC_SUBST(OBJC_LIB_FLAG) # But we need to compute, and print out, what flag we're using now. OBJC_FINAL_LIB_FLAG="$OBJC_LIB_FLAG" saved_CFLAGS="$CFLAGS" saved_LIBS="$LIBS" CFLAGS="$CFLAGS -x objective-c -I$srcdir $OBJC_CPPFLAGS $OBJC_LDFLAGS" if test "$OBJC_RUNTIME_LIB" = "gnu"; then CFLAGS="$CFLAGS -fgnu-runtime -DGNU_RUNTIME" if test "$OBJC_FINAL_LIB_FLAG" = ""; then OBJC_FINAL_LIB_FLAG=-lobjc fi OBJCRT="$OBJC_FINAL_LIB_FLAG" fi if test "$OBJC_RUNTIME_LIB" = "nx"; then CFLAGS="$CFLAGS -DNeXT_RUNTIME" if test "$OBJC_FINAL_LIB_FLAG" = ""; then OBJC_FINAL_LIB_FLAG=-lobjc fi OBJCRT="$OBJC_FINAL_LIB_FLAG" fi if test "$OBJC_RUNTIME_LIB" = "apple"; then CFLAGS="$CFLAGS -DAPPLE_RUNTIME" if test "$OBJC_FINAL_LIB_FLAG" = ""; then OBJC_FINAL_LIB_FLAG=-lobjc fi OBJCRT="$OBJC_FINAL_LIB_FLAG" fi AC_MSG_RESULT($OBJC_FINAL_LIB_FLAG) #-------------------------------------------------------------------- # Check if libobjc was compiled with thread support. #-------------------------------------------------------------------- # TODO: This check needs to be moved to gnustep-base since it concerns # the runtime library (see explanations at the beginning of this # file). OBJC_THREAD= AC_ARG_WITH(thread-lib,[ --with-thread-lib Specify alternate thread library. Use this flag if configure can not properly determine the thread library used by your libobjc. ], OBJC_THREAD=$withval, OBJC_THREAD= ) if test "$OBJC_THREAD" = no; then OBJC_THREAD= fi AC_MSG_CHECKING(whether objc has thread support) if test "$OBJC_THREAD" != ""; then LIBS="$OBJCRT $LIBS $OBJC_THREAD" AC_TRY_RUN([#include "config_thread.m"], objc_threaded="$OBJC_THREAD", objc_threaded="", objc_threaded="") elif test "$host_os" = linux-gnu; then LIBS="$OBJCRT -lpthread" AC_TRY_RUN([#include "config_thread.m"], objc_threaded="-lpthread", objc_threaded="", objc_threaded="-lpthread") if test x"$objc_threaded" = x""; then LIBS="$OBJCRT" AC_TRY_RUN([#include "config_thread.m"], objc_threaded="works", objc_threaded="", objc_threaded="works") fi elif test "`echo $host_os|sed 's/[[0-9]].*//'|sed s/elf//`" = freebsd; then LIBS="-pthread $OBJCRT" AC_TRY_RUN([#include "config_thread.m"], objc_threaded="-pthread", objc_threaded="", objc_threaded="-pthread") if test x"$objc_threaded" = x""; then LIBS="-lpthread $OBJCRT" AC_TRY_RUN([#include "config_thread.m"], objc_threaded="-lpthread", objc_threaded="", objc_threaded="-lpthread") fi if test x"$objc_threaded" = x""; then LIBS="$OBJCRT -lpcthread" AC_TRY_RUN([#include "config_thread.m"], objc_threaded="-lpcthread", objc_threaded="", objc_threaded="-lpcthread") fi if test x"$objc_threaded" = x""; then LIBS="$OBJCRT" AC_TRY_RUN([#include "config_thread.m"], objc_threaded="works", objc_threaded="", objc_threaded="works") fi elif test "$MINGW32" = yes; then # Mingw doesn't need anything extra for threads LIBS="$OBJCRT $LIBS" AC_TRY_RUN([#include "config_thread.m"], objc_threaded="works", objc_threaded="", objc_threaded="works") elif test "$MINGW64" = yes; then # Mingw doesn't need anything extra for threads LIBS="$OBJCRT $LIBS" AC_TRY_RUN([#include "config_thread.m"], objc_threaded="works", objc_threaded="", objc_threaded="works") elif test "$OBJC_RUNTIME_LIB" = "apple"; then # Apple doesn't need anything extra for threads LIBS="$OBJCRT $LIBS" AC_TRY_RUN([#include "config_thread.m"], objc_threaded="works", objc_threaded="", objc_threaded="works") else LIBS="$OBJCRT $LIBS" AC_TRY_RUN([#include "config_thread.m"], objc_threaded="works", objc_threaded="", objc_threaded="") if test x"$objc_threaded" = x""; then LIBS="$OBJCRT $saved_LIBS -lpthread " AC_TRY_RUN([#include "config_thread.m"], objc_threaded="-lpthread", objc_threaded="", objc_threaded="") fi if test x"$objc_threaded" = x""; then # Solaris, OpenBSD/sparc LIBS="$OBJCRT $saved_LIBS -lpthread -lposix4" AC_TRY_RUN([#include "config_thread.m"], objc_threaded="-lpthread -lposix4", objc_threaded="", objc_threaded="") fi if test x"$objc_threaded" = x""; then LIBS="$OBJCRT $saved_LIBS -lthread " AC_TRY_RUN([#include "config_thread.m"], objc_threaded="-lthread", objc_threaded="", objc_threaded="") fi if test x"$objc_threaded" = x""; then LIBS="$OBJCRT" AC_TRY_RUN([#include "config_thread.m"], objc_threaded="works", objc_threaded="", objc_threaded="works") fi fi if test x"$objc_threaded" = x""; then AC_MSG_RESULT(no) else if test x"$objc_threaded" = x"works"; then objc_threaded="" fi AC_MSG_RESULT(yes: $objc_threaded) fi ac_cv_objc_threaded="$objc_threaded" AC_SUBST(objc_threaded) AC_SUBST(ac_cv_objc_threaded) AC_MSG_CHECKING(whether Objective-C++ is supported) # Only new autoconf supports ObjC++ so we use C++ instead for now #AC_LANG_PUSH(Objective C++) #OBJCXXFLAGS_saved="$OBJCXXFLAGS" #OBJCXXFLAGS="$OBJCXXFLAGS -x objective-c++" #OBJCXXPPFLAGS_saved="$OBJCXXPPFLAGS" #OBJCXXPPFLAGS="$OBJCXXPPFLAGS -x objective-c++" AC_LANG_PUSH(C++) CXXFLAGS_saved="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -x objective-c++" CXXPPFLAGS_saved="$CXXPPFLAGS" CXXPPFLAGS="$CXXPPFLAGS -x objective-c++" AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ @interface ObjCClass { int x; } @end class CppClass { int x; }; int main() { return 0; } ]])], objcc=yes, objcc=no) AC_MSG_RESULT($objcc) if test x"$objcc" = x"no"; then OBJCXX= fi AC_SUBST(OBJCXX) # Only new autoconf supports ObjC++ so we use C++ instead for now #OBJCXXFLAGS="$OBJCXXFLAGS_saved" #OBJCXXPPFLAGS="$OBJCXXPPFLAGS_saved" #AC_LANG_POP(Objective C++) CXXFLAGS="$CXXFLAGS_saved" CXXPPFLAGS="$CXXPPFLAGS_saved" AC_LANG_POP(C++) if test "$OBJC_RUNTIME_LIB" != ng; then #-------------------------------------------------------------------- # Check if compiler supports -fobjc-nonfragile-abi, and if so, turn it on! #-------------------------------------------------------------------- AC_ARG_ENABLE(objc-nonfragile-abi, [ --enable-objc-nonfragile-abi Use the non-fragile ABI for Objective-C. Use this option if you want to use non-fragile instance variables provided by clang and libobjc2. ], USE_NONFRAGILE_ABI=$enableval, USE_NONFRAGILE_ABI=notset) AC_MSG_CHECKING(whether we should use the nonfragile ABI) if test x"$USE_NONFRAGILE_ABI" = x"yes"; then # What we want to do: set USE_NONFRAGILE_ABI to yes if we can compile # something with -fobjc-nonfragile-abi. CFLAGS_no_nonfragile="$CFLAGS" CFLAGS="$CFLAGS -fobjc-nonfragile-abi" AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ /* Note that we never execute this code so it does not really matter what it is. We are testing that the compiler accepts the '-fobjc-nonfragile-abi' flag. */ int main() { #ifndef __has_feature #define __has_feature(x) 0 #endif return __has_feature(objc_nonfragile_abi) ? 0 : 1; } ]])], USE_NONFRAGILE_ABI=yes, USE_NONFRAGILE_ABI=no) AC_MSG_RESULT($USE_NONFRAGILE_ABI) CFLAGS="$CFLAGS_no_nonfragile" if test x"$USE_NONFRAGILE_ABI" = x"no"; then AC_MSG_NOTICE([The nonfragile ABI was requested, but the compiler]) AC_MSG_NOTICE([doesn't support it.]) AC_MSG_ERROR([compiler doesn't support nonfragile ABI]) fi else if test x"$USE_NONFRAGILE_ABI" != x"no"; then saved_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS -x objective-c" AC_EGREP_CPP([^1$], [ #ifndef __has_feature #define __has_feature(x) 0 #endif __has_feature(objc_nonfragile_abi) ], USE_NONFRAGILE_ABI=yes, USE_NONFRAGILE_ABI=no) CPPFLAGS=$saved_CPPFLAGS fi if test x"$USE_NONFRAGILE_ABI" = x"yes"; then AC_MSG_RESULT([yes (compiler default)]) else AC_MSG_RESULT(not requested by user) fi fi fi AC_SUBST(USE_NONFRAGILE_ABI) #-------------------------------------------------------------------- # Check if compiler supports -fobjc-arc, and if so, turn it on! #-------------------------------------------------------------------- AC_ARG_ENABLE(objc-arc, [ --enable-objc-arc Use automatic retain counts for Objective-C. Use this option if you want to use the ARC mechanism of the Objective-C compiler and runtime. ], USE_ARC=$enableval, USE_ARC=$defaultng) AC_MSG_CHECKING(whether we should use ARC) if test x"$USE_ARC" = x"yes"; then # What we want to do: set USE_ARC to yes if we can compile # something with -fobjc-arc. CFLAGS_no_arc="$CFLAGS" CFLAGS="$CFLAGS -fobjc-runtime=gnustep-1.8 -fobjc-arc" AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ /* Note that we never execute this code so it does not really matter what it is. We are testing that the compiler accepts the '-fobjc-arc' flag. */ int main() { #ifndef __has_feature #define __has_feature(x) 0 #endif return __has_feature(objc_arc) ? 0 : 1; } ]])], USE_ARC=yes, USE_ARC=no) AC_MSG_RESULT($USE_ARC) CFLAGS="$CFLAGS_no_arc" if test x"$USE_ARC" = x"no"; then AC_MSG_NOTICE([Building ARC code was requested, but the compiler]) AC_MSG_NOTICE([doesn't support it.]) AC_MSG_ERROR([compiler doesn't support ARC]) fi else if test x"$USE_ARC" != x"no"; then saved_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS -x objective-c" AC_EGREP_CPP([^1$], [ #ifndef __has_feature #define __has_feature(x) 0 #endif __has_feature(objc_arc) ], USE_ARC=yes, USE_ARC=no) CPPFLAGS=$saved_CPPFLAGS fi if test x"$USE_ARC" = x"yes"; then AC_MSG_RESULT([yes (compiler default)]) else AC_MSG_RESULT(not requested by user) fi fi AC_SUBST(USE_ARC) # Keep LIBS and CFLAGS as they are for a while - we need them in # the following Objective-C tests! #-------------------------------------------------------------------- # Check if we should use -r or -Wl,-r when doing partial linking #-------------------------------------------------------------------- # Ideally, we'd use -r or -Wl,-r everywhere and that would work with # both GCC and clang. But -r doesn't work with clang on some # platforms, while using -Wl,-r is a problem with GCC on some Sparc # systems, where GCC automatically passes --relax to the linker unless # you specify -r. If you specify -Wl,-r, it still passes --relax, # producing the error # # ld: --relax and -r may not be used together # # To work around this, we use -Wl,-r with clang, and -r with GCC. AC_MSG_CHECKING(for the flag to use to do partial linking) gs_cv_using_clang=`${CC} --version 2>&5 | grep -c "clang"` if test x"${gs_cv_using_clang}" = x"0" ; then OBJ_MERGE_CMD_FLAG=-r AC_MSG_RESULT([-r]) else OBJ_MERGE_CMD_FLAG=-Wl,-r AC_MSG_RESULT([-Wl,-r]) fi AC_SUBST(OBJ_MERGE_CMD_FLAG) #-------------------------------------------------------------------- # Check for the GCC version - this is used in the following tests #-------------------------------------------------------------------- AC_MSG_CHECKING(for the GCC version) if test ! x"${GCC}" = x"yes" ; then AC_MSG_RESULT(no: it's not gcc) else # Running gcc -dumpversion we get something like 2.95.4 or # egcs-2.91.66 or 3.0.2 or 3.1 20011211 # We want to discard anything but the major number. # Explanation of the regexp - # \([^0-9]*\) matches non numeric chars at the beginning # \([0-9][0-9]*\) matches 1 or more numeric chars (this is the 2^nd # subpattern) # \([^0-9]*\) matches one or more non numeric chars # \([0-9][0-9]*\) matches 1 or more numeric chars (this is the 4^nd # subpattern) # \([^0-9].*\) matches a non numeric char followed by anything # /\2/ replace the whole lot with the 2^nd subpattern # /\4/ replace the whole lot with the 4^nd subpattern # All square brackets are doubled because this file is processed by m4 first. # Finally, any error messages are redirected to &5, so that they are logged # into config.log but don't clutter the normal user output. gs_cv_gcc_major_version=`(${CC} -dumpversion | sed "s/\([[^0-9]]*\)\([[0-9]][[0-9]]*\)\([[^0-9]]*\)\([[0-9]][[0-9]]*\)\([[^0-9]]*.*\)/\2/") 2>&5`; gs_cv_gcc_minor_version=`(${CC} -dumpversion | sed "s/\([[^0-9]]*\)\([[0-9]][[0-9]]*\)\([[^0-9]]*\)\([[0-9]][[0-9]]*\)\([[^0-9]]*.*\)/\4/") 2>&5`; gs_cv_gcc_parsed_version=${gs_cv_gcc_major_version}.${gs_cv_gcc_minor_version} AC_MSG_RESULT(version: ${gs_cv_gcc_parsed_version}) fi AC_MSG_CHECKING(whether the compiler is clang) if test ! x"${GCC}" = x"yes" ; then CLANG_CC=no AC_MSG_RESULT(no) else if "${CC}" -v 2>&1 | grep -q 'clang version'; then CLANG_CC=yes AC_MSG_RESULT(yes) else CLANG_CC=no AC_MSG_RESULT(no) fi fi AC_SUBST(CLANG_CC) # Do not restore LIBS and CFLAGS yet as we need to test if the # compiler supports native exceptions. #-------------------------------------------------------------------- # Check if GCC supports -fobjc-exceptions, and if so, turn it on! #-------------------------------------------------------------------- AC_ARG_ENABLE(native-objc-exceptions, [ --disable-native-objc-exceptions Disable native Objective-C exception support (@try / @catch / @finally / @synchronized). If unspecified, Objective-C exception support is enabled if the compiler can compile Objective-C code containing @try / @catch / @finally / @synchronized. Please note that native exceptions also require support in the Objective-C runtime; GNUstep-base will check for that support and may still disable native exceptions if such support is not available. Use this option if you do not want to use the native Objective-C exception support provided by newer compilers. ], USE_OBJC_EXCEPTIONS=$enableval, USE_OBJC_EXCEPTIONS=maybe) if test x"$USE_OBJC_EXCEPTIONS" = x"maybe"; then if test x"$MSWIND" = x"yes"; then USE_OBJC_EXCEPTIONS=no fi fi # Please note that -fobjc-exceptions should automatically enable # -fexceptions. AC_MSG_CHECKING(whether the compiler supports native ObjC exceptions) if test x"$USE_OBJC_EXCEPTIONS" = x"maybe"; then # What we want to do: set USE_OBJC_EXCEPTIONS to yes if we can compile # something with @try/@catch/@finally in it. CFLAGS_no_exceptions="$CFLAGS" CFLAGS="$CFLAGS -fexceptions -fobjc-exceptions" AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ #include <objc/objc.h> @interface Test { id isa; } @end int test (Test *o) { @try { @throw o; } @catch (id foo) { if (o != foo) return 1; } return 0; } ]])], USE_OBJC_EXCEPTIONS=yes, USE_OBJC_EXCEPTIONS=no) if test x"$USE_OBJC_EXCEPTIONS" = x"no"; then AC_MSG_RESULT(no) else AC_MSG_RESULT(yes) fi CFLAGS="$CFLAGS_no_exceptions" else AC_MSG_RESULT($USE_OBJC_EXCEPTIONS) fi AC_SUBST(USE_OBJC_EXCEPTIONS) # Check if we need -shared-libgcc linker flags if test x"$USE_OBJC_EXCEPTIONS" = x"yes" -a x"${GCC}" = x"yes"; then if test x"$CLANG_CC" = x"no"; then LDFLAGS="$LDFLAGS -shared-libgcc" fi fi #-------------------------------------------------------------------- # Check if compiler supports -MMD -MP to generate %.d files ... #-------------------------------------------------------------------- AC_MSG_CHECKING(if the compiler supports autodependencies) # What we want to do: set AUTO_DEPENDENCIES to yes if gcc => 3.x. As # an exception, we disabled them on cygwin because the compiler # generates autodependencies files containing filenames such as # G:/GNUstep/mingw/include/stdlib.h which can't really work with GNU # make because of the ':'. AUTO_DEPENDENCIES="" if test "$CYGWIN" = yes; then AC_MSG_RESULT(no: autodependencies do not work on cygwin) elif test ! ${GCC} = "yes" ; then AC_MSG_RESULT(no: it's not gcc) else if test "${gs_cv_gcc_major_version}" -ge "3" >&5 2>&5; then AUTO_DEPENDENCIES=yes AC_MSG_RESULT(yes: gcc version is ${gs_cv_gcc_parsed_version} >= 3.0) else AC_MSG_RESULT(no: gcc version is ${gs_cv_gcc_parsed_version} < 3.0) fi fi AC_SUBST(AUTO_DEPENDENCIES) #-------------------------------------------------------------------- # Check if compiler supports precompiled headers #-------------------------------------------------------------------- AC_MSG_CHECKING(if the compiler supports precompiled headers) # We used to check the compiler version here; this is not that # reliable because precompiled headers were added in 3.4, then they # were broken in 4.1, then fixed again. # So we prefer to actually try them out! ;-) # (Unfortunately, even that is not enough since we have reports of # 4.1.1 GCC prereleases that pass this simple test, but where any # serious usage of precompiled headers (ie, including # Foundation/Foundation.h and AppKit/AppKit.h) doesn't work. So in # addition to doing this test, we also forcefully disable precompiled # headers in 4.1) # What we want to do: set GCC_WITH_PRECOMPILED_HEADERS to yes if gcc # can compile and use a precompiled header. GCC_WITH_PRECOMPILED_HEADERS="no" # First, a preliminary test. If this is not gcc, precompiled headers # are not supported. if test ! "${GCC}" = "yes" ; then AC_MSG_RESULT(no: it's not gcc) else if test "${gs_cv_gcc_parsed_version}" = "4.1" >&5 2>&5; then AC_MSG_RESULT(no: gcc 4.1 is often shipped with broken precompiled headers) else gs_precomp_test_builddir="`pwd`" gs_precomp_test_results=`(CC="$CC"; export CC; CFLAGS="$CFLAGS"; export CFLAGS; CPPLAGS="$CPPFLAGS"; export CPPFLAGS; LDFLAGS="$LDFLAGS"; export LDFLAGS; LIBS="$LIBS"; export LIBS; cd "$srcdir/config-precomp-test/"; ./run-test.sh "$gs_precomp_test_builddir"; echo $?) 2>&5` if test "$gs_precomp_test_results" = "0"; then GCC_WITH_PRECOMPILED_HEADERS="yes" AC_MSG_RESULT(yes) else # Please check the config-precomp-test.log log file for more info AC_MSG_RESULT(no: old or buggy gcc) fi fi fi # Important - if you think there is a problem with precompiled # headers, try adding ADDITIONAL_OBJC_FLAGS = -Winvalid-pch to your # GNUmakefile to check that they are used. AC_SUBST(GCC_WITH_PRECOMPILED_HEADERS) # Restore LIBS and CFLAGS - we used to compile C code after this # point. Useful to keep this in case we need to compile C code again. LIBS="$saved_LIBS" CFLAGS="$saved_CFLAGS" #-------------------------------------------------------------------- # Check if compiler requires -shared flag on Solaris ... #-------------------------------------------------------------------- AC_MSG_CHECKING(if the compiler requires -shared flag to build for Solaris) # set SOLARIS_SHARED to yes if gcc => 4.x SOLARIS_SHARED="" if test ! ${GCC} = "yes" ; then AC_MSG_RESULT(no: it's not gcc) else if test "${gs_cv_gcc_major_version}" -ge "4" >&5 2>&5; then if test "$host_os" = "solaris2.7" -o $"host_os" = "solaris2.6"; then AC_MSG_RESULT(no: solaris 2.6 or 2.7) else SOLARIS_SHARED=yes AC_MSG_RESULT(yes: gcc version is ${gs_cv_gcc_parsed_version} >= 4.0) fi else AC_MSG_RESULT(no: gcc version is ${gs_cv_gcc_parsed_version} < 4.0) fi fi AC_SUBST(SOLARIS_SHARED) AC_SUBST(INCLUDES) AC_SUBST(LIB_DIR) AC_SUBST(OBJCFLAGS) #-------------------------------------------------------------------- # Check if we need to enable debug=yes builds by default #-------------------------------------------------------------------- AC_MSG_CHECKING(if we should enable 'make debug=yes' by default) AC_ARG_ENABLE(debug-by-default, [ --enable-debug-by-default Enable building with 'make debug=yes' by default. When you use gnustep-make to build software, you have a choice of using debug=yes or debug=no. The debug=no will use the default compiler flags determined when gnustep-make was configured (usually -g -O2), while debug=yes will remove the optimization flags and add a number of debugging compiler flags. If you do not specify the --enable-debug-by-default option, gnustep-make will default to building with debug=no when nothing is specified. If you specify the --enable-debug-by-default option, gnustep-make will default to building with debug=yes instead, which can be handy if you always want to compile software with debug=yes and want to avoid having to type debug=yes each time you compile (an alternative is to define the variable debug=yes in your shell). If you are unsure, you should stick with the default and ignore this option. ], ac_cv_debug_by_default=$enableval, ac_cv_debug_by_default="undefined") if test "$ac_cv_debug_by_default" = "yes"; then GNUSTEP_DEFAULT_DEBUG=yes; AC_MSG_RESULT(yes); else GNUSTEP_DEFAULT_DEBUG=no; AC_MSG_RESULT(no); fi AC_SUBST(GNUSTEP_DEFAULT_DEBUG) #-------------------------------------------------------------------- # Check for GNU make #-------------------------------------------------------------------- # Search for GNU make. We try 'gmake' then 'gnumake' then 'make'. If # we can't find it, we set it to 'make', even if that will fail later # on. AC_CHECK_PROGS(GNUMAKE, [gmake gnumake make], make) # Used by gnustep-config to launch gnustep-make to compute # compilation/link flags AC_SUBST(GNUMAKE) # If GNU make supports $(info ...), gnustep-make can use it to print # out a help message at the beginning of each compilation. This # feature was introduced in GNU make 3.81, so we check GNU make's # version number (alternatively, we could try executing a makefile # that contains an info command). AC_MSG_CHECKING(for the GNU Make version) # To get the make version, take the output of 'make --version', read # only the first line (that we expect to be something like "GNU Make # 3.81"), and ignore everything up to the first numeric character. gs_cv_make_version=`($GNUMAKE --version | head -1 | sed -e 's/^[[^0-9]]*//') 2>&5` # Now check for the major/minor version numbers. gs_cv_make_major_version=`(echo ${gs_cv_make_version} | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]]\([[0-9]][[0-9]]*\).*/\1/') 2>&5` gs_cv_make_minor_version=`(echo ${gs_cv_make_version} | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]]\([[0-9]][[0-9]]*\).*/\2/') 2>&5` AC_MSG_RESULT(version: ${gs_cv_make_major_version}.${gs_cv_make_minor_version}) #-------------------------------------------------------------------- # Check for GNU Make >= 3.79 #-------------------------------------------------------------------- # We want to emit a warning if they are using GNU make < 3.79 as it's # no longer supported. We let them install everything at their own # risk though. AC_MSG_CHECKING(for GNU Make >= 3.79) SUPPORTED_MAKE=no if test "${gs_cv_make_major_version}" = "3" >&5 2>&5; then if test "${gs_cv_make_minor_version}" -ge "79" >&5 2>&5; then SUPPORTED_MAKE=yes fi fi if test "${gs_cv_make_major_version}" -ge "4" >&5 2>&5; then SUPPORTED_MAKE=yes fi if test "${SUPPORTED_MAKE}" = "yes" >&5 2>&5; then AC_MSG_RESULT(yes) else # We do not abort mostly because the checks for GNU make might have # gone wrong and returned the wrong version, and because GNU make < # 3.79.1 probably works anyway (with the exception of parallel # building). AC_MSG_RESULT(no) AC_MSG_WARN(GNU Make >= 3.79.1 is recommended! Older versions are no longer supported. Continue at your own risk.) fi #-------------------------------------------------------------------- # Check for $(info ...) function in GNU make #-------------------------------------------------------------------- AC_MSG_CHECKING(if GNU Make has the info function) # Things may go wrong (eg, make couldn't be found in one of the # previous steps), so by default we assume 'no' here. If things go # wrong, you'll lost some non-essential features. MAKE_WITH_INFO_FUNCTION=no if test "${gs_cv_make_major_version}" = "3" >&5 2>&5; then if test "${gs_cv_make_minor_version}" -ge "81" >&5 2>&5; then MAKE_WITH_INFO_FUNCTION=yes fi fi if test "${gs_cv_make_major_version}" -ge "4" >&5 2>&5; then MAKE_WITH_INFO_FUNCTION=yes fi AC_MSG_RESULT(${MAKE_WITH_INFO_FUNCTION}) AC_SUBST(MAKE_WITH_INFO_FUNCTION) #-------------------------------------------------------------------- # Shall we strip makefiles upon installation ? #-------------------------------------------------------------------- # Stripping makefiles removes comments and newlines from them. The # resulting stripped makefiles execute around 5% faster on average. # Too little for it to be worth for the common user who's more # interested in the comments :-) so it's disabled by default. AC_MSG_CHECKING(if we should strip makefiles after installation) AC_ARG_ENABLE(strip-makefiles, [ --enable-strip-makefiles Enable stripping system makefiles after installation. This will speed up gnustep-make by about 5% (average), but will remove all comments from the installed makefiles. Those comments are quite useful if you are trying to find some information on how gnustep-make works (eg, if you're trying to locate a bug), and the performance gain is quite small, so you probably don't want to strip makefiles. ], ac_cv_strip_makefiles=$enableval, ac_cv_strip_makefiles="undefined") if test "$ac_cv_strip_makefiles" = "yes"; then GNUSTEP_STRIP_MAKEFILES=strip; AC_MSG_RESULT(yes); else GNUSTEP_STRIP_MAKEFILES=; AC_MSG_RESULT(no); fi AC_SUBST(GNUSTEP_STRIP_MAKEFILES) #------------------------------------------------- # Determine if we should enable parallel building #------------------------------------------------- AC_MSG_CHECKING([if we should enable support for parallel building]) AC_ARG_ENABLE(parallel-building, [ --disable-parallel-building Disable support for parallel building. Normally this is enabled and you can request parallel building of a project by using the '-j N' flag for make (where N is a number, eg, '-j 4'). If you know that you are never going to be using parallel building, you can disable parallel building here - which will ignore all '-j N' flags, and also avoid executing a 'compile' submake invocation - resulting in slightly faster non-parallel builds, but making it impossible to do parallel builds. ], ac_cv_parallel_building=$enableval, ac_cv_parallel_building="yes") if test "$ac_cv_parallel_building" = "yes"; then AC_MSG_RESULT(yes); GNUSTEP_MAKE_PARALLEL_BUILDING="yes" else AC_MSG_RESULT(no); GNUSTEP_MAKE_PARALLEL_BUILDING="no" fi AC_SUBST(GNUSTEP_MAKE_PARALLEL_BUILDING) #-------------------------------------------------------------------- # Record the version #-------------------------------------------------------------------- AC_MSG_CHECKING(for the version of gnustep-make we are compiling) . "$srcdir/Version" AC_MSG_RESULT($GNUSTEP_MAKE_VERSION) AC_SUBST(GNUSTEP_MAKE_VERSION) AC_SUBST(GNUSTEP_MAKE_MAJOR_VERSION) AC_SUBST(GNUSTEP_MAKE_MINOR_VERSION) AC_SUBST(GNUSTEP_MAKE_SUBMINOR_VERSION) #------------------------------------------------------------------- # Record the 'clean' target_os, target_cpu and target_vendor #------------------------------------------------------------------- # This is just for efficiency, so that core/make/GNUmakefile does not # have to compute clean_target_os from target_os (and similar) by # running shell scripts each time you 'make' something inside # gnustep-make. We basically compute them once now, and cache them # forever. It is also used by GNUstep.sh when multi-platform is # disabled. clean_target_os=`$srcdir/clean_os.sh $target_os` clean_target_cpu=`$srcdir/clean_cpu.sh $target_cpu` clean_target_vendor=`$srcdir/clean_cpu.sh $target_vendor` AC_SUBST(clean_target_os) AC_SUBST(clean_target_cpu) AC_SUBST(clean_target_vendor) AC_SUBST(target) #-------------------------------------------------------------------- # For documentation #-------------------------------------------------------------------- AC_CHECK_PROGS(LATEX2HTML, latex2html) #-------------------------------------------------------------------- # For test framework #-------------------------------------------------------------------- AC_PATH_PROG(SHELLPROG,bash,/bin/sh) AC_PATH_PROG(TESTPROG, test) #-------------------------------------------------------------------- # Produce the output files #-------------------------------------------------------------------- AC_CONFIG_FILES([config-noarch.make config.make openapp opentool executable.template GNUmakefile GNUstep.conf GNUstep-strict-v2.conf GNUstep.sh GNUstep.csh fixpath.sh gnustep-make.spec gnustep-config TestFramework/gnustep-tests filesystem.make filesystem.sh filesystem.csh gnustep-make-ld.so.conf]) AC_CONFIG_FILES([runtime/$OBJC_RUNTIME_LIB.make:config.make.in]) AC_CONFIG_COMMANDS([default], [[chmod a+x openapp opentool fixpath.sh executable.template]], [[]]) AC_OUTPUT ������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/cpu.sh���������������������������������������������������������������������������0000775�0001750�0001750�00000001432�10711636501�015062� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # # cpu.sh # # Print out the CPU from a canonical name. # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. echo $1 | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/' ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/ChangeLog������������������������������������������������������������������������0000664�0001750�0001750�00001030256�13074115002�015506� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������2017-04-14 Richard Frith-Macdonald <rfm@gnu.org> * Version: 2.7.0 release * Documentation/news.texi: 2.7.0 release * Documentation/releasenotes.texi: 2.7.0 release * ANNOUNCE: * INSTALL: * NEWS: * README: * RELEASENOTES: Regenerate documentation 2017-04-07 Richard Frith-Macdonald <rfm@gnu.org> * common.make: correct earlier change ... error pointed out by Galen Rhodes as bug #50751 2016-11-22 Doug Simons <doug.simons@testplant.com> * target.make: Fix EXTRACT_CLASS_NAMES_COMMAND for Mingw64. 2016-08-19 Giah de Barag <gdb@crelg.com> * common.make: filter out optimisation flags when in debug mode. 2016-07-10 13:33-EDT Gregory John Casamento <greg.casamento@gmail.com> * GNUmakefile.in: add pkgconfig.make to INSTANCE_SHARED_MAKE_FILES variable so it is copied properly. 2016-07-08 Niels Grewe <niels.grewe@halbordnung.de> * GNUstep.conf.in * GNUstep.csh.in * GNUstep.sh.in * Instance/Shared/pkgconfig.make * Instance/framework.make * Instance/library.make * config-noarch.make.in * configure * configure.ac * messages.make Preliminary support for pkg-config files. The GNUstep.sh scripts set the PKG_CONFIG_PATH and $(INSTANCE)_PKGCONFIG_FILES can be used to specify the files to install. 2016-06-29 Niels Grewe <niels.grewe@halbordnung.de> * Instance/framework.make: Fix installation of Resources symlinks. 2016-06-25 Richard Frith-Macdonald <rfm@gnu.org> * Documentation/releasenotes.texi: * GNUmakefile.in: * GNUstep.csh.in: * GNUstep.sh.in: * Master/rules.make: * common.make: * config-noarch.make.in: * gnustep-config.in: * openapp.in: * opentool.in: * rules.make: When building non-flattened, the subdirectory name for libraries/binaries is changed for Debian compatibility (and simplicity) to use a directory whose name is of the form architecture/library-combo rather than nested directories of the form cpu/os-abi/library-combo. The architecture name format is a sanitised triplet cpu-os-abi (where previously we had cpu/os-abi). When building non-flattened, header files are now installed in an architecture and library-combo dependent subdirectory in the same way that binary libraries are installed. This removes an inconsistency and makes sense with Debian multiarch support which puts headers in an architecture specific subdirectory. These changes are the first step in making GNUstep work seamlessly with Debian multiarch. To use them you will need to rebuild your entire gnustep installation, and in particular build a version of gnustep-base which has correspoinding changes to know where to look up resources at runtime. However, the changes should have no effect on a flattened installation (currently the default). 2016-05-19 Seong Gu Lee <sgleehd@gmail.com> * Instance/application.make: * config.guess: * config.sub: * jni.make: * rules.make: * target.make: mingw64 tweaks 2016-05-13 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/Summary.sh: * TestFramework/gnustep-tests.in: Avoid some pointless warnings when cleaning 2016-05-13 Yavor Doganov <yavor@gnu.org> * Instance/framework.make: Forgotten patch to allow multiple versions of a framework to be installed. * Documentation/GNUmakefile: * Instance/Documentation/texi.make: Forgotten patch to update for newere makeinfo which produces html. 2016-05-13 Richard Frith-Macdonald <rfm@gnu.org> * GNUmakefile.in: * TestFramework/gnustep-tests.in: * config.make.in: * common.make: * library-combo.make: * configure.ac: * configure: Minor tweaks... use ARC by default if ng runtime is specified 2016-03-25 Richard Frith-Macdonald <rfm@gnu.org> * common.make: * config.make.in: * configure.ac: * library-combo.make: * Documentation/library-combo.7: * TestFramework/Testing.h: * configure: Remove garbage collection support 2016-03-04 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: Enable strict v2 mode by default * configure: regenerate * README.Packaging: Warn about updating ancient makefiles * Documentation/library-combo.7: Talk about ng runtime * Version: * Documentation/news.texi: * Documentation/releasenotes.texi: Update prior to new release 2016-03-02 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: Improve selection of clang when 'ng' runtime library is selected. * configure: Regenerate. * library-combo.make: Add support for ARC with the 'ng' runtime setting. Enabled by defining GS_WITH_ARC=1 at the start of the GNUmakefile or in the environment or in the 'make' arguments. 2016-03-02 Niels Grewe <niels.grewe@halbordnung.de> * Master/documentation.make: Support skipping the documentation build if documentation=no is supplied * Documentation/gnustep-make.texi: Document the new documentation=no feature (and messages=yes, which as also missing). 2015-12-11 23:34-EST Gregory John Casamento <greg.casamento@gmail.com> * common.make: Mute error when trying to parse redhat-version file. 2015-11-26 Ivan Vucica <ivan@vucica.net> * ChangeLog: Fixed dates on some previous entries. * bake_debian_files: Fixed a typo: DEB_PRIORTY -> DEB_PRIORITY. 2015-10-26 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests.in: Exit with status 1 if there are any test failures, 0 otherwise. 2015-10-24 Richard Frith-Macdonald <rfm@gnu.org> * Instance/framework.make: * Instance/library.make: * TestFramework/gnustep-tests.in: Improve automated library and framework testcase handling, with code to tell the testcases where to find the library/framework headers and what to link with in order to do the tests. 2015-10-21 Richard Frith-Macdonald <rfm@gnu.org> * Instance/framework.make: Remove unused methods (-frameworkEnv and -frameworkPath) from the dummy class. 2015-10-20 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests.in: Deprecate Env.sh ... use TestInfo to set test ewnvironment * Instance/framework.make: Add rule to invoke gnustep-tests * Instance/library.make: Add rule to invoke gnustep-tests * Master/clibrary.make: pass 'make check' to instance * Master/framework.make: pass 'make check' to instance * Master/library.make: pass 'make check' to instance * Master/test-library.make: pass 'make check' to instance Simple minded initial attempt to make unit testing for libraries and frameworks easier by having a built-in rule to execute test files in a subdirectory specified using xxx_TEST_DIR 2015-09-23 Germán Arias <germanandre@gmx.es> * Documentation/README.MinGW: Fix errors in services path. 2015-08-17 Wolfgang Lux <wolfgang.lux@gmail.com> * configure.ac: Fix the previous change, which had broken the tests for Objective C++, the fragile API and native exception support, by using the correct autoconf macros. * configure: Regenerated. 2015-08-16 Richard Frith-Macdonald <rfm@gnu.org> * library-combo.make: Use David's suggested runtime flag for the next generation (ng) runtime combo. * configure.ac: Check for compiler blocks support for ng combo. Fix some program source quoting for newer autoconf 2015-08-08 Germán Arias <germanandre@gmx.es> * Documentation/README.MinGW: Add instructions to install aspell and to make a standalone directory to distribute apps. 2015-06-25 Niels Grewe <niels.grewe@halbordnung.de> * Instance/Shared/java.make: Fix escaping of inner classes when building jar files. 2015-06-09 Riccardo Mottola <rm@gnu.org> * config.make.in * configure.ac * target.make Check for nm and gnm as gnu nm, use a $(NM) variable instead of hard-coding the binary name of nm * configure Regerenated 2015-05-15 Richard Frith-Macdonald <rfm@gnu.org> * Documentation/news.texi: * Documentation/releasenotes.texi: * ANNOUNCE: * INSTALL: * NEWS: * RELEASENOTES: * Version: 2.6.7 bugfix/improvement release 2015-03-23 Richard Frith-Macdonald <rfm@gnu.org> * Instance/resource-set.make: Fix bug which could cause a resource dictionary to be installed inside an existing copy of the same resource dictionary. 2015-03-04 Germán Arias <germanandre@gmx.es> * Documentation/README.MinGW: Fix typos. 2015-02-21 Germán Arias <germanandre@gmx.es> * Documentation/README.MinGW: Add instructions to install cairo backend. 2015-02-19 Germán Arias <germanandre@gmx.es> * Documentation/README.MinGW: Update instructions for latest MinGW. 2015-01-19 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests.in: Report abandoned files as failed. * TestFramework/Testing.h: Add timing of the duration of sets and a hook to perform additional reporting etc on set end. 2015-01-15 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests.in: Check status of Start.sh script so we refrain from attempting tests in a directory whose startup script has failed. 2014-12-21: Niels Grewe <niels.grewe@halbordnung.de> * rules.make * Instance/Shared/java.make: Add as_jar option to install the jar file instead of the expanded class hierarchy. 2014-12-21: Niels Grewe <niels.grewe@halbordnung.de> * Instance/Shared/java.make * Instance/java.make * Instance/rules.make * Master/java.make * Master/rules.make * common.make * messages.make: Add a `jar' target to the java project type that allows jars to be built from all classes in the project. * Documentation/gnustep-make.texi: Document Java project variables. 2014-06-29 Nicolas Boulenguez <nicolas@debian.org> (tiny change) * common.make (INTERNAL_CFLAGS): Do not ignore user-specified CFLAGS. 2014-06-29 Yavor Doganov <yavor@gnu.org> * Documentation/GNUstep.7: * Documentation/debugapp.1: Typo fix. * Documentation/gnustep-tests.1: New. * GNUmakefile.in (install, uninstall): Handle gnustep-tests.1. 2014-06-07 Ivan Vucica <ivan@vucica.net> * Master/deb.make: Now adding gnustep-make dependency to the DEB_BUILD_DEPENDS only when creating _debenv file. 2014-05-11 Ivan Vucica <ivan@vucica.net> * GNUmakefile.in: Date-time and svn-revision suffix are now using the tilde character to ensure that the 'actual' commit and 'actual' tagged release are treated as being newer by the Debian packaging. Also stopped using periods in date-time. debfiles target will no longer be automatically run, allowing for build scripts to do some customization of debfiles inbetween, or to permit the packager maintain the debfiles separately. * Master/deb.make: Slightly cleaner build dependency line for gnustep-make. The version of gnustep-make we build-depend on is now read using dpkg -s. * Master/source-distribution.make: Date-time and svn-revision suffix are now using the tilde character to ensure that the 'actual' commit and 'actual' tagged release are treated as being newer by the Debian packaging. Also stopped using periods in date-time. 2014-05-06 Ivan Vucica <ivan@vucica.net> * bake_debian_files.sh: If DEB_DEPENDS is non-empty, prepend a comma. 2014-05-06 Ivan Vucica <ivan@vucica.net> * GNUmakefile.in: Tarball may now have the SVN revision and date appended to its version. This is done for svn-snapshot and svn-export targets to ensure we have a 'unique' .orig.tar.gz for uploading to the Launchpad PPA. The full name of the tarball will be saved in a text file usable by scripts. Tarball also has to be explicitly and separately produced and optionally specifying DEB_TARBALL_VERSION when building a Debian package. Debian control files now can (and need to) be separately built using the target debfiles. * Master/source-distribution.make: Similarly to how gnustep-make can export working copy as a tarball, the target svn-export has been added to other GNUmakefiles. Introduced TARBALL_VERSION as an overridable version string in the tarball name. Environment variables TARBALL_VERSION_INCLUDE_SVN_REVISION and TARBALL_VERSION_INCLUDE_DATE_TIME now allow expanding the tarball version with the svn revision and date+time. Instead of EXPORT_SVN_NAME, now specifying entire EXPORT_SVN_URL so that svn-export can specify '.'. * Master/deb.make: Switched to use of TARBALL_VERSION as the definitive version string in tarball name. Added debclean target. User now has to explicitly make a choice how the dist tarball will be produced. Depending on the method, tarball may be placed in the current or parent directory, so we detect that (and prefer the current directory). * bake_debian_files.sh: Now defaulting to target_arch=any so that the package gets built on all platforms when uploaded on Launchpad, instead of detecting an arch from gnustep-make and burning that arch into the source package. Added support for TARBALL_VERSION. Fixed a 'command not found' error. Added support for projects without autotools. 2014-05-05 Ivan Vucica <ivan@vucica.net> * GNUmakefile.in: Separately building source and binary package, optionally signing. Support for gnustep-make-ld.so.conf. * Master/deb.make: Tweaked procedure for building Debian packages to avoid cleaning when attempting to get 'make' variables that can be passed on to bake_debian_files.sh as environment variables. Signing packages is now optional, and source and binary packages are built separately. * bake_debian.files.sh: Improved .spec parsing. Introduced dependency on CDBS (which simplifies customizing of debian/rules) while automating some edge cases. Handling of DEB_VERSION_SUFFIX. * configure, configure.ac: Support for --enable-install-ld-so-conf. * gnustep-make-ld.so.conf.in: Template for the dynamic linker configuration file ld.so.conf/gnustep-make.conf. 2014-04-07 Ivan Vucica <ivan@vucica.net> * Master/deb.make, bake_debian_files.sh: Rewrite of .deb-building system that will produce both a source package and a binary package. Work in progress; currently only gnustep-make itself builds correctly. * GNUmakefile.in: Added the svn-export target which uses local files to do the equivalent of 'make dist'. Switched to new way of building .deb using bake_debian_files.sh. * deb-equivs-control.template: No longer necessary; removed. 2014-03-27 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/ObjectTesting.h: Add PASS_MATCH macro for matching against a regular expresssion. 2014-01-16 Richard Frith-Macdonald <rfm@gnu.org> * GNUmakefile.in: Fix a couple more hardcoded 'make' calls. * Instance/resource-set.make: * Instance/Shared/bundle.make: Try to get xxx_RESOURCE_DIR woreking consistently for all resources. 2014-01-12 Sebastian Reitenbach <sebastia@l00-bugdead-prods.de> * config.make.in, GNUmakefile.in: Do not hardcode "make". It already gets detected via configure, so use the found name, especially on *BSD systems where its called gmake 2014-01-10 Richard Frith-Macdonald <rfm@gnu.org> * GNUmakefile.in: Implement Sebastian's suggestions for make targets to build/install documentation with or without gnustep-make as a convenience for packagers. * Documentation/GNUmakefile: Use uninstalled gnustep-make from enclosing directory if available ... based on idea by Niels and code/comments by Markus. 2014-01-06 Richard Frith-Macdonald <rfm@gnu.org> * Instance/Documentation/texi.make: Revert change from 2009-09-19 since texi2html now seems to be behaving as expected. However, attempt to move any html files from the subdirectory in case we are using a version which still puts them there. 2014-01-06 Richard Frith-Macdonald <rfm@gnu.org> * INSTALL: * Documentation/GNUmakefile: Make it clearer (ie very explicit) that you need to install gnustep-make in order to install documentation. 2013-12-25 Fred Kiefer <FredKiefer@gmx.de> * Instance/rules.make: Add detection for different forms of the Info.plist. * Instance/application.make, * Instance/bundle.make, * Instance/framework.make, * Instance/gswapp.make, * Instance/palette.make, * Instance/service.make: Use GNUSTEP_PLIST_DEPEND directly. 2013-12-25 Fred Kiefer <FredKiefer@gmx.de> * config.make.in: Use the correct CXX compiler. Fixes bug #36722. Patch by Johannes Lundberg <johannes@brilliantservice.co.jp>. 2013-12-24 Richard Frith-Macdonald <rfm@gnu.org> * Version: * Documentation/news.texi: * Documentation/releasenotes.texi: Make minor bugfix release ... Version 2.6.6 Update release notes/documentation 2013-12-12 Sebastian Reitenbach <sebastia@l00-bugdead-prods.de> * Master/tool.make: on clean only delete the subdirectory that gets created when calling make. 2013-12-07 Wolfgang Lux <wolfgang.lux@gmail.com> * target.make: Add -keep_private_externs to linker flags on OS X when merging the object files of a subproject for compatibility with other platforms. 2013-12-06 Adam Fedor <fedor@gnu.org> * target.make: Add no-omit-framepointer on mingw32 2013-09-20 Ivan Vucica <ivan@vucica.net> * Master/deb.make: File enumeration now uses 'find'. Fixed problem where files outside 'Local' were being accidentally dropped from the package. Symlinks are now also included in the installed file list. * GNUmakefile.in: Symlinks are now also included in the installed file list. 2013-09-20 Ivan Vucica <ivan@vucica.net> * deb-equivs-control.template: Added forgotten file. 2013-09-20 Ivan Vucica <ivan@vucica.net> * GNUmakefile.in: Added deb.make. Also added new target, 'deb' which (using 'equivs-build') produces a Debian package for gnustep-make. * Master/deb.make: This file provides new targets 'deb' and 'debfile'. To produce a .deb package, you will need to install package named 'equivs'. At the moment, manual patching of /usr/bin/equivs-build is also necessary; please review comments inside Master/deb.make for further information. 2013-07-27 Wolfgang Lux <wolfgang.lux@gmail.com> * configure.ac: Really fix the test whether the compiler uses the non-fragile ABI by default. It should now work on all platforms with either gcc or clang. * configure: Regenerated. 2013-07-27 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: Revert last change to get nonfragile abi detection working on gnu/linux and freebsd again (not tested on other platforms). * configure: Regenerated. 2013-07-26 Wolfgang Lux <wolfgang.lux@gmail.com> * configure.ac: Rewrite test whether the compiler supports the non-fragile ABI once more, so that it now reports the correct result. * configure: Regenerated. 2013-07-26 Richard Frith-Macdonald <rfm@gnu.org> * Version: * Documentation/news.texi: * Documentation/releasenotes.texi: Make minor bugfix release ... Version 2.6.5 Update release notes/documentation 2013-07-14 Wolfgang Lux <wolfgang.lux@gmail.com> * configure.ac: Rewrite test whether the compiler supports the non-fragile ABI with portable code that does not rely on a BSD compatible echo command. * configure: Regenerated. 2013-07-04 Richard Frith-Macdonald <rfm@gnu.org> * rules.make: Fix order of includes directories ... SYSTEM_INCLUDES should come last so that conflices between files of the same name in different directories are resolved in the correct/expected order. 2013-06-17 Stefan Bidi <stefanbidi@gmail.com> * TestFramework/gnustep-tests.in: add support for .c and .cc files 2012-04-08 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/ObjectTesting.h: Fix error performing equality test in copying protocol test macro. 2012-03-28 Richard Frith-Macdonald <rfm@gnu.org> Make release * Version 2.6.4 Update release notes/documentation 2012-03-25 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/Testing.h: Use -isEqualForTestcase: for PASS_EQUAL macro equality testing if the expected value responds to it. Add informal protocol declaring -isEqualForTestcase: * TestFramework/ObjectTesting.h: Convert protocol checking functions to macros (so error messages get file/line number information) and get copy and coding before/after equality checks to use the PASS_EQUAL macro so that we can easily make customised tests by implementing -isEqualForTestcase: for the class being tested. 2012-03-16 Emmanuel Maillard <mailing-lists@e-maillard.com> * target.make: Add target for android 2012-03-08 Jean-Charles BERTIN <jc.bertin@axinoe.com> * TestFramework/gnustep-tests.in: Fix typo 2012-03-01 Richard Frith-Macdonald <rfm@gnu.org> * common.make: Remove -shared-libgcc linker flag * configure.ac: Add check for clang and add -shared-libgcc to linker flags if we aren't using it (using gcc) but are using exceptions. Tidy a little. Patch based on contribtion by Jean-Charles Bertin. 2012-03-01 Richard Frith-Macdonald <rfm@gnu.org> * Version ... bump subminor number in preparation for next release. 2012-03-01 Richard Frith-Macdonald <rfm@gnu.org> Make release * Version 2.6.3 * Update release notes 2013-02-20 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/framework.make: Removed trailing '/' after $(GNUSTEP_TARGET_LDIR) in a couple of cases, to fix building on non-flattened layout. 2012-01-31 Richard Frith-Macdonald <rfm@gnu.org> * rules.make: A couple more printout targets for managing installation of libobjc2 if gnustep-config is not available (eg not in PATH) but GNUSTEP_MAKEFILES is defined. 2012-09-24 Niels Grewe <niels.grewe@halbordnung.de> * configure.ac: Improve last change based on suggestions by David Chisnall. * configure: Regenerate. 2012-09-24 Niels Grewe <niels.grewe@halbordnung.de> * configure.ac: Also try to detect whether the nonfragile ABI is the compiler default. * configure: Regenerate. 2012-09-01 Niels Grewe <niels.grewe@halbordnung.de> * target.make: Define QNX target. 2012-08-15 Stansilav Yaglo <stanislav-yaglo@yandex.ru> * Instance/framework.make: Patch #7822. Make dummy framework classes subclasses of NSObject. 2012-07-05 Quentin Mathe <quentin.mathe@gmail.com> * configure.ac: Fixed ObjC non fragile ABI check to restore CFLAGS correctly, --enable-objc-nonfragile-abi was breaking native exceptions detection. Based on a patch by Christopher Armstrong, see bug report #36186 * configure: Regenerated. 2012-02-21 Nicola Pero <nicola.pero@meta-innovation.com> * GNUstep.sh.in: Use "setopt shwordsplit" instead of "set -y" to get zsh to emulate sh's traditional word split behaviour. Suggestion by Alex Merry. 2012-02-21 Nicola Pero <nicola.pero@meta-innovation.com> * FilesystemLayouts/README: Updated for the fact that 'fhs' is now the default filesystem layout. Issue pointed out by Fred Kiefer <FredKiefer@gmx.de>. 2012-02-21 Graham Lee <iamleeg@gmail.com> * library-combo.make (OBJC_LIBS): Always set from OBJC_LIB_FLAG when using the 'apple' runtime. 2012-02-17 Adam Fedor <fedor@gnu.org> * Master/nsis.make: Add support for library and framework packages 2012-02-03 Adam Fedor <fedor@gnu.org> * Version 2.6.2 * Update release notes 2012-01-31 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/Testing.h: Improve handling of equality testing report when expression evaluates to nil. 2011-11-21 Wolfgang Lux <wolfgang.lux@gmail.com> * target.make: Don't use -undefined dynamic_lookup when linking executables on OS X. This fixes some false positive results for library function tests in configure and also prevents programs crashing at load time due to unresolved references. 2011-10-19 Richard Frith-Macdonald <rfm@gnu.org> * target.make: The -pthread compiler flag is broken on windows ... don't use it there. 2011-10-17 Richard Frith-Macdonald <rfm@gnu.org> * FilesystemLayouts/standalone: first draft at a layout to put everything in one directory for easy deployment of relocatable, standalone packages. Use --with-layout=standalone 2011-10-15 Richard Frith-Macdonald <rfm@gnu.org> * target.make: Use -pthread for compilation on all platforms. While it's not always needed, for the gcc-4.? series of compilers it should always work to turn on preprocessor defines and any other options needed for threaded code (and we have to assume all code we build may be used in a threaded environment). This gives gcc (or clang, which copies gcc) the responsibility for doing this work. 2011-09-29 Adam Fedor <fedor@gnu.org> * Instance/Documentation/texi.make: Install html chapters as well 2011-06-29 David Chisnall <theraven@gna.org> * Instance/framework.make (DUMMY_FRAMEWORK_FILE): Make -make not generate a file that contains an implicit cast that is not permitted by ARC. 2011-06-27 Nicola Pero <nicola.pero@meta-innovation.com> Fix for a race condition during parallel builds of tools with resources. * Master/tool.make (MAYBE_GNUSTEP_BUILD_DIR_RESOURCES): New. ($(GNUSTEP_BUILD_DIR)/Resources): New rule. (internal-all): Depend on MAYBE_GNUSTEP_BUILD_DIR_RESOURCES. 2011-06-26 Wolfgang Lux <wolfgang.lux@gmail.com> * Instance/framework.make (FRAMEWORK_LIBRARY_FILE): Get names of versioned dynamic libraries in frameworks right under Darwin/OS X. 2011-06-07 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/news.texi (Changes in version @samp{2.6.0}): Fixed typo. 2011-06-04 Adam Fedor <fedor@gnu.org> * Version 2.6.1 2011-05-03 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Rewritten test for clang when determining if we need to use -r or -Wl,-r to do partial linking. * configure: Regenerated. 2011-05-03 Wolfgang Lux <wolfgang.lux@gmail.com> * GNUstep.sh.in: * GNUstep.csh.in: Fix definition of CLASSPATH, which was constructed backward. 2011-04-30 Wolfgang Lux <wolfgang.lux@gmail.com> * Instance/library.make: * Instance/framework.make: Change naming convention for versioned dynamic library files on Darwin/OS X to match the OS's convention that the version number precedes the .dylib suffix. 2011-04-30 Wolfgang Lux <wolfgang.lux@gmail.com> * configure.ac: * config.make.in: * target.make: Use configure time check for Objective-C runtime header directory workaround on Darwin/OS X. * configure: Regenerated. 2011-04-14 Adam Fedor <fedor@gnu.org> * Version 2.6.0 2011-04-13 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/releasenotes.texi: Updated. * RELEASENOTES: Regenerated. 2011-04-12 Wolfgang Lux <wolfgang.lux@gmail.com> * target.make: Add workaround to pick up the right Objective-C runtime headers when compiling plain C files with the GNU runtime on Darwin/OS X. 2011-04-11 Nicola Pero <nicola.pero@meta-innovation.com> * objc.make: Print a deprecation warning if this file is used. 2011-04-11 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Set OBJ_MERGE_CMD_FLAG to -r or -Wl,-r depending on whether we're using GCC or clang. * configure: Regenerated. * config.make.in (OBJ_MERGE_CMD_FLAG): New. * target.make: Use OBJ_MERGE_CMD_FLAG instead of -Wl,-r -mno-relax. 2011-04-09 Nicola Pero <nicola.pero@meta-innovation.com> * common.make: Updated comments. 2011-04-09 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Updated comments. * configure: Regenerated using the latest autoconf (2.68). 2011-04-09 Nicola Pero <nicola.pero@meta-innovation.com> * TestFramework/gnustep-tests.in: Do not add MAKEFLAGS on a sub-make command-line. This fixes 'make messages=yes check' on the top-level of gnustep-base, for example. 2011-04-09 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Use AC_COMPILE_IFELSE instead of AC_TRY_IFELSE when checking for compiler support for native Objective-C exceptions. Do not check the type or version of the compiler during the check; only check that it can compile @try/@throw/@catch. Updated check and documentation. * configure: Updated. 2011-04-09 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Use AC_COMPILE_IFELSE instead of AC_TRY_IFELSE when checking for -fobjc-nonfragile-abi support in the compiler. * configure: Updated. 2011-04-09 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Use AC_COMPILE_IFELSE instead of AC_TRY_IFELSE when checking for ObjC++ support in the compiler. * configure: Updated. 2011-04-09 Nicola Pero <nicola.pero@meta-innovation.com> Use 'make check GNUSTEP_TEST_OBJCXX=yes' to enable ObjC++ testcases when using the test framework. * TestFramework/gnustep-tests.in: Recognize GNUSTEP_TEST_OBJCXX, and reworked choosing the ObjC++ compiler accordingly. 2011-04-08 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Set OBJCXX to ${CXX}, not to the literal CXX. * configure: Updated. 2011-04-08 Riccardo Mottola <rm@gnu.org> * target.make: Override gcc's default relax option sent to the linker in case of relative linking -Wl,-r. This should affect only SPARC and a few others uncommon archs and be ignored on the others. 2011-04-08 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/application.make ($(APP_DIR)/Resources/$(GNUSTEP_INSTANCE).desktop): Make the .desktop file executable after installing it (Suggestion from "Philippe Roussel" <p.o.roussel@free.fr>). 2011-04-08 Nicola Pero <nicola.pero@meta-innovation.com> * messages.make (INSIDE_ECHO_MISSING_DOCUMENTATION): Renamed to ALWAYS_INSIDE_ECHO_MISSING_DOCUMENTATION, and moved it outside of the if/else. * Instance/Documentation/texi.make (internal-textdoc-install_): Use ALWAYS_INSIDE_ECHO_MISSING_DOCUMENTATION instead of INSIDE_ECHO_MISSING_DOCUMENTATION. This fixes the rule when messages=yes. Issue reported by Sebastian Reitenbach <buzzdee@web.de>. 2011-04-04 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: * configure: Fake the ObjC++ tests using C++ since only really new versions of autoconf seem to support ObjC++ and we need things to work on older systems. 2011-03-22 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: * gnustep-config.in: * TestFramework/gnustep-tests.in: Change to only require ObjC++ support (for the test framework). Assume C++ is supported even if it actually isn't, since we usually don't care. 2011-03-22 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: work around the fact that AC_PROG_CXX is buggy and reports a compiler even when no working compiler exists. So if a test compilation fails with the compiler it returns, we clear CXX The compilation is done for an Objective-C++ test file since that's what we actually want a C++ compiler for normally. 2011-03-22 Nicola Pero <nicola.pero@meta-innovation.com> * config-noarch.make.in: Updated comment. 2011-03-22 Nicola Pero <nicola.pero@meta-innovation.com> * GNUstep.sh.in: Unset GNUSTEP_LIBRARY_PATHLIST after using it. * GNUstep.csh.in: Likewise. 2011-03-22 Nicola Pero <nicola.pero@meta-innovation.com> * filesystem.make.in (GNUSTEP_USER_DIR_APPS, GNUSTEP_USER_DIR_ADMIN_APPS, GNUSTEP_USER_DIR_WEB_APPS, GNUSTEP_USER_DIR_TOOLS, GNUSTEP_USER_DIR_ADMIN_TOOLS, GNUSTEP_USER_DIR_LIBRARY, GNUSTEP_USER_DIR_HEADERS, GNUSTEP_USER_DIR_LIBRARIES, GNUSTEP_USER_DIR_DOC, GNUSTEP_USER_DIR_DOC_MAN, GNUSTEP_USER_DIR_DOC_INFO): Detect %u, %i and %% and replace them with the user name, the user id or %. * filesystem.sh.in: Same. * filesystem.csh.in: Same. 2011-03-21 Richard Frith-Macdonald <rfm@gnu.org> * gnustep-config.in: allow checking of the CXX variable to see what compiler (if any) was found to support building Objective-C++ code. * TestFramework/gnustep-tests.in: Check the value of CXX to correctly build Objective-C++ tests and to refrain from running Objective-C++ tests on systems which don't have a compiler. 2011-03-18 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/Documentation/texi.make (internal-textdoc-install_): Only install GNUSTEP_INSTANCE if the file exists. If not, print the message " Nothing to install because nothing was built (usually because makeinfo is not available)" instead of aborting. * messages.make (ALWAYS_ECHO_NO_LANGUAGES): New variable. 2011-03-18 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: By default, use --enable-absolute-install-paths on Darwin with gnu-gnu-gnu (Suggestion from Wolfgang Lux <wolfgang.lux@gmail.com>). * configure: Regenerated. 2011-03-16 Nicola Pero <nicola.pero@meta-innovation.com> * config.make.in (CXX): If CXX is specified on the environment or command-line, use the specified value in preference to the one hardcoded into gnustep-make (From a suggestion by Banlu Kemiyatorn <object@gmail.com>). 2011-03-16 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in (rpm): Depend on svn-dist and updated location of .tar.gz file to copy. * gnustep-make.spec.in (CFLAGS): Added --with-layout=gnustep to configure command. (%files): Added /etc/GNUstep/GNUstep.conf. 2011-03-16 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/gnustep-filesystem.texi: Updated documentation for change in default filesystem layout and configuration file location. * Documentation/gnustep-howto.texi: Same change. * Documentation/install.texi: Same change. * Documentation/gnustep-make.texi (GNUSTEP_INSTALLATION_DOMAIN): Updated explanation of this variable. * Documentation/gnustep-userfaq.texi (No Makefile): Updated location of GNUstep.sh. * INSTALL: Regenerated. 2011-03-14 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/gswapp.make (GNUSTEP_GSWAPPS): Variable removed. This was deprecated on 2007-03. * Instance/resource-set.make: Removed support for xxx_RESOURCE_FILES_INSTALL_DIR. This was deprecated on 2007-02. * Documentations/releasenotes.texi: Explain the changes. * RELEASENOTES: Regenerated. 2011-03-14 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Removed obsolete --with-system-root, --with-local-root and --with-network-root options. These have been obsolete since 2007-02. * configure: Regenerated. * Documentations/releasenotes.texi: Explain the change. * RELEASENOTES: Regenerated. 2011-03-14 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac (--with-config-file): If nothing is specified, use /etc/GNUstep/GNUstep.conf if the prefix is /, /usr or /usr/GNUstep, and $prefix/etc/GNUstep/GNUstep.conf in other cases. Updated documentation. * configure: Regenerated. * Documentations/releasenotes.texi: Explain the change in default location of the config file. * RELEASENOTES: Regenerated. 2011-03-14 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in (install): Fixed installing TestFramework/Summary.sh when gnustep-make is configured from outside of the source directory. 2011-03-14 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests.in: Add --developer option * TestFramework/Testing.h: Make --developer turn off hopes * TestFramework/README: Document --developer and GSTESTROOT 2011-03-13 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Always use 'fhs' layout as the default layout except on apple-apple-apple. Removed 'native' layout. Updated comments and documentation. If an invalid --with-layout=xxx option is used, print a list of the available layouts. * configure: Regenerated. * Documentations/releasenotes.texi: Explain the change in default layout. Tidied up existing entry. * RELEASENOTES: Regenerated. 2011-03-13 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests.in: * TestFramework/GNUmakefile.in: * TestFramework/README: Clean and simplify handling of preprocessor flag and include directory setup. Use the standard gnustep-make 'ADDITIONAL' environment variables to set test options while still honoring any values already set inthe environment. 2011-03-07 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/Testing.h: Change macro argument names to make collisions almost impossible. * TestFramework/ObjectTesting.h: * TestFramework/Testing.h: Tweak to avoid some warnings on openbsd. 2011-03-06 Richard Frith-Macdonald <rfm@gnu.org> * gnustep-config.in: * TestFramework/GNUmakefile.in: Add and use --debug-flags optin to gnustep-config ... to get the correct flags to build a file for debugging. 2011-03-01 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests.in: * TestFramework/GNUmakefile.in: * TestFramework/README: Override GNUSTEP_OBJ_DIR so that executables are always stored in ./obj even if we are building non-flattened. There's no point using a non-flattened layout inside the test framework as we need to clean and re-build for each test run anyway. 2011-03-01 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests.in: Speed up --clean option 2011-02-28 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests.in: * TestFramework/GNUmakefile.in: Fix error testing single file ... was trying subdirectories too. 2011-02-25 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/example9.m: Fix include * TestFramework/example8.m: Fix include * TestFramework/gnustep-tests.in: * TestFramework/README: Add (untested) support for Objective-C++ Implement parallel build so that all the tests in a directory should be built simultaneously making more effective use of multiprocessor systems. Add the --sequential command line option to disable this if desired. 2011-02-25 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/Testing.h: Cosmetic improvement ... indent the results of tests and the start/end of sets in the full diagnostic log. 2011-02-24 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/example9.m: * TestFramework/ObjectTesting.h: * TestFramework/README: * TestFramework/Testing.h: * TestFramework/example2.m: * TestFramework/example3.m: * TestFramework/example4.m: * TestFramework/example5.m: * TestFramework/example6.m: * TestFramework/example7.m: * TestFramework/example8.m: Important change to the START_SET and END_SET macros to stop their use being confusing. They now both take a simple C-string argument which names the set, and the macros check that each end matches a start of the same name. Since tis means that a START_SET no longer takes an argument sayng whether or notthe set is to be skipped, we now have a SKIP macro to be used inside a set to skip to the end of it. This is actually more versatile as we can have multiple SKIP macros in the same set, each providing a different reason for the set being skipped. Also removed a few obsolete/unused functions and macros. 2011-02-23 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests.in: * TestFramework/TestInfo: * TestFramework/README: Replace IGNORE file with TestInfo file having the opposite effect. This makes it safe to run the test script because it will now only do things in directories marked by the presence of a TestInfo file. In future we can use this file to store extra information or settings such as contact details for the package maintainers. 2011-02-23 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests.in: * TestFramework/Testing.h: Change automated setting of breakpoints in gdb to account for platforms where you can't conditionally break on entry to a function based on a function argument ... so we set a variable before entry instead. 2011-02-23 Richard Frith-Macdonald <rfm@gnu.org> * Testing.h: Fix excess args to printf and incorrect setting of the testPassed flag. 2011-02-22 Richard Frith-Macdonald <rfm@gnu.org> * gnustep-tests.in: * GNUmakefile.in: * README: Simplify template makefile options. 2011-02-22 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/example9.m: * TestFramework/Testing.h: * TestFramework/Summary.sh: * GNUmakefile.in: Add example for dealing with an unsupported feature. 2011-02-22 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests.in: Report path to test file when we run it as suggested by Sergey Golovin. 2011-02-22 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: Check for bash and test programs * configure: regenerate * TestFramework/gnustep-tests: remove ... use gnustep-test.in * TestFramework/gnustep-tests.in: Use bash as our shell if possible, and use an external test program determined at configure time if we can't rely on the builtin test function in the shell we end up with. 2011-02-22 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests: * TestFramework/Testing.h: * TestFramework/README: Make it easy to break at the start of a particular failed test. Add --debug option to automatically launch gdb to debug a test. 2011-02-21 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests: * TestFramework/Summary.sh: * TestFramework/runtest.sh: * GNUmakefile.in: Simplify by removing intermediary script. 2011-02-21 Richard Frith-Macdonald <rfm@gnu.org> * gnustep-config.in: Add CC to list of variables so we can build using the compiler that gnustep-make was configured with. * TestFramework/gnustep-tests: * TestFramework/runtest.sh: Add David Chisnall's suggested performance optimisation of handling simple cases (where we just need to compile a single source file with no special options) by compiling directly ... 25% improvement running the base library testsuite on my debian system using clang. 2011-02-20 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests: * TestFramework/README: Simplify ... permit only one test file as an argument, so that we can infer a single test directory easily (the directory containing the file) and thus use the standard code path in which we execute Start.sh and End.sh and run GNUmakefile.tests in the directory containing the file ... ie so that behavior when executing a single test file is identical to behavior when that file is executed as part of a whole testsuite. Don't backup makefile when we create a new one. 2011-02-19 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests: * TestFramework/runtest.sh: * TestFramework/README: * TestFramework/Testing.h: Add support for start and end scripts in each test directory. Fix bracketing in macro as suggested by Fred 2011-02-19 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests: * TestFramework/runtest.sh: * TestFramework/Summary.sh: Portability fixes for systems where grep has limited functionality and/or where the shell's builtin 'test' command is limited/faulty. 2011-02-18 Richard Frith-Macdonald <rfm@gnu.org> * gnustep-config.in: * TestFramework/gnustep-tests: * TestFramework/runtest.sh: * TestFramework/Summary.sh: Tweak use of grep for portability. Try to locate gnu make reliably. 2011-02-16 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/example1.m: * TestFramework/example2.m: * TestFramework/example3.m: * TestFramework/example4.m: * TestFramework/example5.m: * TestFramework/example6.m: * TestFramework/example7.m: * TestFramework/example8.m: * TestFramework/GNUmakefile.in: * TestFramework/gnustep-tests: * TestFramework/README: * TestFramework/runtest.sh: * TestFramework/Summary.sh: * TestFramework/Testing.h: Further cleanups, corrections, simplifications, and documentation improvements. Added --failfast option to terminate a test run at the first failure. Added recording of READEME to logs, and display of URGENT information. Added tracking of entry to subdirectories so there's something to see during execution ofa large testsuite. Added summary at end of tests (needs more work) 2011-02-13 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/Testing.h: * TestFramework/example1.m: * TestFramework/example2.m: * TestFramework/example3.m: * TestFramework/example4.m: * TestFramework/example5.m: * TestFramework/example6.m: * TestFramework/example7.m: * TestFramework/example8.m: * TestFramework/README: * GNUmakefile.in: Fix header file in examples. Add comments/documentation to explain use of brackets in macro parameters. Add an example to demonstrate it. 2011-02-13 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/Testing.h: * TestFramework/gnustep-tests: * TestFramework/runtest.sh: * TestFramework/README: Change test status reports to friendlier text. Record file and line number for each test. * GNUmakefile.in: install examples. 2011-02-13 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/gnustep-tests: Add --clean option * TestFramework/README: Describe the fact that we leave the last binary behind so we can easily run gdb. Also mention --clean 2011-02-10 19:06 David Chisnall <theraven@gna.org> * configure.ac: Don't depend on the existence of Object class for checking whether exceptions work. * configure: Regenerated. 2011-02-07 Richard Frith-Macdonald <rfm@gnu.org> * TestFramework/example1.m: * TestFramework/example2.m: * TestFramework/example3.m: * TestFramework/example4.m: * TestFramework/example5.m: * TestFramework/example6.m: * TestFramework/example7.m: * TestFramework/GNUmakefile.in: * TestFramework/gnustep-tests: * TestFramework/ObjectTesting.h: * TestFramework/README: * TestFramework/runtest.sh: * TestFramework/Testing.h: Test framework scripts, headers, template, examples, documentation * GNUmakefile.in: Altered to install/uninstall test framework. 2010-12-22 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Tidied up a few messages. * configure: Regenerated. 2010-10-20 Adam Fedor <fedor@gnu.org> * target.make: Add c99 flag for solaris 2010-09-22 Riccardo Mottola <rm@gnu.org> * installation-domains.conf: add defaults for objc2 and systempreferences 2010-09-16 Richard Frith-Macdonald <rfm@gnu.org> * GNUstep.conf.in: revert recent changes. * configure.ac: revert last changes and more. * configure: Regenerated. Reverted recent changes, largely to do with remembering filesystem layout preferences. Nicola pointed out that remembering preferences automatically might not be good, and suggested a different mechanism. That means current code temporarily needs a --with-layout=gnustep for the old behavior on most systems. 2010-09-16 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: Remove extra line accidentally added in preious commit. Improve comments on filesystem layout. Make 'apple' the native layout on the darwin operating system. * configure: Regenerated. 2010-09-10 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: Use fhs as the default layout on gnu/linux systems. * configure: Regenerated. * GNUstep.conf.in: add layout variable WARNING ...this changes the default behavior to use the 'fhs' layout rather than the 'gnustep' layout on most systems, and assumes that we will add other operating-system specific layouts in future and make them the default for those operating systems. I guess this may be controversial, but I think it's long past time for us to integrate with the native operating system when people download/install from source. If you want the old filesystem layout behavior you need to use configure --with-layout=gnustep To make this less painful, I've changed things to record the layout used in GNUstep.conf so if you don't want the new default you only need to specify --with-layout= the first time you configure/install. 2010-09-10 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: When threading tests fail with all expected threading flags/libs, do a last attempt with no explicit threading flags/libs at all. * configure: Regenerated. 2010-09-10 Nicola Pero <nicola.pero@meta-innovation.com> * config.make.in (CC): Ignore the default CC=cc used by GNU make when nothing else is specified. 2010-09-09 Nicola Pero <nicola.pero@meta-innovation.com> * config.make.in (CC): Only set CC if not already set in the environment. 2010-09-07 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Always obey an --enable-native-objc-exceptions or --disable-native-objc-exceptions switch if specified. If nothing is specified, conservatively only enable native ObjC exceptions if they pass a configure test and if GCC >= 4.4.0. * configure: Regenerated. 2010-09-06 Nicola Pero <nicola.pero@meta-innovation.com> * config_thread.m: Fixed incorrect usage of pthread_create when testing a non-GNU runtime. 2010-09-06 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Enable native exceptions by default if the compiler supports them. * configure: Regenerated. 2010-08-21 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/Shared/strings.make: Renamed most local variables to standardized names. Automatically create required, but non-existing, {LANGUAGE}.lproj directories before running make_strings. If no languages are specified, use English instead of printing an error messages. * Instance/rules.make (LANGUAGES): Set this variable here, once for all makefile fragments, instead of having each fragment contain the same duplicated code to set it. * Instance/gswbundle.make (LANGUAGES): Do not set it. * Instance/resource-set.make (LANGUAGES): Do not set it. * Instance/Shared/bundle.make (LANGUAGES): Do not set it. * Instance/Shared/strings.make (LANGUAGES): Do not set it. * Instance/Shared/headers.make: Added -*-makefile-*- line at the beginning of the file (for emacs). * Instance/Shared/java.make: Same change. * Instance/Shared/strings.make: Same change. 2010-08-14 Nicola Pero <nicola.pero@meta-innovation.com> * target.make (OBJ_MERGE_CMD): Use -Wl,-r instead of -r. -Wl,-r is the correct way of passing the -r flag to the linker, and works with both GCC and clang (Suggestion from a mail by Dimitry Andric <dimitry@andric.com>). 2010-07-26 Nicola Pero <nicola.pero@meta-innovation.com> * target.make (EXTRACT_CLASS_NAMES_COMMAND): Allow numbers in class names. Otherwise, class names containing numbers would not be recognized and not appear in the list of framework classes. 2010-07-16 Nicola Pero <nicola.pero@meta-innovation.com> * common.make: Set INTERNAL_OBJCFLAGS, not OBJCFLAGS, so that OBJCFLAGS is a free variable that can be used on the command-line, as in "make OBJCFLAGS=-fobjc-nonfragile-abi", to add some custom Objective-C flags to the compilation run without interfering with the standard ones. 2010-06-23 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/README.MinGW: Mention solution to install permission problem when working on Windows Vista and later (Reported by Quentin Mathe <qmathe@gmail.com>). 2010-05-10 Nicola Pero <nicola.pero@meta-innovation.com> * rules.make (%.plist): Delete empty lines in the output, fixing generating %.plist from %.cplist on Apple. 2010-05-08 Adam Fedor <fedor@gnu.org> * Version 2.4.0 2010-04-24 Nicola Pero <nicola.pero@meta-innovation.com> Fixed problem reported by Chris Corbyn <chris@w3style.co.uk> where precompiled headers only worked if they had a .h extension, and not a .pch extension, which is common for projects originally built using Apple XCode. * rules.make: Changed precompiled header rules to work to generate %.gch from %, no matter what extension the original header has. * Instance/rules.make: Same change. 2010-04-22 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/library.make: Use LIBRARY_NAME_WITHOUT_LIB instead of GNUSTEP_INSTANCE when installing resources (Patch from Jamison Hope with some modifications) * Documentation/releasenotes.texi: Explain the change. * RELEASENOTES: Regenerated. 2010-03-13 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: Add option to enable use of the nonfragile ABI * configure: Regenerate * config.make.in: Set variable to say if nonfragile ABI is to be used * common.make: Add -fobjc-nonfragile-abi if required. 2010-03-12 Nicola Pero <nicola.pero@meta-innovation.com> The default is now to use -Wall when compiling C/ObjC/C++/ObjC++ unless warn=no is used when invoking make. Similar for Java, where -deprecation is now used unless warn=no is used. * common.make (ADDITIONAL_FLAGS): Add -Wall or not depending on warn=yes/no, instead of depending on debug=yes/no (Suggestion from Richard Frith-Macdonald). (INTERNAL_JAVACFLAGS): Same for -deprecation. * Documentation/releasenotes.texi: Updated. * RELEASENOTES: Regenerated. 2010-03-07 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/README.MinGW: Updated. 2010-03-06 Nicola Pero <nicola.pero@meta-innovation.com> * target.make (SHARED_LIB_LINK_CMD): On MinGW, pass --export-all-symbols to the linker. This fixes building gnustep-base on MinGW with more recent libraries. * Documentation/README.MinGW: Updated instructions to work with more recent versions - up to building gnustep-base. 2010-03-06 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/Documentation/javadoc.make (JAVADOC_BUILD_ALWAYS): Recognize 'yes' (which is consistent with all other variables) as well as 'YES' (still recognized for backwards-compatibility). * Master/rpm.make (PACKAGE_NEEDS_CONFIGURE): Recognize 'yes' (which is consistent with all other variables) as well as 'YES' (still recognized for backwards-compatibility). * Documentation/releasenotes.texi: Updated. 2010-03-06 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Check for GNU make >= 3.79 and emit a warning if it's not found. Fixed typo in check for $(info ...). * configure: Regenerated. * Documentation/releasenotes.texi: Mention that versions of GNU Make older than 3.79.1 (released June 2000) are no longer supported. 2010-02-18 Adam Fedor <fedor@gnu.org> * Documentation/{gnustep-howto.texi,gnustep-machines.texi,GNUmakefile}: Deprecate the machines.texi file 2010-02-15 Nicola Pero <nicola.pero@meta-innovation.com> Fixed precompiler header support (Problem reported by Tim Kack <timkack@gmail.com>). * rules.make ($(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/C/): Create GNUSTEP_OBJ_INSTANCE_DIR_NAME, not GNUSTEP_OBJ_DIR_NAME. ($(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/ObjC/): Same change. ($(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/CC/): Same change. ($(GNUSTEP_OBJ_INSTANCE_DIR)/PrecompiledHeaders/ObjCC/): Same change. 2010-02-14 Nicola Pero <nicola.pero@meta-innovation.com> New internalmessages=yes option that prints all the recursive make invocations. Do not print any of them for messages=yes. * messages.make (ECHO_NOTHING_RECURSIVE_MAKE, END_ECHO_RECURSIVE_MAKE, INSIDE_ECHO_MAKING_OPERATION, INSIDE_ECHO_MAKING_OPERATION_IN_DIRECTORY, INSIDE_ECHO_MAKING_OPERATION_IN_SUBPROJECTS): New messages. (ECHO_MAKING_OPERATION_IN_DIRECTORY): Message removed. (internalmessages): New variable used to decide if to silence or not the new messages. * Master/rules.make (%.variables): Removed manual check for existence of $(MAKEFILE_NAME) in the subdirectory since the standard GNU make error message is clear enough. Use the new messages. (%.subprojects): Same changes. * Master/*.make: Use ECHO_NOTHING_RECURSIVE_MAKE and END_ECHO_RECURSIVE_MAKE instead of ECHO_NOTHING and END_ECHO for recursive make invocations. * Instance/*.make: Same change. * gnustep-make-help: Document the new internalmessages=yes option. * Documentation/releasenotes.texi: Mention the new option. * RELEASENOTES: Regenerated. 2010-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * Master/application.make ($(APP_NAME)): Use ECHO_NOTHING and END_ECHO. * Master/bundle.make ($(BUNDLE_NAME)): Same change. * Master/clibrary.make ($(CLIBRARY_NAME)): Same change. * Master/ctool.make ($(CTOOL_NAME)): Same change. * Master/framework.make ($(FRAMEWORK_NAME)): Same change. * Master/gswapp.make ($(GSWAPP_NAME)): Same change. * Master/gswbundle.make ($(GSWBUNDLE_NAME)): Same change. * Master/java.make ($(JAVA_PACKAGE_NAME)): Same change. * Master/java-tool.make ($(JAVA_TOOL_NAME)): Same change. * Master/library.make ($(LIBRARY_NAME)): Same change. * Master/objc.make ($(OBJC_PROGRAM_NAME)): Same change. * Master/palette.make ($(PALETTE_NAME)): Same change. * Master/service.make ($(SERVICE_NAME)): Same change. * Master/subproject.make ($(SUBPROJECT_NAME)): Same change. * Master/test-application.make ($(TEST_APP_NAME)): Same change. * Master/test-library.make ($(TEST_LIBRARY_NAME)): Same change. * Master/test-tool.make ($(TEST_TOOL_NAME)): Same change. * Master/tool.make ($(TOOL_NAME)): Same change. * Master/test-application.make ($(TEST_APP_NAME)): Make it a : rule, not a :: rule. * Master/test-library.make ($(TEST_LIBRARY_NAME)): Same change. * Master/test-tool.make ($(TEST_TOOL_NAME)): Same change. 2010-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * Master/application.make (.PHONY): Declare the new internal-master-app-all target as PHONY. * Master/bundle.make: Similar change. * Master/clibrary.make: Similar change. * Master/ctool.make: Similar change. * Master/gswapp.make: Similar change. * Master/gswbundle.make: Similar change. * Master/library.make: Similar change. * Master/objc.make: Similar change. * Master/palette.make: Similar change. * Master/service.make: Similar change. * Master/test-application.make: Similar change. * Master/test-library.make: Similar change. * Master/test-tool.make: Similar change. * Master/tool.make: Similar change. 2010-02-13 Nicola Pero <nicola.pero@meta-innovation.com> * Master/parallel-subdirectories.make (internal-install internal-uninstall): Install and uninstall in non-parallel mode to avoid any race conditions when installing or uninstalling. * Documentation/releasenotes.texi: Updated. * RELEASENOTES: Regenerated. 2010-02-12 Nicola Pero <nicola.pero@meta-innovation.com> Implemented new API to build subdirectories. aggregate.make is still available for backwards-compatibility, but moving forward serial-subdirectories.make and parallel-subdirectories.make will be used (and can be mixed in the same GNUmakefile!) to build subdirectories, clearly specifying if subdirectories are to build serially or in parallel. * aggregate.make: File rewritten to be a wrapper around serial-subdirectories.make and parallel-subdirectories.make * parallel-subdirectories.make: New file. * serial-subdirectories.make: New file. * Master/aggregate.make: File removed. * Master/parallel-subdirectories.make: New file. * Master/serial-subdirectories.make: New file. * messages.make (ECHO_MAKING_OPERATION_IN_DIRECTORY): New message used by the new subdirectories code. * GNUmakefile.in (MAKE_FILES, MASTER_MAKE_FILES): Updated lists of makefiles. * Documentation/releasenotes.texi: Updated with new changes. Also, refer to the next release as 2.4.0 instead of 2.2.1. * Documentation/news.texi: Same changes. * RELEASENOTES: Regenerated. * NEWS: Regenerated. 2010-02-12 Nicola Pero <nicola.pero@meta-innovation.com> Implemented parallel building of aggregate projects. Whenever you use aggregate.make, you can set "GNUSTEP_USE_PARALLEL_AGGREGATE = yes" to have the aggregate projects built in parallel. * Master/aggregate.make (GNUSTEP_USE_PARALLEL_AGGREGATE): New variable. If it is set to yes, run a parallel submake to build the aggregate projects. (internal-master-aggregate-*): New rules. (%.aggregate): New rule. 2010-02-12 Nicola Pero <nicola.pero@meta-innovation.com> * messages.make (ECHO_JAVADOC): New variable. * Instance/Documentation/javadoc.make (INTERNAL_JAVADOCFLAGS): Unless messages=yes is being used, use -quiet flag to keep javadoc quiet. Use ECHO_JAVADOC to print a line saying we are generating the javadoc documentation. 2010-02-12 Nicola Pero <nicola.pero@meta-innovation.com> Implemented parallelizing builds of multiple instances of everything, except for frameworks, documentation, resource sets and java. * rules (GNUSTEP_BUILD_DIR, GNUSTEP_OBJ_DIR): Removed rules to create these directories. * Master/rules.make (GNUSTEP_BUILD_DIR, GNUSTEP_OBJ_DIR): Moved here the rule to create these directories. * Master/rules.make: Updated all rules to pass _GNUSTEP_MAKE_PARALLEL=no to submakes. * Master/application.make (internal-all): Support parallel building. Depend on GNUSTEP_OBJ_DIR. (APP_NAME): Depend on GNUSTEP_OBJ_DIR. * Master/bundle.make: Same changes. * Master/clibrary.make: Same changes. * Master/ctool.make: Same changes. * Master/gswapp.make: Same changes. * Master/gsbundle.make: Same changes. * Master/library.make: Same changes. * Master/objc.make: Same changes. * Master/palette.make: Same changes. * Master/service.make: Same changes. * Master/test-application.make: Same changes. * Master/test-library.make: Same changes. * Master/test-tool.make: Same changes. * Master/tool.make (internal-all): Depend on GNUSTEP_OBJ_DIR. (TOOL_NAME): Depend on GNUSTEP_OBJ_DIR. * Master/framework.make: Same changes. * Master/subproject.make: Same changes. * Master/tool.name (TOOL_NAME): Set after including rules.make for consistency with other make fragments. 2010-02-12 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/releasenotes.texi: Updated. * RELEASENOTES: Regenerated. 2010-02-12 Nicola Pero <nicola.pero@meta-innovation.com> Create separate directories to store the object files of each instance. This allows to safely parallelize building different instances. * common.make (GNUSTEP_OBJ_INSTANCE_DIR, GNUSTEP_OBJ_INSTANCE_DIR_NAME): New variables. * rules.make: Include rules to compile C/ObjC/C++/ObjC++/.rc and to precompile headers only in the Instance invocation. Updated all rules to store object files into GNUSTEP_OBJ_INSTANCE_DIR instead of GNUSTEP_OBJ_DIR. * Instance/rules.make (GNUSTEP_OBJ_INSTANCE_DIR): New rule. Updated the whole file to put all object files in GNUSTEP_OBJ_INSTANCE_DIR instead of GNUSTEP_OBJ_DIR. (OBJ_DIRS_TO_CREATE): Do not ignore failures any more when building in parallel. * Instance/application.make (internal-app-all_): Depend on GNUSTEP_OBJ_INSTANCE_DIR instead of GNUSTEP_OBJ_DIR. * Instance/bundle.make: Same change. * Instance/ctool.make: Same change. * Instance/framework.make: Same change. * Instance/gswapp.make: Same change. * Instance/gswbundle.make: Same change. * Instance/library.make: Same change. * Instance/objc.make: Same change. * Instance/palette.make: Same change. * Instance/service.make: Same change. * Instance/subproject.make: Same change. * Instance/tool.make: Same change. * Instance/framework.make (DUMMY_FRAMEWORK_OBJ_FILE): Put DUMMY_FRAMEWORK_OBJ_FILE inside GNUSTEP_OBJ_INSTANCE_DIR instead of GNUSTEP_OBJ_DIR. * Instance/ctool.make ($(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT)): Do not depend on OBJC_DIRS_TO_CREATE. * Instance/rules.make (OBJ_FILES_TO_LINK_THAT_WE_CREATE): New variable used to prevent spurious attempts to create subproject object directories. 2010-02-12 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/clibrary.mak: Added "# -*-makefile-*-" on the first line for emacs. * Instance/rules.make: Same change. * Instance/test-library.make: Same change. * Master/*.make: Same change. 2010-02-12 Nicola Pero <nicola.pero@meta-innovation.com> * Master/aggregate.make (AGGREGATE_PROJECTS): Recognize the AGGREGATE_PROJECTS variable for compatibility with future gnustep-makes where SUBPROJECTS will be removed and replaced by AGGREGATE_PROJECTS. 2010-02-11 Nicola Pero <nicola.pero@meta-innovation.com> Implemented experimental support for parallelizing building different tools. For example, if you have "TOOL_NAME = autogsdoc cvtenc", the two tools are now built in parallel when you specify 'make -j 2'. Warning: this means the order in which tools are built is no longer guaranteed. * Master/tool.make (internal-all): When parallel building is enabled, fire off a _GNUSTEP_MAKE_PARALLEL=yes sub-make to build. (internal-master-tool-all): New target used by the _GNUSTEP_MAKE_PARALLEL=yes sub-make when parallel building is enabled. * Instance/rules.make (OBJ_DIRS_TO_CREATE): When building in parallel, ignore failures to create an object subdirectory. * Documentation/releasenotes.texi: Updated. * Documentation/RELEASENOTES: Regenerated. * RELEASENOTES: Updated. 2010-02-07 Nicola Pero <nicola.pero@meta-innovation.com> Added support for having header files in sub-subdirectories. Just list them as in xxx_HEADER_FILES = Beauty/Vanity.h. * Instance/Shared/headers.make (HEADER_SUBDIRS): New variable. (HEADER_INSTALL_DIRS_TO_CREATE): New variable. (shared-instance-headers-install): Create all the required subdirectories in the header install directory. ($(HEADER_INSTALL_DIRS_TO_CREATE)): New rule. ($(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR)): Rule removed. (shared-instance-headers-uninstall): Remove all the subdirectories in the header install directory. * Instance/framework.make (FRAMEWORK_HEADER_SUBDIRS): New variable. (internal-framework-build-headers): Depend on FRAMEWORK_HEADER_SUBDIRS. ($(FRAMEWORK_HEADER_SUBDIRS)): New rule. * Instance/subproject.make (HEADER_SUBDIRS): Set variable when OWNING_PROJECT_HEADER_DIR_NAME is set. (OWNING_PROJECT_HEADER_SUBDIRS): New variable when OWNING_PROJECT_HEADER_DIR_NAME is set. (internal-subproject-build-headers): Depend on OWNING_PROJECT_HEADER_SUBDIRS when OWNING_PROJECT_HEADER_DIR_NAME is set. ($(OWNING_PROJECT_HEADER_SUBDIRS)): New rule when OWNING_PROJECT_HEADER_DIR_NAME is set. Implemented HEADER_FILES_DIR for framework subprojects. * Instance/subproject.make (HEADER_FILES_DIR): Set this variable when OWNING_PROJECT_HEADER_DIR_NAME is set. ($(OWNING_PROJECT_HEADER_DIR)/%.h): Support HEADER_FILES_DIR when OWNIN_PROJECT_HEADER_DIR_NAME is set. * Documentation/releasenotes.texi: Updated release notes. * RELEASENOTES: Updated. * Documentation/news.texi: Added news for 2.2.1. * NEWS: Updated. 2009-10-26 Adam Fedor <fedor@gnu.org> * Instance/application.make: Replace deprecated Windows GUI flag. 2009-10-10 Nicola Pero <nicola.pero@meta-innovation.com> Added support for having source files in subdirectories without using a subproject. Just list them as in xxx_OBJC_FILES = Source/Beauty.m. * Instance/rules.make (OBJ_DIRS_TO_CREATE): New variables computed from OBJ_FILES_TO_LINK. ($(OBJ_DIRS_TO_CREATE)): New rule to create the directories. * Instance/application.make (internal-app-all_): Depend on OBJ_DIRS_TO_CREATE. * Instance/bundle.make (internal-bundle-all_): Same change. * Instance/ctool.make (internal-ctool-all_): Same change. * Instance/framework.make (internal-framework-all_): Same change. * Instance/gswapp.make (internal-gswapp-all_): Same change. * Instance/gswbundle.make (internal-gswbundle-all_): Same change. * Instance/objc.make (internal-objc_program-all_): Same change. * Instance/palette.make (internal-palette-all_): Same change. * Instance/service.make (internal-service-all_): Same change. * Instance/subproject.make (internal-subproject-all_): Same change. * Instance/tool.make (internal-tool-all_): Same change. 2009-10-10 Nicola Pero <nicola.pero@meta-innovation.com> Try to warn users if they create their own Info-gnustep.plist file instead of providing an xxxInfo.plist file. * Instance/application.make (internal-app-all_): If Info-gnustep.plist is specified in xxx_RESOURCE_FILES, print a warning recommending to use xxxInfo.plist instead. * Instance/bundle.make (internal-bundle-all_): Same change. * Instance/framework.make (internal-framework-all_): Same change. * Instance/palette.make (internal-palette-all_): Same change. * Instance/service.make (internal-service-all_): Same change. * messages.make: Added new warning messages. * Instance/application.make ($(GNUSTEP_INSTANCE).desktop): Do not attempt to create this file on Apple. 2009-10-09 Nicola Pero <nicola.pero@meta-innovation.com> Implemented batch-compilation of Java files (ie, all files built in a single javac invocation) to speed up building Java software. In the large Java project I used as a test case, this change produced a 5x reduction in building time. * rules.make (%.class): If BATCH_COMPILE_JAVA_FILES is not set to no, and JAVA_FILES_TO_BATCH_COMPILE is set and the file we're compiling is in that variable, do a batch compile instead of a single-file compile. * messages.make (INSIDE_ECHO_JAVA_COMPILING): New message. (INSIDE_ECHO_JAVA_BATCH_COMPILING): New message. * Instance/Shared/java.make: If appropriate, set JAVA_FILES_TO_BATCH_COMPILE to the list of files we want to batch compile. ($(GNUSTEP_INSTANCE)_BATCH_COMPILE_JAVA_FILES): New variable allowing to disable the batch compilation of Java files if needed. * Documentation/releasenotes.texi: Updated. * RELEASENOTES: Regenerated. 2009-09-27 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Turn off autodependencies on cygwin. * configure: Regenerated. 2009-09-20 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac (--enable-debug-by-default): New option which allows you to change if gnustep-make should build with debug=yes or debug=no by default. Store the configuration choice in GNUSTEP_DEFAULT_DEBUG. Make debug=no the default, so that normally -g -O2 is the default set of compilation flags used. * configure: Regenerated. * common.make: If the 'debug' variable is empty, set it to GNUSTEP_DEFAULT_DEBUG. If debug=yes, filter the -O% flags. (ADDITIONAL_FLAGS): If debug=yes, only add -g if it is not already present in OPTFLAG. * config.make.in (GNUSTEP_DEFAULT_DEBUG): New variable. * Documentation/releasenotes.texi: Updated release notes. * RELEASENOTES: Regenerated. 2009-09-19 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/Documentation/texi.make ($(GNUSTEP_INSTANCE)_toc.html): Changed to be $(GNUSTEP_INSTANCE)/$(GNUSTEP_INSTANCE).html to match what texi2html is currently doing. This should prevent pointless rebuilds of html documentation from texi documentation. (internal-doc-all_): Updated dependencies for this change. 2009-09-19 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/releasenotes.texi: Updated release notes. * RELEASENOTES: Regenerated. 2009-09-19 Nicola Pero <nicola.pero@meta-innovation.com> Renamed all info files by adding a gnustep- prefix so that there is no chance of conflicts with info files from other software (Suggestion from Michel Alexandre Salim <salimma@fedoraproject.org>). * Documentation/faq.texi: Renamed to gnustep-faq.texi. * Documentation/filesystem.texi: Renamed to gnustep-filesystem.texi. Removed @setfilename. * Documentation/internals.tex: Renamed to gnustep-internals.tex. * Documentation/machines.texi: Renamed to gnustep-machines.texi. Removed @setfilename. * Documentation/gnustep-howto.texi: Updated include of machines.texi to include gnustep-machines.texi. * Documentation/GNUmakefile: Updated for changes. 2009-09-19 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/documentation.make: Moved internal-textdoc-install_, internal-textdoc-uninstall_, internal-textdoc-clean, internal-textdoc-distclean to Instance/Documentation/texi.make. * Instance/Documentation/texi.make (internal-doc-clean): Remove the GNUSTEP_INSTANCE directory if empty. 2009-09-19 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/gnustep.init: Terminate the file with '1;', as required by Perl, fixing building the documentation (tested with Perl 5.8.8 and texinfo 1.76). 2009-09-17 Richard Frith-Macdonald <rfm@gnu.org> * common.make: Fix debug build ... somehow filtering out of the -O flag got lost, preventing effective debugging with gdb when debug=yes 2009-09-17 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/releasenotes.texi: Fixed typo in the release notes for gnustep-make 2.0.6 (reported by Michel Alexandre Salim <salimma@fedoraproject.org>). * RELEASENOTES: Regenerated. 2009-09-01 Riccardo Mottola <rmottola@users.sf.net> Patch from Yaakov Selkowitz <yselkowitz@yahoo.com>: Update and un-Win32-ify Cygwin rules. * common.make: MinGW path issues do not apply to Cygwin. * config.make.in: Cygwin supports symlinks now. * rules.make, Instance/rules.make: Don't use windres on Cygwin, as it uses X11. * target.make: Cygwin does not require -lm. 2009-08-15 Nicola Pero <nicola.pero@meta-innovation.com> Patch from Yaakov Selkowitz <yselkowitz@yahoo.com>: * target.make: On Cygwin, use -Wl,--enable-auto-image-import instead of manually rebasing; define DLL_PREFIX to be 'cyg' to match Cygwin conventions and fixed typo in --Wl,-enable-whole-archive option. * Instance/library.make: Prepend DLL_PREFIX when creating a dll. * Instance.framework.make: Same change. 2009-08-15 Nicola Pero <nicola.pero@meta-innovation.com> * common.make: Do not filter out the -Ox flags when debug=yes. This means debug=yes now uses "-g -O2" by default - instead of just "-g" (Suggestion by Yavor Doganov <yavor@gnu.org>). * Documentation/releasenotes.texi: Updated. * RELEASENOTES: Regenerated. 2009-05-09 Adam Fedor <fedor@gnu.org> * Version 2.2.0 2009-05-06 Adam Fedor <fedor@gnu.org> * Documentation/news.texi, Documentation/releasenotes.texi: Update. 2009-03-30 Nicola Pero <nicola.pero@meta-innovation.com> * config.make.in (OBJC_LIB_FLAG): Set OBJC_LIB_FLAG here. * library-combo.make: Do not set it here. 2009-03-30 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac, library-combo.make: Fixed to automatically use -lobjc_gc for the GNU Objective-C runtime with garbage collection if no --with-objc-lib-flag=... is used in configure. * configure: Regenerated. 2009-03-30 Nicola Pero <nicola.pero@meta-innovation.com> From a suggestion by Truls Becken <truls.becken@gmail.com>: * configure.ac (--with-objc-lib-flag): New option allowing to replace the default -lobjc flag with a custom one such as -l:libobjc.so.1, which can be used on some platforms to require linking a specific version of libobjc - a handy trick when you have more than one installed. * configure: Regenerated. * config.make.in (OBJC_LIB_FLAG): New variable. * library-combo.make: Use OBJC_LIB_FLAG instead of -lobjc. 2009-03-24 Nicola Pero <nicola.pero@meta-innovation.com> Fixed compiling software that contains both C/ObjC and C++/ObjC++ files: use CC to compile C and ObjC files even if CXX is used to link. (Problem reported by Riccardo Mottola <multix@gmail.com>). * target.make: Replaced CC with LD everywhere it is used to link - so that we can change the program used to link (LD) without having to change the program used to compile C/ObjC code (CC). * Instance/rules.make (LD): If CC_OBJ_FILES or OBJCC_OBJ_FILES is not empty, set LD to be CXX, while leaving CC unchanged. 2009-03-19 Nicola Pero <nicola.pero@meta-innovation.com> Print a user-friendly warning or notice message when there are no files to link. * messages.make (WARNING_EMPTY_LINKING, NOTICE_EMPTY_LINKING): New messages. * Instance/application.make: Print out the WARNING_EMPTY_LINKING message if we're linking but there are no files to link. * Instance/ctool.make: Same change. * Instance/framework.make: Same change. * Instance/gswapp.make: Same change. * Instance/gswbundle.make: Same change. * Instance/library.make: Same change. * Instance/objc.make: Same change. * Instance/palette.make: Same change. * Instance/service.make: Same change. * Instance/subproject.make: Same change. * Instance/tool.make: Same change. * Instance/bundle.make: Same change but use the NOTICE_EMPTY_LINKING message. 2009-02-27 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/README.Packaging: File removed - moved it top-level to README.Packaging. * README.Packaging: New file. 2009-02-25 Nicola Pero <nicola.pero@meta-innovation.com> * common.make: When printing "This is gnustep-make 2.0.9. Type 'make print-gnustep-make-help' for help.", make sure we replace 'make' with whatever command was used to invoke GNU make (eg, on OpenBSD it is often gmake instead of make). Issue reported by Sebastian Reitenbach <buzzdee@web.de>. 2009-02-25 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/README.Packaging (GETTING HELP): New section. 2009-02-23 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac (GNUSTEP_MAKE_PARALLEL_BUILDING): Enable parallel building support by default. From now on, you only need to use eg 'make -j 2' to build something using parallel building. Updated documentation. * configure: Regenerated. * Instance/application.make (.PHONY): Added internal-app-run-compile-submake and internal-app-compile. * Instance/bundle.make (.PHONY): Similar change. * Instance/ctool.make (.PHONY): Similar change. * Instance/framework.make (.PHONY): Similar change. * Instance/library.make (.PHONY): Similar change. * Instance/objc.make (.PHONY): Similar change. * Instance/palette.make (.PHONY): Same change. * Instance/service.make (.PHONY): Same change. * Instance/subproject.make (.PHONY): Same change. * Instance/tool.make (.PHONY): Same change. 2009-02-16 Nicola Pero <nicola.pero@meta-innovation.com> Extended experimental parallel building support to most project types. You can use 'make GNUSTEP_MAKE_PARALLEL_BUILDING=YES -j2' to try out the new parallel building support. * Instance/application.make (internal-app-run-compile-submake): New target with separate implementations to support parallel and non-parallel building. (internal-app-compile): New target. (internal-app-all_): Depend on internal-app-run-compile-submake instead of APP_FILE. * Instance/bundle.make (internal-bundle-run-compile-submake), (internal-bundle-compile), (internal-bundle-all_): Same changes. * Instance/framework.make (internal-framework-run-compile-submake), (internal-framework-compile), (build-framework): Same changes. * Instance/palette.make (internal-palette-run-compile-submake), (internal-palette-compile), (internal-palette-all_): Same changes. * Instance/service.make (internal-service-run-compile-submake), (internal-service-compile), (internal-service-all_): Same changes. * Instance/ctool.make (internal-ctool-all_): When doing a parallel build, use a submake 'compile' invocation to compile. (internal-ctool-compile): New target for the 'compile' invocation. * Instance/objc.make (internal-objc_program-all_), (internal-objc_program-compile): Same changes. * Instance/subproject.make (internal-subproject-all_), (internal-subproject-compile): Same changes. 2009-02-16 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/library.make (internal-library-all_): Fixed GNUSTEP_OPERATION used in submake invocation when doing a parallel build. * Instance/tool.make (internal-tool-all_): Same change. 2009-02-09 Nicola Pero <nicola.pero@meta-innovation.com> Added experimental support for parallel building of libraries and tools. We can extend it to more project types once the concept is proven to work. * configure.ac (--enable-parallel-building): New experimental option, disabled by default. * configure: Regenerated. * config-noarch.make.in (GNUSTEP_MAKE_PARALLEL_BUILDING): New variable. * rules.make (.NOTPARALLEL): Do not create this rule when parallel building is enabled, and we are doing the final compile sub-make invocation that is expected to build in parallel. * Instance/library.make (internal-library-all_): When doing a parallel build, delegate the building of the final object file to a sub-make 'compile' invocation that can safely build in parallel. (internal-library-compile): New target executed in the parallel invocation. * Instance/tool.make (internal-tool-all_): Same. (internal-tool-compile): Same. 2009-02-08 Nicola Pero <nicola.pero@meta-innovation.com> * gnustep-make-help: Use _MAKE_ instead of make when referring to the GNU make program. * rules.make (print-gnustep-make-help): Replace _MAKE_ with the basename of $(MAKE) when printing the help, so that on different systems the correct name for GNU make is used in the help. For example, on OpenBSD it should be 'gmake', not 'make'. Issue reported by Sebastian Reitenbach <buzzdee@web.de>. 2009-02-02 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/releasenotes.texi: Updated. * RELEASENOTES: Regenerated. 2009-02-02 Nicola Pero <nicola.pero@meta-innovation.com> This change means that file timestamps are more likely to be preserved when files are installed. For example, if you reinstall a library without having changed the headers, this should/might prevent code using the library headers from being rebuilt. * configure.ac: Check if 'install -p' works. If it works, use it by default. Added --disable-install-p option to revert to the previous behaviour of using 'install' instead of 'install -p'. * configure: Regenerated * config-install-p-test/: New directory. * config-install-p-test/run-test.sh: New file. * config-install-p-test/config-install-p-test-file: New file. 2009-02-02 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: On MinGW, do not set INSTALL to 'install -p'. Prefer the install program chosen by configure, which has a full path (typically '/bin/install -c') and so it is safer. * configure: Regenerated. 2009-01-31 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/README.MinGW: Updated installation instructions. In particular, use MinGW 5.1.4 instead of 5.1.3. 2009-01-28 Nicola Pero <nicola.pero@meta-innovation.com> * rules.make (.NOTPARALLEL): Added target. It should turn off parallel building - which does not work with gnustep-make - even when specified on the command-line as 'make -j'. 2009-01-28 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/resource-set.make (internal-resource_set-uninstall_): Rewritten to be much more accurate. In particular it now removes LOCALIZED_RESOURCE_DIRS and RESOURCE_DIRS. * Instance/Shared/headers.make (shared-instance-headers-uninstall): Remove GNUSTEP_HEADERS/HEADER_FILES_INSTALL_DIR if it is empty. * Instance/rules.make (internal-$(GNUSTEP_TYPE)-uninstall): Remove the $(GNUSTEP_INSTANCE)_INSTALL_DIRS if empty. ($(GNUSTEP_INSTANCE)_INSTALL_DIRS): New rule replacing the one for ADDITIONAL_INSTALL_DIRS, moved into the Master invocation. Do not add $(GNUSTEP_INSTANCE)_INSTALL_DIRS to ADDITIONAL_INSTALL_DIRS. * Master/rules.make (uninstall): Depend on internal-after-uninstall. (internal-after-uninstall): New rule to remove ADDITIONAL_INSTALL_DIRS if empty. ($(ADDITIONAL_INSTALL_DIRS)): New rule. (internal-before-install): New rule. Depend on ADDITIONAL_INSTALL_DIRS. (install): Depend on internal-before-install. 2009-01-28 Nicola Pero <nicola.pero@meta-innovation.com> * rules.make: Replaced ${OEXT} with the equivalent syntax $(OEXT) to be consistent with the rest of the code. 2009-01-25 Adam Fedor <fedor@gnu.org> * configure.ac: Add PATH to custom objc library on MinGW (Fix for Bug #25394) 2009-01-22 Adam Fedor <fedor@gnu.org> * target.make (darwin): Don't use -flat_namespace 2009-01-22 Nicola Pero <nicola.pero@meta-innovation.com> * rule.make (.DELETE_ON_ERROR): Added target. It should cause GNU make to react more intelligently to errors. 2009-01-11 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: * configure: * library-combo.make: * config.make.in: * common.make: Simplify GC changes. 2009-01-10 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: Check for objc garbage collection. * config.make.in: Define whether we are using GC. * configure: Regenerate. Initial move towards getting gc working again after years of disuse. 2009-01-07 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in (uninstall): Run each 'rmdir' as a separate command. 2009-01-07 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/README.Packaging: Mention clearly setting GNUSTEP_INSTALLATION_DOMAIN in the environment before configuring gnustep-base. 2009-01-06 Richard Frith-Macdonald <rfm@gnu.org> * Documentation/README.MinGW: Fix error in path to install gnutls. 2009-01-06 Adam Fedor <fedor@gnu.org> * Version 2.0.8 2008-12-24 Nicola Pero <nicola.pero@meta-innovation.com> * gnustep-config.in: Added -s option when invoking make, fixing the problems with spurious output when gnustep-config was used in a process spawned by a makefile (eg, configure in gnustep-base when triggered by its Makefile.postamble). 2008-12-24 Nicola Pero <nicola.pero@meta-innovation.com> * gnustep-config.in: Added new --installation-domain-for=xxx option. * rules.make (print-gnustep-make-installation-domain): New target. 2008-12-21 Adam Fedor <fedor@gnu.org> * Version 2.0.7 2008-12-19 Nicola Pero <nicola.pero@meta-innovation.com> * installation-domains.conf: Added gnustep-objc to the System packages. 2008-12-19 Nicola Pero <nicola.pero@meta-innovation.com> New configuration file that allows hardcore developers building everything from source to specify arbitrary default installation domains for the software. You just need to copy the installation-domains.conf file to the same directory as the GNUstep.conf file, and edit it to customize the default installation domain (Thanks to Richard for the idea). * common.make: Read installation-domains.conf file if it exists, and use it to customize the default installation domains. * installation-domains.conf: New file. Reverted last change. * configure.ac: Removed option --disable-packages. * configure: Regenerated. * config-noarch.make.in: Removed GNUSTEP_INSTALL_CORE_INTO_SYSTEM_DOMAIN. * common.make: Reverted last change. 2008-12-18 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: New option --disable-packages that causes gnustep-make to assume packages are never involved, so it defaults to installing 'core' software into System by default. * configure: Regenerated. * config-noarch.make.in: Added new variable GNUSTEP_INSTALL_CORE_INTO_SYSTEM_DOMAIN. * common.make: If GNUSTEP_INSTALLATION_DOMAIN is not set, GNUSTEP_INSTALL_CORE_INTO_SYSTEM_DOMAIN is set to 'YES' and GNUSTEP_CORE_SOFTWARE is set to 'YES', set GNUSTEP_INSTALLATION_DOMAIN to SYSTEM. 2008-12-18 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/README.Packaging: New file providing complete instructions and recommendations on how to create GNUstep packages. 2008-12-05 Richard Frith-Macdonald <rfm@gnu.org> * Documentation/README.MingW: Fix missing part of ffi instructions. 2008-12-05 Richard Frith-Macdonald <rfm@gnu.org> * GNUstep.sh.in: * GNUstep.csh.in: Fix the code for detecting path fragments within a path ... it was just grepping for the fragments without delimiters, so it would think a fragment was present if that fragment happened to be a substring of something which was present. eg. if /usr/GNUstep/Local/Tools/Admin was present, then it would think that /usr/GNUstep/Local/Tools was also present. 2008-11-28 Richard Frith-Macdonald <rfm@gnu.org> * print_unique_pathlist.sh: Reverse the order of the path fragments so that, when the caller iterates through them and prepends them to other paths, they end up prepended in the correct order. 2008-11-13 Richard Frith-Macdonald <rfm@gnu.org> * Documentation/README.MingW: Change instructions to use libffi 2008-11-06 Wolfgang Lux <wolfgang.lux@gmail.com> * GNUstep.csh.in: Fix incorrect case pattern which causes initialization of DYLD_LIBRARY_PATH on Darwin and NEXTSTEP systems to be skipped. 2008-10-27 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Disable precompiled headers on gcc 4.1 since there is no reliable ways to determine if they work or not. * configure: Regenerated. 2008-10-27 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Added special case when checking for thread support on Apple OS X - it should now detect that Apple OS X supports threads but needs no threading library specified. This implicitly fixes the following check for native ObjC exceptions. * configure: Regenerated. * config_thread.m: Rewritten Apple runtime case to use pthread directly. 2008-10-21 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/releasenotes.texi: Updated for latest changes. * RELEASENOTES: Regenerated. 2008-10-21 Nicola Pero <nicola.pero@meta-innovation.com> Implemented suggestion from David Chisnall <theraven@sucs.org> of using --no-print-directory for recursive make. * common.make (GNUSTEP_MAKE_NO_PRINT_DIRECTORY_FLAG): New variable. Set it to --no-print-directory unless messages=yes. * Master/aggregate.make: Use it when doing recursive invocations that change directory. * Master/rules.make: Same change. 2008-10-21 Nicola Pero <nicola.pero@meta-innovation.com> Fixed problem reported by Funda Wang <fundawang@gmail.com>. * GNUstep.sh.in: When adding paths to PATH, CLASSPATH, GUILE_LOAD_PATH and INFOPATH, check that each path is not already there before adding it. Previously we were checking, but checking the whole string of paths as a single unit; the new code works much better when some of the paths, but not all of them, are already there. Reduced the number of loops and variables. Inlined code from ld_lib_path.sh, and rewritten it completely to check every single library and framework path before adding it to the library path variables. Avoid executing any of the framework code unless we are on Darwin. * ld_lib_path.sh: File removed. * GNUstep.csh.in: Same changes as for GNUstep.sh.in. * ld_lib_path.csh: File removed. * GNUmakefile.in (install): Do not install ld_lib_path.sh and ld_lib_path.csh. (uninstall): Do not uninstall ld_lib_path.csh. 2008-07-22 Nicola Pero <nicola.pero@meta-innovation.com> Keep better track of the original source file used to compile each object file, so that you can have both file.c and file.m in the same project (suggestion by David Chisnall <theraven@sucs.org>). * rules.make: Changed rules so that they dictate how to create for example %.m.o from %.m instead of just %.o from %.m. * Instance/rules.make: Changed all xxx_OBJS variables so that they retain the original extension; for example, OBJC_OBJS now contains %.m.o instead of just %.o. 2008-07-21 Nicola Pero <nicola.pero@meta-innovation.com> Fixed bug reported by Marko Riedel <markoriedelde@yahoo.de> where test-applications are not linked against the gui library by default. * Instance/test-application.make (NEEDS_GUI): Set to 'yes'. * Instance/test-tool.make (NEEDS_GUI): Set to 'no'. * Instance/tool.make (NEEDS_GUI): Use 'no' instead of 'NO' for consistency. 2008-07-17 Adam Fedor <fedor@gnu.org> * Documentation/machines.texi: Update 2008-06-24 Nicola Pero <nicola.pero@meta-innovation.com> * gnustep-make-help: Mention the MAKEFILE_NAME variable that can be used to use makefiles with a name different from the default 'GNUmakefile'. 2008-06-17 Richard Frith-Macdonald <rfm@gnu.org> * gnustep-config.in: Fixup assignment to gs_variable_value with code which works with more shells (bug #23618). Solution suggested by Hubert Chathi. 2008-06-14 Adam Fedor <fedor@gnu.org> * Version 2.0.6 2008-06-11 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/make.texi: Renamed to gnustep-make.texi. * Documentation/gnustep-make.texi: New file. * Documentation/GNUmakefile: Corresponding updates. (Patch by Gareth Armstrong <gareth.armstrong@hp.com>) * Documentation/releasenotes.texi: Mention that the make.info file was renamed to gnustep-make.info. * RELEASENOTES: Regenerated. 2008-06-10 Nicola Pero <nicola.pero@meta-innovation.com> * openapp.in: Avoid 'echo -e' which is not portable (Suggestion from Hubert Chathi <uhoreg@debian.org>) 2008-05-30 Nicola Pero <nicola.pero@meta-innovation.com> * config.guess, config.sub: Updated to latest version. 2008-05-25 Nicola Pero <nicola.pero@meta-innovation.com> Fixed cases where ./configure wouldn't detect that the compiler supported auto-dependencies. * configure.ac: Fixed regular expression to determine the GCC version. If was failing when the string terminated at the minor version. * configure: Regenerated. 2008-05-24 Nicola Pero <nicola.pero@meta-innovation.com> Fixed occasional spurious rebuilds of Info-gnustep.plist and Info.plist files. * Instance/bundle.make (build-bundle): Swapped the order of the shared-instance-bundle-all and $(BUNDLE_INFO_PLIST_FILE) dependencies. (Info.plist, Info-gnustep.plist): Do not depend on building the directory containing the plist file first. * Instance/framework.make (Info.plist, Info-gnustep.plist): Do not depend on creating the directory containing the plist file first. 2008-05-24 Nicola Pero <nicola.pero@meta-innovation.com> * messages.make (ECHO_UPDATING_VERSION_SYMLINK): Added definition for messages=no. (ECHO_CREATING_STAMP_FILE): New variable. * Instance/Shared/stamp-string.make (shared-instance-stamp-string): Use ECHO_CREATING_STAMP_FILE instead of ECHO_NOTHING. 2008-05-24 Nicola Pero <nicola.pero@meta-innovation.com> Fixed occasional spurious rebuilds of framework headers; improved display of messages when building framework headers. * Instance/framework.make (internal-framework-build-headers): Depend on $(FRAMEWORK_VERSION_DIR)/Headers. ($(FRAMEWORK_VERSION_DIR)/Headers/%.h): Do not depend on $(FRAMEWORK_VERSION_DIR)/Headers. (build-framework-dirs): Do not depend on $(FRAMEWORK_VERSION_DIR)/Headers. * Instance/subproject.make (internal-subproject-build-headers): Depend on $(OWNING_PROJECT_HEADER_DIR). ($(OWNING_PROJECT_HEADER_DIR)/%.h): Do not depend on $(OWNING_PROJECT_HEADER_DIR). * Instance/framework.make ($(FRAMEWORK_DIR)/Versions/Current): Use ECHO_UPDATING_VERSION_SYMLINK instead of ECHO_NOTHING. ($(FRAMEWORK_VERSION_DIR)/Headers/%.h): Use ECHO_CREATING instead of ECHO_NOTHING. * Instance/subproject.make ($(OWNING_PROJECT_HEADER_DIR)/%.h): Use ECHO_CREATING instead of ECHO_NOTHING. * Instance/messages.make: Added ECHO_UPDATING_VERSION_SYMLINK. 2008-05-24 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in (all): Use $(MAKE) instead of make when printing help message, so it prints the correct command on systems where 'gmake' needs to be used instead 'make'. (Patch by Sebastian Reitenbach <buzzdee@web.de>). 2008-05-22 Blake Nicholson <blaken@umich.edu> * configure.ac: Added the --enable-absolute-install-paths option. * configure: Regenerated. * config.make.in: Added GNUSTEP_ABSOLUTE_INSTALL_PATHS. * Instance/library.make, Instance/framework.make: Change LIB_LINK_INSTALL_NAME to an absolute path if GNUSTEP_ABSOLUTE_INSTALL_PATHS is 'yes' in darwin. * Documentation/releasenotes.texi: Updated to reflect changes. * RELEASENOTES: Regenerated. 2008-05-18 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Install GNUstep.conf in /etc/GNUstep/GNUstep.conf on OpenBSD, FreeBSD and NetBSD. Packagers are free to install the configuration file wherever it best suits them; but for simplicity and consistency if gnustep-make is compiled from source and nothing else is specified, we default to /etc/GNUstep/GNUstep.conf on all systems. * configure: Regenerated. * Documentation/releasenotes.texi: Describe change. * RELEASENOTES: Regenerated. 2008-03-30 Nicola Pero <nicola.pero@meta-innovation.com> * clean_os.sh: Support new versions of Darwin, and future ones as well. Patch by Blake Nicholson <blaken@umich.edu> with a few changes. 2008-03-14 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/README.MinGW: Fixed subversion URL to get libobjc - reported by Christopher Chandler <chrisjechandler@mac.com>. 2008-03-11 Adam Fedor <fedor@gnu.org> * Version 2.0.5 2008-03-11 Nicola Pero <nicola.pero@meta-innovation.com> Fixed NEEDS_GUI and xxx_NEEDS_GUI options to accept "yes" as well as "YES", to be consistent with all the other boolean options in gnustep-make. * Instance/rules.make (INTERNAL_NEEDS_GUI): Changed to accept "yes" as well as "YES" * Instance/application.make (NEEDS_GUI): Use yes/no in preference to YES/NO for the default values. * Instance/bundle.make: Same change. * Instance/framework.make: Same change. * Instance/gswapp.make: Same change. * Instance/gswbundle.make: Same change. * Instance/library.make: Same change. * Instance/palette.make: Same change. * Documentation/releasenotes.texi: Suggest yes/no in preference to YES/NO as possible values for NEEDS_GUI and xxx_NEEDS_GUI. * RELEASENOTE: Regenerated. 2008-03-03 Nicola Pero <nicola.pero@meta-innovation.com> Updated C++ and ObjC++ support so that it automatically uses g++ to link C++ and ObjC++ files. * configure.ac (AC_PROG_CXX): Detect a C++ compiler (if any). * configure: Regenerated. * config.make.in (CXX, CCFLAGS): New variables. * rules.make: Use CXX, not CC, when compiling C++ and ObjC++. (ALL_CCFLAGS): Added CCFLAGS. * Instance/rules.make: If CC_OBJ_FILES or OBJCC_OBJ_FILES are non-empty, set CC to be the same as CXX so that the C++ compiler is used to link. 2008-03-02 Nicola Pero <nicola.pero@meta-innovation.com> Updated configure and filesystem layouts so that a ./configure on Apple Mac OS X sets up a consistent apple-apple-apple environment. * FileSystemLayouts/apple: New filesystem layout for compiling and installing apple-apple-apple software. * FileSystemLayouts/README: Added the new filesystem layout. * configure.ac: If the library-combo is apple-apple-apple, by default use the apple filesystem layout. On darwin, use /Library/GNUstep/GNUstep.conf as the default config file. * configure: Regenerated. * Documentation/GNUmakefile (./tmp-installation/System/Library/Makefiles): Specify --with-layout=gnustep when creating the temporary local installation. * Documentation/releasenotes.texi: Explain change of the default filesystem layout on apple-apple-apple. * RELEASENOTES: Regenerated. 2008-02-21 Gregory John Casamento <greg_casamento@yahoo.com> * Documentation/faq.texi: Minor updates to the faq. 2008-02-19 Nicola Pero <nicola.pero@meta-innovation.com> You can now set NEEDS_GUI = YES / NO in your GNUmakefile to change the behaviour for all targets/projects in one go. * Instance/rules.make: Renamed NEEDS_GUI to INTERNAL_NEEDS_GUI and DEFAULT_NEEDS_GUI to NEEDS_GUI. * Instance/application.make (DEFAULT_NEEDS_GUI): Renamed to NEEDS_GUI; do not set if already set. * Instance/bundle.make: Same change. * Instance/framework.make: Same change. * Instance/gswapp.make: Same change. * Instance/gswbundle.make: Same change. * Instance/library.make: Same change. * Instance/palette.make: Same change. * Instance/tool.make: Same change. * Documentation/releasenotes.texi: Added NEEDS_GUI. * RELEASENOTES: Regenerated. 2008-02-19 Nicola Pero <nicola.pero@meta-innovation.com> Implemented new variable xxx_NEEDS_GUI that can be used to explicitly require linking/not linking against the gui library. If xxx_NEEDS_GUI is not specified, the default behaviour is the traditional one, which depends on the project type: applications, bundles, frameworks, palettes and libraries link against the gui library if available; all other projects don't. * Instance/rules.make (NEEDS_GUI): New variable. Set it from xxx_NEEDS_GUI or DEFAULT_NEEDS_GUI. (ALL_LIBS): New variable listing all libraries to link against. Set it using NEEDS_GUI to decide if we should link against the gui or not. * Instance/application.make (DEFAULT_NEEDS_GUI): Set to YES. (ALL_GUI_LIBS): Variable removed. Use ALL_LIBS when linking instead. * Instance/bundle.make (DEFAULT_NEEDS_GUI): Set to YES. (BUNDLE_LIBS): When linking against all libs, use ALL_LIBS. (ALL_BUNDLE_LIBS): Variable removed. * Instance/ctool.make (ALL_TOOL_LIBS): Variable renamed to ALL_LIBS. Separated out ALL_LIB_DIRS for consistency with other project types. * Instance/framework.make (DEFAULT_NEEDS_GUI): Set to YES. (LIBRARIES_DEPEND_UPON): When linking against all libs, use ALL_LIBS. * Instance/gswapp.make (DEFAULT_NEEDS_GUI): Set to NO. (ALL_GSW_LIBS): Use ALL_LIBS. Separated ALL_LIB_DIRS; pass it on the command-line. * Instance/gswbundle.make (DEFAULT_NEEDS_GUI): Set to NO. Pass ALL_LIB_DIRS separately from ALL_GSWBUNDLE_LIBS on the linker command-line. * Instance/library.make (DEFAULT_NEEDS_GUI): Set to YES. (LIBRARIES_DEPEND_UPON): When linking against all libs, use ALL_LIBS. * Instance/objc.make (ALL_OBJC_LIBS): Do not include ALL_LIB_DIRS; pass that variable separately on the link command line for consistency with other project types. * Instance/palette.make (DEFAULT_NEEDS_GUI): Set to YES. (PALETTE_LIBS): When linking against all libs, use ALL_LIBS. (ALL_PALETTE_LIBS): Variable removed. Pass ALL_LIB_DIRS and PALETTE_LIBS directly on the linker command-line. * Instance/tool.make (DEFAULT_NEEDS_GUI): Set to NO. (ALL_TOOL_LIBS): Do not define; use directly ALL_LIB_DIRS and ALL_LIBS when linking. * target.make (BUNDLE_LINK_CMD): Replaced ALL_BUNDLE_LIBS with BUNDLE_LIBS and added ALL_LIB_DIRS which is no longer included in BUNDLE_LIBS. * Documentation/releasenotes.texi: Added xxx_NEEDS_GUI. * RELEASENOTES: Regenerated. 2008-01-19 Adam Fedor <fedor@gnu.org> * Master/source-distribution.make: Check for version directory when making export. 2008-01-17 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in (install): Install app-wrapper.template, java-executable.template and executable.template with execute permissions to stop warnings from package checking systems. From a suggestion by Gareth Armstrong <gareth.armstrong@hp.com>. * GNUmakefile.in (uninstall): Remove java-executable.template. 2008-01-17 Nicola Pero <nicola.pero@meta-innovation.com> * GNUstep.sh.in: Removed shebang expression '#! /bin/xxx' at the beginning of the file to stop package checking systems from complaining that this is an executable script installed with the wrong permissions (Problem reported by Gareth Armstrong <gareth.armstrong@hp.com>). * GNUstep.csh.in: Same change. * filesystem.sh.in: Same change. * filesystem.csh.in: Same change. * GNUstep-reset.sh: Same change. * ld_lib_path.sh: Same change. * ld_lib_path.csh: Same change. 2008-01-17 Nicola Pero <nicola.pero@meta-innovation.com> * FilesystemLayouts/fhs-system (GNUSTEP_SYSTEM_DOC_MAN): Changed from /man to /share/man. (GNUSTEP_SYSTEM_DOC_INFO): Changed from /info to /share/info (Patch by Gareth Armstrong <gareth.armstrong@hp.com>). * FilesystemLayouts/fhs-system (GNUSTEP_NETWORK_DOC_MAN, GNUSTEP_NETWORK_DOC_INFO, GNUSTEP_LOCAL_DOC_MAN, GNUSTEP_LOCAL_DOC_INFO): Similar changes * FilesystemLayouts/fhs: Similar changes. 2008-01-17 Nicola Pero <nicola.pero@meta-innovation.com> * target.make (SHARED_LIB_LINK_CMD, OBJ_MERGE_CMD): Updated for hpux (Patch by Rashmi <rashhegde@gmail.com> with modifications). 2008-01-15 Nicola Pero <nicola.pero@meta-innovation.com> * GNUstep-strict-v2.conf.in: New file which is a "strict gnustep-make v2" version of GNUstep.conf.in, with all the obsolete v1 variables removed. * configure.ac: Create GNUstep-strict-v2.conf file from GNUstep-strict-v2.conf.in. * configure: Regenerated. * GNUmakefile.in: Install GNUstep-strict-v2.conf as configuration file instead of GNUstep.conf when running in strict v2 mode. * GNUmakefile.in (all): Updated message, mentioning that you need to type 'make install' to install. (install): Updated message for installing manpages mentioning that we are compressing them on the fly. 2008-01-14 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in: Disable built-in suffixes and vague % rules for performance. * GNUstep.csh.in: Fixed typo in line that sources GNUSTEP_USER_CONFIG_FILE. 2008-01-14 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: New option --enable-strict-v2-mode that can be used when debugging/upgrading makefiles and software to test that they do not rely on obsolete/deprecated gnustep-make v1 variables. Define GNUSTEP_MAKE_STRICT_V2_MODE when the option is set. * configure: Regenerated. * config-noarch.make.in, GNUstep.sh.in, GNUstep.csh.in (GNUSTEP_MAKE_STRICT_V2_MODE): New variable, set from the --enable-strict-v2-mode config option. * GNUmakefile.in: If special_prefix is used and we are in strict v2 mode, abort with an error. * GNUstep.sh.in: When in strict v2 mode, never export GNUSTEP_*_ROOT, GNUSTEP_FLATTENED and GNUSTEP_PATHLIST; instead actively unset them if they are set in the environment. Export GNUSTEP_IS_FLATTENED, LIBRARY_COMBO and GNUSTEP_HOST_* only if GNUSTEP_SH_EXPORT_ALL_VARIABLES is set. * GNUstep.csh.in: When in strict v2 mode, never setenv any of the GNUSTEP_*_ROOT, GNUSTEP_FLATTENED, GNUSTEP_PATHLIST, GNUSTEP_IS_FLATTENED, LIBRARY_COMBO and GNUSTEP_HOST_* variables; unset them if they are set in the environment. * config-noarch.make.in: When in strict v2 mode, do not define GNUSTEP_*_ROOT, GNUSTEP_USER_DIR and GNUSTEP_FLATTENED. * GNUstep-reset.sh: Unset GNUSTEP_MAKE_STRICT_V2_MODE for safety. * common.make: In strict v2 mode do not define GNUSTEP_DOCUMENTATION, GNUSTEP_DOCUMENTATION_MAN and GNUSTEP_DOCUMENTATION_INFO. In strict v2 mode, abort with an error if INSTALL_ROOT_DIR or GNUSTEP_INSTALLATION_DIR is set. Print an info line if strict v2 mode is turned on. 2008-01-14 Nicola Pero <nicola.pero@meta-innovation.com> * GNUstep.sh.in: Dropped sourcing user GNUSTEP_USER_ROOT/GNUstep.sh at the end of the script. The location of the file is no longer meaningfully defined in gnustep-make v2 so we'd need a new mechanism to define a new location, but the feature looks generally obsolete/pointless in gnustep-make v2 so we'd rather drop it. If you have a custom shell script you want to source at start up, you can simply add it in your shell init script before or after sourcing GNUstep.sh. If you are trying to customize the filesystem or environment, you need to customize your layout or config files so that your changes are detected by gnustep-base as well as gnustep-make. * GNUstep.csh.in: Same change. * Documentation/releasenotes.texi: Document the change. * RELEASENOTES: Regenerated. 2008-01-14 Nicola Pero <nicola.pero@meta-innovation.com> * GNUstep.csh.in: At the end of the script unset GNUSTEP_SYSTEM_WEB_APPS, GNUSTEP_LOCAL_WEB_APPS, GNUSTEP_NETWORK_WEB_APPS, GNUSTEP_USER_WEB_APPS. 2008-01-14 Nicola Pero <nicola.pero@meta-innovation.com> * GNUstep.sh.in (GNUSTEP_KEEP_CONFIG_FILE, GNUSTEP_KEEP_USER_CONFIG_FILE): New variables used to remember if GNUSTEP_CONFIG_FILE and GNUSTEP_USER_CONFIG_FILE were already set in the environment by the user or if we set them in the script; use them to decide if we need to keep them at the end of the script, or unset them. (GNUSTEP_USER_DEFAULTS_DIR): Unset or export this variable as required. * GNUstep.csh.in: Similar changes. 2008-01-14 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Clearly explain in the help that --with-user-dir is an obsolete option in gnustep-make v2. Print a warning if it used, and otherwise ignore it. * configure: Regenerated. * gnustep-config.in: Updated help removing mention of GNUSTEP_USER_DIR. * GNUstep.sh.in: Unset GNUSTEP_USER_DIR after using it. * GNUstep.csh.in: Same change. 2008-01-14 Nicola Pero <nicola.pero@meta-innovation.com> * GNUstep.sh.in: Unset GNUSTEP_SYSTEM_USERS_DIR, GNUSTEP_LOCAL_USERS_DIR, GNUSTEP_NETWORK_USERS_DIR at the end, or export them if GNUSTEP_SH_EXPORT_ALL_VARIABLES if set. * GNUstep.csh.in: Unset the same variables at the end. 2008-01-14 Nicola Pero <nicola.pero@meta-innovation.com> * filesystem.sh.in: Fixed typo which was causing GNUSTEP_USER_DIR_WEB_APPS not to be removed from the environment. 2008-01-09 Nicola Pero <nicola.pero@meta-innovation.com> * relative_path.sh: Added optional third parameter to specify whether 'strict' or 'short' output is required. Default to 'strict' so that the configuration system works. * Instance/application.make: Use 'short' option to relative_path.sh to get more compact paths. * Instance/framework.make: Same change. 2008-01-09 Nicola Pero <nicola.pero@meta-innovation.com> * config.make.in (LN_S_RECURSIVE): New variable. * Instance/application.make: Use it when symlinking a directory. * Instance/framework.make: Same changes. 2008-01-08 Adam Fedor <fedor@gnu.org> * Version 2.0.4 (on stable branch). 2008-01-03 Richard Frith-Macdonald <rfm@gnu.org> * relative_path.sh: Revert previous change as it broke the use of relative paths within the configuration system ... critical for ms-windows systems where relative paths are used by default! 2008-01-01 Adam Fedor <fedor@gnu.org> * Version 2.0.3 (on stable branch). 2007-12-30 Adam Fedor <fedor@gnu.org> * Documentation/README.Darwin: Update for compiling with Apple gcc. 2007-12-26 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/debugapp.1: Minor updates. * Documentation/gnustep-config.1: Same. * Documentation/openapp.1: Same. * Documentation/opentool.1: Same. * Documentation/library-combo.7: Same. 2007-12-26 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in (install): Install the new debugapp.1, gnustep-config.1, opentool.1 and library-combo.7 manpages. (uninstall): Uninstall them. (uninstall): Remove mandir, mandir/man1, mandir/man7, tooldir and GNUSTEP_CONFIG_FILE_DIR if empty. 2007-12-26 Dennis Leeuw <dleeuw@made-it.com> * Documentation/debugapp.1: New file. * Documentation/gnustep-config.1: New file. * Documentation/opentool.1: New file. * Documentation/library-combo.7: New file. * Documentation/openapp.1: Rewritten. * Documentation/GNUstep.7: Rewritten. 2007-12-20 Adam Fedor <fedor@gnu.org> * Master/nsis.make: Generalize to install in other than Applications. * Master/rules.make: Remove nsis include for now * nsi-app.template, Documentation/make.texi: updates. 2007-12-20 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Emit a warning if GNUSTEP_MAKEFILES contains a space. * configure: Regenerated. 2007-12-20 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac (GNUSTEP_PREFIX): Removed double-quoting around `...` expression on the right-hand side of assignment. It is unnecessary and seems to be adding additional unwanted quotes on netbsd. * openapp.in: Similar changes. * opentool.in: Similar changes. * GNUstep.sh.in: Similar changes. * configure: Regenerated. * GNUmakefile.in: Quote most paths in shell expressions. * openapp.in: Similar changes. 2007-12-17 Adam Fedor <fedor@gnu.org> * nsi-app.template, Master/nsis.make, Documenation/make.texi, GNUmakefile.in: Add automatic NSIS Windows installer script generator. 2007-12-17 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in (uninstall): Remove filesystem.make and GNUstep.conf. 2007-12-17 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in (install): Always install the manpages included in the Documentation directory; they don't need building. (uninstall): Uninstall them. * Documentation/GNUmakefile (after-install): Do not install the manpages. (after-uninstall): Do not uninstall them. 2007-12-15 Nicola Pero <nicola.pero@meta-innovation.com> Rewritten config-precomp-test to work when the build directory is separate from the source directory. * config-precomp-test/run-test.sh: Updated to allow a separate build directory; more pervasive quoting of paths and filenames. * config-precomp-test/config-precomp-test.h: Renamed from gs_precomp_test.h. * config-precomp-test/config-precomp-test.m: Renamed from gs_precomp_test.m. Updated include for header filename change. * GNUmakefile.in (distclean): Updated deleting config-precomp-test files. * configure.ac: Updated the way config-precomp-test/run-test.sh is executed. * configure: Regenerated. 2007-12-15 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in (distclean): Remove config-precomp-test/gs_precomp_test.h.gch and config-precomp-test/a.out. 2007-12-12 Hubert Chathi <uhoreg@debian.org> * relative_path.sh: Fixed check for start of string so that we output '../xxx' instead of the clumsy './../xxx'. 2007-12-12 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in (install): Fixed installation when a separate source dir is used. (Patch by Hubert Chathi <uhoreg@debian.org> with modifications). 2007-11-08 Adam Fedor <fedor@gnu.org> * Mark for Version 2.0.2 (on stable branch) 2007-10-31 David Ayers <ayers@fsfe.org> * rules.make: Implement ADDITIONAL_NATIVE_LIB_DIRS. * Documentation/make.texi: Document ADDITIONAL_NATIVE_LIB_DIRS. 2007-10-30 Adam Fedor <fedor@gnu.org> * Update license to GPL 3 * gnustep-make.spec.in: Change Copyright to License. 2007-09-13 Fred Kiefer <FredKiefer@gmx.de> * openapp.in: Add linebreak at end of file. 2007-07-13 Nicola Pero <nicola.pero@meta-innovation.com> * {Everything}: Fixed copyright notices to tell the user they can read the full text of the GNU GPL in the COPYING file. The old notices were telling users to read the COPYING.LIB file which does not exist. 2007-06-15 Adam Fedor <fedor@gnu.org> * Documentation/userfaq.texi: Update. 2007-06-13 Chris Farber <chris@chrisfarber.net> * Documentation/README.Darwin: Minor updates and corrections. 2007-05-23 Adam Fedor <fedor@gnu.org> * Mark for Version 2.0.1 (on stable branch) 2007-05-12 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: When checking for the custom ObjC runtime library, check in Network and Local as well as System. * configure: Regenerated. 2007-05-11 Richard Frith-Macdonald <rfm@gnu.org> * common.make: correct the os/architecture specific header directory for non-flattened compilation. Needs to be a subdirectory of the library-combo directory and wasn't. 2007-05-02 Nicola Pero <nicola.pero@meta-innovation.com> * FilesystemLayouts/fhs-system: Added missing xxx_WEB_APPS variables (Reported by Stefan Bidigaray <stefanbidi@gmail.com>). Fixed xxx_APPS variables to use 'Applications' and not 'Apps'. 2007-05-01 Nicola Pero <nicola.pero@meta-innovation.com> * FilesystemLayouts/gnustep (GNUSTEP_USER_DIR_DOC, GNUSTEP_USER_DIR_DOC_INFO, GNUSTEP_USER_DIR_DOC_MAN): Added the Library part of the path which was missing. * FilesystemLayouts/gnustep-with-network: Same changes. * FilesystemLayouts/fhs-system: Same changes. * FilesystemLayouts/fhs: Same changes. * FilesystemLayouts/mac: Same changes. 2007-04-18 Nicola Pero <nicola.pero@meta-innovation.com> Fixed installing headers of a framework's subproject when the framework has the default version (Problem reported by David Wetzel <dave@turbocat.de>). * Master/rules.make (%.variables): Fixed default framework version used to copy headers from subprojects to frameworks. (%.subprojects): Same change. * Documentation/releasenotes.texi: Fixed documentation on the new default framework resource version. * RELEASENOTES: Same change. 2007-04-13 Adam Fedor <fedor@gnu.org> * Version 2.0.0 (Updated) * Version: Revert reversion number * RELEASENOTES: Add to top dir 2007-04-12 Adam Fedor <fedor@gnu.org> * Version: Bump version to 2.1.0 2007-04-12 Adam Fedor <fedor@gnu.org> * Version 2.0.0 2007-04-12 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/news.texi: More updates. * Documentation/releasenotes.texi: Added release notes for gnustep-make version 2. 2007-04-12 David Ayers <ayers@fsfe.org> * GNUstep-reset.sh (INFOPATH): Correct INFOPATH cleanup variable. 2007-04-11 Adam Fedor <fedor@gnu.org> * Version: Bump version number to 2.0.0 * Documentation/news.texi: Update * Documentation/releasenotes.texi: New file * Regenerate release files. 2007-04-10 Nicola Pero <nicola.pero@meta-innovation.com> Fixed help messages for debugapp to display 'debugapp' instead of 'openapp' as program name. * openapp.in: Use $0 instead of openapp as program name in help messages. In the help message mention that debugapp is equivalent to openapp --debug. * debugapp: Use source, not exec, to pass control to openapp while still preserving $0. (openapp_debug_mode): Set this variable to turn on debug mode inside openapp. * Documentation/DESIGN: Mention that this is mostly a historical document now. 2007-04-10 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/framework.make (xxx.framework/GNUSTEP_TARGET_LDIR/xxx): Fixed typo removing symlinks before symlinking - it was causing compilation to fail in certain conditions (Problem reported by David Ayers <ayers@fsfe.org>). 2007-03-30 Nicola Pero <nicola.pero@meta-innovation.com> * FilesystemLayouts/mac: Updated (Suggestions by Tim McIntosh <tmcintos@avalon.net>, plus moved the Network domain before the Local one). 2007-03-21 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/README.MinGW: Warn people not to install libxslt (Reported by Xavier Glattard <xavier.glattard@online.fr> and Christopher Armstrong <carmstrong@fastmail.com.au>). 2007-03-17 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/gnustep-howto.texi: Updated. In particular: removed all references to obsolete GNUSTEP_SYSTEM_ROOT, mention the existence of various filesystem layouts and of the new setup options, and updated explanations of how to checkout the source code. * Documentation/machines.texi (RedHat/Intel): Renamed to 'RedHat/i386'; marked as 'Supported' and added some doc. (CentOS/i386): New section. (FedoraCore/i386): New section. 2007-03-17 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/make.texi: Changed the basic example to use tool.make instead of objc.make. Updated some comments. (Directory Paths): Updated documentation; in particular, documented GNUSTEP_ADMIN_APPS, GNUSTEP_WEB_APPS, GNUSTEP_ADMIN_TOOLS, GNUSTEP_LIBRARY, GNUSTEP_DOC, GNUSTEP_DOC_MAN, GNUSTEP_DOC_INFO. 2007-03-17 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Added -shared-libgcc when linking with ObjC exceptions (Suggestion from Andrew Pinski). * common.make (INTERNAL_LDFLAGS): Same change. * configure: Regenerated. 2007-03-16 Nicola Pero <nicola.pero@meta-innovation.com> Implemented rebuilding Info-gnustep.plist when xxxInfo.plist is changed (and palette.table from xxxpalette.table for palettes). For applications, automated detecting xxxInfo.cplist and preprocessing it, so that xxx_PREPROCESS_INFO_PLIST in GNUmakefiles is now obsolete and can be removed. * Instance/application.make (GNUSTEP_PLIST_DEPEND): Automatically add xxxInfo.plist if the file is there; if not, automatically add xxxInfo.cplist if there. Removed xxx_PREPROCESS_INFO_PLIST. * Instance/bundle.make: Have Info-gnustep.plist automatically depend on xxxInfo.plist if it exists. * Instance/framework.make: Same change. * Instance/gswapp.make: Same change. * Instance/service.make: Same change. * Instance/palette.make Have Info-gnustep.plist automatically depend on xxxInfo.plist if it exists, and palette.table automatically depend on xxxpalette.table if it exists. * Instance/framework.make (FRAMEWORK_INFO_PLIST_FILE): New variable fixing the fact that frameworks on gnu-gnu-gnu were creating Info.plist instead of Info-gnustep.plist. * Instance/service.make: Fixed rules to only cat xxxInfo.plist if it exists. Print a warning if it doesn't, as services need to have one to be useful. * Version: bumped to 1.98.2. 2007-03-16 Xavier Glattard <xavier.glattard@online.fr> * configure.ac (CYGWIN): Set to no on MinGW. * configure: Regenerated. 2007-03-15 Chris Vetter <chris.vetter@gmail.com> * mac: New filesystem layout (comments at the top of the file edited by Nicola). 2007-03-15 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Added -fexceptions as well when trying the ObjC exception test program. Restore CFLAGS and LIBS after the ObjC exception test. * configure: Regenerated. * common.make (OBJCFLAGS, INTERNAL_LDFLAGS): Add -fexceptions when ObjC exceptions are enabled. 2007-03-13 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/framework.make (CURRENT_VERSION_NAME): If no CURRENT_VERSION_NAME is set, use INTERFACE_VERSION for it (instead of 'A'), so that by default the shared object and the resources follow a similar versioning (can still be configured, as before, to have separated versioning). * Master/rules.make (%.variables, %.subprojects): Corresponding update. 2007-03-13 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/framework.make (GNUSTEP_BUILD_DIR/GNUSTEP_INSTANCE.framework/GNUSTEP_TARGET_LDIR): New rule to create the directory when non-flattened. (GNUSTEP_BUILD_DIR/GNUSTEP_INSTANCE.framework/GNUSTEP_TARGET_LDIR/GNUSTEP_INSTANCE): Depend on the new rule; use REL_PATH_SCRIPT to compute correct symlink when non-flattened. 2007-03-13 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/resource-set.make (RESOURCE_FILES_DIR): New variable. ($(RESOURCE_FILES_INSTALL_DIR)): Added missing CHOWN. (LOCALIZED_RESOURCE_DIRS): New variable; implemented rules to support it. (internal-resource_set-install_): Create the LOCALIZED_RESOURCE_DIRS if needed. Use 'cp -rf' instead of INSTALL_DATA to install RESOURCE_FILES and LOCALIZED_RESOURCE_FILES so that directories can be used as well. Do a final CHOWN to fixup ownership of all the installed stuff. ($(RESOURCE_FILES_INSTALL_DIR)/%): Do a CHOWN. 2007-03-09 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/library.make: Changed resource installation directory structure to be very similar to the one used for frameworks. Might be helpful in the future. 2007-03-09 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/Shared/bundle.make: Internal shared bundle install variables have been reorganized to support library resources with versioning. (shared-instance-bundle-install): Rewritten for changes. (shared-instance-bundle-copy_into_dir): Same change. (shared-instance-bundle-uninstall): Same change. * Instance/application.make: Updated GNUSTEP_SHARED_BUNDLE_xxx variables to work with the new stuff. * Instance/bundle.make: Same change. * Instance/gswapp.make: Same change. * Instance/palette.make: Same change. * Instance/service.make: Same change. * Instance/tool.make: Same change. * Instance/library.make: Implemented xxx_HAS_RESOURCE_BUNDLE for libraries -- including versioned resources. 2007-03-09 Nicola Pero <nicola.pero@meta-innovation.com> Implemented versioning of Microsoft Windows DLLs. Every DLL now has got the interface version in their name, and applications are linked to a DLL including the interface version. * Instance/library.make (INTERFACE_VERSION): Compute even if building DLLs, using the same rules used on other platforms. (LIB_LINK_DLL_FILE): Include the INTERFACE_VERSION in the name. * Instance/framework.make (LIB_LINK_DLL_FILE): Same change. 2007-03-08 Nicola Pero <nicola.pero@meta-innovation.com> You can now start up applications on the command line by just using their name. Eg, 'Gorm'. To support this, we install a wrapper in the tools directory (which is in your PATH). * app-wrapper.template: New file. * GNUmakefile.in (install): Install app-wrapper.template. (uninstall): Uninstall it. * Instance/application.make ($(GNUSTEP_TOOLS), internal-install-app-wrapper, internal-uninstall-app-wrapper): New rules that install/uninstall app-wrapper.template into GNUSTEP_TOOLS with the name of the application. If symlinks are available, don't install a wrapper script but symlink directly the binary for maximum speed ('Gorm' will be much faster than 'openapp Gorm' in this situation). (internal-app-install_): Depend on internal-install-app-wrapper. (internal-app-uninstall_): Depend on internal-uninstall-app-wrapper. * Instance/application.make ($(APP_DIR)/$(GNUSTEP_INSTANCE)): Added missing CHOWN command. 2007-03-08 Nicola Pero <nicola.pero@meta-innovation.com> * GNUstep.csh.in: Fixed typo when setting up PATH (Reported by Wolfgang Lux <wolfgang.lux@gmail.com>). 2007-03-08 Sergii Stoian <stoyan255@gmail.com> * FilesystemLayouts/next: Change GNUSTEP_*_LIBRARIES to /GNULibrary instead of /GNUDeveloper. Change GNUSTEP_USER_CONFIG_FILE to Library/Preferences/GNUstep.conf. 2007-03-08 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/filesystem.texi: Update/rewrite complete. 2007-03-06 Nicola Pero <nicola.pero@meta-innovation.com> * FilesystemLayouts/gnustep (GNUSTEP_SYSTEM_USERS_DIR, GNUSTEP_NETWORK_USERS_DIR, GNUSTEP_LOCAL_USER_DIRS): New variables. * FilesystemLayouts/gnustep-with-network: Same changes. * FilesystemLayouts/fhs: Same changes. * FilesystemLayouts/fhs-system: Same changes. * FilesystemLayouts/next: Same changes. * GNUstep.conf.in: Same changes. * filesystem.make.in: Same changes. * filesystem.sh.in: Same changes. * filesystem.csh.in: Same changes. * GNUstep-reset.sh: Same changes. * configure.ac: Same changes. * configure: Regenerated. * FilesystemLayouts/gnustep: Moved network domain before local domain. * Version: bumped to 1.98.1. 2007-03-06 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/framework.make: When version support is enabled, build symlinks from top-level xxx.framework/TARGET_LDIR/xxx and xxx.framework/TARGET_LDIR/libxxx.so to the Current object files so that uninstalled frameworks can be linked by using -Lpath_to_framework/xxx.framework/$TARGET_LDIR. * Instance/framework.make: Use standard '=' assignment for variables. * Instance/framework.make: On Apple, if non-flattened, put the top-level symlinks into TARGET_LDIR. 2007-03-05 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Print the complete filesystem layout configuration. This helps in spotting bugs and incorrect configurations. * configure: Regenerated. 2007-03-05 Nicola Pero <nicola.pero@meta-innovation.com> Added GNUSTEP_WEB_APPS variable that can be used by GSWeb and SOPE to decide where to install their web applications. * common.make (GNUSTEP_WEB_APPS): New variable. * Instance/gswapp.make: Install into GNUSTEP_WEB_APPS by default. Define GNUSTEP_GSWAPPS in terms of GNUSTEP_WEB_APPS for backwards compatibility. * configure.ac (GNUSTEP_SYSTEM_WEB_APPS, GNUSTEP_LOCAL_WEB_APPS, GNUSTEP_NETWORK_WEB_APPS, GNUSTEP_USER_DIR_WEB_APPS): New variables; read them from filesystem layout files, output them. * configure: Regenerated. * FilesystemLayouts/gnustep (GNUSTEP_SYSTEM_WEB_APPS, GNUSTEP_LOCAL_WEB_APPS, GNUSTEP_NETWORK_WEB_APPS, GNUSTEP_USER_DIR_WEB_APPS): New variables. * FilesystemLayouts/gnustep-with-network: Same change. * FilesystemLayouts/fhs: Same change. * FilesystemLayouts/next: Same change. * filesystem.make.in: Same change. * filesystem.sh.in: Same change. * filesystem.csh.in: Same change. * GNUstep.conf.in: Same change. * GNUstep-reset.sh: Same change. * GNUstep.sh.in: Same change. 2007-03-05 Nicola Pero <nicola.pero@meta-innovation.com> * FilesystemLayouts/fhs (GNUSTEP_SYSTEM_APPS, GNUSTEP_LOCAL_APPS, GNUSTEP_NETWORK_APPS, GNUSTEP_USER_DIR_APPS): Use 'Applications', not 'Apps', for the filesystem location. * FilesystemLayouts/gnustep-with-network: Moved Network variables before Local ones. * filesystem.make.in: Same change. * filesystem.sh.in: Same change. * filesystem.csh.in: Same change. * GNUstep-reset.sh: Same change. * filesystem.make.in (GNUSTEP_USER_ADMIN_APPS, GNUSTEP_USER_ADMIN_TOOLS): Set these variables. * filesystem.make.in: Fixed typo in definition of GNUSTEP_SYSTEM_ADMIN_APPS. 2007-03-05 Adam Fedor <fedor@gnu.org> * configure.ac, config.make.in: Add check for latex2html * Instance/documentation/latex.html: Use it. 2007-03-02 Nicola Pero <nicola.pero@meta-innovation.com> * FilesystemLayouts/mingw: File removed. * FilesystemLayouts/windows: File removed. * FilesystemLayouts/README: Do not mention the removed layouts. * configure.ac: Do not use 'windows' filesystem layout on mingw32; the default filesystem layout is fine. * configure: Regenerated. * Documentation/README.MinGW: Updated. * Instance/application.make (ALL_LDFLAGS): Add -mwindows when building applications on MinGW, to get rid of the ugly terminal window when you start the apps directly by double-clicking on the .exe file in the Windows file manager. * Documentation/filesystem.texi: Updated the section on Windows. 2007-02-29 Richard Frith-Macdonald <rfm@gnu.org> * relative_path.sh: Fix for the case where the two arguments are identical paths. 2007-02-29 Richard Frith-Macdonald <rfm@gnu.org> * common.make: Fixup -I (when in non-flattened mode) to use the generic library combo subdirectory as well as the full machine/os specific version. 2007-02-28 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: On MinGW, install the config file in /etc/GNUstep/GNUstep.conf. * configure: Regenerated. * FilesystemLayouts/mingw: New layout. * Documentation/README.MinGW: Updated, including instructions to prepare standalone binary applications that can be shipped to end-users (experimental). 2007-02-26 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/filesystem.texi: Updated the first half of the document for relocatable filesystem layouts. Second half still to do. * FilesystemLayouts/gnustep-with-network: New layout. * FilesystemLayouts/README: Fixed name of gnustep filesystem layout. 2007-02-26 Nicola Pero <nicola.pero@meta-innovation.com> * gnustep-config.in: Updated help for the change of variable names from GNUSTEP_SYSTEM_DOCUMENTATION to GNUSTEP_SYSTEM_DOC. 2007-02-26 Graham Lee <leeg@thaesofereode.info> * gnustep-config.in: Bugfix to a test which stopped '--help' from working. 2007-02-26 Nicola Pero <nicola.pero@meta-innovation.com> tcsh 6.12 has a 30 char limit on variable names, so GNUSTEP_SYSTEM_DOCUMENTATION_MAN has been renamed to GNUSTEP_SYSTEM_DOC_MAN (and similar consistent changes to all variables everywhere). * filesystem.csh.in: Use GNUSTEP_SYSTEM_DOC instead of GNUSTEP_SYSTEM_DOCUMENTATION, GNUSTEP_SYSTEM_DOC_MAN instead of GNUSTEP_SYSTEM_DOCUMENTATION_MAN, GNUSTEP_SYSTEM_DOC_INFO instead of GNUSTEP_SYSTEM_DOCUMENTATION_INFO (and similar changes to all other DOCUMENTATION variables). * filesystem.sh.in: Same change. * configure.ac: Same change. * FilesystemLayouts/fhs: Same change. * FilesystemLayouts/fhs-system: Same change. * FilesystemLayouts/gnustep: Same change. * FilesystemLayouts/windows: Same change. * FilesystemLayouts/next: Same change. * GNUstep.csh.in: Same change. * Instance/documentation.make: Same change. * Instance/Documentation/javadoc.make: Same change. * Instance/Documentation/autogsdoc.make: Same change. * Instance/Documentation/install_files.make: Same change. * Instance/Documentation/texi.make: Same change. * Instance/Documentation/latex.make: Same change. * Instance/Documentation/gsdoc.make: Same change. * GNUstep-reset.sh: Same change. * GNUstep.sh.in: Same change. * filesystem.make.in: Same change. * Documentation/GNUmakefile: Same change. * GNUstep.conf.in: Same change. * common.make: Same change. * common.make: For backwards compatibility in user GNUmakefiles define GNUSTEP_DOCUMENTATION, GNUSTEP_DOCUMENTATION_MAN and GNUSTEP_DOCUMENTATION_INFO to be the same as GNUSTEP_DOC, GNUSTEP_DOC_MAN and GNUSTEP_DOC_INFO. * configure: Regenerated. 2007-02-20 Nicola Pero <nicola.pero@meta-innovation.com> * create_domain_dir_tree.sh: File removed. * Documentation/make.texi: File updated. 2007-02-19 Nicola Pero <nicola.pero@meta-innovation.com> * gnustep-config.in: Check that we are given a valid option and print an error message if not. Extended --help. Use --variable=xxx syntax to print variables to make the syntax more similar to pkg-config's one. Redirect stderr to /dev/null when running make. Only print the variable value if not empty. 2007-02-19 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: By default, do not import an existing configuration file. In most cases, this is now an annoyance rather than a convenience as it overrides the --prefix=xxx and --with-layout=yyy options. * configure: Regenerated. 2007-02-19 David Ayers <ayers@fsfe.org> * GNUmakefile.in (uninstall:): Remove print_unique_pathlist.sh, filesystem.sh, filesystem.csh and gnustep-config. Remove GNUSTEP_TARGET_LDIR. Reorder removed directories according to reverse order of installation. Only remove existing directories. Remove obsolete comment. * common.make (TRANSFORM_PATHS_SCRIPT): Remove obsolete variable. 2007-02-19 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/install.texi: Rewritten large parts to describe the new installation and configuration process. * INSTALL: Regenerated. 2007-02-18 Nicola Pero <nicola.pero@meta-innovation.com> * config-noarch.make.in: Removed the deprecation warnings added earlier today, because in some situations they seem to be triggered spuriously (Reported by Fred Kiefer). 2007-02-18 Nicola Pero <nicola.pero@meta-innovation.com> * rules.make (.PHONY): Added declaration of new print-gnustep-make-* targets as PHONY. 2007-02-18 Nicola Pero <nicola.pero@meta-innovation.com> * empty.make: Added file that was missing in past commit. 2007-02-18 Nicola Pero <nicola.pero@meta-innovation.com> Updated rpm building code, and removed separate debug packages. * GNUmakefile.in (MAKE_FILES): Removed spec-debug-rules.template. * spec-debug-rules.template: File removed. * Master/rpm.make (internal-after-install): Use DESTDIR instead of INSTALL_ROOT_DIR. Enhanced sed expression to only remove DESTDIR from the beginning of paths. ($(PACKAGE_NAME)-debug.spec.in): Rule removed. ($(SPEC_FILE)): Do not set %gs_root. Set %gs_install_domain instead of %gs_install_dir. Set %gs_makefiles. Do not append '-debug' to name for no longer existing debug packages. Do not set Prefix: or requires:. Removed special variable settings for debug packages. * spec-rules.template: Check GNUSTEP_MAKEFILES, not GNUSTEP_SYSTEM_ROOT. Use %{gs_makefiles} to locate GNUstep.sh. When running configure, do not use --prefix. Use GNUSTEP_INSTALLATION_DOMAIN and not GNUSTEP_INSTALLATION_DIR when installing. 2007-02-18 Nicola Pero <nicola.pero@meta-innovation.com> * config-noarch.make.in: Print a deprecation warning if any of the GNUSTEP_SYSTEM_ROOT, GNUSTEP_LOCAL_ROOT, GNUSTEP_NETWORK_ROOT, GNUSTEP_USER_ROOT variables is used. * config-noarch.make.in (GNUSTEP_FLATTENED): Print a deprecation warning if the variable GNUSTEP_FLATTENED is used. * common.make (INSTALL_ROOT_DIR): Print a deprecation warning if the variable INSTALL_ROOT_DIR is used. 2007-02-18 Graham J Lee <leeg@thaesofereode.info> * FilesystemLayouts/next: New file. 2007-02-17 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/tool.make (GNUSTEP_SHARED_BUNDLE_INSTALL_DIR): Install tool resources in GNUSTEP_LIBRARY/Tools/Resources. ($(GNUSTEP_LIBRARY)/Tools): Build this directory instead of $(TOOL_INSTALL_DIR)/Resources. (internal-tool-install_): Depend on the new rule instead of the old one. 2007-02-17 Nicola Pero <nicola.pero@meta-innovation.com> * common.make: Added new flag quiet=yes that disables the gnustep-make version message. * configure.ac: Output GNUMAKE value. * configure: Regenerated. * empty.make: New file. * GNUmakefile.in: Install it. * rules.make (print-gnustep-make-objc-flags, print-gnustep-make-objc-libs, print-gnustep-make-base-libs, print-gnustep-make-gui-libs): New targets. * gnustep-config.in: New options --objc-flags, --objc-libs, --base-libs, --gui-libs that output the flags used for basic ObjC compilation and linking on the current platform. 2007-02-16 Nicola Pero <nicola.pero@meta-innovation.com> Added GNUSTEP_ADMIN_APPS and GNUSTEP_ADMIN_TOOLS. * common.make: Added GNUSTEP_ADMIN_APPS and GNUSTEP_ADMIN_TOOLS. * filesystem.sh.in: Added GNUSTEP_*_ADMIN_APPS and GNUSTEP_*_ADMIN_TOOLS. * filesystem.csh.in: Same changes. * filesystem.make.in: Same changes. * GNUstep.config.in: Same changes. * configure.ac: Same changes. * configure: Regenerated. * create_domain_dir_tree.sh: Create the Applications/Admin and Tools/Admin/GNUSTEP_TARGET_LDIR directories. * GNUstep.sh.in: Add each GNUSTEP_*_ADMIN_TOOLS path to PATH, but only if we are administrators. Unset/export GNUSTEP_*_ADMIN_APPS and GNUSTEP_*_ADMIN_TOOLS dirs at the end. * GNUstep.csh.in: Same changes. * GNUstep-reset.sh: Unset GNUSTEP_*_ADMIN_APPS and GNUSTEP_*_ADMIN_TOOLS variables. * openapp.in: Search for the application in the Admin Apps directories as well, but only if we are an Administrator. * FilesystemLayouts/gnustep: Added GNUSTEP_*_ADMIN_APPS and GNUSTEP_*_ADMIN_TOOLS. * FilesystemLayouts/fhs: Same changes. * FilesystemLayouts/fhs-system: Same changes. * FilesystemLayouts/windows: Same changes. 2007-02-16 Adam Fedor <fedor@gnu.org> * Instance/Documentation/latex.make: Revert adding extension. 2007-02-16 Nicola Pero <nicola.pero@meta-innovation.com> * filesystem.csh.in: Fixed typo (GNUSTEP_SYSTEM_ROOT instead of GNUSTEP_SYSTEM_APPS). * configure.ac: Updated comments avoiding references to GNUSTEP_SYSTEM_ROOT. * configure: Regenerated. 2007-02-16 Adam Fedor <fedor@gnu.org> * Instance/Documentation/latex.make: Add correct extension to target. Filter out 'no' when getting LATEX2HMTL exec. * Instance/palette.make: Link with all libs even on darwin. * target.make (darwin): Use gnu runtime as test for gnu compilation. (Based on suggestions from Yves de Champlain). 2007-02-16 Nicola Pero <nicola.pero@meta-innovation.com> Renamed --with-layout=linux option to --with-layout=fhs. * FilesystemLayouts/fhs: New file replacing FilesystemLayouts/linux. Also, fixed all comments. * FilesystemLayouts/fhs-system: New file replacing FilesystemLayouts/linux-system. Also, fixed all comments. * FilesystemLayouts/README: Corresponding updates. * configure.ac: Updated to mention 'fhs' layout, not 'linux'. * configure: Regenerated. (Suggestion from Yavor Doganov <yavor@doganov.org>) 2007-02-16 Nicola Pero <nicola.pero@meta-innovation.com> Completed implementation of customizable filesystem layouts (including FHS). ./configure --with-layout=linux will give you the FHS layout (experimental). Check the FilesystemLayouts directory to create your own layout or to check for more options. This is experimental, use it at your risk and make sure you do not mess up your system directories while testing. ;-) * configure.ac: Added --with-layout=xxx option. Import appropriate layout configuration. Rewritten management of prefix. Disable importing config file if an explicit layout is specified. Ignore --with-system-root, --with-local-root and --with-network-root but print a warning if they are used. Updated user domain settings code. Updated makefiles settings code. Removed hardcoded filesystem layout. Added backwards compatibility output of GNUSTEP_*_ROOT. Updated flattened checks to use the GNUSTEP_IS_FLATTENED variable. * configure: Regenerated. * FilesystemLayouts: New directory. * FilesystemLayouts/README: New file. * FilesystemLayouts/gnustep: New file. * FilesystemLayouts/linux: New file. * FilesystemLayouts/linux-system: New file. * FilesystemLayouts/windows: New file. * GNUmakefile.in: Do not define GNUSTEP_*_ROOT. Updated tooldir definition. Do not create system domain hierarchy; create the system tools directory instead. Do not delete the makefiles directory after creating it. Commented out installation of config.site file that needs reviewing. Use override when defining GNUSTEP_* variables. * common.make: Updated warning when GNUSTEP_SYSTEM_TOOLS is not found in PATH. * gnustep-config.in: Fixed help message. * relative_path.sh: Fixed situation when the second argument is a subdirectory of the first one. * GNUstep.conf.in: Updated comments. Moved NETWORK domain before LOCAL domain. * Version: bumped to 1.98.0. 2007-02-15 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac (GNUSTEP_SYSTEM_HEADERS, GNUSTEP_NETWORK_HEADERS, GNUSTEP_LOCAL_HEADERS, GNUSTEP_USER_HEADERS): Changed not to contain LIBRARY_COMBO for the non-flattened case. This will allow you to use the same configuration file across multiple library-combos. Updates to rest of the code for this change. * common.make (GNUSTEP_HEADERS): Updated to add LIBRARY_COMBO at this stage (if needed). * configure: Regenerated. 2007-02-15 Nicola Pero <nicola.pero@meta-innovation.com> * executable.template.in (full_appname): Fixed typo. 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * executable.template.in: Updated for new filesystem structure. Always source GNUstep.sh. Removed code to iterate over Applications directories or PATH; removed code to do a separate computation of GNUSTEP_HOST_*. Enhanced switching of library combos on the fly. Other minor fixes. 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * GNUstep-reset.sh: Unset GNUSTEP_USER_DIR_* variables as well just for extra security. 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * gnustep-make.spec.in: Updated description and comments. 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Redirect all error logging for the non-essential gcc and make tests to &5 (which goes into config.log). If they go wrong, the user will see 'no' in the specific feature that is being tested, and can into config.log to check why they failed. * configure: Regenerated. 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/java-tool.make: Store Java code in the standard GNUSTEP_JAVA location instead of a subdirectory of GNUSTEP_TOOLS. * java-executable.template: Corresponding update. Simplify and update by sourcing GNUstep.sh. 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * gnustep-config.in: Extended help to list all the new filesystem variables. 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac (GNUSTEP_USER_DIR_LIBRARIES): Fixed definition. Use GNUSTEP_SYSTEM_HEADERS and GNUSTEP_SYSTEM_LIBRARIES rather than GNUSTEP_SYSTEM_ROOT/Library/Headers and GNUSTEP_SYSTEM_ROOT/Library/Libraries. * configure: Regenerated. * ld_lib_path.sh: Removed the optional argument. Updated to new filesystem support. * ld_lib_path.csh: Same changes. 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * common.make (LD_LIB_PATH_SCRIPT): Unused variable removed. 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in (install): Fixed installation of debugapp. It was installed with wrong permissions in the wrong directory (Reported by Fred Kiefer <fredkiefer@gmx.de>). 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/resource-set.make (RESOURCE_FILES_INSTALL_DIR): Only use xxx_RESOURCE_FILES_INSTALL_DIR if xxx_INSTALL_DIR is not set. In this way, GNUmakefiles that need to be backwards compatible can set both the old and the new variable, and work both with old and new gnustep-makes. * common.make: Emit a deprecation warning is GNUSTEP_INSTALLATION_DIR is used. 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * filesystem.sh.in: Unset all GNUSTEP_USER_DIR_* variables after using them. * GNUmakefile.in: Install print_unique_pathlist.sh. * print_unique_pathlist.sh: New file. * GNUstep.sh.in: Updated for new filesystem support. * GNUstep.csh.in: Updated for new filesystem support. Use unsetenv consistently for all the filesystem variables. * filesystem.csh.in: Use setenv/unsetenv for all variables for consistency with the config files. 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * common.make: Moved top-level PATH sanity check at the end of the file. In the check, use GNUSTEP_SYSTEM_TOOLS instead of GNUSTEP_SYSTEM_ROOT/Tools. Avoid the check on Cygwin where paths need conversion. 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/framework.make ($(DUMMY_FRAMEWORK_FILE)): Return the real complete installation path into +frameworkPath; return nil into +frameworkEnv. These methods are currently unused, but future versions of gnustep-base might read +frameworkPath to have a better chance of finding the framework on disk. * GNUstep.conf.in: Use a single '#' for comments, not two ('##'). 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * target.make (TARGET_LIB_DIR): (MacOS-Server 1.0, OpenStep 4.x): Variable removed. Use GNUSTEP_LIBRARIES instead to get the same effect. 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in (install): Install GNUstep.sh, GNUstep.csh, filesystem.sh, filesystem.csh, ld_lib_path.sh, ld_lib_path.csh as non-executables as they are to be sourced, not executed (Suggestion from Richard). 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * GNUstep.conf.in (GNUSTEP_MAKEFILES): New variable. * GNUstep.csh.in: By default, set GNUSTEP_MAKEFILES to the configure default if not set. * GNUstep.sh.in: Same change. * gnustep-config.in: Same change. * openapp.in: Updated to use new filesystem config. * opentool.in: Updated to use new filesystem config; also, remove unused check for empty GNUSTEP_MAKEFILES after GNUstep.sh has been sourced. 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in (distclean): Remove GNUstep.conf. Do not remove GNUsteprc. (generated-files): Added GNUstep.conf. (GNUstep.conf): New rule to regenerate it. * GNUstep.conf.in: Added all the new filesystem options with explanations on what they mean. 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com> Warning: the software will be unstable for some time. Don't upgrade from trunk if you need stability. * configure.ac: Set default values for GNUSTEP_SYSTEM_TOOLS, GNUSTEP_SYSTEM_APPS, GNUSTEP_SYSTEM_LIBRARY, etc. variables and export them. Create filesystem.make, filesystem.sh and filesystem.csh. * configure: Regenerated. * filesystem.make: Moved into filesystem.make.in. * filesystem.make.in: All variables: get them from configure defaults if not set so that GNUSTEP_*_ROOT are never needed or referenced. Made GNUSTEP_*_RESOURCES and GNUSTEP_*_JAVA fixed subdirs of GNUSTEP_*_LIBRARY. For all directories in the user domain, prefix them with GNUSTEP_HOME if they seem relative. * filesystem.sh: Moved into filesystem.sh.in. * filesystem.sh.in: Same changes as filesystem.make.in. * filesystem.csh.in: New file * GNUmakefile.in (install): Install filesystem.csh (filesystem.make): Added rule to rebuild it. (filesystem.sh): Added rule to rebuild it. (filesystem.csh): Added rule to rebuild it. (distclean): Remove the filesystem.* files. (generated-files): Add filesystem.make, filesystem.sh, filesystem.csh. * GNUstep.sh.in: Do not unset or export GNUSTEP_*_RESOURCES and GNUSTEP_*_JAVA. * GNUstep.csh.in: Source filesystem.csh.in; at the end unset all variables set there. 2007-02-14 Nicola Pero <nicola.pero@meta-innovation.com>, * GNUstep.csh.in: Fixed bug in setting GUILE_LOAD_PATH. 2007-02-13 Adam Fedor <fedor@gnu.org>, Nicola Pero <nicola.pero@meta-innovation.com>, * configure.ac: Check for gmake and gnumake, and use it instead of make if it is found. * configure: Regenerated. 2007-02-13 Adam Fedor <fedor@gnu.org> * configure.ac: Disable SHARED_SOLARIS on solaris2.[67]. Use redirect to /dev/null rather than grep -q (due to non-Posix grep on many OSs). * Documentation/machines.texi: Update * Documentation/README.Darwin: Update. 2007-02-13 Nicola Pero <nicola.pero@meta-innovation.com> * filesystem.sh: New file. * GNUmakefile.in: Install the new file. * GNUstep.sh.in: Source the new file. At the end, export all of the new filesystem variables if GNUSTEP_SH_EXPORT_ALL_VARIABLES is set, or unset them all in the normal situation. * gnustep-config.in: Use GNUSTEP_SH_EXPORT_ALL_VARIABLES to access the filesystem variables too. 2007-02-13 Nicola Pero <nicola.pero@meta-innovation.com> * filesystem.make: Fixed standard subdirectories of Library to reduce the amount of config options to only the ones that will actually be used. 2007-02-13 Nicola Pero <nicola.pero@meta-innovation.com> * common.make: Rewritten code that builds the -I, -L and -F flags to use the new filesystem variables. 2007-02-13 Nicola Pero <nicola.pero@meta-innovation.com>, Matt Rice <ratmice@gmail.com>, * GNUmakefile.in (MAKE_FILES): Added filesystem.make. * filesystem.make: New file. * common.make: Include the new file. Rewritten code that determines the installation directories. Use the information from filesystem.make when required. 2007-02-13 Nicola Pero <nicola.pero@meta-innovation.com> * Master/rules.make (internal-check-install-permissions): Only use this rule if GNUSTEP_INSTALLATION_DIR is set. * Instance/gswbundle.make (GSWBUNDLE_INSTALL_DIR): Set it by default to GNUSTEP_LIBRARIES, which is the same as GNUSTEP_INSTALLATION_DIR/Library/Libraries in the traditional filesystem but will work with the new filesystem too. 2007-02-12 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in (GNUSTEP_FLATTENED): Obsolete variable removed. 2007-02-12 Nicola Pero <nicola.pero@meta-innovation.com> * Version: Set to 1.14.0 which really means 'unstable version after 1.13.0 but before the next stable version'. 2007-02-12 Nicola Pero <nicola.pero@meta-innovation.com> * gnustep-make-help: New file. * GNUmakefile.in (MAKE_FILES): Added gnustep-make-help. * rules.make (print-gnustep-make-help): New target that prints gnustep-make-help. * common.make: Mention the new target in the version message. 2007-02-12 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Added check for $(info ...) function in GNU make. * configure: Regenerated. * config.make.in: Added MAKE_WITH_INFO_FUNCTION variable. * common.make: If we have the info function, use it to print the version number on the top-level invocation. 2007-02-12 Nicola Pero <nicola.pero@meta-innovation.com>, Matt Rice <ratmice@gmail.com> This change in the API is needed for resource-set.make to work with the new filesystem layouts. * Instance/resource-set.make (xxx_INSTALL_DIR): New variable that should replace xxx_RESOURCE_FILES_INSTALL_DIR. Recognize the new variable; emit a warning if the old variable is used (but still use it). Install by default into GNUSTEP_RESOURCES/GNUSTEP_INSTANCE if nothing is set. 2007-02-12 Nicola Pero <nicola.pero@meta-innovation.com> * gnustep-config.in: Fixed help message. 2007-02-12 Nicola Pero <nicola.pero@meta-innovation.com> * common.make: Export GNUSTEP_MAKEFILES so that if it is computed by the user GNUmakefile, the computation is done only once at top-level. 2007-02-12 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in (distclean): Remove gnustep-config. (generated-files): Added gnustep-config. (gnustep-config): New rule to rebuild it when changed. 2007-02-12 Nicola Pero <nicola.pero@meta-innovation.com> * gnustep-config.sh.in: Removed. * gnustep-config.in: Added. * GNUmakefile.in: Install gnustep-config, not gnustep-config.sh. * configure.ac: Create gnustep-config, not gnustep-config.sh. * configure: Regenerated 2007-02-11 Nicola Pero <nicola.pero@meta-innovation.com> * gnustep-config.sh.in (GNUSTEP_MAKEFILES): If we are asked for GNUSTEP_MAKEFILES, print it out and exit. 2007-02-11 Matt Rice <ratmice@gmail.com> * gnustep-config.sh.in: exit early for --help. 2007-02-11 Nicola Pero <nicola.pero@meta-innovation.com>, Matt Rice <ratmice@gmail.com> * gnustep-config.sh.in: New file. * configure.ac: Added gnustep-config.sh * configure: Regenerated. * GNUmakefile.in: Install gnustep-config.sh in system Tools, which is guaranteed to be in PATH. 2007-01-25 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/GNUmakefile: Fixed 'regenerate' target when you invoke it without gnustep-make being installed. * Documentation/make.texi: Updated to talk about GNUSTEP_INSTALLATION_DOMAIN, not GNUSTEP_INSTALLATION_DIR. 2007-01-23 Matt Rice <ratmice@gmail.com> * rules.make (ALL_CCFLAGS): Fix typo. 2007-01-22 Nicola Pero <nicola.pero@meta-innovation.com> Fixed precompiled headers when -I. is early in the compile command line. * rules.make (ALL_OBJCFLAGS): Added OBJC_PRECOMPILED_HEADERS_INCLUDE_FLAGS at the beginning. (ALL_CFLAGS, ALLCCFLAGS, ALL_OBJCCFLAGS): Similar changes. * Instance/rules.make: Add the -I commands to find the precompiled header to the new C_PRECOMPILED_HEADERS_INCLUDE_FLAGS, OBJC_PRECOMPILED_HEADERS_INCLUDE_FLAGS, CC_PRECOMPILED_HEADERS_INCLUDE_FLAGS, OBJCC_PRECOMPILED_HEADERS_INCLUDE_FLAGS variables instead of ADDITIONAL_INCLUDE_DIRS. 2007-01-16 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac (GS_WITH_PRECOMPILED_HEADERS): Set to 'no' when precompiled headers are not available. * rules.make: Compare GS_WITH_PRECOMPILED_HEADERS explicitly to 'yes'. * Instance/rules.make: Same change. * configure: Regenerated. 2007-01-16 Nicola Pero <nicola.pero@meta-innovation.com> * config-precomp-test: New directory * config-precomp-test/gs_precomp_test.h, config-precomp-test/gs_precomp_test.m, config-precomp-test/run-test.sh: New test for ObjC precompiled headers to properly detect if they work or not. * configure.ac: Run the new test to determine if ObjC precompiled headers work or not. * configure: Regenerated. * GNUmakefile.in (distclean): Remove config-precomp-test.log; also remove multiple files in a go for speed. 2007-01-16 Nicola Pero <nicola.pero@meta-innovation.com> * rules.make ($(GNUSTEP_OBJ_DIR)/PrecompiledHeaders/C/): do not depend on GNUSTEP_OBJ_DIR; build that dir automatically if needed. Similar for the other similar rules. * Instance/rules.make (.PHONY): Added internal-precompile-headers. 2007-01-16 Nicola Pero <nicola.pero@meta-innovation.com> Implemented precompiled headers support. To use them to speed up the compilation of your project, create a main header that you include at the top of each file in your project, then add it to xxx_OBJC_PRECOMPILED_HEADERS and it will automatically be precompiled on platforms that support it. * messages.make (ECHO_PRECOMPILING): New message. * rules.make: New rules to build precompiled headers directory and files. * Instance/rules.make (internal-$(GNUSTEP_TYPE)-all): depend on internal-precompile-headers (xxx_C_PRECOMPILED_HEADERS, xxx_OBJC_PRECOMPILED_HEADERS, xxx_CC_PRECOMPILED_HEADERS, xxx_OBJCC_PRECOMPILED_HEADERS): New variables. (internal-precompile-headers): New rule set to depend on precompiling the precompiled headers, if any. Also, add the precompiled headers directory to ADDITIONAL_INCLUDE_DIRS if the compiler supports precompiled headers and they are being used. 2007-01-16 Nicola Pero <nicola.pero@meta-innovation.com> * configure.ac: Separate out checking gcc version and the test for the Solaris -shared link flag; print out separate messages for the results of these tests to help debugging. Determine the minor version as well as the major version of gcc. Added new test for precompiled headers. * config.make.in: Added GCC_WITH_PRECOMPILED_HEADERS variable. * configure: Regenerated. 2007-01-14 Richard Frith-Macdonald <rfm@gnu.org> * Master/source-distribution.make: Add svn-tag-stable to make tag for stable release in standard format. 2007-01-09 Matt Rice <ratmice@gmail.com> * GNUstep.csh.in: Fixed typo in GUILE_LOAD_PATH. 2007-01-09 Matt Rice <ratmice@gmail.com> * GNUstep.sh.in: Rename variable/fix paste error. 2007-01-09 Nicola Pero <nicola.pero@meta-innovation.com> * GNUstep.sh.in: Update some internal names to make equivalent code in different sections more similar. Added a ':' at the end of INFOPATH. * GNUstep.csh.in: Similar changes. * GNUstep-reset.sh: Swapped order of resets of some variables to conform to comments. 2007-01-09 Matt Rice <ratmice@gmail.com> * GNUstep.sh.in: Set INFOPATH so that info files created and installed by gnustep-make in xxx/Library/info can be found by info documentation readers. * GNUstep.csh.in: Same change. * GNUstep-reset.sh: Reset INFOPATH. 2007-01-07 Matt Rice <ratmice@gmail.com>, Nicola Pero <nicola.pero@meta-innovation.com> * Instance/ctool.make (internal-ctool-all_): Depend on OBJ_FILES_TO_LINK, and link OBJ_FILES_TO_LINK. This makes sure that C++ files, Windres files, and any other object files normally supported can be used with ctools. 2006-12-28 Richard Frith-Macdonald <rfm@gnu.org> * Master/source-distribution.make: add 'svn-bugfix' target to make a bugfix release. 2006-12-05 Richard Frith-Macdonald <rfm@gnu.org> * GNUmakefile.in: Add target for snapshot. 2006-11-16 Richard Frith-Macdonald <rfm@gnu.org> * target.make: fix typo (extra bracket in conditional). 2006-11-15 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/install.texi: Updated by removing section about -Wno-import. * INSTALL: Regenerated. 2006-11-15 Nicola Pero <nicola.pero@meta-innovation.com> * common.make (INSTALL_ROOT_DIR): If DESTDIR is set, then set INSTALL_ROOT_DIR from it. * spec-rules.template: Use DESTDIR instead of INSTALL_ROOT_DIR. * spec-debug-rules.template: Same change. 2006-10-29 Richard Frith-Macdonald <rfm@gnu.org> * common.make: Disable warnings about #import as it is now recommended rather then deprecated! * INSTALL: Remove obsolete commments about #import 2006-10-25 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: Added test for Solaris -shared flag. * configure: Regenerated * config.make.in: Added SOLARIS_SHARED variable. * target.make: For Solaris replace -G with -shared in SHARED_LIB_LINK_CMD to fix bug on 64bit systems where library would contain 32bit dynamic library stubs for 'main' and other functions, causing runtime failure of all code linked with it. 2006-10-11 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/machines.texi (Debian/PowerPC): Fixed prev node link. 2006-10-11 Nicola Pero <nicola.pero@meta-innovation.com> * GNUmakefile.in (install): Fixed installation of debugapp when building in a different directory. 2006-10-11 Nicola Pero <nicola.pero@meta-innovation.com> * Documentation/GNUmakefile (GNUSTEP_INSTALLATION_DOMAIN): Use GNUSTEP_INSTALLATION_DOMAIN, not GNUSTEP_INSTALLATION_DIR. 2006-10-10 Nicola Pero <nicola.pero@meta-innovation.com> To install software in a certain GNUstep domain, the recommended way is now as in 'GNUSTEP_INSTALLATION_DOMAIN = SYSTEM'. * common.make: Implemented new GNUSTEP_INSTALLATION_DOMAIN variable. * Master/rules.make (internal-check-install-permissions): Removed help message that was suggesting to use GNUSTEP_INSTALLATION_DIR. 2006-10-07 Nicola Pero <nicola.pero@meta-innovation.com> * common.make: Add DESTDIR only on the very topmost invocation. 2006-10-06 Richard Frith-Macdonald <rfm@gnu.org> * Documentation/machines.texi: Mention that Debian/em64t works and is supported, and that Solaris 9 also works. 2006-10-06 Nicola Pero <nicola.pero@meta-innovation.com> Implemented DESTDIR as per GNU Coding Standards. * common.make (GNUSTEP_INSTALLATION_DIR): if a DESTDIR is defined, prefix GNUSTEP_INSTALLATION_DIR with it. 2006-10-03 Nicola Pero <nicola.pero@meta-innovation.com> Removed support for library_paths.openapp. It was not available in any common setups, so almost nobody could use it anyway. * Instance/application.make ($(APP_FILE)): Do not create library_paths.openapp. * Instance/gswapp.make (GSWAPP_FILE): Same change. * executable.template.in: Removed library_paths.openapp code. * ld_lib_path.sh: Removed additional_library_paths and additional_framework_paths code. * ld_lib_path.csh: Same changes. * transform_paths.sh: File removed. * GNUmakefile.in (install): Do not install transform_paths.sh (uninstall): Do not uninstall it. 2006-10-03 Nicola Pero <nicola.pero@meta-innovation.com> Merged debugapp and openapp. Now there is a single script, openapp, with a --debug option to use gdb. * openapp.in: Merged all the code from debugapp.in into it. Added --debug, --library-combo=..., --gdb=... options. Extended --find option. Rewritten large parts of it. * debugapp.in: File removed. * debugapp: New backwards-compatibility file so you can still run 'debugapp Gorm'; it wraps openapp, so 'debugapp Gorm' simply does 'openapp --debug Gorm'. * configure.ac: Do not create debugapp. * configure: Regenerated. * GNUmakefile.in (distclean): Do not remove debugapp on distclean. (generated-files): Removed debugapp. (debugapp): Rule removed. 2006-10-02 Nicola Pero <nicola.pero@meta-innovation.com> * target.make (SHARED_LIB_LINK_CMD, all targets): Use an '&&' between the link command and the commands to create the symlinks so that an error during link will abort compilation rather than fail silently. 2006-10-02 Nicola Pero <nicola.pero@meta-innovation.com> All checks for GNUSTEP_FLATTENED should be updated to check the new variable GNUSTEP_IS_FLATTENED instead, and to compare it explicitly to 'yes' and 'no', and assume that '' means 'yes'. * configure.ac: New variable GNUSTEP_IS_FLATTENED that is 'yes' when flattened, and 'no' when not. * configure: Regenerated. * config-noarch.make.in: Added GNUSTEP_IS_FLATTENED. * GNUmakefile.in: Same change. * GNUstep-reset.sh: Same change. * GNUstep.csh.in: Same change. * GNUstep.sh.in: Same change. * config.site: Updated checks for GNUSTEP_FLATTENED to check GNUSTEP_IS_FLATTENED instead. * common.make: Same change. * debugapp.in: Same change. * GNUmakefile.in: Same change. * GNUstep.csh.in: Same change. * GNUstep.sh.in: Same change. * ld_lib_path.csh: Same change. * ld_lib_path.sh: Same change. * openapp.in: Same change. * opentool.in: Same change. * rules.make: Same change. * Master/application.make: Same change. * Master/gswapp.make: Same change. * Master/palette.make: Same change. * Master/service.make: Same change. * Master/test-application.make: Same change. * Instance/application.make: Same change. 2006-10-01 Adam Fedor <fedor@gnu.org> * config.guess, config.sub: Update to latest version. 2006-09-28 Nicola Pero <nicola.pero@meta-innovation.com> * move_obsolete_paths.sh: File removed (this time for real!). 2006-09-28 Nicola Pero <nicola.pero@meta-innovation.com> 'make install special_prefix=xxx' should be replaced by 'make install DESTDIR=xxx'. * GNUmakefile.in (DESTDIR): New variable that replaces special_prefix and complies with the GNU Coding Standards. (special_prefix): If a special_prefix is specified, use it but emit a warning that it is now deprecated. * gnustep-make.spec.in: Updated to use DESTDIR instead of special_prefix. 2006-09-25 Nicola Pero <nicola.pero@meta-innovation.com> * Master/source-distribution.make: Use TAR everywhere instead of hardcoded tar (Patch by BALATON Zoltan <balaton@eik.bme.hu>). 2006-09-20 Nicola Pero <nicola.pero@meta-innovation.com> By default compile everything with debug=yes. To get the traditional behaviour, please use 'make debug=no'. * common.make (debug): Turn on debug by default. 2006-09-19 Nicola Pero <nicola.pero@meta-innovation.com> * Master/subproject.make (internal-distclean): Do nothing. (internal-clean): Remove 'Resources' directory on 'clean' too. * Master/tool.make (internal-distclean): Do nothing. (internal-clean): Removed 'Resources' directory on 'clean'. * Instance/subproject.make (GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH): Added GNUSTEP_BUILD_DIR. * Instance/tool.make (GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH): Added GNUSTEP_BUILD_DIR. * Master/subproject.make (.PHONY): Removed build-headers. 2006-09-19 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/framework.make (UPDATE_CURRENT_SYMLINK_RULE): Removed phone update-symlink-rule target that was being executed at every make, and replaced with a rule to build the symlink which is not executed if the symlink is there already. (.PHONY): Removed update-symlink-rule. 2006-09-19 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/framework.make: Removed warnings for CURRENT_VERSION_NAME and xxx_TOOLS that were removed 4 years ago. 2006-09-19 Nicola Pero <nicola.pero@meta-innovation.com> * Master/rules.make (INTERNAL_$${type}_NAME, TARGET): Variables removed; they were deprecated on Jan 2002. 2006-09-19 Nicola Pero <nicola.pero@meta-innovation.com> * rules.make (GNUSTEP_CONFIG_FILE, GNUSTEP_USER_CONFIG_FILE): Added empty rules to prevent make wasting time trying to rebuild config files using implicit rules. * Master/rules.make (.PHONY): Added build-headers, before-build-headers, after-build-headers. * Instance/framework.make (.PHONY): Added declaration of phony targets. 2006-09-19 Nicola Pero <nicola.pero@meta-innovation.com> * rules.make (config.make): Fixed syntax error in conditional that was causing the rule for config.make to be never read. Implemented an actual rule for it that prints an error and exits if the file can't be found. 2006-09-18 Nicola Pero <nicola.pero@meta-innovation.com> Separated out global config from platform-specific config. * GNUmakefile.in: Include config-noarch.make before config.make. (install): Install config-noarch.make. (uninstall): Uninstall config-noarch.make. (distclean): Remove config-noarch.make. (generated-files): Added config-noarch.make. (config.make): Do not depend on Version. (config-noarch.make): New rule to build config-noarch.make from config-noarch.make.in. * config-noarch.make.in: New file created from the bits of config.make.in that are global and don't depend on the platform. * config.make.in: Removed global bits. * configure.ac (AC_CONFIG_FILES): Added config-noarch.make. * configure: Regenerated. * common.make: Include config-noarch.make before names.make. * common.make: Fixed inclusion of names.make that should follow the definition of CONFIG_GUESS_SCRIPT etc. * common.make: Include library-combo.make before config.make else the library-combo directory can't be found. * common.make (GNUSTEP_MAKEFILES): Do not waste time trying to set if not set. GNUSTEP_MAKEFILES must be set, else nothing would work. 2006-09-13 Nicola Pero <nicola.pero@meta-innovation.com> * Master/rpm.make (before-install) If filelist=yes, depend on GNUSTEP_OBJ_DIR. * Master/source-distribution.make (dist): Always use our tar-exclude-list to avoid including CVS and .svn files in .tar.gz packages. 2006-09-13 Nicola Pero <nicola.pero@meta-innovation.com> * Master/rpm.make: Put the generated files (file-list, spec files) into GNUSTEP_OBJ_DIR. Use the same name for both debug and non-debug spec files. Depend on GNUSTEP_OBJ_DIR being created before the files. (internal-distclean): Rule removed. The generated files are now in GNUSTEP_OBJ_DIR and so are automatically deleted on make clean. * Master/rpm.make (specfile): Set gs_file_list variable in the spec file. Renamed FILE_LIST to GNUSTEP_FILE_LIST to protect it from collisions with user makefiles. * spec-rules.template: Replaced hardcoded file-list name with gs_file_list variable. * spec-debug-rules.template: Same change. 2006-09-13 Nicola Pero <nicola.pero@meta-innovation.com> * Master/clibrary.make (internal-clean): Do nothing if there are no PSWRAP_C_FILES or PSWRAP_H_FILES to remove. * Master/library.make (internal-clean): Same change. * Master/subproject.make (internal-clean): Same change. * Master/test-library.make (internal-clean): Same change. * Master/rules.make (internal-distclean): Do not remove 'core'. (PACKAGE_NAME): Use normal assignement. 2006-09-13 Nicola Pero <nicola.pero@meta-innovation.com> * setlocaltz.sh: Obsolete file removed. 2006-09-13 Nicola Pero <nicola.pero@meta-innovation.com> * Master/application.make (internal-clean): Do not remove obj (already done in Master/rules.make). * Master/bundle.make (internal-clean): Same change. * Master/clibrary.make (internal-clean): Same change. * Master/ctool.make (internal-clean): Same change. * Master/gswapp.make (internal-clean): Same change. * Master/gswbundle.make (internal-clean): Same change. * Master/library.make (internal-clean): Same change. * Master/objc.make (internal-clean): Same change. * Master/palette.make (internal-clean): Same change. * Master/service.make (internal-clean): Same change. * Master/subproject.make (internal-clean): Same change. * Master/test-application.make (internal-clean): Same change. * Master/test-library.make (internal-clean): Same change. * Master/test-tool.make (internal-clean): Same change. * Master/tool.make (internal-clean): Same change. * Instance/framework.make (internal-framework-clean): Same change. 2006-09-13 Nicola Pero <nicola.pero@meta-innovation.com> * Master/application.make (internal-distclean): Do not remove obj (already done by clean). Remove *.app only if not flattened, else do nothing because if we're flattened this is already done by clean. * Master/gswapp.make (internal-distclean): Do not remove obj and remove *.gswa only if non flattened, else do nothing. * Master/palette.make (internal-distclean): Do not remove obj and remove *.palette only if non flattened, else do nothing. * Master/service.make (internal-distclean): Do not remove obj and remove *.service only if non flattened, else do nothing. * Master/test-application.make (internal-distclean): Do not remove obj and remove *.app only if non flattened, else do nothing. * Master/bundle.make (internal-distclean): Do nothing. * Master/clibrary.make (internal-distclean): Do nothing. * Master/ctool.make (internal-distclean): Do nothing. * Master/gswbundle.make (internal-distclean): Do nothing. * Master/library.make (internal-distclean): Do nothing. * Master/objc.make (internal-distclean): Do nothing. * Master/palette.make (internal-distclean): Do nothing. * Master/subproject.make (internal-distclean): Do nothing. * Master/test-library.make (internal-distclean): Do nothing. * Master/test-tool.make (internal-distclean): Do nothing. * Master/tool.make (internal-distclean): Do nothing (still remove Resources if we have them though). * Instance/framework.make (internal-framework-distclean): Do nothing. 2006-09-13 Nicola Pero <nicola.pero@meta-innovation.com> * Master/source-distribution.make: Use ECHO_NOTHING and END_ECHO macros so that 'make messages=yes dist' and similar commands work properly. 2006-09-13 Nicola Pero <nicola.pero@meta-innovation.com> * Master/rpm.make: Always build a file list called 'file-list' Removed separate 'standalone=yes' case when building debug packages. Now they are always standalone. * spec-debug-rules.template: Removed code that built both debug and non-debug versions and computed differences in installed files. Simply build with debug=yes. * spec-debug-alone-rules.template: File removed. * GNUmakefile.in (MAKE_FILES): Removed spec-debug-alone-rules-template. * Master/rpm.make (internal-distclean): Added ECHO_NOTHING and END_ECHO macros so that 'make messages=yes rpm' works properly. * Master/rpm.make (specfile): If the xxx-debug.spec.in file is not found, try to use xxx.spec.in. 2006-09-12 Nicola Pero <nicola.pero@meta-innovation.com> All applications now use the '.app' extension no matter how they are compiled. So, no more Gorm.debug and Gorm.profile; it will always be Gorm.app. * common.make (APP_EXTENSION): Always use 'app' as the app extension. * Instance/gswapp.make (GSWAPP_EXTENSION): Always use 'gswa' as the app extension. * Master/gswapp.make (GSWAPP_EXTENSION): Same change. * Master/application.make (internal-distclean): Do not delete *.profile and *.debug. * Master/gswapp.make (internal-distclean): Same change. * Master/test-application.make (internal-distclean): Same change. * openapp.in: Do not search for xxx.debug and xxx.profile; only search for xxx.app. * openapp.in: If we find the application in '.', but we don't run it because '.' is not in the PATH, print an explanation/warning and suggest the user uses 'openapp ./xxx' if they really want to run it. 2006-09-08 Nicola Pero <nicola.pero@meta-innovation.com> Removed the code to automatically move from the very very old obsolete filesystem structure to the new one. * configure.ac (--disable-move-obsolete): Removed option. * configure: Regenerated. * GNUmakefile.in (move_obsolete): Target removed. (install): Do not depend on @GNUSTEP_MOVE_OBSOLETE@. * move_obsolete_paths.sh: File removed. * GNUmakefile.in (install): Depend directly on generated-files so we don't print the placeholder message used by 'all'. 2006-09-08 Nicola Pero <nicola.pero@meta-innovation.com> Object files are now all placed into ./obj rather than in separate directories (./shared_obj, ./shared_debug_obj, ./static_profile_obj, etc.). * common.make (OBJ_DIR_PREFIX): Variable removed. (GNUSTEP_OBJ_PREFIX): Variable removed. (GNUSTEP_OBJ_DIR_NAME): Hardcode 'obj' as the prefix of the directory name. * rules.make ($(GNUSTEP_OBJ_DIR)): Do not create the symlink from ./shared_obj to ./obj. Just create GNUSTEP_OBJ_DIR. * Master/application.make (internal-distclean): Only remove './obj', not the various './shared_obj', etc. * Master/bundle.make (internal-distclean): Same change. * Master/clibrary.make (internal-distclean): Same change. * Master/ctool.make (internal-distclean): Same change. * Master/gswapp.make (internal-distclean): Same change. * Master/gswbundle.make (internal-distclean): Same change. * Master/library.make (internal-distclean): Same change. * Master/objc.make (internal-distclean): Same change. * Master/palette.make (internal-distclean): Same change. * Master/service.make (internal-distclean): Same change. * Master/subproject.make (internal-distclean): Same change. * Master/test-application.make (internal-distclean): Same change. * Master/test-library.make (internal-distclean): Same change. * Master/test-tool.make (internal-distclean): Same change. * Master/tool.make (internal-distclean): Same change. * Instance/framework.make (internal-framework-distclean): Same change. 2006-09-08 Nicola Pero <nicola.pero@meta-innovation.com> * Instance/library.make: Removed all usages of LIBRARY_NAME_SUFFIX, no longer defined. 2006-09-08 Nicola Pero <nicola.pero@meta-innovation.com> * common.make: Removed '_s' library name suffix for static libraries. All libraries have the same name now! (WHICH_LIB_SCRIPT): Variable removed. * Instance/application.make (ALL_GUI_LIBS): Do not filter the libraries using which_lib. * Instance/bundle.make (ALL_BUNDLE_LIBS): Same change. * Instance/ctool.make (ALL_TOOL_LIBS): Same change. * Instance/framework.make (INTERNAL_LIBRARIES_DEPEND_UPON): Same change. * Instance/gswapp.make (ALL_GSW_LIBS): Same change. * Instance/gswbundle.make (GSWBUNDLE_INSTALL_DIR): Same change. * Instance/library.make (INTERNAL_LIBRARIES_DEPEND_UPON): Same change. * Instance/objc.make (ALL_OBJC_LIBS): Same change. * Instance/palette.make (ALL_PALETTE_LIBS): Same change. * Instance/service.make (ALL_SERVICE_LIBS): Same change. * Instance/tool.make (ALL_TOOL_LIBS): Same change. * Instance/palette.make: Removed duplicated (and commented out) code for using all libs on some systems. * GNUmakefile.in (all): Do not build which_lib. (which_lib$(EXEEXT)): Rule removed. (install): Do not install which_lib. (uninstall): Do not uninstall which_lib. (clean): Do not clean which_lib. * configure.ac: Removed all the 'Miscellaneous headers' config, which was only used when building which_lib.c (AC_CONFIG_HEADER): Removed. * configure: Regenerated. * config.h.in: Removed. * GNUmakefile.in (generated-files): Removed config.h (config.h): Removed rule. (all): Print a message so people are not confused when 'all' does nothing. * which_lib.c: File removed. 2006-09-07 Nicola Pero <nicola.pero@meta-innovation.com> * common.make: Removed 'p' library name suffix for profile libraries. The only remaining library name suffix is '_s' for static libraries. * which_lib.c: Don't search for profile libraries, also removed some other old code searching for debug ones. 2006-08-28 Adam Fedor <fedor@gnu.org> * Version 1.13.0 2006-08-24 Adam Fedor <fedor@gnu.org> * common.make: Remove 'd' suffix for debug libraries. * which_lib.c: Don't search for debug libraries in case there are old ones still around. * Documentation/news.texi: Update for new release. 2006-08-21 Adam Fedor <fedor@gnu.org> * target.make: Add dragonfly OS. * Documentation/machine.texi: Updates. 2006-07-29 10:51-EDT Gregory John Casamento <greg_casamento@yahoo.com> * configure: Changed "cp -p" to "cp -rp" to correct breakage when the file being linked is a directory. 2006-07-06 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: Prevent bad characters in paths * configure: regenerate * GNUstep.csh.in: remove use of obsolete substitutions * GNUstep.sh.in: ditto * GNUstep.conf.in: ditto The use of backslash or space characters in a path/filename can confuse make and shell scripts, so we check for them and prevent them from being specified at configure time and/or built in to scripts. Hopefully this will prevent much confusion on windows. 2006-07-05 Richard Frith-Macdonald <rfm@gnu.org> * GNUmakefile.in: install config.make in library combo specific directory so that non-flattened builds can pick up the correct config info for the library combo being used. * common.make: pick up config.make from new location * rules.make: know about new location for config.make 2006-06-14 Richard Frith-Macdonald <rfm@gnu.org> * common.make: determine host/target info before trying to load host/target specific configuration. 2006-05-01 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: Change --with... options specifying paths so that if someone oddly uses --without... we treat it as if they had specified nothing. 2006-04-26 Adam Fedor <fedor@gnu.org> * Documentation/gnustep-howto.texi: Fix node link 2006-04-26 Saso Kiselkov * common.make: Add option to turn on native exceptions. 2006-04-25 Adam Fedor <fedor@gnu.org> * Documentation/gnustep-howto.texi: Update windowmaker address 2006-04-07 Adam Fedor <fedor@gnu.org> * Documentation/README.MinGW: Correct typo in xml instructions. 2006-04-06 Adam Fedor <fedor@gnu.org> * config.make.in: Set GNUSTEP_HOME to $(HOME). Fix if statements with filter in them. Fixes bug #16010. 2006-03-27 Adam Fedor <fedor@gnu.org> * target.make (openbsd): Add additional link flags for bundle loading. Patch #4989 from Andrew Sveikauskas. 2006-03-27 Adam Fedor <fedor@gnu.org> * Master/source-distribution.make (svn-tag): Add comment line (svn-dist): Simplify checkout. * Master/framework.make: Add build-headers rules * GNUmakefile: Add special_prefix to GNUSTEP_MAKEFILES 2006-03-17 Richard Frith-Macdonald <rfm@gnu.org> * Documentation/README.MinGW: Attempt to clarify versions to be used. 2006-03-13 Adam Fedor <fedor@gnu.org> * Version 1.12.0 2006-03-09 Adam Fedor <fedor@gnu.org> * target.make (openbsd): Add specific EXTACT_CLASS_NAMES_COMMAND. Patch #4957 from Andrew Sveikauskas. 2006-03-07 Jeremy Bettis <jeremy@deadbeef.com> * Instance/framework.make: Only copy headers if they changed. Delete framework.dll if the compile fails. * Instance/subproject.make: Only copy headers if they changed * Master/framework.make: make $(FRAMEWORK_NAME:=.all.framework.variables) depend on $(FRAMEWORK_NAME:=.build-headers.framework.variables), sometimes the copying of header files would happen too late. * target.make: Added -Wl,--enable-auto-image-base to link command for shared libs & bundles on mingw32. 2006-02-23 Adam Fedor <fedor@gnu.org> * Master/source-distribution.make: Add svn tag/dist rules * Documentation/userfaq.texi: updates. 2006-01-11 Richard Frith-Macdonald <rfm@gnu.org> * Documentation/README.MinGW: Update with information on libxml2 2006-01-05 Adam Fedor <fedor@gnu.org> * Instance/bundle.make: Always link agains all libs when using Apple's CC. 2006-01-01 Richard Frith-Macdonald <rfm@gnu.org> * openapp.in: Remove IFS setting and search again ... it prevented windows paths from working (which was why it was removed in the first place). Also removed insertion of '.' as a path to search ... since this is generally considered a security flaw. Removed some code to search in odd subdirectories. Added code to search the directories specified in PATH as well as the standard locations. Does this need a different path separator on mingw? Can't remember and I don't currently have a windows system to test on. 2005-12-30 Adam Fedor <fedor@gnu.org> * openapp.in: Re-add IFS setting and search in current dir (Fixes Bug #15289). 2005-12-21 Adam Fedor <fedor@gnu.org> * Version 1.11.2 2005-12-20 Adam Fedor <fedor@gnu.org> * configure.ac: Check for objc-gnu in the GNUstep libraries dir. * Instance/bundle.make: Always link againt all libs on darwin. 2005-12-20 Adam Fedor <fedor@gnu.org> * configure.ac: Don't strip -g from CFLAGS. Someone might want it without using debug=yes. 2005-12-06 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: On mingw32, if we don't get the config file location from an earlier installatioin or a command line option, use /c/GNUstep/GNUstep.conf-dev ... assuming a development version rather than a version for distribution. * target.m: add -SystemStubs to bundle libraries on MacOS-X tiger ... as linking of stdio functions seems to fail otherwise. 2005-12-05 Richard Frith-Macdonald <rfm@gnu.org> * Documentation/filesystem.texi: Initial attempt at adding documentation on how the filesystem layout is controlled by the GNUstep config file. 2005-12-05 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Display a message with the GNUSTEP_MAKEFILES that is used. In psychological preparation for when it will actually be configurable. ;-) * configure: Regenerated. 2005-12-05 Nicola Pero <n.pero@mi.flashnet.it> * Instance/library.make (internal-library-uninstall_): Fixed uninstallation of dll on windows. (Suggested by Frode <frode@bredband.net>). 2005-12-02 Richard Frith-Macdonald <rfm@gnu.org> * opentool.in: * openapp.in: * config.make.in: Honor the GNUSTEP_CONFIG_FILE environment variable. 2005-11-28 Richard Frith-Macdonald <rfm@gnu.org> * GNUstep.conf.in: Use new variables for handling backslashes in paths. * GNUstep.csh.in: ditto * GNUstep.sh.in: ditto * GNUmakefile.in: Quote paths when we use them .. to avoid backslashes being removed when they should be present in the path. * configure.ac: Always make GNUSTEP_MAKEFILES the Library/Makefiles subdirectory of the system root. Create new variables containing escaped backslashes to handle being given a backslash in a path. * configure: regenerate 2005-11-21 Richard Frith-Macdonald <rfm@gnu.org> * opentool.in: * openapp.in: Changed to use new GNUstep.conf configuration file to obtain the directories to search. 2005-10-28 Richard Frith-Macdonald <rfm@gnu.org> * configure.ac: Set up a sensible default location for GNUstep.conf on mingw32 systems (C:\GNUstep\GNUstep.conf). * configure: ditto 2005-10-27 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Standardized the format of option help, and also written fairly complete help on each and every option. * configure: Regenerated. 2005-10-26 Nicola Pero <n.pero@mi.flashnet.it> * common.make: Removed checks for GNUSTEP_*_ROOT variables top-level, they are now automatically and always set by config.make, no need to check for them here in the new system. 2005-10-26 Nicola Pero <n.pero@mi.flashnet.it> * Master/rules.make: Rewritten code that determines if this the top-level make invocation (in order to have the dependencies install: check-install-permissions all, and distclean: clean top-level), so that it also works when gnustep-make is invoked from within a makefile itself (this fixes 'make distclean' in gnustep-make's own Documentation/GNUmakefile). * common.make: Updated similar checks. 2005-10-26 Nicola Pero <n.pero@mi.flashnet.it> * Documentation/GNUmakefile: Updated commands to create temporary gnustep-make installation. Also, do not source GNUstep.sh but rely just on passing GNUSTEP_MAKEFILES on the make command line. 2005-10-26 Nicola Pero <n.pero@mi.flashnet.it> * GNUmakefile.in (install): Fixed installing GNUstep.conf when the build directory is different from the source directory. 2005-10-23 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Fixed error in the documentation of --with-user-config-file option. * configure: Regenerated. 2005-10-23 Nicola Pero <n.pero@mi.flashnet.it> * config.make.in: Removed code to compute GNUSTEP_HOST, GNUSTEP_HOST_CPU, etc, when in GNUSTEP_MULTI_PLATFORM mode -- this is already done by names.make later. 2005-10-23 Nicola Pero <n.pero@mi.flashnet.it> This change is key to no longer having to source GNUstep.sh when compiling stuff using gnustep-make. Please understand this is all very experimental so don't upgrade yet if you need stability. * config.make.in (GNUSTEP_CONFIG_FILE): Read configuration files directly and get all required information from there; only GNUSTEP_MAKEFILES is assumed to be set. * common.make: Include config.make first because until we include that one, we can no longer assume anything. 2005-10-23 Nicola Pero <n.pero@mi.flashnet.it> * which_lib.c (search_for_lib_with_suffix_and_ext): Enhanced changes to make the code simpler and easier to understand and avoid duplicate checks for static libs. Needs testing. 2005-10-23 Richard Frith-Macdonald <rfm@gnu.org> * which_lib.c: Tidied a little on lines suggested by David Ayers * configure.ac: Check for ctype.h * configure: regenerate * config.h.in: regenerate 2005-10-23 Jeremy Bettis * configure.ac: * rules.make: * target.make: Use install -p so that doing a make install doesn't change the timestamp on all the headers and cause everything to need rebuilt. Don't create the obj dir (symlink) on mingw. Add -Wl,--enable-auto-import to link commands to make the compiler be quiet. * which_lib.c: Fixes to support other library types on mingw. Patches applied and edited to conform to GNUstep coding standard. 2005-10-20 Adam Fedor <fedor@gnu.org> * config.make.in (GNUSTEP_CONFIG_FILE): Correct capitaliztion of substitution variable. 2005-10-19 Nicola Pero <n.pero@mi.flashnet.it> * config.guess: Updated to latest version. * config.sub: Idem. 2005-10-18 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Make sure that --prefix=xxx takes precedence over paths read from GNUstep.conf or inherited from the environment. * configure: Regenerated. 2005-10-17 Adam Fedor <fedor@gnu.org> * target.make (netbsd): Remove static libs version of netbsd target and make (netbsdelf) work for all netbsd versions. * clean_os.sh: Don't clean netbsd targets. Fixes Bug #14635. 2005-10-14 Nicola Pero <n.pero@mi.flashnet.it> * GNUstep.sh.in: Export GNUSTEP_USER_ROOT after setting it (Bug reported by Fred Kiefer <fredkiefer@gmx.de>). 2005-10-13 Nicola Pero <n.pero@mi.flashnet.it> * GNUstep.sh.in: Read system, local, network, user paths from configuration files and use the configuration files settings in preference to the hardcoded ones. * GNUstep.csh.in: Same changes, where we use sed to convert on the fly the sh syntax of config files to csh syntax, then we eval the result. * GNUmakefile.in: Do not compile, install and clean user_home. * user_home.c: Removed. * GNUstep-reset.sh (GNUSTEP_USER_CONFIG_FILE, GNUSTEP_USER_DIR, GNUSTEP_USER_DEFAULTS_DIR, GNUSTEP_CONFIG_FILE): Unset. 2005-10-13 Nicola Pero <n.pero@mi.flashnet.it> * GNUmakefile.in (GNUSTEP_CONFIG_FILE): Fixed replacing this variable. 2005-10-13 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Added --with-user-config-file, --with-user-dir, --with-user-defaults-dir options. Remove --with-user-root option. Simplified implementation of --with-config-file option. Do not generate GNUsteprc. * configure: Regenerated. * GNUstep.conf.in (GNUSTEP_USER_CONFIG_FILE): New variable. (GNUSTEP_USER_DIR): New variable. (GNUSTEP_USER_DEFAULTS_DIR): New variable. * GNUsteprc.in: Removed. 2005-10-13 Nicola Pero <n.pero@mi.flashnet.it> Warning: --prefix=/usr/GNUstep/System no longer works. Please use --prefix=/usr/GNUstep or --with-system-root=/usr/GNUstep/System. * configure.ac: Simplified management of --prefix. Do not try setting default prefix from an existing GNUSTEP_SYSTEM_ROOT as that is read from the config file after the default prefix is set. Do not set $prefix variable that it not used anywhere. Fixed bug in setting GNUSTEP_SYSTEM_ROOT introduced in previous changes. * configure: Regenerated. 2005-10-12 Nicola Pero <n.pero@mi.flashnet.it> * .cvsignore: Ignore GNUstep.conf 2005-10-12 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Use the GNUSTEP_CONFIG_FILE environment variable to choose the location of the config file, if no configure option is given. Automatically import the settings from an existing GNUstep config file if one exists, and use them for anything not specified. Added --disable-importing-config-file option to disable this behaviour. * configure: Regenerated. 2005-10-12 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Added --with-system-root=xxx option. * configure: Regenerated. 2005-10-12 Nicola Pero <n.pero@mi.flashnet.it> Removed obsolete public variable GNUSTEP_ROOT. * configure.ac: Do not replace GNUSTEP_ROOT in generate files. * configure: Regenerated. * GNUstep.csh.in: Do not define GNUSTEP_ROOT. * GNUstep.sh.in: Do not define GNUSTEP_ROOT. 2005-10-12 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Define GNUSTEP_SYSTEM_ROOT from prefix. Export and reference it instead of exporting and referencing 'prefix' to clarify what is happening. Reordered some configure stages to prepare it for further changes. * configure: Regenerated. * GNUmakefile.in: Use GNUSTEP_SYSTEM_ROOT instead of prefix. * GNUstep.csh.in: Same change. * GNUstep.sh.in: Same change. * GNUstep.conf.in: Same change. 2005-10-12 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac (MAKEFILE_SUFFIX): Variable removed. (GNUSTEP_MAKEFILES): New variable (that is more standard and more suited to make it a configure option in the future). Replace it in generated files. * configure: Regenerated. * debugapp.in: Use everywhere GNUSTEP_MAKEFILES, not MAKEFILE_SUFFIX. * opentool.in: Same change. * GNUmakefile.in: Same change. * executable.template.in: Same change. * GNUstep.sh.in: Same change. * GNUstep.csh.in: Same change. * gnustep-make.spec.in: Removed MAKEFILE_SUFFIX, use Library/Makefiles directly. 2005-10-12 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Removed obsolete --without-system-root option. * configure: Regenerated. 2005-10-12 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac (root_prefix): Variable removed. Wasn't used or replaced anywhere. * configure: Regenerated. 2005-10-12 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Use /usr/pkg/etc/GNUstep.conf instead of /usr/pkg/etc as GNUstep config file on NetBSD (Suggestion by David Ayers). * configure: Regenerated. 2005-10-12 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Generate GNUstep.conf from GNUstep.conf.in so that GNUstep.conf gets properly setup with the paths that are configured into gnustep-make * GNUstep.conf.in: New file. * GNUstep.conf: Removed. * configure: Regenerated. * GNUmakefile.in (install): Install the GNUstep.conf file in the chosen location for the GNUstep config file. 2005-10-12 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Added --with-config-file=xxx (code partially taken from gnustep-base) option. * config.make.ac: Added GNUSTEP_CONFIG_FILE variable holding the configured location of the config file for this installation. * configure: Regenerated. 2005-10-06 Tom MacSween <macsweent@sympatico.ca> * Fixes for cygwin. * Instance/rules.make: Add Windows resource files for cygwin * config.make.in: Cygwin does not have ln-s * rules.make: Add Windows resource rules for cygwin * target.make (cygwin): Fix shared link cmd. 2005-10-06 Nicola Pero <n.pero@mi.flashnet.it> * rules.make (ALL_OBJCCFLAGS, $(GNUSTEP_OBJ_DIR)/%${OEXT}): When compiling ObjC++ files, don't use the additional ObjC flags but only the internal/system ones, to make it easier/possible for end users to add different flags to ObjC and ObjC++ compilations. 2005-10-06 Nicola Pero <n.pero@mi.flashnet.it> Added support for ObjC++. You should list the ObjC++ .mm files in the xxx_OBJCC_FILES variable, and put extra ObjC++ flags in xxx_OBJCCFLAGS or ADDITIONAL_OBJCCFLAGS. * rules.make (.SUFFIXES): Added .mm for ObjC++. ($(GNUSTEP_OBJ_DIR)/%${OEXT}): Added rule to compile .mm files into .o files. (ALL_OBJCCFLAGS): New variable, set from ADDITIONAL_OBJCCFLAGS and AUXILIARY_OBJCCFLAGS. * Instance/rules.make (OBJCC_OBJS, OBJCC_OBJ_FILES): New variables set from xxx_OBJCC_FILES. (OBJ_FILES_TO_LINK): Added the new OBJCC_OBJ_FILES to the list of things to link. (ADDITIONAL_OBJCCFLAGS): New variable set from xxx_ADDITIONAL_OBJCCFLAGS. 2005-09-28 Adam Fedor <fedor@gnu.org> * target.make (cygwin/SHARED_LIB_LINK_CMD): Correct lib file name (Fix from Tom MacSween). * Instance/framework.make: Add extension to NSExecutable. 2005-09-22 Adam Fedor <fedor@gnu.org> * Add runtime flags everywhere for Mac OS/gcc dual runtimes * rules.make (CC_LDFLAGS): New variable for extra ld flags * target.make (darwin/SHARED_LD_PREFLAGS): Use it. * Instance/application.make (APP_FILE), Instance/gswapp.make (GSWAPP_FILE), Instance/objc.make, Instance/service.make (SERVICE_FILE), Instance/tool.make: Idem. 2005-09-18 Adam Fedor <fedor@gnu.org> * Version 1.11.1 * target.make (darwin): Add RUNTIME_FLAGS to shared lib link with GNU compiler (i.e. -fgnu-runtime). * Documentation/README.MinGW: Update. 2005-09-17 Adam Fedor <fedor@gnu.org> * Changes to fix compilation on cygwin. * target.make: Add generic BUNDLE_LINK_CMD. (cygwin): Modify it for cygwin. New SHARED_LIB_LINK_CMD and other support variables. * Instance/application.make: Remove OLD_DLL_SUPPORT * Instance/bundle.make: Idem. Use BUNDLE_LINK_CMD. * Instance/library.make: Remove OLD_DLL_SUPPORT * Instance/palette.make: Idem. * Instance/rules.make: Remove subproject def file rule. * Instance/subprojects.make: Remove def file rules. * Instance/framework.make: Add OBJ_EXT in Info file. (Based on patch and suggestions by Tom MacSween). 2005-08-08 Adam Fedor <fedor@gnu.org> * Documentation/machines.texi: Update. 2005-08-08 Adam Fedor <fedor@gnu.org> * Instance/application.make, Instance/gswapp.make, Instance/service.make, Instance/tool.make: Revert change from 2005-06-06. 2005-07-21 Adam Fedor <fedor@gnu.org> * Version 1.11.0 2005-07-20 Jeremy Bettis <jeremy@deadbeef.com>, Nicola Pero <n.pero@mi.flashnet.it> * config.make.in: Set FRAMEWORK_VERSION_SUPPORT here. * Instance/framework.make: And do not set it here. * Master/rules.make (%.variables, %.subprojects): if FRAMEWORK_VERSION_SUPPORT is not set to yes, use non-Versions directories for frameworks. * config.make.in (HAS_LN_S): Make sure it's set to no when it's not set to yes. 2005-07-14 Jeremy Bettis <jeremy@deadbeef.com>, Nicola Pero <n.pero@mi.flashnet.it> Implemented support for xxx_WINDRES_FILES on mingw32. * rules.make ($(GNUSTEP_OBJ_DIR)/%${OEXT}): New mingw32 rule to compile a .rc (windres) file into an object file. (.SUFFIXES): On mingw32, add .rc. * Instance/rules.make (WINDRES_OBJS, WINDRES_OBJ_FILES): New variables for mingw32; generate them from xxx_WINDRES_FILES. (OBJ_FILES_TO_LINK): Add WINDRES_OBJ_FILES to the list of files to link. 2005-07-14 Jeremy Bettis <jeremy@deadbeef.com>, Nicola Pero <n.pero@mi.flashnet.it> Implemented pseudo-framework support for mingw32 (Windows). * Instance/framework.make: disable versioning on Windows, switch to use the new DLL building system already used by libraries, and clean up all the small details of pseudo-frameworks on mingw32. 2005-07-13 Nicola Pero <n.pero@mi.flashnet.it> * target.make (EXTRACT_CLASS_NAMES_COMMAND): New define for mingw32 where class name symbols start with '___' rather than '__'. 2005-07-12 Nicola Pero <n.pero@mi.flashnet.it> * target.make (FreeBSD ELF): if -pthread is being used for threads, add -pthread to INTERNAL_CFLAGS, INTERNAL_OBJCFLAGS, INTERNAL_LDFLAGS. 2005-07-12 Nicola Pero <n.pero@mi.flashnet.it> * Instance/framework.make (DUMMY_FRAMEWORK): Mangle framework names into valid ObjC class names. 2005-07-12 Nicola Pero <n.pero@mi.flashnet.it> * Documentation/README.MinGW: Updated. 2005-07-08 Adam Fedor <fedor@gnu.org> * Documentation/news.texi: Update for next version. 2005-07-06 Nicola Pero <n.pero@mi.flashnet.it> * Instance/bundle.make: Removed usage of :: rules for all but the internal- rules. Can't see a reason why we were using :: rules in the other cases, probably a tradition that was followed without really understanding why. * Instance/gswbundle.make: Same change. * Instance/framework.make: Same change. * Instance/subproject.make: Same change. 2005-06-17 Adam Fedor <fedor@gnu.org> * Documentation/GNUmakefile: Don't try to install README.NetBSD * Documentation/machines.texi: Updates. 2005-06-10 Adam Fedor <fedor@gnu.org> * Instance/test-library.make: Remove dejagnu code and replace with rules to inherit from library.make 2005-06-10 Adam Fedor <fedor@gnu.org> * Master/source-distribution.make (dist): Tar/copy the directory instead of moving it to make the distribution. Fixes bug #13305 * Documentation/machines.texi: Update Suse. 2005-06-06 Adam Fedor <fedor@gnu.org> * Instance/application.make (ALL_GUI_LIBS): Remove OBJC_LIBS, AUXILIARY_OBJC_LIBS, and TARGET_SYSTEM_LIBS * Instance/gswapp.make (ALL_GSW_LIBS): Idem. * Instance/service.make (ALL_SERVICE_LIBS): Idem. * Instance/test-library.make (ALL_TEST_LIBRARY_LIBS): Idem. * Instance/tool.make (ALL_TOOL_LIBS): Idem. Fixes bug #9920. 2005-05-31 Nicola Pero <n.pero@mi.flashnet.it> * Documentation/README.MinGW: Rewritten with updated instructions. 2005-05-23 David Lazaro Saz <dlazaro@acm.org> * Documentation/userfaq.texi: Updated style, trademark usage and some spelling mistakes. 2005-05-21 Adam Fedor <fedor@gnu.org> * Update FSF Address. * Documentation/gnustep-howto.texi: Update required libs. 2005-04-19 Adam Fedor <fedor@gnu.org> * GNUmakefile.in (install): Don't make Makefiles link * target.make (darwin/GNU): Use $(CC) to link library. * Instance/framework.make: More comments. 2005-04-15 Adam Fedor <fedor@gnu.org> * Instance/framework.make: Add top-level symlink for all darwin * ld_lib_path.[c]sh: Clarify framework comment. * Documentation/machines.texi: Update * Documentation/README.NetBSD: Remove, obsolete. 2005-04-06 Nicola Pero <n.pero@mi.flashnet.it> * GNUstep.conf (USER_GNUSTEP_RC): Fixed typo, it was spelt as .GNusteprc instead of .GNUsteprc. 2005-04-06 Nicola Pero <n.pero@mi.flashnet.it> * Instance/framework.make: Create header directories and copy them even if HEADER_FILES is empty. This fixes problems when subprojects have headers, but the top-level framework does not. * Instance/Shared/headers.make (HEADER_FILES_DIR, HEADER_FILES_INSTALL_DIR): Always compute those two variables even if HEADER_FILES is empty. 2005-04-06 Nicola Pero <n.pero@mi.flashnet.it> * Instance/framework.make ($(FRAMEWORK_HEADER_FILES)): Fixed depending on HEADER_FILES, which wasn't taking HEADER_FILES_DIR into account (Fix suggested by Matt Rice <ratmice@yahoo.com>). 2005-03-22 Nicola Pero <n.pero@mi.flashnet.it> * Instance/application.make (ALL_LDFLAGS): When on a platform where DLLs are built (such as Mingw), automatically generate a .exe.a library for the application. Required by Gorm. 2005-03-21 Adam Fedor <fedor@gnu.org> * GNUmakefile.in: Don't install .GNUsteprc file * GNUstep.conf: New file. * Documentation/README.Darwin, Documentation/README.MinGW, Documentation/faq.texi, Documentation/machines.texi: Updates. 2005-03-21 Nicola Pero <n.pero@mi.flashnet.it> * Instance/palette.make (internal-palette-all_): Use the old dll rules only if OLD_DLL_SUPPORT is YES. In all other cases, including Mingw, use the standard ones. (Info-gnustep.plist): Include PALETTE_OBJ_EXT in NSExecutable. 2005-03-21 Nicola Pero <n.pero@mi.flashnet.it> * Instance/bundle.make: Use make quotes, not shell quotes, for BUNDLE_OBJ_EXT when used in rules. 2005-03-21 Nicola Pero <n.pero@mi.flashnet.it> * target.make (SHARED_LIBEXT): Set to .dll.a for Mingw so that which_lib manages to find the libs and building with debug=yes now works on Mingw. 2005-03-10 Nicola Pero <n.pero@mi.flashnet.it> * Instance/library.make: On Windows, try to link against all libraries, except the one we are compiling. * Instance/bundle.make: Replaced all occurrences of WITH_DLL with BUILD_DLL. * Instance/framework.make: Same change. * Instance/palette.make: Same change. * Instance/bundle.make (build-bundle): Use the old DLL rules to build bundles only if OLD_DLL_SUPPORT is defined. Else, use the rules specified in target.make for that platform. * target.make (BUNDLE_LD): Just use -shared on Mingw. 2005-03-10 Nicola Pero <n.pero@mi.flashnet.it> * user_home.c (main): Fixed missing case for Windows ... if HOMEPATH was already a full path, the code would forget to copy the path into home. 2005-03-09 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Detect libobjc.dll.a as a custom ObjC library. * configure: Regenerated. 2005-03-01 Nicola Pero <n.pero@mi.flashnet.it> * target.make (WITH_DLL): Variable removed. (OLD_DLL_SUPPORT): New variable which is set to yes for cygwin, but to no for mingw. (DLLTOOL): Do not define for mingw. (DLLWRAP): Do not define for mingw. (SHARED_LIB_LINK_CMD): New variable for mingw. (AFTER_INSTALL_SHARED_LIB_CMD): The same. (AFTER_INSTALL_SHARED_LIB_CHOWN): The same. (SHARED_LIBEXT): Do not define to be .a on mingw; that is only confusing; use LIBEXT instead. (LIBEXT): Define to be .a on mingw. (TARGET_SYSTEM_LIBS): Define using =, not :=. * rules.make (ALL_CPPFLAGS): Check BUILD_DLL instead of WITH_DLL when adding -DGNUSTEP_WITH_DLL. * Instance/library.make (LIBRARY_NAME_WITHOUT_LIB): New variable. (LIBRARY_FILE_EXT): Unused variable removed. (CLEAN_library_NAME): Generate using make functions rather than firing external shell scripts to increase building speed. Execute existing DLL code when OLD_DLL_SUPPORT is set to yes. For BUILD_DLL but not OLD_DLL_SUPPORT, added brand new code which uses the new target.make mingw variables and takes advantage of the new DLL support in GCC and mingw. 2005-02-19 Adam Fedor <fedor@gnu.org> * Documentation/README.MinGW: Minor edit. * Documentation/faq.texi: Add question. * Documentation/gnustep-howto.texi: Add service * Documentation/machines.texi: Edit FreeBSD 5.x 2005-02-18 Richard Frith-Macdonald <rfm@gnu.org> * Documentation/README.MinGW: Update with my latest experiences. 2005-01-31 Adam Fedor <fedor@gnu.org> * Documentation/GNUmakefile: Install README.* docs * Documentation/machines.texi: Typo. 2005-01-14 Armando Di Cianno <fafhrd@gentoo.org> * GNUstep-reset.sh (reset-path): Add new argument with a path fragment to make the path removal more accurate. Use it with appropriate arguments for each variable. (with small changes by Nicola). 2005-01-05 Sergii Stoian <stoian255@ukr.net> * Instance/Shared/bundle.make (shared-instance-bundle-all): Fixed copying resource files and localized resource files into the bundle when they are in subdirs. 2004-12-27 Quentin Mathe <qmathe@club-internet.fr> * Documentation/README.Darwin: Rewritten the base library install instructions (libxslt support with Fink explained) and other minor updates. * Documentation/machines.texi: Made the GNUstep on MacOSX section a bit more clear. * GNUstep-HOWTO: Synchronized with Documentation/machines.texi and made the spacing more consistent. 2004-12-26 Quentin Mathe <qmathe@club-internet.fr> * Documentation/README.Darwin: Updated to take in account the latest feedback by Uli Kusterer. * Documentation/machines.texi: * GNUstep-HOWTO: Updated the current GCC state for GNUstep on Darwin. 2004-12-26 Quentin Mathe <qmathe@club-internet.fr> * Documentation/README.Darwin: Improved indentation and presentation. 2004-12-19 Richard Frith-Macdonald <rfm@gnu.org> * target.make: For gnu compiler on darwin, use flat namespace and undefined warning for executables as well as libraries/bundles so that we can link with libraries/bundles without havint to explictly name all the libraries that thay depend upon. 2004-12-06 Adam Fedor <fedor@gnu.org> * Documentation/machines.texi (MacOSX): Update (info from Markus Hitter). * Documentation/README.Darwin: Clean up, simplify. Sun Nov 7 04:18:39 2004 Nicola Pero <n.pero@mi.flashnet.it> * tar-exclude-list: Use *.svn instead of .svn to have .svn dirs excluded. Sun Nov 7 04:07:50 2004 David Wetzel <dave@turbocat.de> * Instance/Shared/bundle.make: Everywhere use the '-f' flag to 'cp -r' so that read-only files such as subversions dirs can be written and overwritten. Thu Nov 4 08:39:29 2004 Nicola Pero <n.pero@mi.flashnet.it> * common.make (RM_LN_S): New variable. * target.make: Replaced 'rm -f', when used before creating a symlink, with $(RM_LN_S). * rules.make ($(GNUSTEP_OBJ_DIR)): Same change. * Instance/framework.make: Same change. * Instance/gswbundle.make: Same change. 2004-10-29 Adam Fedor <fedor@gnu.org> * Documentation/README.Cygwin: Updated * Documentation/README.Darwin: Minor update * Documentation/gnustep.init: Add navigation tags back 2004-10-18 Adam Fedor <fedor@gnu.org> * Documentation/README.MinGW: Mention Windows installer. Update links * Documentation/gnustep-howto.texi: Some setup no longer needed. * Documentation/gnustep.init: Don't add links - currently not referenced correctly. * Documentation/machines.texi: Add compilers section. * Instance/tool.make: Fix a typo. 2004-09-07 Adam Fedor <fedor@gnu.org> * Version 1.10.0 Tue Sep 7 12:48:31 2004 Nicola Pero <n.pero@mi.flashnet.it> * target.make (SHARED_LIB_LINK_CMD): Removed -prebind flag. 2004-09-06 Adam Fedor <fedor@gnu.org> * configure.ac: Don't reset LIB_DIR. 2004-09-03 Adam Fedor <fedor@gnu.org> * Add missing GNUsteprc.in Fri Sep 3 21:52:00 2004 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Recognize --with-user-root option and store the configuration into the system GNUsteprc. * configure: Regenerated. * GNUsteprc.in: New file. * GNUmakefile.in (install): Install the system GNUsteprc into GNUSTEP_SYSTEM_ROOT. (uninstall): Uninstall the same file. (distclean): Remove GNUsteprc. * user_home.c: Do not segfault if the environment variable GNUSTEP_SYSTEM_ROOT is not set when the tool is executed. Thu Sep 02 17:01:11 2004 Nicola Pero <n.pero@mi.flashnet.it> * tar-exclude-list: New file currently containing CVS and .svn. * GNUmakefile.in: Install the new file. * Instance/Shared/bundle.make: Modified TAR commands to exclude files listed in the tar-exclude-list file. * Instance/framework.make: Same changes. * Instance/gswbundle.make: Same changes. * Instance/Documentation/autogsdoc.make: Same changes. * Instance/Documentation/javadoc.make: Same changes. * Instance/Documentation/latex.make: Same changes. Tue Aug 31 16:21:41 2004 Nicola Pero <n.pero@mi.flashnet.it> * Instance/library.make: If xxx_INTERFACE_VERSION or xxx_SOVERSION is set, but xxx_VERSION is not set, guess xxx_VERSION by taking xxx_INTERFACE_VERSION and appending .0. 2004-08-24 Quentin Mathe <qmathe@club-internet.fr> * ld_lib_path.sh: * ld_lib_path.csh: Added comments to explain why we set DYLD_FRAMEWORK_PATH on Darwin with any library combo and not just apple-apple-apple (it is a temporary solution). 2004-08-24 Adam Fedor <fedor@gnu.org> * GNUstep.sh.in: Add newline at end of file (avoids bug in Solaris sed). Fri Aug 20 02:26:12 2004 Nicola Pero <n.pero@mi.flashnet.it> * Documentation/install.texi (Single-User): Removed mention of FORCE_USER_ROOT which is going to be dropped in next releases. Fri Aug 20 02:19:54 2004 Nicola Pero <n.pero@mi.flashnet.it> * GNUstep.sh.in: Do not run make_services. * GNUstep.csh.in: Do not run make_services. 2004-08-07 Adam Fedor <fedor@gnu.org> * configure.ac: Remove warning about moving old directories into new directory structure (been there since 1.7.0). 2004-07-31 Adam Fedor <fedor@gnu.org> * configure.ac: Add checks for specific Apple compiler flags. * target.make (darwin): Use them. Don't add no-cpp-precomp flag when compiling with Apple compiler. * Documentation/README.Darwin: Minor fixes (Patch from lars.sonchocky-helldorf@hamburg.de). * Master/source-distribution.make: Add CVS_TAG_NAME variable. 2004-07-11 Gregory John Casamento <greg_casamento@yahoo.com> * Instance/palette.make: Updated the palette.make to create a plist instead of a string format file for the palette.table. It's necessary for the the palette.table to be able to pass in a set of classes to be imported. 2004-07-09 Adam Fedor <fedor@gnu.org> * configure.ac: Improve compiler type test. * Documentation/gnustep.init: Fix template parsing rules. 2004-07-04 Adrian Robert <arobert@cogsci.ucsd.edu> * Instance/Documentation/texi.make: Added rules to use texi2pdf to generate PDF doc, and replace PS by PDF in the default generate/install/uninstall rules. Add <instance>.html to the list of files installed/uninstalled for HTML. 2004-06-23 01:47 Alexander Malmberg <alexander@malmberg.org> * common.make, config.make.in: Rename HAS_OBJC_EXCEPTIONS to USE_OBJC_EXCEPTIONS. * configure.ac: Same. Also add --enable-native-objc-exceptions argument and make the test for this feature stricter. * configure: Rebuild. Fri Jun 19 13:01:02 2004 Nicola Pero <n.pero@mi.flashnet.it>, Yves de Champlain <yves@gnu-darwin.org> * target.make (EXTRACT_CLASS_NAMES_COMMAND): New variable, with special value for darwin. * Instance/framework.make: Use the new variable when building the list of classes in the framework. Fri Jun 18 18:49:16 2004 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Detect native exception handler support in the compiler, and set HAS_OBJC_EXCEPTIONS to yes if it's there. * configure: Regenerated. * config.make.in: New variable HAS_OBJC_EXCEPTIONS. * common.make: If HAS_OBJC_EXCEPTIONS is set, add -fobjc-exceptions to the ObjC flags. 2004-06-16 Adam Fedor <fedor@gnu.org> * GNUmakefile (distclean): Remove duplicate GNUmakefile removal Don't remove Documentation/GNUmakefile * Documentation/machines.texi: Update * Instance/resource-set.make (internal-resource_set-uninstall_): Remove directories after removing files. Tue Jun 15 09:49:16 2004 Nicola Pero <n.pero@mi.flashnet.it> * GNUstep.sh.in: Detect if we're running under zsh, and if so, if the shwordsplit option is not set, set it for the duration of the script, then restore it to its original value at the end. This seems to fix setting the paths on zsh. 2004-06-14 Adam Fedor <fedor@gnu.org> * GNUmakefile.in (uninstall): Remove all installed files (still need to do directories). 2004-06-09 Adam Fedor <fedor@gnu.org> * Version 1.9.2 * Documentation/GNUmakefile: Include ../Version * Documentation/README.Cygwin: minor updates. * Documentation/gnustep-howto.texi, Documentation/machines.texi: Update 2004-06-05 Adam Fedor <fedor@gnu.org> * ld_lib_path.[c]sh: Allow seting of GNUstep framework location on Mac OS X for all library combos (patch from Quentin Mathe <gnustep-quentin@club-internet.fr>). * Instance/application.make ($(APP_INFO_PLIST_FILE)): Don't fail if plmerge does not work. * Documentation/README.Cygwin: Update * Documentation/machines.texi: Add Mac OS X section. * Documentation/news.texi: Update. Tue Jun 1 15:43:45 BST 2004 Riccardo Mottola <rollei@tiscalinet.it> * debugapp.in (appname): Fixed escaping of --args argument to work with an alien grep / os. 2004-05-17 Richard Frith-Macdonald <rfm@gnu.org> * Instance/Documentation/autogsdoc.make: Simplify rules. Avoid dependency on existence of documentation subdirectory by relying on new autogsdoc feature (it now creates the subdirectory if necessary). This prevents possible recursion in make process. 2004-05-07 Richard Frith-Macdonald <rfm@gnu.org> * Master/rules.make: Pass 'operation' to instances in 'GNUSTEP_OPERATION' * Instance/Documentation/autogsdoc.make: Use 'GNUSTEP_OPERATION' Thu Apr 29 15:54:17 2004 Nicola Pero <n.pero@mi.flashnet.it> * Instance/Documentation/autogsdoc.make (GNUSTEP_INSTANCE/dependencies): Only include this file when the operation is 'all'. (internal-doc-clean): Do not run autogsdoc here. (internal-doc-distclean): Rule removed. No longer needed, as the previous changes should do the real fix. Thu Apr 29 14:04:61 2004 Nicola Pero <n.pero@mi.flashnet.it> * Instance/Documentation/autogsdoc.make (internal-doc-distclean): Added rule, to make sure a 'make distclean' actually cleans. 2004-04-27 Adam Fedor <fedor@gnu.org> * clean_os.sh: Report netbsd1.6* and netbsd2* as netbsdelf. Tue Apr 20 10:27:16 2004 Matt Rice <ratmice@yahoo.com> * target.make: Use the GNU/Linux ELF code for GNU/Hurd too. 2004-04-12 Adam Fedor <fedor@gnu.org> * common.make (GNUSTEP_FRAMEWORKS_FLAGS): Add missing close paren. * clean_os.sh: Add netbsd1.6Z * Documentation/GNUmakefile (GNUSTEP_TEXI2HTML_FLAGS): Add. * Documentation/gnustep.init: Some updates. * Documentation/announce.texi: Fix bug url. * Documentation/gnustep-howto.texi: Add more dependancy explanations. * Documentation/machines.texi: Add FreeBSD 5.x. 2004-04-02 David Ayers <d.ayers@inode.at> * GNUstep-reset.sh: Unset DYLD_LIBRARY_PATH and DYLD_FRAMEWORK_PATH. * common.make: Mark as makefile for emacs. Add support for setting GNUSTEP_FRAMEWORKS_DIRS and GNUSTEP_FRAMEWORKS_FLAGS for apple-apple-apple. * ld_lib_path.(c)sh: Set DYLD_FRAMEWORK_PATH for apple-apple-apple. * rules.make: Added support for GNUSTEP_FRAMEWORKS_FLAGS. Wed Mar 31 11:46:03 2004 Nicola Pero <n.pero@mi.flashnet.it> * Instance/bundle.make: Use ALL_LDFLAGS when running DLLWRAP on windows. * Instance/framework.make: Similar change. * Instance/palette.make: Similar change. Wed Mar 31 11:44:21 2004 Willem Rein Oudshoorn <woudshoo@xs4all.nl> * Instance/library.make: Use ALL_LDFLAGS when running DLLWRAP on windows. 2004-03-31 Richard Frith-Macdonald <rfm@gnu.org> * Instance/Documentation/autogsdoc.make: Make doc subdirectory if necessary. 2004-03-31 Richard Frith-Macdonald <rfm@gnu.org> * jni.make: Add support for MacOS-X ... use the java 1.3.1 headers fromt the JavaVM framework. Tue Mar 30 02:44:21 2004 Nicola Pero <n.pero@mi.flashnet.it> * Documentation/filesystem.texi: Clarify the differences between the Local domain and System domain, clearly state that the default installation directory of software should be the Local domain, and mention that the Network domain is now optional and disabled by default. Other minor clarifications and tidyups. Tue Mar 30 02:01:59 2004 Nicola Pero <n.pero@mi.flashnet.it> * Documentation/make.texi (PACKAGE_NAME, PACKAGE_VERSION): Updated documentation. Mon Mar 29 12:58:34 2004 Nicola Pero <n.pero@mi.flashnet.it> * common.make (MAJOR_VERSION): Variable removed. (MINOR_VERSION): Variable removed. (SUBMINOR_VERSION): Variable removed. (VERSION): Variable removed. * Instance/framework.make (VERSION): Set VERSION from xxx_VERSION if available. Use 0.0.1 as default. * Instance/library.make (VERSION): Similar changes. Mon Mar 29 12:41:58 2004 Nicola Pero <n.pero@mi.flashnet.it> * Master/rules.make (PACKAGE_NAME): Set it here; set it to unnamed-package if not set. (PACKAGE_VERSION): Set it to 0.0.1 if not set. * Master/source-distribution.make (PACKAGE_NAME): Do not set it here. Mon Mar 29 12:19:38 2004 Nicola Pero <n.pero@mi.flashnet.it> * Version: Do not define VERSION. Mon Mar 29 12:19:38 2004 Matt Rice <ratmice@yahoo.com> * Master/source-distribution.make: Strip whitespaces from PACKAGE_NAME. 2004-03-28 Richard Frith-Macdonald <rfm@gnu.org> * Instance/Documentation/autogsdoc.make: Correct dependency information so that documentation is regenerated when needed. 2004-03-28 David Ayers <d.ayers@inode.at> * Documentation/make.texi: Document native-library.make. Capitalize acronyms. 2004-03-23 David Ayers <d.ayers@inode.at> * Documentation/make.texi: Spelling fixes. Thu Mar 18 12:57:40 2004 Nicola Pero <n.pero@mi.flashnet.it> * Documentation/GNUmakefile: New file using standard gnustep-make to build the documentation. If there is no available gnustep-make installation, it creates a local/temporary one, and uses it. * Documentation/GNUmakefile.in: Removed. * Documentation/makerules.make: Removed. * Documentation/makedoc.make: Removed. * configure.ac: Do not generate Documentation/GNUmakefile. * configure: Regenerated. 2004-03-17 Adam Fedor <fedor@gnu.org> * Instance/palette.make: Link palatte to all libs on Windows and Apple/two-level-namespaces. Similar to bundles. (patch from Marc Ordinas i Llopis <lists@tragnarion.com>). Mon Mar 15 13:57:50 2004 Nicola Pero <n.pero@mi.flashnet.it> * GNUmakefile.in: Fixed installation of strip_makefiles.sh when using a different build directory. Thu Mar 11 18:36:59 2004 Nicola Pero <n.pero@mi.flashnet.it> * Instance/gswapp.make: Rewritten to use the new Instance/Shared/bundle.make, so that for example subprojects with resources now should be possible. Thu Mar 11 02:26:20 2004 Nicola Pero <n.pero@mi.flashnet.it> * Instance/gswapp.make: Do not create library_paths.openapp on Apple. ($(GNUSTEP_INSTANCE).iconheader): Rule removed. 2004-03-09 Adam Fedor <fedor@gnu.org> * Documentation/GNUMakefile.in (GNUSTEP_TEXI2HTML_FLAGS): Add init_file flag * Documentation/README.MinGW: Update library locations. Tue Mar 9 17:28:37 2004 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Make by default GNUSTEP_NETWORK_ROOT the same as GNUSTEP_LOCAL_ROOT. This has the effect of disabling GNUSTEP_NETWORK_ROOT by default, which is very rarely used - if ever, and simplifying paths and flags. * configure: Regenerated. Tue Mar 9 17:25:16 2004 Nicola Pero <n.pero@mi.flashnet.it> * common.make (GNUSTEP_HEADERS_DIRS, GNUSTEP_LIBRARIES_DIRS, GNUSTEP_HEADER_FND_DIRS): Rewritten the code creating the list of -I and -L flags to pass to the compiler and linker so that if two GNUSTEP_XXX_ROOT are the same, the flags are added only once. Tue Mar 9 17:21:34 2004 Nicola Pero <n.pero@mi.flashnet.it> * common.make: Removed stale debugging statement. Tue Mar 9 17:05:38 2004 Nicola Pero <n.pero@mi.flashnet.it> * common.make (GNUSTEP_HEADERS_FND_DIRS): Only set these flags when libFoundation is used. In the standard case, we no longer add the -Ixxx/Headers/gnustep/ flags. * library-combo.make (GNUSTEP_FND_DIR): Do not define. * rules.make (ALL_OBJCFLAGS): Removed GNUSTEP_HEADERS_FND_FLAG. (ALL_CFLAGS): Same change. Tue Mar 9 16:58:50 2004 Nicola Pero <n.pero@mi.flashnet.it> * rules.make (ALL_OBJCFLAGS): Removed GNUSTEP_HEADERS_GUI_FLAG, which is defined nowhere. (ALL_CFLAGS): Same change. Mon Mar 8 13:52:43 2004 Nicola Pero <n.pero@mi.flashnet.it> * Instance/application.make ($(APP_FILE)): Do not create the library_paths.openapp file on Apple. Mon Mar 8 13:20:38 2004 Nicola Pero <n.pero@mi.flashnet.it> * openapp.in: On Apple, look for the executable in the new location. * debugapp.in: On Apple, look for the executable in the new location. Also, removed obsolete nextstep support code. 2004-03-07 Adam Fedor <fedor@gnu.org> * Documentation/machines.texi: Updates, add URL's for README's. Sun Mar 7 15:22:37 2004 Nicola Pero <n.pero@mi.flashnet.it> Updated application and bundle file structure on Apple to the latest Apple conventions. * Instance/application.make (APP_FILE_NAME): On Apple, create it as xxx.app/Contents/MacOS/xxx. ($(APP_FILE)): Put the library_paths.openapp file inside xxx.app/Contents. ($(APP_DIR)/Contents/MacOS): New rule on Apple replacing the rule to create xxx.app (GNUSTEP_STAMP_DIR): On Apple, use xxx.app/Contents as directory in which to create the stamp.make file. (internal-app-all_): On Apple, create the xxx.app/Contents/MacOS directory instead of xxx.app. * Instance/bundle.make (BUNDLE_FILE_NAME): On Apple, create it as xxx.bundle/Contents/MacOS/xxx. (build-bundle): On Apple, depend on creating the xxx.bundle/Contents/MacOS directory rather than the xxx.bundle/library-combo one. (GNUSTEP_STAMP_DIR): On Apple, use xxx.bundle/Contents as directory for stamp.make. ($(GNUSTEP_STAMP_DIR)): On Apple, updated rule for new setup. ($(BUNDLE_DIR)/Contents/MacOS): New rule on Apple replacing the xxx.bundle/Contents one. 2004-03-4 Quentin Mathe <qmathe@club-internet.fr> * Documentation/README.Darwin: Minor improvements. Thu Mar 4 13:06:22 2004 Nicola Pero <n.pero@mi.flashnet.it> * Instance/framework.make (xxx_DEPLOY_WITH_CURRENT_VERSION): Variable renamed to xxx_MAKE_CURRENT_VERSION. (update-current-symlink): New optional rule, executed only if MAKE_CURRENT_VERSION is yes, to create the symlink from Current to the current version. (build-framework-dirs): Moved code into the new rule. (xxx.framework/xxx): On Apple, build the symlink xxx.framework/xxx to the current instance only when MAKE_CURRENT_VERSION is yes. Thu Mar 4 12:09:27 2004 Nicola Pero <n.pero@mi.flashnet.it> * Instance/framework.make (SOVERSION): Variable removed, replaced with INTERFACE_VERSION. Made xxx_INTERFACE_VERSION available for frameworks too exactly as it happens for libraries. Thu Mar 4 11:36:41 2004 Nicola Pero <n.pero@mi.flashnet.it> * Instance/library.make (INTERFACE_VERSION): New variable. xxx_SOVERSION has been renamed to xxx_INTERFACE_VERSION, which will be used consistently by frameworks too, and not only for the .so names. Backwards compatibility code for xxx_SOVERSION included. Thu Mar 4 10:41:21 2004 Nicola Pero <n.pero@mi.flashnet.it> * Instance/bundle.make (internal-bundle-copy_into_dir): New rule. (.PHONY): Added internal-bundle-copy_into_dir. * Instance/palette.make (internal-palette-copy_into_dir): New rule. (.PHONY): Added internal-palette-copy_into_dir. * Instance/service.make (internal-service-copy_into_dir): New rule. (.PHONY): Added internal-service-copy_into_dir. 2004-02-28 Adam Fedor <fedor@gnu.org> * Version 1.9.1 * Documentation/announce.texi, readme.texi, install.texi, news.texi: Update. 2004-02-28 Quentin Mathe <qmathe@club-internet.fr> * Documentation/README.Darwin: Update with the detailed and complete installation process on Mac OS X And Darwin (with the help of Nicolas Roard). 2004-02-23 Adam Fedor <fedor@gnu.org> * user_home.c (main): Fix check for space in home dir, issue warning if space found (Suggestion from Sheldon Gill). Wed Feb 18 16:57:46 2004 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Removed --enable-import / --disable-import option. * common.make (OBJCFLAGS): Do not add OBJC_NO_IMPORT. * config.make.in (OBJC_NO_IMPORT): Removed. * configure: Regenerated. * Documentation/userfaq.texi: Removed mention of --enable-import. 2004-02-11 Adam Fedor <fedor@gnu.org> * Documentation/README.Darwin: Update (from Lars Sonchocky-Helldorf). * Documentation/GNUMakefile (GNUSTEP_TEXI2HTML_FLAGS): Add init_file flag * Documentation/gnustep.init: texi2html init file. 2004-02-07 Adam Fedor <fedor@gnu.org> * Instance/framework.make: Simplify search for framework location and change order to prevent problems in obscure case where GNUstep is installed in user's home. * Documentation/machines.texi (cygwin): Update link. 2004-01-25 Adam Fedor <fedor@gnu.org> * Documentation/README.Darwin: Update. 2004-01-21 Adam Fedor <fedor@gnu.org> * clean_os.sh: Add darwin7 * target.make (darwin/SHARED_LD_PREFLAGS): Remove -arch_only. Add -single_module on darwin7 (darwin/DYLIB_EXTRA_FLAGS): Idem. * Documentation/README.Darwin: New file. 2004-01-18 Adam Fedor <fedor@gnu.org> * Documentation/gnustep-howto.texi: Add gui image libs. * Documentation/install.texi: Update info on #import. * Documentation/userfaq.texi: Idem. * Documentation/machines.texi: Update Darwin compiler. Fri Jan 16 17:01:55 2004 Nicola Pero <n.pero@mi.flashnet.it> * Instance/bundle.make: Recognize xxx_INSTALL_DIR and use it if set. * Instance/clibrary.make: Same change. * Instance/ctool.make: Same change. * Instance/framework.make: Same change. * Instance/gswbundle.make: Same change. * Instance/java.make: Same change. * Instance/library.make: Same change. * Instance/objc.make: Same change. * Instance/palette.make: Same change. * Instance/service.make: Same change. * Instance/tool.make: Same change. 2004-01-15 Adam Fedor <fedor@gnu.org> * configure.ac: Add check for Apple cc * config.make.in: Add CC_TYPE * target.make (darwin): Use it instead of OBJC_COMPILER. * Documentation/machines.texi: Update Wed Jan 14 18:59:25 2004 Nicola Pero <n.pero@mi.flashnet.it> * Master/rpm.make: Use PACKAGE_VERSION instead of VERSION. * Master/source-distribution.make: Use PACKAGE_VERSION instead of VERSION. * Master/rules.make: Set PACKAGE_VERSION from VERSION if PACKAGE_VERSION is not set, for backwards compatibility. Mon Jan 12 12:45:56 2004 Nicola Pero <n.pero@mi.flashnet.it> * common.make: If a framework is being compiled with shared=no, print a warning and use shared=yes instead. Mon Jan 12 11:47:00 2004 Jeff Teunissen <deek@d2dc.net>, Nicola Pero <n.pero@mi.flashnet.it> * target.make (SHARED_LIB_LINK_CMD, AFTER_INSTALL_SHARED_LIB_CMD): Do not remove LIB_LINK_SONAME_FILE and do not create the symlink LIB_LINK_SONAME_FILE --> LIB_LINK_VERSION_FILE if LIB_LINK_SONAME_FILE and LIB_LINK_VERSION_FILE are equal, which happens for example if you use 'A' as version. 2004-01-05 David Ayers <d.ayers@inode.at> * Instance/framework.make (internal-framework-uninstall_): Remove symlinks in $(GNUSTEP_LIBRARIES). Mon Jan 5 00:33:00 2004 Nicola Pero <n.pero@mi.flashnet.it> * Instance/framework.make (build-framework-dirs): Replaced test -L with test -h because test -L does not work on some old Sun Solaris. 2003-12-29 Adam Fedor <fedor@gnu.org> * Documentation/gnustep-howto.texi: Update. * Documentation/machines.texi: Idem. Fri Dec 26 17:40:23 2003 Nicola Pero <n.pero@mi.flashnet.it> * debugapp.in: Iterate over command line arguments to be able to process more than one of them at the same time. Added --gdb=... command line flag. Documented it. 2003-11-3- Richard Frith-Macdonald <rfm@gnu.org> * user_home.c: Use name of current user under unix (rather than environment variables etc). Fri Nov 28 19:07:11 2003 Nicola Pero <n.pero@mi.flashnet.it> * rules.make (ADDITIONAL_OBJC_LIBS): Fixed bug in the implementation of ADDITIONAL_NATIVE_LIBS on gnu. Tue Nov 25 12:23:20 2003 Manuel Guesdon <ml@orange-concept.com> * Instance/Shared/bundle.make (shared-instance-bundle-all-localized-webresources): Fixed syntax error. 2003-11-13 David Ayers <d.ayers@inode.at> * Instance/framework.make: Remove symlink. Sat Nov 8 22:41:03 2003 Nicola Pero <n.pero@mi.flashnet.it> * target.make: Use $(ALL_LDFLAGS) when linking shared stuff. Otherwise there is no way to add linker flags when libraries and frameworks are linked. Change applied to all shared link commands on all platforms. Sat Nov 8 16:40:59 2003 Matt Rice <ratmice@yahoo.com> * Documentation/DESIGN: Updated makefiles location. * Documentation/README.MinGW: Updated makefiles location. Added comment on buggy 'ln -s' on mingw. * Documentation/README.Cygwin: Updated makefiles location. * Documentation/README.NetBSD: Updated makefiles location. * Documentation/install.texi: Updated makefiles location. * Documentation/machines.texi: Updated makefiles location. * Documentation/make.texi: Updated makefiles location, use GNUSTEP_MAKEFILES variable. Mon Nov 3 23:48:41 2003 Marcus Muller <znek@mulle-kybernetik.com> * target.make (SHARED_LIB_LINK_CMD): Use -prebind flag on Apple. * Instance/framework.make (DYLIB_INSTALL_NAME_BASE): New variable. (LIB_LINK_INSTALL_NAME): Define using DYLIB_INSTALL_NAME_BASE if it was set. Mon Nov 3 23:34:56 2003 Nicola Pero <n.pero@mi.flashnet.it> * rules.make (ADDITIONAL_INCLUDE_DIRS): Do not add -framework flags from ADDITIONAL_NATIVE_LIBS. Mon Nov 3 23:30:47 2003 Marcus Muller <znek@mulle-kybernetik.com> * library-combo.make (INTERNAL_OBJCFLAGS): Do not add -framework Foundation and -framework AppKit for Apple. Mon Nov 3 23:25:07 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/framework.make (build-framework): Do not build Info-gnustep.plist on Apple. Mon Nov 3 11:50:30 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/framework.make (FRAMEWORK_LIBRARY_FILE_EXT): Unused variable removed. * Instance/framework.make (FRAMEWORK_FILE_EXT): Unused variable removed. Fri Oct 31 17:16:51 2003 Matt Rice <ratmice@yahoo.com> * config.make.in (HAS_LN_S): Set to no for mingw32. 2003-10-25 00:50 Alexander Malmberg <alexander@malmberg.org> * debugapp.in: Only pass --args to gdb if its new enough to handle it. Based on patch from Ian Jones. Fri Oct 24 15:54:41 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/Documentation/texi.make (internal-doc-clean): Remove $(GNUSTEP_INSTANCE).html. 2003-10-20 Adam Fedor <fedor@gnu.org> * configure.ac: Add 2.57 prereq, subst OBJCFLAGS * config.make.in (OBJCFLAGS): New Mon Oct 20 15:02:22 2003 Nicola Pero <n.pero@mi.flashnet.it> * cpu.sh: Simplified code by removing unused echo command. * os.sh: Same change. * vendor.sh: Same change. Mon Oct 20 14:49:03 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/framework.make (internal-framework-distclean): Delete from GNUSTEP_BUILD_DIR. Mon Oct 20 14:44:57 2003 Nicola Pero <n.pero@mi.flashnet.it> Write the list of classes belonging to a framework into the framework's Info-gnustep.plist too. * Instance/framework.make (DUMMY_FRAMEWORK_CLASS_LIST): New variable. ($(DUMMY_FRAMEWORK_FILE)): Build a classarray list of classes in the framework, and store it in $DUMMY_FRAMEWORK_CLASS_LIST. (Info-gnustep.plist): Add a Classes key/value. Depend on DUMMY_FRAMEWORK_FILE. 2003-10-19 Adam Fedor <fedor@gnu.org> * Documentation/gnustep-howto.texi: Updates, clearer instructions. * Documenation/machines.texi, Documentation/userfaq.texi: Idem. Sun Oct 19 16:09:46 2003 Nicola Pero <n.pero@mi.flashnet.it> * native-library.make: New file. * GNUmakefile.in: Install native-library.make. * Instance/rules.make (ADDITIONAL_NATIVE_LIBS): Set from xxx_NATIVE_LIBS. * rules.make: Implemented ADDITIONAL_NATIVE_LIBS. Sun Oct 19 15:43:50 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/library.make (LIBRARY_NAME_WITH_LIB): New variable. Use it in place of GNUSTEP_INSTANCE whenever lib{library-name} is expected. With this change, LIBRARY_NAME can now include or not the 'lib' prefix, and everything should work in both cases. Wed Oct 15 17:02:30 2003 Nicola Pero <n.pero@mi.flashnet.it> * Master/tool.make (internal-distclean): Fixed typo causing it not to work. * Master/test-tool.make (internal-distclean): Same change. Wed Oct 15 10:55:58 2003 Nicola Pero <n.pero@mi.flashnet.it> * configure: Regenerated using autoconf 2.57 instead of 2.53. 2003-10-14 Adam Fedor <fedor@gnu.org> * common.make: Simplify common GNUstep dirs. Tue Oct 14 01:07:22 2003 Nicola Pero <n.pero@mi.flashnet.it> Implemented support for building in a build directory outside the source tree. Not supported for Java and doc yet. * common.make (GNUSTEP_BUILD_DIR): New variable. (GNUSTEP_OBJ_DIR_NAME): New variable. (GNUSTEP_OBJ_DIR): Define using GNUSTEP_BUILD_DIR. * rules.make (DERIVED_SOURCES_DIR): New variable. (DERIVED_SOURCES_HEADERS_FLAG): Check using OWNING_PROJECT_HEADER_DIR_NAME instead of OWNING_PROJECT_HEADER_DIR. ($(GNUSTEP_BUILD_DIR)): New rule to create GNUSTEP_BUILD_DIR. ($(GNUSTEP_OBJ_DIR)): Modified the rule to create GNUSTEP_OBJ_DIR_NAME inside GNUSTEP_BUILD_DIR. * Master/aggregate.make: Pass GNUSTEP_BUILD_DIR to submake invocations. * Master/rules.make (all): Depend on creating GNUSTEP_BUILD_DIR if any is specified. (ABS_GNUSTEP_BUILD_DIR): New variable - compute if needed. (%.variables, %.subprojects): Pass GNUSTEP_BUILD_DIR to submake invocations; pass OWNING_PROJECT_DIR_NAME rather than OWNING_PROJECT_DIR to submake invocations. * Master/application.make: Modified all clean targets to clean in GNUSTEP_BUILD_DIR. * Master/bundle.make: The same. * Master/clibrary.make: The same. * Master/ctool.make: The same. * Master/gswapp.make: The same. * Master/gswbundle.make: The same. * Master/library.make: The same. * Master/objc.make: The same. * Master/palette.make: The same. * Master/rules.make: The same. * Master/service.make: The same. * Master/subproject.make: The same. * Master/test-application.make: The same. * Master/test-library.make: The same. * Master/test-tool.make: The same. * Master/tool.make: The same. * Instance/application.make: Modified all code as required to implement the new functionality. * Instance/bundle.make: The same. * Instance/framework.make: The same. * Instance/gswapp.make: The same. * Instance/gswbundle.make: The same. * Instance/library.make: The same. * Instance/palette.make: The same. * Instance/rules.make: The same. * Instance/service.make: The same. * Instance/Shared/bundle.make: The same. Tue Oct 14 00:34:57 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/library.make (DERIVED_SOURCES): Do not define here; it's already defined in rules.make. Mon Oct 13 23:23:40 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/bundle.make (internal-bundle-install_): Fixed error when installing with strip=yes a bundle without object file. Mon Oct 13 15:53:43 2003 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Added configure option --enable-strip-makefiles; substitute @GNUSTEP_STRIP_MAKEFILES@ in output. * configure: Regenerated. * GNUmakefile.in (install): Install strip_makefiles.sh; execute it if --enable-strip-makefiles. * strip_makefiles.sh: New file. Mon Oct 13 15:07:53 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/Shared/java.make (.PHONY): Removed line continuation in excess. Mon Oct 13 13:56:00 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/palette.make: Tidied up the way in which code was commented. Mon Oct 13 13:09:53 2003 Nicola Pero <n.pero@mi.flashnet.it> * Master/application.make (internal-clean): Do the entire clean in a single shell command. * Master/gswapp.make (internal-clean): Same change. * Master/palette.make (internal-clean): Same change. * Master/service.make (internal-clean): Same change. * Master/test-application.make (internal-clean): Same change. Mon Oct 13 12:55:50 2003 Nicola Pero <n.pero@mi.flashnet.it> * Master/application.make (internal-distclean): Do not remove .iconheader files, no longer used. * Master/gswapp.make (internal-clean, internal-distclean): Do not remove .iconheader files. (internal-clean): Obsolete code removed. * Master/service.make (internal-clean): Same changes. * Master/test-application.make (internal-clean, internal-disclean): Same changes. * Instance/gswapp.make: Removed obsolete iconheader code. Mon Oct 13 12:25:50 2003 Nicola Pero <n.pero@mi.flashnet.it> * Master/palette.make (internal-clean): Remove objects inside .palette on clean. (internal-distclean): Remove *.palette and similar on distclean without performing a recursive make invocation. * Instance/palette.make (internal-palette-distclean_): Removed. * Master/service.make (internal-distclean): Remove *.service and similar on distclean without performing a recursive make invocation. * Instance/service.make (internal-service-distclean_): Removed. Sun Oct 12 18:43:20 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/subproject.make (internal-subproject-clean): Fixed typo - it was removing non-existing DLL_DEF_IMP instead of DLL_DEF_INP. Sun Oct 12 18:29:49 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/palette.make: Use Instance/Shared/bundle.make to install and uninstall. * Instance/service.make: Same changes. Sun Oct 12 13:09:12 2003 Nicola Pero <n.pero@mi.flashnet.it> * rules.make ($(GNUSTEP_OBJ_DIR)): Use ECHO_NOTHING. 2003-10-09 Adam Fedor <fedor@gnu.org> * Correct problem where *bsd lib flags were not getting used. * configure.ac: Use LIB_DIR not LDFLAGS * config.make.in (CONFIG_SYSTEM_LIB_DIR): New var for LIB_DIRs * library-combo.make (SYSTEM_LIB_DIR): Use it. 2003-10-05 Adam Fedor <fedor@gnu.org> * Version: Bump to 1.8.90 2003-10-04 Adam Fedor <fedor@gnu.org> * GNUmakefile.in (dist): Remove * Documentation/machines.texi: Doc updates. * Documentation/faq.texi, Documentattion/userfaq.texi: Idem. 2003-09-29 Adam Fedor <fedor@gnu.org> * Simplify use of user-defined flags. * configure.ac: USE LDFLAGS not LIBS. Leave CPPFLAGS alone * common.make (INTERNAL_LDFLAGS): Don't add LDFLAGS * library-combo.make (SYSTEM_LDFLAGS): Add LDFLAGS. * config.make.in (CONFIG_SYSTEM_DEFS): Remove. * Documentation/faq.texi: Update answers. 2003-09-27 Adam Fedor <fedor@gnu.org> * target.make (darwin/BUNDLE_LDFLAGS): Supress warnings * Documentation/machines.texi: Update darwin. 2003-09-26 Adam Fedor <fedor@gnu.org> * Version 1.8.0 released on branch. 2003-09-25 Adam Fedor <fedor@gnu.org> * target.make (darwin): Fix up bundle flags for GNU compiler. 2003-09-19 Leigh Smith <leigh@leighsmith.com> * library.make: Changed the full .inp declaration to $(DLL_DEF_INP). 2003-09-15 Adam Fedor <fedor@gnu.org> * Version: Add VERSION * gnustep-make.spec.in: Update packager. Sun Sep 7 12:43:59 2003 Nicola Pero <n.pero@mi.flashnet.it> * config.site: Fixed Headers directory, it is now in Library/. Wed Sep 3 10:29:26 2003 Matt Rice <ratmice@yahoo.com>, Nicola Pero <n.pero@mi.flashnet.it> * Instance/library.make: Removed ADDITIONAL_INSTALL_DIRS code. * Instance/rules.make: Implemented support for ADDITIONAL_INSTALL_DIRS. * common.make (GNUSTEP_APPLICATION_SUPPORT): New variable. 2003-08-23 Adam Fedor <fedor@gnu.org> * Version 1.7.3 2003-08-22 Adam Fedor <fedor@gnu.org> * configure.ac: On netbsd, Use -Wl to pass linker options. 2003-08-05 Martin Brecher <martin@mb-itconsulting.com> * Documentation/openapp.1: New file. * Documentation/GNUstep.7: Updated. File is now unprocessed. 2003-08-07 Richard Frith-Macdonald <rfm@gnu.org> * Instance/Documentation/autogsdoc.make: Rewrite dependency rules to avoid regeneration of documentation when we are going to clean. Also, use autogsdoc -Clean argument to get all files. Wed Jul 30 09:52:16 2003 Nicola Pero <n.pero@mi.flashnet.it> * target.make (BUNDLE_LDFLAGS): openbsd: use -fPIC instead of -fpic to match the -fPIC flag used when compiling as recommended by the gcc manual. Tue Jul 29 12:06:02 2003 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: If flattened, add library combo to headers directory. * configure: Regenerated. * config.site (includedir): If flattened, add library combo. * GNUmakefile.in (MAYBE_LIBRARY_COMBO): Define. Export GNUSTEP_TARGET_DIR, GNUSTEP_TARGET_LDIR and MAYBE_LIBRARY_COMBO. * create_domain_dir_tree.sh: Use MAYBE_LIBRARY_COMBO when creating the headers dir. * common.make (GNUSTEP_HEADERS): Define using library combo if not flattened. (GNUSTEP_HEADERS_DIRS): Use library combo if not flattened. Mon Jul 28 11:49:18 2003 Pete French <pete@twisted.org.uk> * Instance/application.make (MAIN_MARKUP_FILE): New variable. * Instance/application.make (GNUSTEP_STAMP_STRING): Include MAIN_MARKUP_FILE in the stamp string. * Instance/application.make ($(APP_INFO_PLIST_FILE)): Set GSMarkupMainFile to MAIN_MARKUP_FILE in the info dictionary. Mon Jul 28 10:59:21 2003 Pete French <pete@twisted.org.uk> * rules.make (%.plist): Filter the result through sed to drop #pragma statements. 2003-07-23 Richard Frith-Macdonald <rfm@gnu.org> * Instance/Documentation/autogsdoc.make: put stamp file in documentation subdirectory so it gets removed properly with 'clean' 2003-07-22 Adam Fedor <fedor@gnu.org> * Version 1.7.2 2003-07-22 Richard Frith-Macdonald <rfm@gnu.org> * user_home.c: Use HOMEPATH in preference to USERPROFILE for OPENSTEP compatibility and because USERPROFILE generally doesn't work due to the presence of spaces. * messages.make: Make documentation generation less verbose. * Instance/Documentation/autogsdoc.make: ditto Also use autogsdoc -MakeDependencies to avoid unnecessary regeneration of documentation. 2003-07-21 Adam Fedor <fedor@gnu.org> * target.make: Set thread library in AUXILIARY_OBJC_LIBS. Set reentrant flags for all targets if threaded. Remove duplicates. * Documentation/README.MinGW: Updated for default flattened structure. * Documentation/gnustep-howto.texi: Idem. Mon Jul 21 10:42:42 2003 Nicola Pero <n.pero@mi.flashnet.it> * debugapp.in: Detect core files with name core.xxx, not just core, as found on some gnu-linux systems. Improved user prompting. Mon Jul 21 10:31:08 2003 Andrew Ruder <aeruder@ksu.edu> * debugapp.in: Pass debugapp arguments to gdb to use when running the application. Wed Jul 16 09:46:16 2003 Nicola Pero <n.pero@mi.flashnet.it> * target.make (INTERNAL_OBJCFLAGS): On darwin with library-combo apple-apple-apple, use -no-cpp-precomp rather than -traditional-cpp. Wed Jul 9 16:28:14 2003 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Made flattened directory structure the default. Explicitly print a message saying if we use flattened or non-flattened directory structure. * configure: Regenerated. 2003-07-06 Adam Fedor <fedor@gnu.org> * configure.ac: Remove '^' match from gcc version sed script. 2003-07-05 Adam Fedor <fedor@gnu.org> * configure.ac: Add flags for openbsd like freebsd. 2003-07-05 Adam Fedor <fedor@gnu.org> * Documentation/GNUmakefile.in (after-install): gzip man files * Documentation/GNUstep.7: Unziped. 2003-07-05 Adam Fedor <fedor@gnu.org> * clean_os.sh: Clean netbsdelf. * configure.ac: Add -R flags for netbsdelf * target.make (netbsd/ADDITONAL_LDFLAGS): Idem. (Patches from Peter Cooper <comrade@obverse.com.au> 2003-06-29 Richard Frith-Macdonald <rfm@gnu.org> * user_home.c: Cast all arguments to isspace() as int ... for picky compiler versions. 2003-06-25 Adam Fedor <fedor@gnu.org> * Documentation/GNUmakefile.in (after-install): Install man pages * Documentation/GNUstep.7.gz: New file (from Martin Brecher). Wed Jun 25 15:47:46 2003 Tom Koelman <tkoelman@xs4all.nl> * Instance/subproject.make (subproject.def): Depend on DLL_DEF_INP. 2003-06-21 Adam Fedor <fedor@gnu.org> * Instance/Documentation/autogsdoc.make: If not BASE_MAKE_LOADED print a better error message about needing to install GNUstep-base first. 2003-06-20 Adam Fedor <fedor@gnu.org> * Version 1.7.1 2003-06-18 Adam Fedor <fedor@gnu.org> * target.make (openbsd): Enable shared libs, use -fPIC not -fpic. 2003-06-17 Adam Fedor <fedor@gnu.org> * Instance/Documentation/texi.make: Don't abort make if texi programs aren't available. Don't install if files not made. 2003-06-16 Adam Fedor <fedor@gnu.org> * configure.ac: Add option to disable moving obsolete dirs * GNUmakefile.in: Update for change. 2003-06-15 Adam Fedor <fedor@gnu.org> * target.make (openbsd/SHARED_LIB_LINK_CMD): Use gcc to link the library. 2003-06-11 Adam Fedor <fedor@gnu.org> * move_obsolete_paths.sh: Don't remove the Developer dir. 2003-06-06 Adam Fedor <fedor@gnu.org> * target.make (openbsd/OBJ_MERGE_CMD): Add. 2003-06-05 Adam Fedor <fedor@gnu.org> * config_thread.m: More complete thread test. * configure.ac: Add runtime based on RUNTIME_LIB 2003-06-03 Adam Fedor <fedor@gnu.org> * target.make (darwin/BUNDLE_LD): Use libtool (darwin/AFTER_INSTALL_SHARED_LIB_CMD): Link to the LIB_LINK_FILE as well. Tue Jun 3 11:51:02 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/Documentation/autogsdoc.make (internal-doc-install_): Fixed typo - added missing ";". 2003-06-02 18:16 Alexander Malmberg <alexander@malmberg.org> * Instance/Documentation/autogsdoc.make (internal-doc-install_): Add a missing "\" line continuation. (internal-doc-uninstall_): Add an $(END_ECHO) to balance the echoing. Mon Jun 2 10:21:11 2003 Nicola Pero <n.pero@mi.flashnet.it> * GNUmakefile.in (install): Only create the symlink Makefiles --> Library/Makefiles if symbolic links are available. (Problems reported by Matt Rice). Sat May 31 09:13:07 2003 Matt Rice <ratmice@yahoo.com>, David Ayers <d.ayers@inode.at> * Instance/gswapp.make (internal-gswapp-install_): Fixed typo: removed excess bracket. Fri May 30 23:28:55 2003 Nicola Pero <n.pero@mi.flashnet.it> * common.make (OBJC_FLAGS): Added -fno-strict-aliasing. 2003-05-29 Adam Fedor <fedor@gnu.org> * target.make (TARGET_SYSTEM_LIBS): Remove -ldl (added when necessary by gnustep-base). Wed May 28 09:47:42 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/framework.make: Use test -r instead of test -f to check that a file, which might be a symlink, exists. * Instance/framework.make (internal-framework-install_): Always remove the old symlinks without checking. Tue May 27 16:52:27 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/Documentation/javadoc.make (internal-doc-install_): Fixed line breaking typo. Tue May 27 13:21:57 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/objc.make: Remove old deprecation warning. * Instance/tool.make: The same. Tue May 27 13:12:59 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/application.make: Use ECHO_NOTHING in commands which were using @ or printing the command. * Instance/documentation.make: The same. * Instance/framework.make: The same. * Instance/gswapp.make: The same. * Instance/java-tool.make: The same. * Instance/library.make: The same. * Instance/palette.make: The same. * Instance/resource-set.make: The same. * Instance/service.make: The same. * Instance/subproject.make: The same. * Instance/Documentation/autogsdoc.make: The same. * Instance/Documentation/gsdoc.make: The same. * Instance/Documentation/javadoc.make: The same. * Instance/Documentation/latex.make: The same. * Instance/Documentation/texi.make: The same. * Instance/Shared/java.make: The same. * Instance/ctool.make (internal-ctool-uninstall_): Use ECHO_UNINSTALLING. * Instance/document.make (internal-textdoc-uninstall_): The same. * Instance/framework.make (internal-framework-uninstall_): The same. * Instance/gswapp.make (internal-gswapp-uninstall_): The same. * Instance/gswbundle.make (internal-gswbundle-uninstall_): The same. * Instance/java-tool.make (internal-java_tool-uninstall_): The same. * Instance/library.make (internal-library-uninstall_): The same. * Instance/objc.make (internal-objc-uninstall_): The same. * Instance/service.make (internal-service-uninstall_): The same. * Instance/Documentation/autogsdoc.make (internal-doc-uninstall_): The same. * Instance/Documentation/gsdoc.make (internal-doc-uninstall_): The same. * Instance/Documentation/install_files.make (internal-doc-uninstall_): The same. * Instance/Documentation/javadoc.make (internal-doc-uninstall_): The same. * Instance/Documentation/latex.make (internal-doc-uninstall_): The same. * Instance/gswbundle.make (internal-gswbundle-install_): Use ECHO_INSTALLING. * Instance/Documentation/autogsdoc.make (internal-doc-install_): The same. * Instance/Documentation/gsdoc.make (internal-doc-install_): The same. * Instance/Documentation/install_files.make (internal-doc-install_): The same. * Instance/Documentation/javadoc.make (internal-doc-install_): The same. * Instance/gswapp.make: Use ECHO_CREATING when building the various files. * Instance/subproject.make: Use ECHO_CREATING when building the DLL_DEF_INP file. Tue May 27 12:04:38 2003 Nicola Pero <n.pero@mi.flashnet.it> * messages.make (ECHO_CHOWNING, ECHO_STRIPPING): New variables. * Instance/service.make (internal-service-install_): * Instance/application.make: Use them. * Instance/bundle.make: Use them. * Instance/framework.make: Use them. * Instance/gswapp.make: Use them. * Instance/gswbundle.make: Use them. * Instance/java-tool.make: Use them. * Instance/palette.make: Use them. * Instance/service.make: Use them. * Instance/Shared/bundle.make: Use them. * Instance/Documentation/autogsdoc.make: Use them. * Instance/Documentation/javadoc.make: Use them. Tue May 27 11:45:41 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/framework.make (build-framework-dirs): Merge contiguous commands into single subshell. Tue May 27 11:36:06 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/application.make: Use ECHO_CREATING when building the .plist files. * Instance/bundle.make: Same * Instance/framework.make: Same. * Instance/gswbundle.make: Same. * Instance/palette.make: Same. * Instance/service.make: Same. * Instance/application.make: Use ECHO_CREATING when building the .desktop file. * Instance/framework.make ($(DUMMY_FRAMEWORK_FILE)): Use ECHO_CREATING when building the internal framework class file. Tue May 27 11:22:44 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/application.make: Use ECHO_CREATING when running MKDIRS or MKINSTALLDIRS. * Instance/bundle.make: The same. * Instance/ctool.make: The same. * Instance/documentation.make: The same. * Instance/framework.make: The same. * Instance/gswapp.make: The same. * Instance/gsbundle.make: The same. * Instance/library.make: The same. * Instance/objc.make: The same. * Instance/palette.make: The same. * Instance/resource-set.make: The same. * Instance/rules.make: The same. * Instance/service.make: The same. * Instance/subproject.make: The same. * Instance/test-library.make: The same. * Instance/tool.make: The same. * Instance/Documentation/autogsdoc.make: The same. * Instance/Documentation/texi.make: The same. * Instance/gswapp.make (internal-gswapp-install_): Use ECHO_INSTALLING. Tue May 27 11:08:52 2003 Nicola Pero <n.pero@mi.flashnet.it> * messages.make (ECHO_UNINSTALLING): New variable. (ECHO_PREPROCESSING): Added missing definition in case messages=yes. Tue May 27 11:00:59 2003 Nicola Pero <n.pero@mi.flashnet.it> * messages.make (ECHO_CREATING, ECHO_NOTHING): New variables. * Instance/Shared/bundle.make: Use them. * Instance/Shared/headers.make: Same. * Instance/Shared/java.make: Same. * Instance/Shared/stamp-string.make: Same. Tue May 27 10:54:36 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/ctool.make: Old deprecation warning removed. Tue May 27 10:02:46 2003 Nicola Pero <n.pero@mi.flashnet.it> * relative_path.sh: Added code to normalize input paths by removing /./ components before using them. 2003-05-19 Adam Fedor <fedor@gnu.org> * Version 1.7.0 * Documentation/news.texi: Updated * configure.ac: On some systems, check for thread libraries in different order. Thu May 15 10:30:55 2003 Nicola Pero <n.pero@mi.flashnet.it> * GNUmakefile.in (generated-files): Added fixpath.sh. (fixpath.sh): New rule. Wed May 14 16:19:02 2003 Nicola Pero <n.pero@mi.flashnet.it> * transform_paths.sh: Quote paths. Wed May 14 16:15:16 2003 Nicola Pero <n.pero@mi.flashnet.it> * debugapp.in: Added more strict quoting of paths everywhere. * executable.template.in: Idem. * openapp.in: Idem. * opentool.in: Idem. Fri May 9 12:22:24 2003 Nicola Pero <n.pero@mi.flashnet.it> * Documentation/install.texi (Flat Structure): Fixed typo. (Reported by Lele Gaifax <lele@seldati.it>). Tue May 6 11:30:19 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/Shared/bundle.make (shared-instance-bundle-all): Reverted last change for resource files, but not localized resource files. Mon May 5 00:52:20 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/Shared/bundle.make (shared-instance-bundle-all): Fixed copying resource files and localized resource files into the bundle when they are in subdirs. 2003-05-02 Adam Fedor <fedor@gnu.org> * common.make (GNUSTEP_PALLETES): Put in ApplicationSupport/Palettes * move_obsolete_paths.sh: Remove Developer dir. * Documentat/GNUmakefile.in: Install docs in Library/Documentation 2003-04-28 Nicola Pero <nicola@nicola.brainstorm.co.uk> * Instance/resource-set.make (RESOURCE_FILES_FULL_INSTALL_DIR): Reverted last change. This file is of general use, not just for libraries. 2003-04-27 Adam Fedor <fedor@gnu.org> * New filesystem structure. Use @MAKEFILE_SUFFIX@ instead of Makefiles. Replace $GNUSTEP_SYSTEM_ROOT/Makefiles with $GNUSTEP_MAKEFILES Replace Libraries with Library/Libraries Replace Headers with Library/Headers Replace Documentation with Library/Documentation * GNUmakefile.in, GNustep.csh.in, common.make, config.site, debugapp.in, executable.template.in, gnustep-make.spec.in, java-executable.template, ld_lib_path.csh, ld_lib_path.sh, opentool.in, relative_path.sh, setlocaltz.sh, spec-debug-alone-rules.template, spec-debug-rules.template, spec-rules.template, target.make, which_lib.c, gswbundle.make, java.make, test-library.make: Idem. * configure.ac (MAKEFILES_SUFFIX): Define to Library/Makefiles * create_domain_dir_tree.sh: Add additional Library dirs. * resource-set.make (RESOURCE_FILES_FULL_INSTALL_DIR): Use $(GNUSTEP_RESOURCES), not $(GNUSTEP_INSTALLATION_DIR). * move_obsolete_paths.sh: New file used in installation Fri Apr 25 17:02:55 2003 Nicola Pero <n.pero@mi.flashnet.it> * GNUstep.csh.in: Use the grep -v trick to make sure that GUILE_LOAD_PATH is not increased if the paths to add are already there in the variable. * ld_lib_path.csh: Similar change/fix for all paths. 2003-04-24 Adam Fedor <fedor@gnu.org> * Documentation/filesystem.texi: Clarify Local installation rights, Remove Network/{Server,Users}. Wed Apr 23 09:18:07 2003 Nicola Pero <n.pero@mi.flashnet.it> * config.make.in (CPP): Added. (GENERAL_CPP): Removed. * rules.make (ALL_CPLISTFLAGS): Added -x c -traditional. (%.plist): Use CPP, not GENERAL_CPP. Tue Apr 22 16:11:14 2003 Nicola Pero <n.pero@mi.flashnet.it> * rules.make (%.c): New rules to generate .c files from .l files using lex and from .y files using yacc. Tue Apr 22 15:27:02 2003 Nicola Pero <n.pero@mi.flashnet.it> * GNUstep.csh.in: Quote all values of setenv, set, source calls. Mon Apr 14 12:59:23 2003 Nicola Pero <n.pero@mi.flashnet.it> Implemented support for preprocessed Info.plists in applications. * config.make.in (GENERAL_CPP): New variable. * rules.make (ALL_CPLISTFLAGS): New flags. (%.plist): Added rule to generate %.plist from %.cplist by running the preprocessor. * messages.make (ECHO_PREPROCESSING): New message. * Instance/application.make: If xxx_PREPROCESS_INFO_PLIST is set to yes in the user makefile, automatically depend on xxxInfo.plist, which is then automatically generated from xxxInfo.cplist. * Master/application.make (_PLIST_INFO_FILES): New variable. (internal-clean): Remove info plist files generated by the preprocessor. Fri Apr 11 12:38:44 2003 Nicola Pero <n.pero@mi.flashnet.it> * GNUmakefile.in (install): Bug fix - install fixpath.sh from the local directory, not from the source directory. Sun Apr 6 02:25:07 2003 Nicola Pero <n.pero@mi.flashnet.it> * GNUmakefile.in (install): Bug fix - install GNUstep-reset.sh from the source directory, not from the local directory. Mon Mar 31 18:43:07 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/framework.make (build-framework-dirs): Do not create the symlink from inside derived_src to the headers if there are no headers; remove the file before creating the symlink. 2003-03-23 Richard Frith-Macdonald <rfm@gnu.org> * Merged 1.6.0 branch changes in Mon Mar 10 12:51:20 2003 Nicola Pero <n.pero@mi.flashnet.it> * rules.make: Disable all built-in SUFFIXES and all built-in rules with a % target -- for performance. Wed Feb 26 18:34:37 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/application.make ($(APP_INFO_PLIST_FILE)): Implemented merging the xxxInfo.plist into Info.plist on Apple. Use CFBundleIconFile, and not NSIcon, on Apple. Quote full path of xxxInfo.plist file. 2003-03-17 Adam Fedor <fedor@gnu.org> * Version: 1.6.0 2003-03-14 Adam Fedor <fedor@gnu.org> * configure.ac: Check for -lpthread on unknown hosts (e.g. irix) * target.make (darwin): Add -read_only_reolcs warning. (darwin5): Remove * Documentation/machines.texi: Update Darwin. (suggestions from Carl Eugen Hoyos) 2003-03-13 Adam Fedor <fedor@gnu.org> * clean_cpu.sh: Make all hppa variants the same. (suggestion from Matthias Klose) 2003-03-04 Adam Fedor <fedor@gnu.org> * configure.ac: Change sense of --disable-import help line * configure: Regen. * Documentation/install.texi: Update import section * Documentation/userfaq.texi: Add import section. Tue Mar 4 17:13:46 2003 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: Enable GCC deprecation warnings for #import. * configure: Regenerated. 2003-03-03 iMartin Brecher <martin@mb-itconsulting.com> * Documentation/README.MinGW: Tidied Some modifiecations by rfm@gnu.org also ... mainly to change the order of build/install of libobjc and ffcall 2003-02-23 Richard Frith-Macdonald <rfm@gnu.org> * user_home.c: fix HOMEPATH and HOMEDRIVE handling for mingw to only use the drive if there isn't one in the path. 2003-02-17 Tom Koelman <tkoelman@xs4all.nl> * Documentation/README.MingW: Update URLs. 2003-02-16 Adam Fedor <fedor@gnu.org> * Version: 1.5.2 * Documentation/announce.texi, news.texi, install.texi: Update 2003-02-14 Adam Fedor <fedor@gnu.org> * target.make (Darwin/SHARED_LIBRARY_LINK_CMD): Include object files before library depends. * Documentation/gnustep-howto.texi, install.texi: Updates. Mon Feb 10 13:42:54 2003 Nicola Pero <n.pero@mi.flashnet.it> * Master/source-distribution.make: Define a CVS variable, and use it in place of `cvs', so that it can be overridden with a different value (example: make cvs-snapshot CVS='runsocks cvs'). 2003-02-06 Richard Frith-Macdonald <rfm@gnu.org> * Instance/subproject.make: Build dll exported symbols def file. Remove temporary def file on clean. * Instance/rules.make: Make list of subproject def files (thanks Nicola) * Instance/library.make: Use list of subproject def files to put symbols from subprojects into final dll output. Wed Feb 5 04:07:05 2003 Nicola Pero <n.pero@mi.flashnet.it> * library-combo.make (BUNDLE_LIBS): For apple library-combo, do not add -framework Foundation and -framework AppKit. * Instance/bundle.make: Link bundle to all libs on Apple so that it can be made to work with two-level namespaces. Fri Jan 31 01:20:59 2003 Nicola Pero <n.pero@mi.flashnet.it> * openapp.in: Added new option --find. Calling 'openapp --find Ink' will search for the Ink application as usual, but then only print out the full path of the application instead of executing it. Replaced `basename $0` with openapp in messages. Do not talk of unimplemented --library-combo option in messages. Thu Jan 30 17:32:37 2003 Nicola Pero <n.pero@mi.flashnet.it> * Instance/Documentation/gsdoc.make: Use autogsdoc, not gsdoc, to compile gsdoc files. gsdoc is not even installed in the latest gnustep-base. Sun Jan 26 04:54:09 2003 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac: New --enable-multi-platform option, off by default. Substitute GNUSTEP_MULTI_PLATFORM and target when processing .in files. * configure: Regenereated. * GNUstep.sh.in: If GNUSTEP_MULTI_PLATFORM is empty, use hardcoded GNUSTEP_HOST, GNUSTEP_HOST_OS, GNUSTEP_HOST_CPU, GNUSTEP_HOST_VENDOR as provided by configure. * GNUstep.csh.in: Idem. Fri Jan 10 05:48:06 GMT 2003 Nicola Pero <n.pero@mi.flashnet.it> * target.make (INTERNAL_CFLAGS): On darwin, apple foundation, add -no-cpp-precomp. 2003-01-09 Richard Frith-Macdonald <rfm@gnu.org> * Documentation/README.MinGW: Updated for current cod, fixing a few errors. * user_home.c: Fixed typo. 2003-01-03 Richard Frith-Macdonald <rfm@gnu.org> * common.make: Don't use RUNTIME_FLAG for plain C code, just for ObjC Fri Jan 3 01:57:46 2003 Nicola Pero <n.pero@mi.flashnet.it> * create_domain_dir_tree.sh (mydir): Replaced dirname invocation with a sed trick. Apparently dirname is not available on OpenStep (reported by Pete French <pete@twisted.org.uk>). Tue Dec 31 16:10:49 2002 Nicola Pero <n.pero@mi.flashnet.it> * target.make: For darwin: link to LIB_LINK_SONAME_FILE, not to LIB_LINK_INSTALL_NAME, so that it works when building frameworks. 2002-12-30 Adam Fedor <fedor@gnu.org> * ld_lib_path.sh: Use DYLD_LIBRARY_PATH on darwin * ld_lib_path.csh: Idem. * target.make (darwin): Don't set DYLIB_COMPATIBILITY_VERSION, set DYLIB_CURRENT_VERSION correctly, link to LIB_LINK_INSTALL_NAME. Mon Dec 30 16:38:16 2002 Nicola Pero <n.pero@mi.flashnet.it> A new library-combo apple-apple-apple has been added, and made the default on Apple OSX systems. * library-combo.make (OBJC_RUNTIME): Variable removed, it's redundant with OBJC_RUNTIME_LIB. * target.make: Check OBJC_RUNTIME_LIB, not OBJC_RUNTIME. * common.make: For libFoundation, added backward compatibility fixup for header locations. * configure.ac: Map gnu library combo to gnu-gnu-gnu, nx library combo to nx-nx-nx, apple library combo to apple-apple-apple. Use apple-apple-apple library-combo on darwin by default. Use -DNeXT_RUNTIME for OBJC_RUNTIME_LIB = apple. Print out a message that we are checking for the library-combo, and which one we choose. * configure: Regenerated. * common.make: To check that we are on an Apple system, check FOUNDATION_LIB against apple, not nx. * debugapp.in: Recognize apple library combo. * executable.template.in: Idem. * library-combo.make (RUNTIME_FLAG): For NeXT and Apple runtime, always set to -fnext-runtime, regardless of the value of OBJC_COMPILER, because OBJC_COMPILER is set in target.make, which is read after library-combo.make, so we can't use it here. * library-combo.make: Map apple library-combo to apple-apple-apple. Added code for apple OBJC_RUNTIME_LIB, FOUNDATION_LIB and GUI_LIB, copied from the one for nx library-combo. * target.make: For darwin systems, replace all checks for 'nx' runtime and foundation lib with checks for 'apple'. * Instance/application.make: Apple code is now executed for 'apple' runtime/foundation/gui lib, not 'nx'. Removed checks for OBJC_COMPILER == NeXT; replace them with checks for FOUNDATION_LIB == apple. * Instance/bundle.make: Idem. * Instance/framework.make: Idem. * Instance/gswapp.make: idem. Wed Dec 25 03:09:34 2002 Nicola Pero <n.pero@mi.flashnet.it> * Instance/application.make: Implemented support for Apple native bundle organization, and Apple Info.plist. Wed Dec 25 03:04:42 2002 Nicola Pero <n.pero@mi.flashnet.it> * target.make (DYLIB_INSTALL_NAME): Variable removed, replaced by LIB_LINK_INSTALL_NAME. * Instance/library.make (LIB_LINK_INSTALL_NAME): Define. * Instance/framework.make (LIB_LINK_INSTALL_NAME): Define. * Instance/framework.make: Do not build and link the dummy framework class on Apple. On Apple, create the symbolic link xxx.framework/xxx --> the shared library. Modified NSExecutable value on Apple. New install code for Apple. Wed Dec 25 02:53:19 2002 Nicola Pero <n.pero@mi.flashnet.it> * Master/application.make (internal-clean): Removed special code for OBJC_COMPILER = NeXT. Fri Dec 20 17:27:16 2002 Nicola Pero <n.pero@mi.flashnet.it> * library-combo.make (LIBRARIES_DEPEND_UPON, BUNDLE_LIBS): For nx foundation or gui, add necessary -framework flags. * target.make (DYLIB_INSTALL_NAME): For darwin, define using FINAL_LIBRARY_INSTALL_DIR rather than hardcoding GNUSTEP_SYSTEM_ROOT, so that it works no matter where a library is installed. Fri Dec 20 16:21:40 2002 Nicola Pero <n.pero@mi.flashnet.it> * Instance/tool.make (FINAL_TOOL_INSTALL_DIR): New variable; support it. By setting this variable before including the makefile, you can fine control where you want the tool executable to be installed. Sun Dec 15 16:22:13 2002 Nicola Pero <n.pero@mi.flashnet.it> * Instance/Shared/stamp-string.make: New file providing infrastructure for very efficient stamp string support. * GNUmakefile.in (INSTANCE_SHARED_MAKE_FILES): Added stamp-string.make * Instance/application.make: Use Instance/Shared/stamp-string.make to rebuild Info.plist and xxx.desktop iff there is a clear reason to do so. * Instance/bundle.make: Use Instance/Shared/stamp-string.make to make sure we rebuild the Info.plist whenever the make variables used in it change. Sat Dec 14 02:42:02 2002 Nicola Pero <n.pero@mi.flashnet.it> * library-combo.make: Quick attempt at fixing/updating foundation/appkit flags to compile with nx library-combo on Mac OSX. Dropped NeXTstep iconheader code. * Instance/application.make: Quick attempt at fixing/updating building nx applications. Added missing rule to build directory, and dropped NeXTstep iconheader code. Sat Dec 14 02:36:00 2002 Nicola Pero <n.pero@mi.flashnet.it> * configure.ac (AC_CONFIG_FILES): Removed config.h, which is already in AC_CONFIG_HEADER. * configure: Regenerated. Thu Dec 12 00:03:30 2002 Nicola Pero <n.pero@mi.flashnet.it> * Instance/framework.make: Fixed typo in warning message. 2002-12-10 Adam Fedor <fedor@gnu.org> * clean_os.sh: Filter version from darwin6. * target.make (darwin): Was darwin6 (irix): Updated for shared libraries (from Carl Eugen Hoyos). * Documentation/machines.texi: Updated. Mon Dec 9 12:04:49 2002 Nicola Pero <n.pero@mi.flashnet.it> * Instance/framework.make (internal-framework-install_): Fixed creating the installation directory for headers in DLL case, so that it uses HEADER_FILES_INSTALL_DIR (Patch from David Ayers <d.ayers@inode.at>). 2002-12-05 Mirko Viviani <mirko.viviani@rccr.cremona.it> * Instance/framework.make ($(FRAMEWORK_FILE)): create the link with GNUSTEP_INSTANCE name instead of FRAMEWORK_NAME. (patch from David Ayers <d.ayers@inode.at>) 2002-12-03 Mirko Viviani <mirko.viviani@rccr.cremona.it> * Instance/framework.make ($(FRAMEWORK_FILE)): remove the link before creating a new one. 2002-12-02 Mirko Viviani <mirko.viviani@rccr.cremona.it> * Instance/framework.make ($(FRAMEWORK_FILE)): link lib<frameworkName>.so to <frameworkName> for dynamic loading. Mon Dec 2 12:43:23 2002 Nicola Pero <n.pero@mi.flashnet.it> * Instance/framework.make: Added support for XXX_HEADER_FILES_DIR and XXX_HEADER_FILES_INSTALL_DIR (Patch from David Ayers <d.ayers@inode.at>). 2002-11-29 Adam Fedor <fedor@gnu.org> * target.make (darwin1): Remove (darwin6): Add. 2002-11-27 Richard Frith-Macdonald <rfm@gnu.org> * user_home.c: Use USERPROFILE for home directory on windoze. * Documentation/RADME.MinGW: Fix typo reported by Tom Koelman 2002-11-19 Adam Fedor <fedor@gnu.org> * Version: 1.5.1 * Documentation/news.texi: Updated. 2002-11-19 Adam Fedor <fedor@gnu.org> * create_domain_dir_tree.sh (mydir): Use `command` not $(command), which doesn't work with all sh's. 2002-11-15 Adam Fedor <fedor@gnu.org> * common.make: Remove duplicate OBJC_RUNTIME_LIB and FOUNDATION_LIB setup * library-combo.make (GNUSTEP_FND_DIR, RUNTIME_FLAG): Extra flags moved from common.make (FOUNDAION_LIB=gnu): setup moved from common.make. * target.make (darwin5/NeXT cc) (DYLIB_EXTRA_FLAGS, DYLIB_DEF_FRAMEWORKS, DYLIB_DEF_LIBS): Comment out or remove. Wed Nov 6 15:26:07 2002 Nicola Pero <n.pero@mi.flashnet.it> * GNUmakefile.in (install): Fixed typo - was installing config.site into GNUSTEP_SYSTEM_ROOT/shared rather than GNUSTEP_SYSTEM_ROOT/share. Wed Nov 6 12:31:40 2002 Nicola Pero <n.pero@mi.flashnet.it> Rewritten framework/subproject interaction so that it supports FRAMEWORK_NAME containing multiple framework names. Framework API change warning: CURRENT_VERSION_NAME replaced by XXX_CURRENT_VERSION_NAME; DEPLOY_WITH_CURRENT_VERSION replaced by XXX_DEPLOY_WITH_CURRENT_VERSION. * common.make (CURRENT_VERSION_NAME): Do not define here. (DEPLOY_WITH_CURRENT_VERSION): Idem. * Instance/framework.make: Added support for xxx_CURRENT_VERSION_NAME and xxx_DEPLOY_WITH_CURRENT_VERSION. * rules.make (FRAMEWORK_NAME): Do not define here. (FRAMEWORK_DIR_NAME): Idem. (FRAMEWORK_VERSION_DIR_NAME): Idem. * Master/framework.make (FRAMEWORK_NAME): Set here. * Instance/framework.make (FRAMEWORK_DIR_NAME, FRAMEWORK_VERSION_DIR_NAME): Set here. * Master/rules.make (%.subprojects): Pass to submakes for subprojects OWNING_PROJECT_HEADER_DIR instead of FRAMEWORK_NAME and FRAMEWORK_VERSION_DIR_NAME; set the new variable manually depending on the instance we're building. (%.variables): Similar change. * Master/subproject.make (build-headers): Always define this rule; don't depend on FRAMEWORK_NAME. (internal-install, internal-uninstall: Always run install / uninstall, no matter what FRAMEWORK_NAME is. * rules.make (CURRENT_FRAMEWORK_HEADERS_FLAG): Renamed to DERIVED_SOURCES_HEADERS_FLAG. Include it also if OWNING_PROJECT_HEADER_DIR is non empty. * Instance/subproject.make: Rewritten header copying for frameworks and such; now manage headers basing on the OWNING_PROJECT_HEADER_DIR variable only. Wed Nov 6 12:09:09 2002 Nicola Pero <n.pero@mi.flashnet.it> * Instance/framework.make (internal-framework-distclean): Do not remove DERIVED_SOURCES; already removed on make clean. Wed Nov 6 10:56:55 2002 Nicola Pero <n.pero@mi.flashnet.it> * Instance/application.make (.PHONY): Added internal-app-copy_into_dir. (internal-app-copy_into_dir): Implemented. 2002-11-05 Adam Fedor <fedor@gnu.org> * Documentation/README.MinGW: Add note about setting installation prefix. * Documentation/faq.texi: Typo. * Documentation/machines.texi: Updates. * Documentation/userfaq.texi: Idem. Mon Nov 4 14:59:27 2002 Nicola Pero <n.pero@mi.flashnet.it> * Instance/documentation.make (internal-doc-install_): Moved before the submakefile fragments are included, to fix installation problem. Mon Nov 4 12:44:07 2002 Nicola Pero <n.pero@mi.flashnet.it> * GNUmakefile.in (distclean): Remove fixpath.sh. Mon Nov 4 12:08:58 2002 Nicola Pero <n.pero@mi.flashnet.it> * Instance/Documentation: New directory. * Instance/Documentation/autogsdoc.make: New file. * Instance/Documentation/gsdoc.make: New file. * Instance/Documentation/javadoc.make: New file. * Instance/Documentation/latex.make: New file. * Instance/Documentation/texi.make: New file. * Instance/documentation.make: Include only the appropriate documentation makefiles; most code moved into the specific documentation makefiles. * GNUmakefile.in (install): Create the GNUSTEP_MAKEFILES/Instance/Documentation directory. (INSTANCE_DOC_MAKE_FILES): List the new makefiles in this variable. (install): Install them. * rules.make ($(GNUSTEP_MAKEFILES)/Instance/Documentation/*.make): New rule to let make know that all documentation makefiles are always up to date. Fri Nov 1 14:00:11 2002 Nicola Pero <n.pero@mi.flashnet.it> * common.make (GNUSTEP_MAKEINFO, GNUSTEP_MAKEINFO_FLAGS, GNUSTEP_MAKETEXT, GNUSTEP_MAKETEXT_FLAGS, GNUSTEP_TEXI2DVI, GNUSTEP_TEXI2DVI_FLAGS, GNUSTEP_TEXI2HTML, GNUSTEP_TEXI2HTML_FLAGS, GNUSTEP_DVIPS, GNUSTEP_DVIPS_FLAGS, AUTOGSDOC, JAVADOC, ALL_JAVADOCFLAGS): Moved into Instance/documentation.make * rules.make (ALL_JAVADOCFLAGS): Moved into Instance/documentation.make. * Instance/documentation.make: Set all these documentation specific flags and options here. (ADDITIONAL_MAKEINFO_FLAGS, ADDITIONAL_MAKETEXT_FLAGS, ADDITIONAL_TEXI2DVI_FLAGS, ADDITIONAL_TEXI2HTML_FLAGS, ADDITIONAL_DVIPS_FLAGS): New variables. Fri Nov 1 13:36:25 2002 Nicola Pero <n.pero@mi.flashnet.it> * ChangeLog: Moved into ChangeLog.1 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/os.sh����������������������������������������������������������������������������0000775�0001750�0001750�00000001430�10711636501�014712� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # # os.sh # # Print out the OS from a canonical name. # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. echo $1 | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/' ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/gswapp.make����������������������������������������������������������������������0000664�0001750�0001750�00000001632�10711636501�016076� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # gswapp.make # # Makefile rules to build GNUstep web based applications. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/gswapp.make else ifeq ($(GNUSTEP_TYPE),gswapp) include $(GNUSTEP_MAKEFILES)/Instance/gswapp.make endif endif ������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/filesystem.make.in���������������������������������������������������������������0000664�0001750�0001750�00000034027�11542136221�017367� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # filesystem.make # # Sets up the filesystem paths # # Copyright (C) 2007 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola.pero@meta-innovation.com>, # Matt Rice <ratmice@gmail.com>, # # Date: February 2007 # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # We make sure that all the interesting paths in all domains are # defined. Having this is a great help in iterating over header dirs, # for example. # # PS: If you change this list, make sure that top update the list of # paths used in common.make when GNUSTEP_INSTALLATION_DIR is set. # # # We use '?=' to only set variables that have not already been set by # the user in the config files (that should be read before this file). # So, this describes the GNUstep filesystem default that is # automatically used when the config file is missing some settings. # # Some directories are fixed to be subdirectories of Library. # # We keep the list in this simple format (instead of generating it # from functions, for example) to make it very easy to read for # everyone. # # # Location of Users directories ... never used by gnustep-make. # GNUSTEP_SYSTEM_USERS_DIR ?= @GNUSTEP_SYSTEM_USERS_DIR@ GNUSTEP_LOCAL_USERS_DIR ?= @GNUSTEP_LOCAL_USERS_DIR@ GNUSTEP_NETWORK_USERS_DIR ?= @GNUSTEP_NETWORK_USERS_DIR@ # # SYSTEM domain # GNUSTEP_SYSTEM_APPS ?= @GNUSTEP_SYSTEM_APPS@ GNUSTEP_SYSTEM_ADMIN_APPS ?= @GNUSTEP_SYSTEM_ADMIN_APPS@ GNUSTEP_SYSTEM_WEB_APPS ?= @GNUSTEP_SYSTEM_WEB_APPS@ GNUSTEP_SYSTEM_TOOLS ?= @GNUSTEP_SYSTEM_TOOLS@ GNUSTEP_SYSTEM_ADMIN_TOOLS ?= @GNUSTEP_SYSTEM_ADMIN_TOOLS@ GNUSTEP_SYSTEM_LIBRARY ?= @GNUSTEP_SYSTEM_LIBRARY@ GNUSTEP_SYSTEM_HEADERS ?= @GNUSTEP_SYSTEM_HEADERS@ GNUSTEP_SYSTEM_LIBRARIES ?= @GNUSTEP_SYSTEM_LIBRARIES@ GNUSTEP_SYSTEM_DOC ?= @GNUSTEP_SYSTEM_DOC@ GNUSTEP_SYSTEM_DOC_MAN ?= @GNUSTEP_SYSTEM_DOC_MAN@ GNUSTEP_SYSTEM_DOC_INFO ?= @GNUSTEP_SYSTEM_DOC_INFO@ # # SYSTEM domain, variables that are fixed to subdirs of LIBRARY # GNUSTEP_SYSTEM_APPLICATION_SUPPORT = $(GNUSTEP_SYSTEM_LIBRARY)/ApplicationSupport GNUSTEP_SYSTEM_BUNDLES = $(GNUSTEP_SYSTEM_LIBRARY)/Bundles GNUSTEP_SYSTEM_FRAMEWORKS = $(GNUSTEP_SYSTEM_LIBRARY)/Frameworks GNUSTEP_SYSTEM_PALETTES = $(GNUSTEP_SYSTEM_LIBRARY)/ApplicationSupport/Palettes GNUSTEP_SYSTEM_SERVICES = $(GNUSTEP_SYSTEM_LIBRARY)/Services GNUSTEP_SYSTEM_RESOURCES = $(GNUSTEP_SYSTEM_LIBRARY)/Libraries/Resources GNUSTEP_SYSTEM_JAVA = $(GNUSTEP_SYSTEM_LIBRARY)/Libraries/Java # # NETWORK domain # GNUSTEP_NETWORK_APPS ?= @GNUSTEP_NETWORK_APPS@ GNUSTEP_NETWORK_ADMIN_APPS ?= @GNUSTEP_NETWORK_ADMIN_APPS@ GNUSTEP_NETWORK_WEB_APPS ?= @GNUSTEP_NETWORK_WEB_APPS@ GNUSTEP_NETWORK_TOOLS ?= @GNUSTEP_NETWORK_TOOLS@ GNUSTEP_NETWORK_ADMIN_TOOLS ?= @GNUSTEP_NETWORK_ADMIN_TOOLS@ GNUSTEP_NETWORK_LIBRARY ?= @GNUSTEP_NETWORK_LIBRARY@ GNUSTEP_NETWORK_HEADERS ?= @GNUSTEP_NETWORK_HEADERS@ GNUSTEP_NETWORK_LIBRARIES ?= @GNUSTEP_NETWORK_LIBRARIES@ GNUSTEP_NETWORK_DOC ?= @GNUSTEP_NETWORK_DOC@ GNUSTEP_NETWORK_DOC_MAN ?= @GNUSTEP_NETWORK_DOC_MAN@ GNUSTEP_NETWORK_DOC_INFO ?= @GNUSTEP_NETWORK_DOC_INFO@ # # NETWORK domain, variables that are fixed to subdirs of LIBRARY # GNUSTEP_NETWORK_APPLICATION_SUPPORT = $(GNUSTEP_NETWORK_LIBRARY)/ApplicationSupport GNUSTEP_NETWORK_BUNDLES = $(GNUSTEP_NETWORK_LIBRARY)/Bundles GNUSTEP_NETWORK_FRAMEWORKS = $(GNUSTEP_NETWORK_LIBRARY)/Frameworks GNUSTEP_NETWORK_PALETTES = $(GNUSTEP_NETWORK_LIBRARY)/ApplicationSupport/Palettes GNUSTEP_NETWORK_SERVICES = $(GNUSTEP_NETWORK_LIBRARY)/Services GNUSTEP_NETWORK_RESOURCES = $(GNUSTEP_NETWORK_LIBRARY)/Libraries/Resources GNUSTEP_NETWORK_JAVA = $(GNUSTEP_NETWORK_LIBRARY)/Libraries/Java # # LOCAL domain # GNUSTEP_LOCAL_APPS ?= @GNUSTEP_LOCAL_APPS@ GNUSTEP_LOCAL_ADMIN_APPS ?= @GNUSTEP_LOCAL_ADMIN_APPS@ GNUSTEP_LOCAL_WEB_APPS ?= @GNUSTEP_LOCAL_WEB_APPS@ GNUSTEP_LOCAL_TOOLS ?= @GNUSTEP_LOCAL_TOOLS@ GNUSTEP_LOCAL_ADMIN_TOOLS ?= @GNUSTEP_LOCAL_ADMIN_TOOLS@ GNUSTEP_LOCAL_LIBRARY ?= @GNUSTEP_LOCAL_LIBRARY@ GNUSTEP_LOCAL_HEADERS ?= @GNUSTEP_LOCAL_HEADERS@ GNUSTEP_LOCAL_LIBRARIES ?= @GNUSTEP_LOCAL_LIBRARIES@ GNUSTEP_LOCAL_DOC ?= @GNUSTEP_LOCAL_DOC@ GNUSTEP_LOCAL_DOC_MAN ?= @GNUSTEP_LOCAL_DOC_MAN@ GNUSTEP_LOCAL_DOC_INFO ?= @GNUSTEP_LOCAL_DOC_INFO@ # # LOCAL domain, variables that are fixed to subdirs of LIBRARY # GNUSTEP_LOCAL_APPLICATION_SUPPORT = $(GNUSTEP_LOCAL_LIBRARY)/ApplicationSupport GNUSTEP_LOCAL_BUNDLES = $(GNUSTEP_LOCAL_LIBRARY)/Bundles GNUSTEP_LOCAL_FRAMEWORKS = $(GNUSTEP_LOCAL_LIBRARY)/Frameworks GNUSTEP_LOCAL_PALETTES = $(GNUSTEP_LOCAL_LIBRARY)/ApplicationSupport/Palettes GNUSTEP_LOCAL_SERVICES = $(GNUSTEP_LOCAL_LIBRARY)/Services GNUSTEP_LOCAL_RESOURCES = $(GNUSTEP_LOCAL_LIBRARY)/Libraries/Resources GNUSTEP_LOCAL_JAVA = $(GNUSTEP_LOCAL_LIBRARY)/Libraries/Java # # USER domain # Please note that here the GNUstep.conf values are called # GNUSTEP_USER_DIR_* which we convert into the actual GNUSTEP_USER_* # after replacing %u, %i and %% and prepending (if needed) # GNUSTEP_HOME. # GNUSTEP_USER_DIR_APPS ?= @GNUSTEP_USER_DIR_APPS@ GNUSTEP_USER_DIR_ADMIN_APPS ?= @GNUSTEP_USER_DIR_ADMIN_APPS@ GNUSTEP_USER_DIR_WEB_APPS ?= @GNUSTEP_USER_DIR_WEB_APPS@ GNUSTEP_USER_DIR_TOOLS ?= @GNUSTEP_USER_DIR_TOOLS@ GNUSTEP_USER_DIR_ADMIN_TOOLS ?= @GNUSTEP_USER_DIR_ADMIN_TOOLS@ GNUSTEP_USER_DIR_LIBRARY ?= @GNUSTEP_USER_DIR_LIBRARY@ GNUSTEP_USER_DIR_HEADERS ?= @GNUSTEP_USER_DIR_HEADERS@ GNUSTEP_USER_DIR_LIBRARIES ?= @GNUSTEP_USER_DIR_LIBRARIES@ GNUSTEP_USER_DIR_DOC ?= @GNUSTEP_USER_DIR_DOC@ GNUSTEP_USER_DIR_DOC_MAN ?= @GNUSTEP_USER_DIR_DOC_MAN@ GNUSTEP_USER_DIR_DOC_INFO ?= @GNUSTEP_USER_DIR_DOC_INFO@ # # Now, for all the GNUSTEP_USER_DIR_xxx variables above, replace: # # %u with the username # %i with the userid # %% with % # # This allows you to, for example, specify the GNUSTEP_USER_TOOLS # should be /GNUstep/Users/%u/bin/, and that would mean # /GNUstep/Users/nicola/bin for user 'nicola' and # /GNUstep/Users/richard/bin for user 'richard'. # # Avoid attempting the replacement of %u and %i if there are no %u or # %i to replace. Determining the user name and id requires a shell # commands, which is slow. So, before we do that, try to figure out # if doing the substitutions is required or not. # FIXME: Even with this protection, we'd still do the subshell call # once per sub-make invocation. # Check if any of the strings contain %i... ifneq ($(findstring %i,\ $(GNUSTEP_USER_DIR_APPS)\ $(GNUSTEP_USER_DIR_ADMIN_APPS)\ $(GNUSTEP_USER_DIR_WEB_APPS)\ $(GNUSTEP_USER_DIR_TOOLS)\ $(GNUSTEP_USER_DIR_ADMIN_TOOLS)\ $(GNUSTEP_USER_DIR_LIBRARY)\ $(GNUSTEP_USER_DIR_HEADERS)\ $(GNUSTEP_USER_DIR_LIBRARIES)\ $(GNUSTEP_USER_DIR_DOC)\ $(GNUSTEP_USER_DIR_DOC_MAN)\ $(GNUSTEP_USER_DIR_DOC_INFO)),) # ... and if so, do the replacement. GNUSTEP__USERID := $(shell id -u) GNUSTEP_USER_DIR_APPS := $(subst %i,$(GNUSTEP__USERID),$(GNUSTEP_USER_DIR_APPS)) GNUSTEP_USER_DIR_ADMIN_APPS := $(subst %i,$(GNUSTEP__USERID),$(GNUSTEP_USER_DIR_ADMIN_APPS)) GNUSTEP_USER_DIR_WEB_APPS := $(subst %i,$(GNUSTEP__USERID),$(GNUSTEP_USER_DIR_WEB_APPS)) GNUSTEP_USER_DIR_TOOLS := $(subst %i,$(GNUSTEP__USERID),$(GNUSTEP_USER_DIR_TOOLS)) GNUSTEP_USER_DIR_ADMIN_TOOLS := $(subst %i,$(GNUSTEP__USERID),$(GNUSTEP_USER_DIR_ADMIN_TOOLS)) GNUSTEP_USER_DIR_LIBRARY := $(subst %i,$(GNUSTEP__USERID),$(GNUSTEP_USER_DIR_LIBRARY)) GNUSTEP_USER_DIR_HEADERS := $(subst %i,$(GNUSTEP__USERID),$(GNUSTEP_USER_DIR_HEADERS)) GNUSTEP_USER_DIR_LIBRARIES := $(subst %i,$(GNUSTEP__USERID),$(GNUSTEP_USER_DIR_LIBRARIES)) GNUSTEP_USER_DIR_DOC := $(subst %i,$(GNUSTEP__USERID),$(GNUSTEP_USER_DIR_DOC)) GNUSTEP_USER_DIR_DOC_MAN := $(subst %i,$(GNUSTEP__USERID),$(GNUSTEP_USER_DIR_DOC_MAN)) GNUSTEP_USER_DIR_DOC_INFO := $(subst %i,$(GNUSTEP__USERID),$(GNUSTEP_USER_DIR_DOC_INFO)) endif # Check if any of the strings contain %u ... ifneq ($(findstring %u,\ $(GNUSTEP_USER_DIR_APPS)\ $(GNUSTEP_USER_DIR_ADMIN_APPS)\ $(GNUSTEP_USER_DIR_WEB_APPS)\ $(GNUSTEP_USER_DIR_TOOLS)\ $(GNUSTEP_USER_DIR_ADMIN_TOOLS)\ $(GNUSTEP_USER_DIR_LIBRARY)\ $(GNUSTEP_USER_DIR_HEADERS)\ $(GNUSTEP_USER_DIR_LIBRARIES)\ $(GNUSTEP_USER_DIR_DOC)\ $(GNUSTEP_USER_DIR_DOC_MAN)\ $(GNUSTEP_USER_DIR_DOC_INFO)),) # ... and if so, do the replacement. GNUSTEP__USERNAME := $(shell id -u -n) GNUSTEP_USER_DIR_APPS := $(subst %u,$(GNUSTEP__USERNAME),$(GNUSTEP_USER_DIR_APPS)) GNUSTEP_USER_DIR_ADMIN_APPS := $(subst %u,$(GNUSTEP__USERNAME),$(GNUSTEP_USER_DIR_ADMIN_APPS)) GNUSTEP_USER_DIR_WEB_APPS := $(subst %u,$(GNUSTEP__USERNAME),$(GNUSTEP_USER_DIR_WEB_APPS)) GNUSTEP_USER_DIR_TOOLS := $(subst %u,$(GNUSTEP__USERNAME),$(GNUSTEP_USER_DIR_TOOLS)) GNUSTEP_USER_DIR_ADMIN_TOOLS := $(subst %u,$(GNUSTEP__USERNAME),$(GNUSTEP_USER_DIR_ADMIN_TOOLS)) GNUSTEP_USER_DIR_LIBRARY := $(subst %u,$(GNUSTEP__USERNAME),$(GNUSTEP_USER_DIR_LIBRARY)) GNUSTEP_USER_DIR_HEADERS := $(subst %u,$(GNUSTEP__USERNAME),$(GNUSTEP_USER_DIR_HEADERS)) GNUSTEP_USER_DIR_LIBRARIES := $(subst %u,$(GNUSTEP__USERNAME),$(GNUSTEP_USER_DIR_LIBRARIES)) GNUSTEP_USER_DIR_DOC := $(subst %u,$(GNUSTEP__USERNAME),$(GNUSTEP_USER_DIR_DOC)) GNUSTEP_USER_DIR_DOC_MAN := $(subst %u,$(GNUSTEP__USERNAME),$(GNUSTEP_USER_DIR_DOC_MAN)) GNUSTEP_USER_DIR_DOC_INFO := $(subst %u,$(GNUSTEP__USERNAME),$(GNUSTEP_USER_DIR_DOC_INFO)) endif # Warning (FIXME?): If the username itself contains '%%' (eg, a user # with name 'nicola%%'), then such occurrences would get replaced with # '%' by the following. # Always replace '%%' with '%'. GNUSTEP_USER_DIR_APPS := $(subst %%,%,$(GNUSTEP_USER_DIR_APPS)) GNUSTEP_USER_DIR_ADMIN_APPS := $(subst %%,%,$(GNUSTEP_USER_DIR_ADMIN_APPS)) GNUSTEP_USER_DIR_WEB_APPS := $(subst %%,%,$(GNUSTEP_USER_DIR_WEB_APPS)) GNUSTEP_USER_DIR_TOOLS := $(subst %%,%,$(GNUSTEP_USER_DIR_TOOLS)) GNUSTEP_USER_DIR_ADMIN_TOOLS := $(subst %%,%,$(GNUSTEP_USER_DIR_ADMIN_TOOLS)) GNUSTEP_USER_DIR_LIBRARY := $(subst %%,%,$(GNUSTEP_USER_DIR_LIBRARY)) GNUSTEP_USER_DIR_HEADERS := $(subst %%,%,$(GNUSTEP_USER_DIR_HEADERS)) GNUSTEP_USER_DIR_LIBRARIES := $(subst %%,%,$(GNUSTEP_USER_DIR_LIBRARIES)) GNUSTEP_USER_DIR_DOC := $(subst %%,%,$(GNUSTEP_USER_DIR_DOC)) GNUSTEP_USER_DIR_DOC_MAN := $(subst %%,%,$(GNUSTEP_USER_DIR_DOC_MAN)) GNUSTEP_USER_DIR_DOC_INFO := $(subst %%,%,$(GNUSTEP_USER_DIR_DOC_INFO)) # Now, any directories in the user domain that are relative (ie, they # don't start with '/') get automatically prefixed with GNUSTEP_HOME. ifneq ($(filter /%, $(GNUSTEP_USER_DIR_APPS)),) # Path starts with '/', so we can use it as it is GNUSTEP_USER_APPS = $(GNUSTEP_USER_DIR_APPS) else # Path does no start with '/', consider it as relative to GNUSTEP_HOME GNUSTEP_USER_APPS = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_APPS) endif ifneq ($(filter /%, $(GNUSTEP_USER_DIR_ADMIN_APPS)),) # Path starts with '/', so we can use it as it is GNUSTEP_USER_ADMIN_APPS = $(GNUSTEP_USER_DIR_ADMIN_APPS) else # Path does no start with '/', consider it as relative to GNUSTEP_HOME GNUSTEP_USER_ADMIN_APPS = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_ADMIN_APPS) endif ifneq ($(filter /%, $(GNUSTEP_USER_DIR_WEB_APPS)),) # Path starts with '/', so we can use it as it is GNUSTEP_USER_WEB_APPS = $(GNUSTEP_USER_DIR_WEB_APPS) else # Path does no start with '/', consider it as relative to GNUSTEP_HOME GNUSTEP_USER_WEB_APPS = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_WEB_APPS) endif ifneq ($(filter /%, $(GNUSTEP_USER_DIR_TOOLS)),) GNUSTEP_USER_TOOLS = $(GNUSTEP_USER_DIR_TOOLS) else GNUSTEP_USER_TOOLS = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_TOOLS) endif ifneq ($(filter /%, $(GNUSTEP_USER_DIR_ADMIN_TOOLS)),) GNUSTEP_USER_ADMIN_TOOLS = $(GNUSTEP_USER_DIR_ADMIN_TOOLS) else GNUSTEP_USER_ADMIN_TOOLS = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_ADMIN_TOOLS) endif ifneq ($(filter /%, $(GNUSTEP_USER_DIR_LIBRARY)),) GNUSTEP_USER_LIBRARY = $(GNUSTEP_USER_DIR_LIBRARY) else GNUSTEP_USER_LIBRARY = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_LIBRARY) endif ifneq ($(filter /%, $(GNUSTEP_USER_DIR_HEADERS)),) GNUSTEP_USER_HEADERS = $(GNUSTEP_USER_DIR_HEADERS) else GNUSTEP_USER_HEADERS = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_HEADERS) endif ifneq ($(filter /%, $(GNUSTEP_USER_DIR_LIBRARIES)),) GNUSTEP_USER_LIBRARIES = $(GNUSTEP_USER_DIR_LIBRARIES) else GNUSTEP_USER_LIBRARIES = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_LIBRARIES) endif ifneq ($(filter /%, $(GNUSTEP_USER_DIR_DOC)),) GNUSTEP_USER_DOC = $(GNUSTEP_USER_DIR_DOC) else GNUSTEP_USER_DOC = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_DOC) endif ifneq ($(filter /%, $(GNUSTEP_USER_DIR_DOC_MAN)),) GNUSTEP_USER_DOC_MAN = $(GNUSTEP_USER_DIR_DOC_MAN) else GNUSTEP_USER_DOC_MAN = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_DOC_MAN) endif ifneq ($(filter /%, $(GNUSTEP_USER_DIR_DOC_INFO)),) GNUSTEP_USER_DOC_INFO = $(GNUSTEP_USER_DIR_DOC_INFO) else GNUSTEP_USER_DOC_INFO = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_DOC_INFO) endif # # USER domain, variables that are fixed to subdirs of LIBRARY # GNUSTEP_USER_APPLICATION_SUPPORT = $(GNUSTEP_USER_LIBRARY)/ApplicationSupport GNUSTEP_USER_BUNDLES = $(GNUSTEP_USER_LIBRARY)/Bundles GNUSTEP_USER_FRAMEWORKS = $(GNUSTEP_USER_LIBRARY)/Frameworks GNUSTEP_USER_PALETTES = $(GNUSTEP_USER_LIBRARY)/ApplicationSupport/Palettes GNUSTEP_USER_SERVICES = $(GNUSTEP_USER_LIBRARY)/Services GNUSTEP_USER_RESOURCES = $(GNUSTEP_USER_LIBRARY)/Libraries/Resources GNUSTEP_USER_JAVA = $(GNUSTEP_USER_LIBRARY)/Libraries/Java ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/bundle.make����������������������������������������������������������������������0000664�0001750�0001750�00000001621�10711636501�016044� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # bundle.make # # Makefile rules to build GNUstep-based bundles. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/bundle.make else ifeq ($(GNUSTEP_TYPE),bundle) include $(GNUSTEP_MAKEFILES)/Instance/bundle.make endif endif ���������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/app-wrapper.template�������������������������������������������������������������0000664�0001750�0001750�00000000057�10574042231�017727� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh exec openapp "GNUSTEP_INSTANCE" "$@"���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/debugapp�������������������������������������������������������������������������0000775�0001750�0001750�00000001731�10711636501�015453� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # debugapp # # Copyright (C) 2006 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola.pero@meta-innovation.com> # Date: October 2006 # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # debugapp is now a wrapper over 'openapp'. # To pass control to openapp we use 'source' here, instead of 'exec', # because we want the help messages to display 'debugapp' as the # application name instead of 'openapp'. # Set debug mode openapp_debug_mode=yes; # Source openapp . openapp ���������������������������������������gnustep-make-2.7.0/names.make�����������������������������������������������������������������������0000664�0001750�0001750�00000004661�10711636501�015705� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # names.make # # Determine the host and target systems # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Date: October 1997 # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Run config.guess to guess the host ifeq ($(GNUSTEP_HOST),) GNUSTEP_HOST_GUESS := $(shell (cd /tmp; $(CONFIG_GUESS_SCRIPT))) GNUSTEP_HOST := $(shell (cd /tmp; $(CONFIG_SUB_SCRIPT) $(GNUSTEP_HOST_GUESS))) GNUSTEP_HOST_CPU := $(shell (cd /tmp; $(CONFIG_CPU_SCRIPT) $(GNUSTEP_HOST))) GNUSTEP_HOST_VENDOR := $(shell (cd /tmp; $(CONFIG_VENDOR_SCRIPT) $(GNUSTEP_HOST))) GNUSTEP_HOST_OS := $(shell (cd /tmp; $(CONFIG_OS_SCRIPT) $(GNUSTEP_HOST))) GNUSTEP_HOST_CPU := $(shell (cd /tmp; $(CLEAN_CPU_SCRIPT) $(GNUSTEP_HOST_CPU))) GNUSTEP_HOST_VENDOR := $(shell (cd /tmp; $(CLEAN_VENDOR_SCRIPT) $(GNUSTEP_HOST_VENDOR))) GNUSTEP_HOST_OS := $(shell (cd /tmp; $(CLEAN_OS_SCRIPT) $(GNUSTEP_HOST_OS))) endif # # The user can specify a `target' variable when running make # ifeq ($(strip $(target)),) # The host is the default target GNUSTEP_TARGET := $(GNUSTEP_HOST) GNUSTEP_TARGET_CPU := $(GNUSTEP_HOST_CPU) GNUSTEP_TARGET_VENDOR := $(GNUSTEP_HOST_VENDOR) GNUSTEP_TARGET_OS := $(GNUSTEP_HOST_OS) else # # Parse the target variable # GNUSTEP_TARGET := $(shell (cd /tmp; $(CONFIG_SUB_SCRIPT) $(target))) GNUSTEP_TARGET_CPU := $(shell (cd /tmp; $(CONFIG_CPU_SCRIPT) $(GNUSTEP_TARGET))) GNUSTEP_TARGET_VENDOR := $(shell (cd /tmp; $(CONFIG_VENDOR_SCRIPT) $(GNUSTEP_TARGET))) GNUSTEP_TARGET_OS := $(shell (cd /tmp; $(CONFIG_OS_SCRIPT) $(GNUSTEP_TARGET))) GNUSTEP_TARGET_CPU := $(shell (cd /tmp; $(CLEAN_CPU_SCRIPT) $(GNUSTEP_TARGET_CPU))) GNUSTEP_TARGET_VENDOR := $(shell (cd /tmp; $(CLEAN_VENDOR_SCRIPT) $(GNUSTEP_TARGET_VENDOR))) GNUSTEP_TARGET_OS := $(shell (cd /tmp; $(CLEAN_OS_SCRIPT) $(GNUSTEP_TARGET_OS))) endif ifneq ($(arch),) export CLEANED_ARCH = $(foreach a, $(arch), $(shell (cd /tmp; $(CLEAN_CPU_SCRIPT) $(a)))) endif �������������������������������������������������������������������������������gnustep-make-2.7.0/TestFramework/�������������������������������������������������������������������0000775�0001750�0001750�00000000000�13074115161�016530� 5����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/TestFramework/example1.m���������������������������������������������������������0000664�0001750�0001750�00000000567�11530746763�020447� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#import "Testing.h" /* This is the absolute minimal test program ... * a single test case involving plain C and no Objective-C code. * * If you run the test with 'gnustep-tests example1.m' it should * report a single test pass */ int main() { /* This is too simple to really be useful, but it's a start. */ pass(1 == 1, "integer equality works"); return 0; } �����������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/TestFramework/example8.m���������������������������������������������������������0000664�0001750�0001750�00000001615�11531764775�020455� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#import "Testing.h" #import <Foundation/NSRange.h> /* An eighth test ... complex code fragments * * If you run the test with 'gnustep-tests example8.m' it should * report one test pass. */ int main() { /* Start a set. */ START_SET("example set") /* Here we demonstrate that the 'expression' evaluated by the PASS * macro can actually be an arbitrarily complex piece of code as * long as the last statement returns an integral value which can * be used to represent a pass (non zero) or fail (if zero). * Where such a code fragment contains commas, it must be written * inside brackets to let the macro preprocessor know that the whole * code fragement is the first parameter to the macro. */ PASS(({ NSRange r = NSMakeRange(1, 10); NSEqualRanges(r, NSMakeRange(1, 10)); }), "a long code-fragment/expression works") END_SET("example set") return 0; } �������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/TestFramework/Summary.sh���������������������������������������������������������0000664�0001750�0001750�00000007015�12715566113�020534� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # Script to generate summary/advice based on the data in $GSTESTSUM # # Authors of individual testsuites may supply their own implementation # of Summary.sh to be used if someone runs their test framework. # # The script may examine the contents of $GSTESTSUM (containing totals of # each kind of test result) or $GSTESTLOG (the full testrun log) to decide # what sort of summary to present. # # The script may also use the value of the $GSTESTMODE variable to decide # what it does. # if [ "$GSTESTMODE" = "clean" ] then exit 0 fi # Function for platforms where grep can't search for multiple patterns. present() { f=$1 shift while test $# != 0 do grep "$1" "$f" >/dev/null if [ $? = "0" ] then return 0 fi shift done return 1 } if test -r "$GSTESTSUM" then present "$GSTESTSUM" "Failed set$" "Failed sets$" "Failed test$" "Failed tests$" "Failed build$" "Failed builds$" "Failed file$" "Failed files$" if [ $? = 1 ] then echo "All OK!" if present "$GSTESTSUM" "Dashed hope$" "Dashed hopes$" then echo echo "But we were hoping that even more tests might have passed if" echo "someone had added support for them to the package. If you" echo "would like to help, please contact the package maintainer." fi if present "$GSTESTSUM" "Skipped set$" "Skipped sets$" then echo echo "Even though no tests failed, we had to skip some testing" echo "due to lack of support on your system. This might be because" echo "some required software library was just not available when the" echo "software was built (in which case you can install that library" echo "and rebuild, then re-run the tests), or the required functions" echo "may not be available on your operating system at all." echo "Please see $GSTESTLOG for more detail." echo "If you would like to contribute code to add the missing" echo "functionality, please contact the package maintainer." fi else if [ "$GSTESTMODE" = "failfast" ] then exit 0 fi if present "$GSTESTSUM" "Failed build$" "Failed build$" then echo echo "Unfortunately we could not even compile all the test programs." echo "This means that the test could not be run properly, and you need" echo "to try to figure out why and fix it or ask for help." fi if present "$GSTESTSUM" "Failed file$" "Failed files$" then echo echo "Some testing was abandoned when a test program aborted. This is" echo "generally a severe problem and may mean that the package is" echo "completely unusable. You need to try to fix this and, if it is" echo "not due to some problem on your system, please help by submitting" echo "a patch (or at least a bug report) to the package maintainer." fi if present "$GSTESTSUM" "Failed set$" "Failed sets$" then echo echo "Some set of tests failed. This could well mean that a large" echo "number of individual tests did not pass and that there are" echo "severe problems in the software." echo "Please submit a patch to fix the problem or send a bug report to" echo "the package maintainer." fi if present "$GSTESTSUM" "Failed test$" "Failed tests$" then echo echo "One or more tests failed. None of them should have." echo "Please submit a patch to fix the problem or send a bug report to" echo "the package maintainer." fi echo "Please see $GSTESTLOG for more detail." fi fi �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/TestFramework/example5.m���������������������������������������������������������0000664�0001750�0001750�00000001420�11531503231�020416� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#import "Testing.h" /* A fifth test ... hope. * * If you run the test with 'gnustep-tests example5.m' it should * report one hope dashed and two test passes. */ int main() { START_SET("example set") /* First set a flag to say that we are not expecting tests to * actually pass. */ testHopeful = YES; /* Here the test should result in a dashed hope rather than a fail. */ PASS(1 == 0, "silly test which we don't expect to pass") /* This test should simply pass of course. */ PASS(1 == 1, "integer equality works") END_SET("example set") /* And here we demonstrate that on exit from the set, the global * variable is restored to its state on entry. */ pass(NO == testHopeful, "the flag state is restored outside the set"); return 0; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/TestFramework/TestInfo�����������������������������������������������������������0000664�0001750�0001750�00000000000�11531253271�020175� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/TestFramework/ObjectTesting.h����������������������������������������������������0000664�0001750�0001750�00000041461�12130476120�021450� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* ObjectTesting - Include basic object tests for the GNUstep Testsuite Copyright (C) 2005 Free Software Foundation, Inc. Written by: Matt Rice? This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. */ #import <Testing.h> #import <Foundation/NSArray.h> #import <Foundation/NSDictionary.h> #import <Foundation/NSData.h> #import <Foundation/NSArchiver.h> #import <Foundation/NSKeyedArchiver.h> /* This file contains macros of testing some basic protocol implementation * common to almost all classes. * * The reason for using macros rather than functions is that it allows the * preprocessor and compiler to generate messages containign the file name * and line number of the location of problems in your own testcase code. * * Sometimes, with a complex testing process, you want the location of the * problem within that process ... so to aid that we also have function * equivalents of the macros. */ /* Macro to perform basic allocation tests */ #define TEST_ALLOC(CN) \ { \ NSString *className = (CN); \ Class theClass = NSClassFromString(className); \ id obj0 = nil; \ id obj1 = nil; \ const char *prefix = [[NSString stringWithFormat: @"Class '%@'", className] \ UTF8String]; \ NSZone *testZone = NSCreateZone(1024, 1024, 1); \ PASS(theClass != Nil, "%s exists", prefix); \ \ obj0 = [theClass alloc]; \ PASS(obj0 != nil, "%s has working alloc", prefix); \ PASS([obj0 isKindOfClass: theClass], \ "%s alloc gives the correct class", prefix); \ obj0 = [[theClass alloc] init]; \ PASS([obj0 isKindOfClass: theClass], "%s has working init", prefix); \ \ obj0 = [theClass new]; \ PASS([obj0 isKindOfClass: theClass], "%s has working new", prefix); \ \ obj1 = [theClass allocWithZone: testZone]; \ PASS([obj1 isKindOfClass: theClass],"%s has working allocWithZone",prefix); \ } static void test_alloc(NSString *CN) __attribute__ ((unused)); static void test_alloc(NSString *CN) { TEST_ALLOC(CN); } /* Macro to perform basic allocation tests without initialisation */ #define TEST_ALLOC_ONLY(CN) \ { \ NSString *className = (CN); \ Class theClass = NSClassFromString(className); \ id obj0 = nil; \ id obj1 = nil; \ const char *prefix = [[NSString stringWithFormat: @"Class '%@'", className] \ UTF8String]; \ NSZone *testZone = NSCreateZone(1024, 1024, 1); \ PASS(theClass != Nil, "%s exists", prefix); \ \ obj0 = [theClass alloc]; \ PASS(obj0 != nil, "%s has working alloc", prefix); \ PASS([obj0 isKindOfClass: theClass], \ "%s alloc gives the correct class", prefix); \ PASS_EXCEPTION([obj0 description], NSInvalidArgumentException, \ "raises NSInvalidArgumentException in description") \ \ PASS_EXCEPTION(if([obj0 init]==nil)[NSException raise: NSInvalidArgumentException format: @""], \ NSInvalidArgumentException, \ "returns nil or raises NSInvalidArgumentException in init") \ \ PASS_EXCEPTION(if([theClass new]==nil)[NSException raise: NSInvalidArgumentException format: @""], \ NSInvalidArgumentException, \ "returns nil or raises NSInvalidArgumentException in new") \ \ obj1 = [theClass allocWithZone: testZone]; \ PASS([obj1 isKindOfClass: theClass],"%s has working allocWithZone",prefix); \ } static void test_alloc_only(NSString *CN) __attribute__ ((unused)); static void test_alloc_only(NSString *CN) { TEST_ALLOC_ONLY(CN); } /* Macro to test for the NSObject protocol * Arguments are: * CN The name of the class to be tested * OJS An arraayof objects to be tested */ #define TEST_NSOBJECT(CN, OJS) \ { \ NSString *className = (CN); \ NSArray *objects = (OJS); \ int i; \ Class theClass = Nil; \ theClass = NSClassFromString(className); \ PASS(theClass != Nil, "%s is a known className", [className UTF8String]); \ \ for (i = 0; i < [objects count]; i++) \ { \ id theObj = [objects objectAtIndex: i]; \ id mySelf = nil; \ Class myClass = Nil; \ int count1; \ int count2; \ Class sup = Nil; \ const char *prefix; \ id r; \ \ prefix = [[NSString stringWithFormat: @"Object %i of class '%@'", \ i, className] UTF8String]; \ PASS([theObj conformsToProtocol: @protocol(NSObject)], \ "%s conforms to NSObject", prefix); \ mySelf = [theObj self]; \ PASS(mySelf == theObj, "%s can return self", prefix); \ myClass = [theObj class]; \ PASS(myClass != Nil, "%s can return own class", prefix); \ PASS([theObj isKindOfClass: theClass], \ "%s object %.160s is of correct class", prefix, \ [[theObj description] UTF8String]); \ PASS(mySelf == myClass ? ![theObj isMemberOfClass: myClass] \ : [theObj isMemberOfClass: myClass], \ "%s isMemberOfClass works", prefix); \ sup = [theObj superclass]; \ PASS(theClass == NSClassFromString(@"NSObject") ? sup == nil \ : (sup != nil && sup != myClass), "%s can return superclass", prefix); \ PASS([theObj respondsToSelector: @selector(hash)], \ "%s responds to hash", prefix); \ PASS([theObj isEqual: theObj], "%s isEqual: to self", prefix); \ PASS([theObj respondsToSelector: @selector(self)], \ "%s respondsToSelector: ", prefix); \ [theObj isProxy]; \ r = [theObj retain]; \ PASS(theObj == r, "%s handles retain", prefix); \ [theObj release]; \ [theObj retain]; \ [theObj autorelease]; \ \ count1 = [theObj retainCount]; \ [theObj retain]; \ [theObj release]; \ count2 = [theObj retainCount]; \ PASS((count1 == count2), "%s has working retainCount", prefix); \ PASS([[theObj description] isKindOfClass: [NSString class]], \ "%s has NSString description", prefix); \ PASS([theObj performSelector: @selector(self)] == theObj, \ "%s handles performSelector", prefix); \ } \ } static void test_NSObject(NSString *CN, NSArray *OJS) __attribute__ ((unused)); static void test_NSObject(NSString *CN, NSArray *OJS) { TEST_NSOBJECT(CN, OJS) } /* Archives each object in the array, then unarchives it and checks that * the two are equal (using the PASS_EQUAL macro). */ #define TEST_NSCODING(OJS) \ { \ NSArray *objects = (OJS); \ int i; \ for (i = 0; i < [objects count]; i++) \ { \ char buf[100]; \ id obj = [objects objectAtIndex: i]; \ const char *prefix; \ NSMutableData *data; \ NSArchiver *archiver; \ id decoded; \ \ snprintf(buf, sizeof(buf), "test_NSCoding object %u", i); \ START_SET(buf) \ PASS([[[obj class] description] length], \ "I can extract a class name for object"); \ \ prefix = [[NSString stringWithFormat: @"Object %i of class '%s'", i, \ [NSStringFromClass([obj class]) UTF8String]] UTF8String]; \ PASS([obj conformsToProtocol: @protocol(NSCoding)], \ "conforms to NSCoding protocol"); \ data = (NSMutableData *)[NSMutableData data]; \ archiver = [[NSArchiver alloc] initForWritingWithMutableData: data]; \ PASS(archiver != nil, "I am able to set up an archiver"); \ data = nil; \ [archiver encodeRootObject: obj]; \ data = [archiver archiverData]; \ PASS(data && [data length] > 0, "%s can be encoded", prefix); \ decoded = [NSUnarchiver unarchiveObjectWithData: data]; \ PASS(decoded != nil, "can be decoded"); \ PASS_EQUAL(decoded, obj, "decoded object equals the original"); \ END_SET(buf) \ } \ } static void test_NSCoding(NSArray *OJS) __attribute__ ((unused)); static void test_NSCoding(NSArray *OJS) { TEST_NSCODING(OJS); } /* Archives each object in the argument array, * then unarchives it and checks that the two are * equal using the PASS_EQUAL macro. */ #define TEST_KEYED_NSCODING(OJS) \ { \ NSArray *objects = (OJS); \ int i; \ for (i = 0; i < [objects count]; i++) \ { \ char buf[100]; \ id obj = [objects objectAtIndex: i]; \ const char *prefix; \ NSData *data; \ id decoded; \ \ snprintf(buf, sizeof(buf), "test_keyed_NSCoding object %u", i); \ START_SET(buf) \ PASS([[[obj class] description] length], \ "I can extract a class name for object"); \ \ prefix = [[NSString stringWithFormat: @"Object %i of class '%s'", i, \ [NSStringFromClass([obj class]) UTF8String]] UTF8String]; \ PASS([obj conformsToProtocol: @protocol(NSCoding)], \ "conforms to NSCoding protocol"); \ data = [NSKeyedArchiver archivedDataWithRootObject: obj]; \ PASS([data length] > 0, "%s can be encoded", prefix); \ decoded = [NSKeyedUnarchiver unarchiveObjectWithData: data]; \ PASS(decoded != nil, "can be decoded"); \ PASS_EQUAL(decoded, obj, "decoded object equals the original") \ END_SET(buf) \ } \ } static void test_keyed_NSCoding(NSArray *OJS) __attribute__ ((unused)); static void test_keyed_NSCoding(NSArray *OJS) { TEST_KEYED_NSCODING(OJS); } /* A macro for testing that objects conform to, and * implement the NSCopying protocol. * Macro arguments are: * ICN An NSString object containing the name of the * immutable class to be immutably copied. * MCN An NSString object containing the name of the * mutable class corresponding to the immutable * class. * OJS An NSArray object containg one or more objects * to be tested. * MRT A flag saying whether copies of an immutable * instance in the same zone must be implemented * by simply retaining the original. * MCP A flag saying whether copies of an immutable * instance must always be made as real copies * rather than by retaining the original. */ #define TEST_NSCOPYING(ICN, MCN, OJS, MRT, MCP) \ { \ NSString *iClassName = (ICN); \ NSString *mClassName = (MCN); \ NSArray *objects = (OJS); \ BOOL mustRetain = (MRT); \ BOOL mustCopy = (MCP); \ Class iClass = NSClassFromString(iClassName); \ Class mClass = NSClassFromString(mClassName); \ int i; \ NSZone *testZone = NSCreateZone(1024, 1024, 1); \ \ PASS(iClass != Nil, "%s is a known class", [iClassName UTF8String]); \ PASS(mClass != Nil, "%s is a known class", [mClassName UTF8String]); \ \ for (i = 0; i < [objects count]; i++) \ { \ char buf[100]; \ BOOL immutable; \ NSString *theName; \ const char *prefix; \ id theCopy = nil; \ Class theClass = Nil; \ id theObj = [objects objectAtIndex: i]; \ \ snprintf(buf, sizeof(buf), "test_NSCopying object %u", i); \ START_SET(buf) \ if (iClass != mClass && [theObj isKindOfClass: mClass]) \ { \ immutable = NO; \ theName = iClassName; \ theClass = iClass; \ } \ else \ { \ immutable = YES; \ theName = mClassName; \ theClass = mClass; \ } \ \ prefix = [[NSString stringWithFormat: @"Object %i of class '%s'", \ i, [theName UTF8String]] UTF8String]; \ PASS([theObj conformsToProtocol: @protocol(NSCopying)], \ "conforms to NSCopying"); \ theCopy = [theObj copy]; \ PASS(theCopy != nil, "%s understands -copy", prefix); \ PASS([theCopy isKindOfClass: iClass], \ "%s copy is of correct type", prefix); \ PASS_EQUAL(theCopy, theObj, \ "%s original and copy are equal", prefix); \ if (immutable) \ { \ if (YES == mustRetain) \ { \ PASS(theCopy == theObj, \ "%s is retained by copy with same zone", prefix); \ } \ else if (YES == mustCopy) \ { \ PASS(theCopy != theObj, \ "%s is not retained by copy with same zone", prefix); \ } \ } \ if (theClass != iClass) \ { \ PASS(![theCopy isKindOfClass: theClass], \ "%s result of copy is not immutable", prefix); \ } \ \ theCopy = [theObj copyWithZone: testZone]; \ PASS(theCopy != nil, "%s understands -copyWithZone", prefix); \ PASS([theCopy isKindOfClass: iClass], \ "%s zCopy has correct type", prefix); \ PASS_EQUAL(theCopy, theObj, \ "%s copy and original are equal", prefix); \ if (immutable) \ { \ if (YES == mustRetain) \ { \ PASS(theCopy == theObj, \ "%s is retained by copy with other zone", prefix); \ } \ else if (YES == mustCopy) \ { \ PASS(theCopy != theObj, \ "%s is not retained by copy with other zone", prefix); \ } \ } \ if (theClass != iClass) \ PASS(![theCopy isKindOfClass: theClass], \ "%s result of copyWithZone: is not immutable", prefix); \ END_SET(buf) \ } \ } static void test_NSCopying( NSString *ICN, NSString *MCN, NSArray *OJS, BOOL MRT, BOOL MCP) __attribute__ ((unused)); static void test_NSCopying( NSString *ICN, NSString *MCN, NSArray *OJS, BOOL MRT, BOOL MCP) { TEST_NSCOPYING(ICN, MCN, OJS, MRT, MCP); } /* A macro for testing that objects conform to, and * implement the mutable copying protocol. * Macro arguments are: * ICN An NSString object containing the name of the * immutable class to be mutably copied. * MCN An NSString object containing the name of the * mutable class to be produced as a result of * the copy. * OJS An NSArray object containg one or more objects * to be tested. */ #define TEST_NSMUTABLECOPYING(ICN, MCN, OJS) \ { \ NSString *iClassName = (ICN); \ NSString *mClassName = (MCN); \ NSArray *objects = (OJS); \ int i; \ Class iClass = Nil; \ Class mClass = Nil; \ NSZone *testZone = NSCreateZone(1024, 1024, 1); \ iClass = NSClassFromString(iClassName); \ PASS(iClass != Nil, "%s is a known class", [iClassName UTF8String]); \ \ mClass = NSClassFromString(mClassName); \ PASS(mClass != Nil, "%s is a known class", [mClassName UTF8String]); \ \ for (i = 0; i < [objects count]; i++) \ { \ char buf[100]; \ id theObj = [objects objectAtIndex: i]; \ NSString *theName = nil; \ const char *prefix; \ BOOL immutable; \ id theCopy = nil; \ \ snprintf(buf, sizeof(buf), "test_NSMutableCopying object %u", i); \ START_SET(buf); \ if (iClass == mClass && [theObj isKindOfClass: mClass]) \ immutable = NO; \ else \ immutable = YES; \ \ if (YES == immutable) \ { \ theName = iClassName; \ } \ else \ { \ theName = mClassName; \ } \ \ prefix = [[NSString stringWithFormat: \ @"Object %i of class '%s'", i, [theName UTF8String]] UTF8String]; \ PASS([theObj conformsToProtocol: @protocol(NSMutableCopying)], \ "%s conforms to NSMutableCopying protocol", prefix); \ theCopy = [theObj mutableCopy]; \ PASS(theCopy != nil, "%s understands -mutableCopy", prefix); \ PASS([theCopy isKindOfClass: mClass], \ "%s mutable copy is of correct type", prefix); \ PASS_EQUAL(theCopy, theObj, \ "%s copy object equals the original", prefix); \ PASS(theCopy != theObj, \ "%s not retained by mutable copy in the same zone", \ [mClassName UTF8String]); \ \ theCopy = [theObj mutableCopyWithZone: testZone]; \ PASS(theCopy != nil, \ "%s understands mutableCopyWithZone", [mClassName UTF8String]); \ PASS(theCopy != theObj, \ "%s not retained by mutable copy in other zone", \ [mClassName UTF8String]); \ END_SET(buf) \ } \ } static void test_NSMutableCopying( NSString *ICN, NSString *MCN, NSArray *OJS) __attribute__ ((unused)); static void test_NSMutableCopying(NSString *ICN, NSString *MCN, NSArray *OJS) { TEST_NSMUTABLECOPYING(ICN, MCN, OJS); } /* DEPRECATED ... please use the START_SET/END_SET and PASS macros instead. START_TEST/END_TEST can be used if the code being tested could raise and the exception should be considered a test failure. The exception is not reraised to allow subsequent tests to execute. The START_TEST macro takes an argument which will skip the test as Skipped if it evaluates to 0, allowing runtime control of whether the code block should be executed. */ #define START_TEST(supported) if ((supported)) { NS_DURING #define END_TEST(result, desc, args...) \ pass(result, desc, ## args); \ NS_HANDLER \ fprintf(stderr, "EXCEPTION: %s %s %s\n", \ [[localException name] UTF8String], \ [[localException reason] UTF8String], \ [[[localException userInfo] description] UTF8String]); \ pass (NO, desc, ## args); NS_ENDHANDLER } \ else { fprintf(stderr, "Failed test: " desc, ## args); \ fprintf(stderr, "\n"); } /* Quick test to check that we have the class we expect. */ #define TEST_FOR_CLASS(aClassName, aClass, TestDescription) \ PASS([aClass isKindOfClass: NSClassFromString(aClassName)], TestDescription) /* Quick test to check for a non-empty string in the case where we don't * actually know what value we should be expecting. */ #define TEST_STRING(code, description) \ { \ NSString *_testString = code; \ pass(_testString != nil \ && [_testString isKindOfClass: [NSString class]] \ && [_testString length], description); \ } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/TestFramework/example3.m���������������������������������������������������������0000664�0001750�0001750�00000002213�11531503231�020415� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#import "Testing.h" /* A third test ... using test macros. * * If you run the test with 'gnustep-tests example3.m' it should * report two test passes, and a test fail. */ /* Import a header because we want to use a method from it. */ #import <Foundation/NSDictionary.h> int main() { /* We start a set here ... * Having a set means we do not need to bother creating an autorelease pool. */ START_SET("example set") /* We use a macro here so that any exception in the expression we use * will not break out of the set, and the two remaining tests will be * run. */ PASS([(NSDictionary*)@"abc" objectForKey: @"xxx"], "sending a bad message") pass(1 == 1, "integer equality works"); /* And let's use a macro here too ... the expression is not going to * raise an exception unless NSObject is somehow broken, and even if * it did, this is the last test in the set, so it wouldn't matter, * but it's good practice to code safely in case we move the code * around in a later version of the program. */ PASS([[NSObject new] autorelease] != nil, "+new creates an object") END_SET("example set") return 0; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/TestFramework/example2.m���������������������������������������������������������0000664�0001750�0001750�00000000753�11531503231�020423� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#import "Testing.h" /* A second test ... your first go at testing with ObjectiveC * * If you run the test with 'gnustep-tests example2.m' it should * report two test passes. */ int main() { /* We start a set here ... * Having a set means we do not need to bother creating an autorelease pool. */ START_SET("example set") pass(1 == 1, "integer equality works"); pass([[NSObject new] autorelease] != nil, "+new creates an object"); END_SET("example set") return 0; } ���������������������gnustep-make-2.7.0/TestFramework/GNUmakefile.in�����������������������������������������������������0000664�0001750�0001750�00000001131�12613117044�021203� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# __GENERATED__ makefile marker # include $(GNUSTEP_MAKEFILES)/common.make -include ../GNUmakefile.super @TESTOPTS@ TEST_TOOL_NAME = @TESTNAMES@ ifeq ($(gcov),yes) ADDITIONAL_OBJCFLAGS += -ftest-coverage -fprofile-arcs ADDITIONAL_OBJCCFLAGS += -ftest-coverage -fprofile-arcs ADDITIONAL_LDFLAGS += -ftest-coverage -fprofile-arcs ADDITIONAL_TOOL_LIBS+=-lgcov endif @TESTRULES@ -include GNUmakefile.preamble -include make-check.mak include $(GNUSTEP_MAKEFILES)/test-tool.make -include GNUmakefile.postamble after-clean:: rm -f core core.* *.core \ tests.log tests.sum oldtests.log oldtests.sum ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/TestFramework/example7.m���������������������������������������������������������0000664�0001750�0001750�00000002013�11531503231�020417� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#import "Testing.h" /* A seventh test ... nesting sets. * * If you run the test with 'gnustep-tests example7.m' it should * report a one test fail, two test passes, and one set failed. */ int main() { /* Start a set. */ START_SET("outer set") /* Our first test in this set will pass. */ PASS(1 == 1, "integer equality works") /* Now we start a set nested inside the first one. */ START_SET("inner set") /* And we say we need a test to pass, but it's actually a faulty one * which will fail, causing the set to be terminated. */ NEED(PASS_EQUAL(@"hello", @"there", "faulty string equality test")) /* Here's a correct string equality test, but it's never reached because * the earlier test was needed. */ PASS_EQUAL(@"there", @"there", "NSString equality works") END_SET("inner set") /* And here's another correct test which *is* reached because it's * in a different set. */ PASS_EQUAL(@"there", @"there", "NSString equality works") END_SET("outer set") return 0; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/TestFramework/example6.m���������������������������������������������������������0000664�0001750�0001750�00000002062�11531503231�020422� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#import "Testing.h" /* A sixth test ... need. * * If you run the test with 'gnustep-tests example6.m' it should * report one hope dashed, one test pass, and one set failed. */ int main() { START_SET("example set") /* First set a flag to say that we are not expecting tests to * actually pass. */ testHopeful = YES; /* Here we demonstrate the NEED macro. This says that a need must be met * in order to continue with the set ... if the test does not pass * we can't complete the set and we skip to the end. */ NEED(PASS(1 == 0, "silly test which we don't expect to pass")) /* This test should never be reached because the previous test needs to * pass, but will not do so. */ PASS(1 == 1, "integer equality works") /* The set should be unresolved, because the earlier need was not met. */ END_SET("example set") /* And here we demonstrate that on exit from the set, the global * variable is restored to its state on entry. */ pass(NO == testHopeful, "the flag state is restored outside the set"); return 0; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/TestFramework/README�������������������������������������������������������������0000664�0001750�0001750�00000037047�12611361270�017423� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� TestFramework ============= This testsuite is a general framework for testing the core GNUstep libraries. Since, in part, we are testing the very basic level of an Objective-C runtime, we support testing plain C or C++ as well as Objective-C, and aim for better flexibility, ease-of-use, and and portability than older frameworks such as as OCUnit. The aim of this framework is to provide a very simple, yet reasonably comprehensive regression test mechanism, primarily for Objective-C development. Please run the GNUstep testsuite (using this framework) often, when adding new features, fixing bugs and running on new platforms. Where working on features common to both Apple's Cocoa/iOS APIs and to GNUstep, please try creating and running test cases in the Apple environment before implementing/changing GNUstep code, so that you are sure the behavior is the same in both cases. License ------- The testing framework and many of the test cases in the testsuite are copyright by the FSF and distributed under the GPL. However, some tests may not be copyright by the FSF, but retain the copyright of the original owner (e.g tests submitted as bug reports). You should feel free to add tests that are not copyright by the FSF. The copyright of these tests should be clearly stated, however, and they should still be distributed under the GPL version 3 or later. Running Tests ------------- To run a testsuite, use the gnustep-tests script along with the name of the project testsuite (directory) you wish to test: gnustep-tests base or where a group of tests within a project is to be run: gnustep-tests base/NSArray You may run an individual test file by using the gnustep-tests script with the name of the Objective-C test source file: gnustep-tests mytest.m gnustep-tests base/NSDate/general.m Alternatively, you may run tests from within a project/directory. eg. cd base gnustep-tests . If you supply no arguments, the gnustep-test script will examine all the subdirectories of the current directory, and attempt to run tests in each. During testing, temporary files are created and removed for each test, but any temporary files from the most recent test in each directory are left (to help you debugging), as are the log files. The summary log of a test run is left in the tests.sum file. The detailed log of a test run is left in the tests.log file. The log from any previous run is left in oldtests.sum (and oldtests.log). You can run 'gnustep-tests --clean' to remove left-over temporary files and all log files. Interpreting the output ----------------------- The summary output lists all test failures ... there should not be any. If a test fails then either there is a problem in the software being tested, or a problem in the test itself. Either way, you should try to fix the problem and provide a patch, or at least report it at: https://savannah.gnu.org/bugs/?group=gnustep" After the listing of any failures is a summary of counts of events as follows. Passed tests: The number of individual tests which passed. Failed tests: The number of individual tests failed ... this should really not appear. Failed sets: The number of sets of tests which have been abandoned part way through because of some individual test failure or an exception in support code between tests. Failed builds: The number of separate test files which did not even build/compile. Failed files: The number of separate test files which failed while running. Dashed hopes: The number of hopeful tests which did not pass, but which were not expected to pass (new code being worked on etc). Skipped sets: The number of sets of tests which were skipped entirely ... eg. those for features which work on some platforms, but not on yours. The binary executable of the most recently executed test file in each test directory is left in the obj subdirectory. So you can easily debug a failed test by: 1. running gnustep-tests with the single test file as its argument. 2. running gdb using obj/filename as an argument. 3. setting a breakpoint at the exact test which failed, running to there, 4. and then stepping through slowly to see exactly what is going wrong. You can use the --failfast option with gnustep-tests to tell it to abandon testing after the first failure ... in which case you know that the executable of the failed test will be available (unless the test file failed to even compile of course). In this case, any core dump file will also be left available. As a convenience for debugging, the tests use a testStart() function in which they set the line number of the test, so you can stop in that function and upon stepping out of it the debugger will be examining the specified test. eg. (gdb) break testStart if line == 42 (gdb) run If you use the --debug command line option, and any tests fail, then the debugger (gdb) will automatically be started for you with breakpoints set to the testStart() function of the failed tests. You can use the --debug command line option in conjunction with the --failfast option to have testing stopped at the first failure and the gdb debugger automatically launched to debug the failed testcase with a breakpoint set in the testStart() function for that testcase. You can also use the --developer command line option to define the TESTDEV pre-processor variable (to turn on developer only test cases, and to have all 'hopes' treated as actual 'tests' with pass/fail results). Writing Tests ------------- The test framework may be used for testing Objective-C, ObjectiveC++, C, and C++ code. The test source files must have a .m (for Objective-C and C) or a .mm (for Objective-C++ and C++) file extension in order to be recognised. A minimal test should be a file importing the header "Testing.h" (which defines global variables, functions, and standard test macros) and containing a main() function implementation which executes the actual test code. Groups of tests should be placed between calls to the START_SET() and END_SET() macros. You should look at the example test files in the $GNUSTEP_MAKEFILES/TestFramework directory for how to write test cases, and you should examine Testing.h in the same directory to see full documentation of the range of macros provided. The main workhorse of the test framework is the pass() function, which has a variable number of arguments ... first an integer expression, and second a printf style format string describing what is being tested. If you are calling the function directly you should use "%s,%d" at the start of the format string and pass __FILE__ and __LINE__ as the next two parameters (for consistency with the test macros). The function uses the global variable 'testHopeful' to decide whether a test which did not pass is a 'FAIL' (when testHopeful==NO) or a 'DASHED' hope (when testHopeful==YES). The function sets the global variable 'testPassed' to a BOOL reflecting the result of the test (YES if the test passed, NO otherwise). The only other functions are for occasional use to report sections of the testsuite as not having run for some reason. There are just four basic test macros. All have uppercase names beginning with 'PASS'. All wrap test code and a call to the pass() function in exception handlers. All provide file name and line number information in the description string. All are code blocks and do not need a semicolon terminator. Code fragments must be enclosed in round brackets if they contain commas. PASS passes if an expression resulting in an integer value is non-zero PASS_EQUAL passes if an expression resulting in an object is identical to or -isEqual: to another object (if the expected object implements the -isEqualForTestcase: method, that is used instead of -isEqual:) PASS_EXCEPTION passes if a code fragment raises an exception PASS_RUNS passes if a code fragment runs without raising an exception There is a boolean variable called 'testHopeful' which, if set to YES, means that tests which do not pass are considered to be 'Dashed hopes' rather than failed tests. You should set this for tests of code which is under development (or which is testing a feature which may be unsupported in the package under test) ... to indicate that the test is not to be considered a failure if it doesn't pass. Tests are grouped together, along with any associated non-test code, between paired calls to the START_SET and END_SET macros. Any setting of testHopeful within a set is automatically restored at the end of a set, so it makes sense to group hopes together in a set. You can skip an entire set by calling the SKIP() macro just after the start, in which case the entire set will be reported as being Skipped. It is appropriate to skip sets of tests if you have checked and found that some feature you are testing is not available in the version of the package under test. Any uncaught exception (ie one which occurs outside a one of the four test macros and is not caught by an exception handler you write yourself) will cause the remaining tests in a set to be omitted. In this case the set will be reported as Failed. You may also arrange to jump to the end of the set if a test fails by wrapping the test in a NEED macro. Doing this also causes the set to be reported as Failed if the needed test does not pass. It's likely that you are writing new tests for a library or framework ... and those tests will need to link with that framework. You should add the instructions for that to a GNUmakefile.preamble if the directory containing your tests, or a GNUmakefile.super in the directory above in the case where you have multiple test directories. eg. ADDITIONAL_OBJC_LIBS=-lmyLibrary When contributing to a test suite, please bracket your new test code using #if defined(TESTDEV) ... #endif /* TESTDEV */ so that it is only built when gnustep-tests is invoked with the --developer command line argument. This ensures that the new code won't break any existing test code when people are simply running the testsuite, and once you are sure that the new testcases are correct (and portable to all operating systems), the check for TESTDEV can be removed. Ignoring failed test files -------------------------- When a test file crashes during running, or terminates with some sort of failure status (eg the main() function returns a non-zero value) the framework treats the test file as having failed ... it assumes that the program crashed during the tests and the tests did not complete. On rare occasions you might actually want a test program to abort this way and have it treated as normal completion. In order to do this you simply create an additional file with the same name as the test program and a file extension of '.abort'. eg. If myTest.m is expected to crash, you would create myTest.abort to have that crash treated as a normal test completion. Advanced building ----------------- In most cases, all you need to do is write an objective-c file as described above, and the test framework will build it and run it for you automatically, but occasionally you may need to use your own build process. Where tests must make use of external resources or ensure that other tests have already been run before they are run, you can make use of the gnustep make package facilities to control dependencies etc. Normally the tests in a directory are built run using a makefile generated in the directory. This makefile uses the standard conventions of including GNUmakefile.preamble before test-tool.make and including GNUmakefile.postamble after test-tool.make, which gives you a high degree of control over how the tests in the directory are built. In addition to the preamble/postamble mechanism, the file ../GNUmakefile.super is included at the start of the generated makefile (if it exists). This allows all the test directories in a suite to use a common makefile fragment to provide information for the whole testsuite. You can also use the GSTESTROOT environment variable to locate resources common to the whole testsuite ... it is set automatically by gnustep-test to be the absolute path to the topmost directory in the testsuite. Your system should not make any assumption about the order in which test files are built ... the test framework may build many test files in parallel in order to make effective use of multiple processors. In fact the make program will normally build up to four tests at a time, but you can change that by setting the MAKEFLAGS environment variable to '-j N' where N is the number of simultaneous builds you want to be permitted (or you can simply use 'gnustep-tests --sequential' to force building of one test at a time). For total control, the framework checks to see if a 'GNUmakefile.tests' file exists in the directory, and if it does it uses that file as a template to create the GNUmakefile rather than using its own make file. This template makefile may use @TESTNAMES@ where it wants a list of the tests to be run, and @TESTRULES@ where it wants the rules to build the tests to be included. It should also use @TESTOPTS@ near the start of the file to permit necessary makefile control to say where the executables should be stored. The GNUmakefile.tests script should build each individual test when it is invoked with that test name as a target, and it should also build all tests if it is invoked without a target, and have a 'clean' target to clean up before and after all tests. Directory layout ---------------- A test suite is considered to be a collection of individual test files in a single directory or a collection of directories in a hierarchy. All directories which contain test files must also contain a TestInfo file to mark them as containing files used by the framework, and the root of the test suite is considered to be the topmost directory in the hierarchy which contains a TestInfo file. The test framework sets the GSTESTROOT environment variable to the absolute path of the root of the test suite being executed, so scripts and makefiles can use this to locate resources. The test framework ignores any directory which does not contain a TestInfo file. This feature prevents accidental attempts to treat a project source code directory as a testsuite. This is also useful in conjunction with the various makefile options listed above ... the makefiles may be used to build resources for tests in subdirectories which are ignored by the test framework itself. In addition to being a marker, the TestInfo file is a shell script which is sourced before execution of each test program in its directory, typically it is used to set up environment variables (eg. LD_LIBRARY_PATH to tell the program where to find dynamic libraries the tests use). Providing extra control and information --------------------------------------- If a Start.sh script is present in a test directory, it will be run immediately before tests are performed in that directory. It is able to append information to the log of the test run using the GSTESTLOG variable. If an End.sh file is present in a test directory, it will be run immediately after the tests in that directory are performed. It is able to append information to the log of the test run using the GSTESTLOG variable. In both cases, you must make sure that the file does not do anything which would confuse the test framework at the point when it analyses the log ... so you need to avoid starting a line in the log with any of the special phrases generated to mark a passed test or a particular type of failure. If a Summary.sh file is present in a test directory and gnustep-tests is used to run just those tests in that directory, the shell script will be executed in order to provide the summary of the test results. In all other cases the summary is done by the Summary.sh script provided in the test framework. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/TestFramework/gnustep-tests.in���������������������������������������������������0000775�0001750�0001750�00000052403�12715566113�021724� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!@SHELLPROG@ # # Runs tests for the GNUstep Testsuite # # Copyright (C) 2005-2011 Free Software Foundation, Inc. # # Written by: Alexander Malmberg <alexander@malmberg.org> # Updates by: Richard Frith-Macdonald <rfm@gnu.org> # # This package is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public # License as published by the Free Software Foundation; either # version 3 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # # Usage: gnustep-tests [directory | test.m] # # Runs the tests in the specified directory (or those in the individual file) # or all the tests in subdirectories of the current directory if no arguments # are given. # A summary is written to tests.sum, a log to tests.log, and a brief # summary to stdout. # The log and summary from the previous testrun are renamed to # oldtests.log and oldtests.sum, available for comparison. # The exit value of the script is 0 if there are no failures, 1 otherwise. if test -z "$GNUSTEP_MAKEFILES"; then GNUSTEP_MAKEFILES=`gnustep-config --variable=GNUSTEP_MAKEFILES 2>/dev/null` if test -z "$GNUSTEP_MAKEFILES"; then echo "You need to have GNUstep-make installed and set up." echo "Did you remember to source GNUstep.sh?" else echo "You forgot to set your GNUSTEP_MAKEFILES environment variable." echo "Setting it to $GNUSTEP_MAKEFILES during this test run." export GNUSTEP_MAKEFILES . $GNUSTEP_MAKEFILES/GNUstep.sh fi fi GSTESTTOP="$GNUSTEP_MAKEFILES/TestFramework" export GSTESTTOP GSTESTDIR=`pwd` export GSTESTDIR GSTESTMODE=normal # Argument checking while test $# != 0 do gs_option= case $1 in --clean) GSTESTMODE=clean ;; --debug) GSTESTDBG="$GSTESTDIR/gdb.cmds" ;; --developer) GSTESTDEV=yes ;; --documentation) echo echo "$0: Script to run the GNUstep testsuite" echo "Usage: gnustep-tests [directory | test.m]" echo "Runs the specified test, or any in subdirectories of the" echo "current directory if no arguments are given." echo "Use 'gnustep-tests --help' for basic help." echo cat $GSTESTTOP/README exit 0 ;; --sequential) GSSEQUENTIAL=yes ;; --verbose) GSVERBOSE=yes ;; --failfast) GSTESTMODE=failfast ;; --help | -h) echo echo "$0: Script to run the GNUstep testsuite" echo "Usage: gnustep-tests [directory | test.m]]" echo "Runs the specified tests, or any in subdirectories of the" echo "current directory if no arguments are given." echo "Use 'gnustep-tests --documentation' for full details." echo "Use 'gnustep-tests --clean' to remove old logs and leftover files." echo "Use 'gnustep-tests --failfast' to stop after the first failure." echo "Use 'gnustep-tests --debug' to run gdb for any failed tests." echo "Use 'gnustep-tests --developer' to treat hopes as real tests." echo "Use 'gnustep-tests --verbose' for full/detailed log output." echo "Use 'gnustep-tests --sequential' to disable parallel building." echo echo "Interpreting the output" echo "-----------------------" echo "The summary output lists all test failures ... there should not" echo "be any. If a test fails then either there is a problem in the" echo "software being tested, or a problem in the test itself. Either" echo "way, you should try to fix the problem and provide a patch, or" echo "at least report it at: https://savannah.gnu.org/bugs/?group=gnustep" echo exit 0 ;; *) break ;; esac shift done export GSTESTMODE GSTESTLOG=$GSTESTDIR/tests.log export GSTESTLOG GSTESTSUM=$GSTESTDIR/tests.sum export GSTESTSUM # We assume that the C compiler supports ObjC if test x"$CC" = x then CC=`gnustep-config --variable=CC` export CC fi # The C++/ObjC++ tests are currently enabled only if you do 'make # check GNUSTEP_TEST_OBJCXX=yes'. if test x"$GNUSTEP_TEST_OBJCXX" = x"yes" then # Determine the ObjC++ compiler to use. Either it was supplied # in the environment or command-line by setting the variable # OBJCXX, or we'll use the default configured in gnustep-make. if test x"$OBJCXX" = x then OBJCXX=`gnustep-config --variable=OBJCXX` fi if test x"$OBJCXX" = x then echo "Warning: You asked to run the Objective-C++ testcases, but no Objective-C++ compiler was found." echo " Objective-C++ testcases will not be ignored." echo " Try setting OBJCXX to your Objective-C++ compiler to fix this." else # Set the CXX variable which is the one actually used by gnustep-make # to compile and link ObjC++. CXX="$OBJCXX" export CXX fi else OBJCXX= fi GSTESTFLAGS= if test "$GSTESTMODE" = "failfast" then if test x"$GSTESTDEV" = x"yes" then GSTESTFLAGS="-DTESTDEV=1 -DFAILFAST=1" else GSTESTFLAGS="-DFAILFAST=1" fi elif test x"$GSTESTDEV" = x"yes" then GSTESTFLAGS="-DTESTDEV=1" fi if test x"$GSTESTFLAGS" != x then # # We need to add flags to all the code we build. # We do this by using the ADDITIONAL_?FLAGS # environment variables supported by gnustep-make. # ADDITIONAL_OBJCFLAGS="$GSTESTFLAGS $ADDITIONAL_OBJCFLAGS" export ADDITIONAL_OBJCFLAGS ADDITIONAL_OBJCCFLAGS="$GSTESTFLAGS $ADDITIONAL_OBJCCFLAGS" export ADDITIONAL_OBJCCFLAGS fi # # We insert our header directory as the first additional header directory # so that the test header files are found before any others. # ADDITIONAL_INCLUDE_DIRS="-I$GSTESTTOP $ADDITIONAL_INCLUDE_DIRS" export ADDITIONAL_INCLUDE_DIRS GSTESTFLAGS=`gnustep-config --debug-flags` GSTESTLIBS=`gnustep-config --gui-libs` GSTESTOPTS="GNUSTEP_OBJ_DIR=./obj" if test x"$BASH_VERSION" = x then # In some shells the built in test command actually only implements a subset # of the normally expected functionality (or is partially broken), so we # define a function to call a real program to do the job. test() { @TESTPROG@ $@ } fi if test ! "$MAKE_CMD" then MAKE_CMD=`gnustep-config --variable=GNUMAKE` $MAKE_CMD --version > /dev/null 2>&1 if test $? != 0 then MAKE_CMD=gmake $MAKE_CMD --version > /dev/null 2>&1 if test $? != 0 then MAKE_CMD=make fi fi fi if test $# = 0 then echo "Checking for presence of test subdirectories ..." NONAME=yes else NONAME=no fi TEMP=`echo *` TESTS= TESTDIRS= for file in $TEMP do if test -d $file -a $file != CVS -a $file != obj then TESTDIRS="$TESTDIRS $file" fi done if test x$1 != x then if test -d $1 then # Only find in the directories specified. TESTDIRS=$* elif test -r $1 then TESTDIRS=`dirname $1` TESTS=`basename $1` BARE=`basename $TESTS .m` if test x"$BARE" = x"$TESTS" then BARE=`basename $TESTS .mm` if test x"$BARE" = x"$TESTS" then BARE=`basename $TESTS .c` if test x"$BARE" = x"$TESTS" then BARE=`basename $TESTS .cc` if test x"$BARE" = x"TESTS" then echo "The file '$1' does not end in .m, .mm, .c or .cc ... cannot test." exit 1 fi fi fi fi else echo "'$1' is not a directory or a readable source file ... cannot test." exit 1 fi fi # Function for platforms where grep can't search for multiple patterns. extract() { f=$1 shift while test $# != 0 do grep "$1" "$f" shift done } # Function for platforms where grep can't search for multiple patterns. present() { f=$1 shift while test $# != 0 do grep "$1" "$f" >/dev/null if test $? = "0" then return 0 fi shift done return 1 } # Low level function to build and run the Objective-C program $TESTFILE # in the current directory. The TEMPLATE variable must already be set # to the name of the make file template if gnustep-make is to do the # building. # build_and_run () { # Remove the extension, if there is one. If there is no extension, add # .obj . TESTNAME=`echo $TESTFILE | sed -e"s/^\(test^.]*\)$/\1.obj./;s/\.[^.]*//g"` # Run the test. RUN_CMD="./obj/$TESTNAME" if test x"$TEMPLATE" = x then # The very simple case, we just need to compile a single file # putting the executable in the obj subdirectory. # We test for a .mm extension to see which compiler to use. rm -rf ./obj mkdir ./obj tmp=`basename $TESTFILE .m` if test x"$tmp" = x"$TESTFILE" then tmp=`basename $TESTFILE .mm` if test x"$tmp" = x"$TESTFILE" then tmp=`basename $TESTFILE .c` if test x"$tmp" = x"$TESTFILE" then BUILD_CMD="$CXX -o ./obj/$TESTNAME $TESTFILE $ADDITIONAL_CXXFLAGS $ADDITIONAL_LDFLAGS" else BUILD_CMD="$CC -o ./obj/$TESTNAME $TESTFILE $ADDITIONAL_CFLAGS $ADDITIONAL_LDFLAGS" fi else BUILD_CMD="$OBJCXX -o ./obj/$TESTNAME $TESTFILE $GSTESTFLAGS $GSTESTLIBS" fi else BUILD_CMD="$CC -o ./obj/$TESTNAME $TESTFILE $GSTESTFLAGS $GSTESTLIBS" fi else BUILD_CMD="$MAKE_CMD debug=yes $TESTNAME" fi # Compile it if necessary. # Redirect errors to stdout so it shows up in the log, # but not in the summary. if test "$NEEDBUILD" = "yes" then echo "Building $dir/$TESTFILE" echo "$BUILD_CMD" if test -r ./make-check.env then ( . ./make-check.env; . ./TestInfo; $BUILD_CMD) 2>&1 else ( . ./TestInfo; $BUILD_CMD) 2>&1 fi BUILDSTATUS=$? else BUILDSTATUS=0 fi if test $BUILDSTATUS != 0 then echo "Failed build: $1" >&2 if test "$GSTESTMODE" = "failfast" then return 1 fi else # We want aggressive memory checking. # Tell glibc to check for malloc errors, and to crash if it detects # any. MALLOC_CHECK_=2 export MALLOC_CHECK_ # Tell GNUstep-base to check for messages sent to deallocated objects # and crash if it happens. NSZombieEnabled=YES CRASH_ON_ZOMBIE=YES export NSZombieEnabled CRASH_ON_ZOMBIE echo Running $dir/$TESTFILE... # Run it. If it terminates abnormally, mark it as a crash (unless we have # a special file to mark it as being expected to abort). # Env.sh is deprecated ... we should only use TestInfo to setup for a test if test -r ./Env.sh then ( . ./Env.sh; $RUN_CMD ) else if test -r ./make-check.env then ( . ./make-check.env; . ./TestInfo; $RUN_CMD ) else ( . ./TestInfo; $RUN_CMD ) fi fi if test $? != 0 then if test -r $TESTFILE.abort then echo "Completed file: $TESTFILE" >&2 else echo "Failed file: $TESTFILE aborted without running all tests!" >&2 if test "$GSTESTMODE" = "failfast" then return 1 fi fi else echo "Completed file: $TESTFILE" >&2 fi fi return 0 } # Function to build and run $TESTFILE in the current directory. # This actually manages the logging process and calls build_and_run # to perform the work. # run_test_file () { RUNEXIT=0 echo >> $GSTESTLOG echo Testing $TESTFILE... >> $GSTESTLOG echo >> $GSTESTSUM if test x"$GSVERBOSE" = xyes then build_and_run 2>&1 | tee $GSTESTLOG.tmp else build_and_run > $GSTESTLOG.tmp 2>&1 fi RUNEXIT=$? # Add the information to the detailed log. cat $GSTESTLOG.tmp >> $GSTESTLOG # Extract the summary information and add it to the summary file. extract $GSTESTLOG.tmp "^Passed test:" "^Failed test:" "^Failed build:" "^Completed file:" "^Failed file:" "^Dashed hope:" "^Failed set:" "^Skipped set:" > $GSTESTSUM.tmp cat $GSTESTSUM.tmp >> $GSTESTSUM # If there were failures or skipped tests then report them... if present $GSTESTSUM.tmp "^Failed build:" "^Failed file:" "^Failed set:" "^Failed test:" "^Skipped set:" then echo echo $dir/$TESTFILE: extract $GSTESTSUM.tmp "^Failed build:" "^Failed file:" "^Failed set:" "^Failed test:" "^Skipped set:" fi if test x"$GSTESTDBG" != x then if present "$GSTESTSUM.tmp" "^Failed test:" then grep '^Failed test:' "$GSTESTLOG.tmp" | sed -e 's/^Failed test:[^:]*:\([0-9][0-9]*\).*/break testStart if testLineNumber==\1/' > "$GSTESTDBG" gdb "./obj/$TESTNAME" -x "$GSTESTDBG" rm -f "$GSTESTDBG" elif present "$GSTESTSUM.tmp" "^Failed file:" then gdb "./obj/$TESTNAME" fi fi return $RUNEXIT } # Replace the old files. if test -f tests.log then mv tests.log oldtests.log fi if test -f tests.sum then mv tests.sum oldtests.sum fi SUMD=. foundany=no for TESTDIR in $TESTDIRS do found=no source=no if test x"$TESTS" = x then # Get the names of all subdirectories containing source files. if test x"$OBJCXX" = x then # Only Objective-C (and C) SRCDIRS=`find $TESTDIR -name "*.m" -o -name "*.c" | sed -e 's;/[^/]*$;;' | sort -u | sed -e 's/\(^\| \)X[^ ]*//g'` else # Objective-C and Objective-C++ (implicitly C and C++ too) SRCDIRS=`find $TESTDIR \( -name "*.m" -o -name "*.mm" -o -name "*.c" -o -name "*.cc" \) | sed -e 's;/[^/]*$;;' | sort -u | sed -e 's/\(^\| \)X[^ ]*//g'` fi else SRCDIRS="$TESTDIRS" fi if test x"$SRCDIRS" = x then continue fi # found some source code source=yes SUMD=$TESTDIR for dir in $SRCDIRS do if test ! -f $dir/TestInfo then continue fi # Step up through parents of the source directory to find the root of the # test suite (the highest level directory containing a TestInfo file. # Provide that in the environment for use within the makefiles/scripts. GSTESTROOT=$dir parentdir=`dirname $GSTESTROOT` while test -f "$parentdir/TestInfo" do GSTESTROOT="$parentdir" parentdir=`dirname $GSTESTROOT` if test $parentdir = $GSTESTROOT then break fi done export GSTESTROOT RUNEXIT=0 found=yes foundany=yes cd $dir if test "$GSTESTMODE" = "clean" then echo "--- Cleaning tests in $dir ---" if test -r GNUmakefile then $MAKE_CMD clean >/dev/null 2>&1 fi rm -rf core core.* *.core obj GNUmakefile gdb.cmds tests.log tests.sum oldtests.log oldtests.sum tests.tmp tests.sum.tmp tests.log.tmp make-check.mak make-check.env else echo "--- Running tests in $dir ---" if test -r ./Start.sh -a -x ./Start.sh then ./Start.sh STARTSCRIPTSTATUS=$? else STARTSCRIPTSTATUS=0 fi # Get the names of all the source files in the current directory. if test x"$TESTS" = x then if test x"$OBJCXX" = x then # Only Objective-C (and C) TESTS=`find . \( -name . -o -prune \) \( -name "*.m" -o -name "*.c" \) | sed -e 's;^.*/;;' | sort -u | sed -e 's/\(^\| \)X[^ ]*//g'` else # Objective-C and Objective-C++ (implicitly C and C++ too) TESTS=`find . \( -name . -o -prune \) \( -name "*.m" -o -name "*.mm" -name "*.c" -o -name "*.cc" \) | sed -e 's;^.*/;;' | sort -u | sed -e 's/\(^\| \)X[^ ]*//g'` fi fi if test $STARTSCRIPTSTATUS = 0 then if test -r GNUmakefile.tests then # There's a custom make template present ... use it. TEMPLATE=GNUmakefile.tests elif test -r make-check.mak then # There's an autogenerated makefile present ... use default template. TEMPLATE=$GSTESTTOP/GNUmakefile.in elif test -r GNUmakefile.preamble then # There's a make preamble present ... use default template. TEMPLATE=$GSTESTTOP/GNUmakefile.in elif test -r GNUmakefile.postamble then # There's a make postamble present ... use default template. TEMPLATE=$GSTESTTOP/GNUmakefile.in elif test -r ../GNUmakefile.super then # There's a make superfile present ... use default template. TEMPLATE=$GSTESTTOP/GNUmakefile.in elif test -r "$TESTS" then # Single readable file ... quicker to compile directly. TEMPLATE= elif test x"$GSSEQUENTIAL" = xyes then # We don't want to build in parallel, so a makefile won't speed us up TEMPLATE= else # There are multiple files to build ... use make for parallelisation TEMPLATE=$GSTESTTOP/GNUmakefile.in fi NEEDBUILD=yes if test x"$TEMPLATE" = x then rm -rf core core.* *.core obj GNUmakefile gdb.cmds else TESTNAMES= TESTRULES= for TESTFILE in $TESTS do tmp=`basename $TESTFILE .m` if test x"$tmp" = x"$TESTFILE" then tmp=`basename $TESTFILE .mm` if test x"$tmp" = x"$TESTFILE" then tmp=`basename $TESTFILE .c` if test x"$tmp" = x"$TESTFILE" then TESTRULES="$TESTRULES\\ ${tmp}_CC_FILES=$TESTFILE" else TESTRULES="$TESTRULES\\ ${tmp}_C_FILES=$TESTFILE" fi else TESTRULES="$TESTRULES\\ ${tmp}_OBJCC_FILES=$TESTFILE" fi else TESTRULES="$TESTRULES\\ ${tmp}_OBJC_FILES=$TESTFILE" fi TESTNAMES="$TESTNAMES $tmp" done sed -e "s/@TESTNAMES@/$TESTNAMES/;s^@TESTOPTS@^$GSTESTOPTS^;s/@TESTRULES@/$TESTRULES/" < "$TEMPLATE" > GNUmakefile $MAKE_CMD clean >/dev/null 2>&1 # Try building all the test files in the directory in parallel. # If that works, set NEEDBUILD to 'no' so that we do not build # each individual test file later. echo "" >>$GSTESTLOG echo "Building in $dir" >>$GSTESTLOG if test -r ./make-check.env then ( . ./make-check.env; . ./TestInfo; $MAKE_CMD -j 4 debug=yes) >>$GSTESTLOG 2>&1 else ( . ./TestInfo; $MAKE_CMD -j 4 debug=yes) >>$GSTESTLOG 2>&1 fi if test $? = 0 then NEEDBUILD=no fi fi # Now we process each test file in turn. # When cleaning, we only need to do one clean per directory. for TESTFILE in $TESTS do run_test_file if test "$RUNEXIT" != "0" then break fi done else echo "Start.sh failed in '$TESTDIR' ... tests abandoned." for TESTFILE in $TESTS do echo "Failed file: $TESTFILE aborted without running any tests!" | tee -a $GSTESTSUM >> $GSTESTLOG done fi TESTS= # And perform the directory end script. if test -r ./End.sh -a -x ./End.sh then ./End.sh fi fi cd $GSTESTDIR if test "$RUNEXIT" != "0" then break fi done # Log a message if there were no tests in this directory, # but only if the directory was specifically named to be tested. if test $found = no then if test "$NONAME" = "no" then if test $source = no then echo "No tests found in '$TESTDIR'." else echo "No directories with 'TestInfo' marker file in '$TESTDIR'." fi fi fi if test "$RUNEXIT" != "0" then break fi done # Log a message if there were no tests found at all and we had been # looking in the current directory for test subdirectories. if test $foundany = no then if test "$NONAME" = "yes" then echo "No test subdirectories found." else echo "No tests found in '$TESTDIRS'." fi fi if test "$GSTESTMODE" = "clean" then rm -rf core core.* *.core obj GNUmakefile.tmp gdb.cmds tests.tmp tests.sum.tmp tests.log.tmp tests.log tests.sum oldtests.log oldtests.sum else # Make some stats. if test -r tests.sum then # Nasty pipeline of commands ... # Look for each type of test result, sort and count the results, # append 's' to each summary, then remove the trailing 's' from # any summary with only a single result so the output is pretty. # Sort the resulting lines by number of each status with the most # common (hopefully passes) output first. # NB. we omit the 'Completed file' tests as uninteresting ... users # generally only want to see the total pass count and any problems. extract tests.sum "^Passed test:" "^Failed test:" "^Failed build:" "^Failed file:" "^Dashed hope:" "^Failed set:" "^Skipped set:" | cut -d: -f1 | sort | uniq -c | sed -e 's/.*/&s/' | sed -e 's/^\([^0-9]*1[^0-9].*\)s$/\1/' | sort -n -b -r > tests.tmp else echo "No tests found." > tests.tmp fi echo >> tests.sum cat tests.tmp >> tests.sum echo cat tests.tmp echo fi # In the case where we ran a single testsuite, we allow the Summary.sh # script in that testsuite to generate our summary. if test x"$TESTDIRS" = x"$SUMD" -a -r $SUMD/Summary.sh -a -x $SUMD/Summary.sh then RUNCMD=$SUMD/Summary.sh else RUNCMD=$GSTESTTOP/Summary.sh fi $RUNCMD FAILS=$? # Delete the temporary file. rm -f tests.tmp tests.sum.tmp tests.log.tmp # Our exit status is 0 unless some test failed. if test -r "$GSTESTSUM" then present "$GSTESTSUM" "Failed set$" "Failed sets$" "Failed test$" "Failed tests$" "Failed build$" "Failed builds$" "Failed file$" "Failed files$" if [ $? = 1 ] then exit 0 else exit 1 fi else exit 0 fi �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/TestFramework/example9.m���������������������������������������������������������0000664�0001750�0001750�00000003030�11531764775�020447� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#import "Testing.h" #import <Foundation/NSRange.h> /* A ninth test ... skipping unsupported tests * * If you run the test with 'gnustep-tests example9.m' it should * report one set skipped. */ int main() { #define HAVE_XXX NO /* Start a set. */ START_SET("example set") /* Here we conditionally skip the set with a message to be displayed. * The first line will be displayed immediately when the set * is skipped, and lets the user know that some functionality is missing. * The remainder of the message is written to the log file so the user * can find out what to do about the problem. */ if (!HAVE_XXX) SKIP("Feature 'foo' is unsupported.\nThis is because the package was built without the 'XXX' library.\nIf you need 'foo' then please obtain 'XXX' and build and install the package again before re-running this testsuite.") /* Here we demonstrate that the 'expression' evaluated by the PASS * macro can actually be an arbitrarily complex piece of code as * long as the last statement returns an integral value which can * be used to represent a pass (non zero) or fail (if zero). * Where such a code fragment contains commas, it must be written * inside brackets to let the macro preprocessor know that the whole * code fragement is the first parameter to the macro. */ PASS(({ NSRange r = NSMakeRange(1, 10); NSEqualRanges(r, NSMakeRange(1, 10)); }), "a long code-fragment/expression works") END_SET("example set") return 0; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/TestFramework/Testing.h����������������������������������������������������������0000664�0001750�0001750�00000054464�12732521012�020327� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Testing - Include basic tests macros for the GNUstep Testsuite Copyright (C) 2005-2011 Free Software Foundation, Inc. Written by: Alexander Malmberg <alexander@malmberg.org> Updated by: Richard Frith-Macdonald <rfm@gnu.org> This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. */ #ifndef Testing_h #define Testing_h #include <stdio.h> #include <stdlib.h> #include <stdarg.h> #include <string.h> #import <Foundation/NSAutoreleasePool.h> #import <Foundation/NSDate.h> #import <Foundation/NSException.h> #import <Foundation/NSObjCRuntime.h> #import <Foundation/NSObject.h> #import <Foundation/NSRegularExpression.h> #import <Foundation/NSString.h> /* A flag indicating that the testsuite is currently processing tests * which are actually not expected to pass, but where we hope someone * might have committed a bugfix. * You should set this to YES at the start of any set of tests which * are actually unlikely to pass on all systems. * The state of this flag is preserved by sets ... on exit from a set * it is restored to the state it had on entry. * This flag is ignored if the tests are performed in 'developer' mode * (ie run with the gnustep-tests --developer option and therefore * compiled with the TESTDEV preprocessor macro defined). */ static BOOL testHopeful __attribute__((unused)) = NO; /* A flag indicating whether the most recently executed test passed. * This is set by the pass() function (and therefore by any test macro). * Do not modify this directly. */ static BOOL testPassed __attribute__((unused)) = NO; /* A variable storing the line number of the test currently being run. * Do not modify this directly. */ static unsigned testLineNumber __attribute__((unused)) = 0; /* A variable storing the indentation of the set currently being run. * Do not modify this directly. */ static unsigned testIndentation __attribute__((unused)) = 0; static inline void testIndent(void) __attribute__((unused)); static inline void testIndent(void) { unsigned i = testIndentation; while (i-- > 0) { fprintf(stderr, " "); } } /* A variable set whenever a test macro is executed. This contains * the exception which terminated the test macro, or nil if no exception * was raised. */ static NSException *testRaised __attribute__((unused)) = nil; /* The setEnded function pointer may be set to a function which is to be * executed when the set ends, with its three parameters being the name * of the set, a flag to say whether the set completed successfully, and * the duration of the set. * The SET_TIMER() macro turns on/off timing and, if timeing was * already on, adds the time of the current period to the duration. */ static void (*setEnded)(const char *name, BOOL completed, double duration) __attribute__((unused)) = 0; #define SET_TIMER(active) \ ({ \ double started = _setTiming; \ _setTiming = [NSDate timeIntervalSinceReferenceDate]; \ if (started > 0.0) setDuration += _setTiming - started; \ if (NO == active) _setTiming = 0.0; \ })\ /* The pass() function is the low-level core of the testsuite. * * You call this with two arguments ... an integer expression indicating the * success or failure of the testcase (0 is a failure) and a string which * describes the testcase. * * The global variable 'testHopeful' can be set to a non-zero value before * calling this function in order to specify that if the condition is * not true it should be treated as a dashed hope rather than a failure * (unless the tests are bing performed in 'developer' mode). * * If there is a better higher-level test macro available, please use * that instead. In particular, please use the PASS_EQUAL() macro wherever * you wish to test the equality of a pair of objective-c objects. * * If you are calling the function directly, please use a format string * beginning "%s:%d" and pass __FILE__ and __LINE__ as the first two arguments * so that this function will print out the location it was called from. * * This function is the most efficient option for general use, but * please don't use it if there is any change that the evaluation of * the expression used as its first argument might cause an exception * in any context where that might be a problem. */ static void pass(int passed, const char *format, ...) __attribute__((unused)) __attribute__ ((format(printf, 2, 3))); static void pass(int passed, const char *format, ...) { va_list args; va_start(args, format); if (passed) { fprintf(stderr, "Passed test: "); testPassed = YES; } #if !defined(TESTDEV) else if (YES == testHopeful) { fprintf(stderr, "Dashed hope: "); testPassed = NO; } #endif else { fprintf(stderr, "Failed test: "); testPassed = NO; } testIndent(); vfprintf(stderr, format, args); fprintf(stderr, "\n"); va_end(args); #if defined(FAILFAST) if (NO == testPassed && NO == testHopeful) { exit(1); // Abandon testing now. } #endif } /* The testStart() function is used by the PASS macros to provide a break * point in the source code after the current test line has been stored in * testLineNumber. * This is provided for when debugging ... you can set a breakpoint in the * testStart() function for the line number reported in a test failure and * have the debugger stop in just the right place. */ static void testStart() __attribute__((unused)); static void testStart() { return; } /* Tests a code expression which evaluates to an integer value. * The expression may not contain commas unless it is bracketed. * The format must be a literal string printf style format. * If the expression evaluates to zero the test does not pass. * If the expression causes an exception to be raised, the exception * is caught and logged but the test does not pass. * Otherwise, the test passes. * Basically equivalent to pass() but with exception handling. */ #define PASS(testExpression__, testFormat__, ...) \ NS_DURING \ { \ int _cond; \ id _tmp = testRaised; testRaised = nil; [_tmp release]; \ testLineNumber = __LINE__; \ testStart(); \ _cond = (int)(testExpression__); \ pass(_cond, "%s:%d ... " testFormat__, __FILE__, \ __LINE__, ## __VA_ARGS__); \ } \ NS_HANDLER \ testRaised = [localException retain]; \ pass(0, "%s:%d ... " testFormat__, __FILE__, __LINE__, ## __VA_ARGS__); \ printf("%s: %s", [[testRaised name] UTF8String], \ [[testRaised description] UTF8String]); \ NS_ENDHANDLER /* This category declaration should keep the compiler happy ... * it defines an informal protocol specifying methods your test * classes may implement to aid with testing. */ @interface NSObject(TestFramework) /* The -isEqualForTestcase: method may be implemented in order to have * the PASS_EQUAL macro perform special equality testing rather than * using the normal equality test method (-isEqual). */ - (BOOL) isEqualForTestcase: (id)otherObject; @end /* Tests a code expression which evaluates to an object value. * The expression may not contain commas unless it is bracketed. * The expected value may not contain commas unless it is bracketed. * The format must be a literal string printf style format. * * Where the expression evaluates to an object which is identical to * the expect value, or where the expect value responds to -isEqualForTestcase: * and calling [expact -isEqualForTestcase: object] return YES, * or where the expect value does not respond to -isEqualForTestcase: and * calling [expect isEqual: object] returns YES, then the test has passed. * * The particularly useful thing about this macro is that, if the * results of the expression and the expected object are not equal, * the string representation of both values is logged so that you * can get a better idea of what went wrong. */ #define PASS_EQUAL(testExpression__, testExpect__, testFormat__, ...) \ NS_DURING \ { \ int _cond; \ id _obj; \ id _exp; \ id _tmp = testRaised; testRaised = nil; [_tmp release]; \ testLineNumber = __LINE__; \ testStart(); \ _obj = (id)(testExpression__);\ _exp = (id)(testExpect__);\ if (_obj == _exp) \ { \ _cond = YES; \ } \ else if ([_obj respondsToSelector: @selector(isEqualForTestcase:)]) \ { \ _cond = (BOOL)[(id)_exp isEqualForTestcase: _obj]; \ } \ else \ { \ _cond = [_exp isEqual: _obj]; \ } \ pass(_cond, "%s:%d ... " testFormat__, __FILE__, \ __LINE__, ## __VA_ARGS__); \ if (0 == _cond) \ { \ NSString *s = [_obj description]; \ if ([s length] == 1) \ { \ fprintf(stderr, \ "Expected '%s' and got '%s' (unicode codepoint %d)\n", \ [[_exp description] UTF8String], [s UTF8String], \ [s characterAtIndex: 0]); \ } \ else if (nil == s) \ { \ fprintf(stderr, "Expected '%s' and got (nil)\n", \ [[_exp description] UTF8String]); \ } \ else \ { \ fprintf(stderr, "Expected '%s' and got '%s'\n", \ [[_exp description] UTF8String], [s UTF8String]); \ } \ } \ } \ NS_HANDLER \ testRaised = [localException retain]; \ pass(0, "%s:%d ... " testFormat__, __FILE__, __LINE__, ## __VA_ARGS__); \ printf("%s: %s", [[testRaised name] UTF8String], \ [[testRaised description] UTF8String]); \ NS_ENDHANDLER /* Tests a code expression which evaluates to an object value. * The expression may not contain commas unless it is bracketed. * The expected pattern may not contain commas unless it is bracketed. * The format must be a literal string printf style format. * * Where the expression evaluates to an object whose description matches * the expect value reguilar expression, the test has passed. * * If the results of the expression and the expected pattern o not match, * the string representation of both values is logged so that you * can get a better idea of what went wrong. */ #define PASS_MATCH(testExpression__, testExpect__, testFormat__, ...) \ NS_DURING \ { \ int _cond; \ id _obj; \ id _dsc; \ id _exp; \ id _pat; \ id _tmp = testRaised; testRaised = nil; [_tmp release]; \ testLineNumber = __LINE__; \ testStart(); \ _obj = (id)(testExpression__);\ _dsc = [_obj description];\ _pat = (id)(testExpect__);\ _exp = [[[NSRegularExpression alloc] initWithPattern: _pat \ options: 0 error: 0] autorelease];\ if (nil != _dsc && nil != _exp) \ { \ NSRange r = NSMakeRange(0, [_dsc length]);\ r = [_exp rangeOfFirstMatchInString: _dsc options: 0 range: r];\ if (r.length > 0)\ { \ _cond = YES; \ } \ } \ else \ { \ _cond = NO; \ } \ pass(_cond, "%s:%d ... " testFormat__, __FILE__, \ __LINE__, ## __VA_ARGS__); \ if (0 == _cond) \ { \ if ([_dsc length] == 1) \ { \ fprintf(stderr, \ "Expected '%s' and got '%s' (unicode codepoint %d)\n", \ [[_pat description] UTF8String], [_dsc UTF8String], \ [_dsc characterAtIndex: 0]); \ } \ else if (nil == _dsc) \ { \ fprintf(stderr, "Expected '%s' and got (nil)\n", \ [[_pat description] UTF8String]); \ } \ else \ { \ fprintf(stderr, "Expected '%s' and got '%s'\n", \ [[_pat description] UTF8String], [_dsc UTF8String]); \ } \ } \ } \ NS_HANDLER \ testRaised = [localException retain]; \ pass(0, "%s:%d ... " testFormat__, __FILE__, __LINE__, ## __VA_ARGS__); \ printf("%s: %s", [[testRaised name] UTF8String], \ [[testRaised description] UTF8String]); \ NS_ENDHANDLER /* Please use the PASS_EXCEPTION() macro to handle any code where you * want an exception to be thrown. The macro checks that the supplied * code throws an expection with the specified name. If the code fails * to throw, or throws the wrong exception, then the code does not pass. * You can supply nil for expected exception name if you don't care about * the exact type of exception thrown. * The code fragment may not contain commas unless it is surrounded by * brackets. eg. PASS_EXCEPTION(({code here}), name, "hello") * The format must be a literal string printf style format. */ #define PASS_EXCEPTION(testCode__, testExpect__, testFormat__, ...) \ NS_DURING \ id _tmp = testRaised; testRaised = nil; [_tmp release]; \ { \ testLineNumber = __LINE__; \ testStart(); \ testCode__; \ } \ pass(0, "%s:%d ... " testFormat__, __FILE__, __LINE__, ## __VA_ARGS__); \ NS_HANDLER \ testRaised = [localException retain]; \ pass((nil == (testExpect__) \ || [[testRaised name] isEqual: (testExpect__)]), \ "%s:%d ... " testFormat__, __FILE__, __LINE__, ## __VA_ARGS__); \ if (nil != (testExpect__) \ && NO == [(testExpect__) isEqual: [testRaised name]]) \ fprintf(stderr, "Expected '%s' and got '%s'\n", \ [(testExpect__) UTF8String], \ [[testRaised name] UTF8String]); \ NS_ENDHANDLER /* Please use the PASS_RUNS() macro to handle any code where you want the * code to run to completion without an exception being thrown, but you don't * have a particular expression to be checked. * The code fragment may not contain commas unless it is surrounded by * brackets. eg. PASS_EXCEPTION(({code here}), name, "hello") * The format must be a literal string printf style format. */ #define PASS_RUNS(testCode__, testFormat__, ...) \ NS_DURING \ id _tmp = testRaised; testRaised = nil; [_tmp release]; \ { \ testLineNumber = __LINE__; \ testStart(); \ testCode__; \ } \ pass(1, "%s:%d ... " testFormat__, __FILE__, __LINE__, ## __VA_ARGS__); \ NS_HANDLER \ testRaised = [localException retain]; \ pass(0, "%s:%d ... " testFormat__, __FILE__, __LINE__, ## __VA_ARGS__); \ printf("%s: %s", [[testRaised name] UTF8String], \ [[testRaised description] UTF8String]); \ NS_ENDHANDLER /* SETs are used to group multiple testcases or code which is outside of * the scope of the current test but could raise exceptions that should * be caught to allow further tests to run. * * You must pass a short description to identify the set at both its * start and its end. This allows the seat to be easily identified in the * log, and also allows for checking to be sure that each start if a set * is matched by a corresponding end. * * The state of the 'testHopeful' flag is saved at the start of the set and * restored at the end of the set, so you can start your code by setting * 'testHopeful=YES;' to mark any tests within the set as being part of a * group of tests we don't expect to pass. * * Importantly, you may skip some or all of the tests in a set if those * tests are not supported in the package being tested (eg. testing of * functionality which depends on some external library which was not * available when the package being tested was buit). * * Any uncaught exception occurring inside a set will abort the entire set * so that remaining tests in the set will not be executed, but you may * also abandon remaining tests upon any test failure. * * The tests within the set are enclosed in an autorelease pool, and any * temporary objects are cleaned up at the end of the set. */ /* The START_SET() macro starts a set of grouped tests. It must be matched * by a corresponding END_SET() with the same string as an argument. * The argument is a short description to be printed in the log on entry. * The duration of each set is automatically timed (you can suspend/resume * timing using the SET_TIMER macro). Each timed period is added to the * setDuration local variable while a set is executing (you can of course * modify this variable using code inside the set). */ #define START_SET(setName) \ { \ double setDuration = 0.0; \ BOOL _setSuccess = YES; \ double _setTiming = [NSDate timeIntervalSinceReferenceDate]; \ BOOL _save_hopeful = testHopeful; \ unsigned _save_indentation = testIndentation; \ int _save_line = __LINE__; \ char *_save_set = (char*)malloc(strlen(setName) + 1); \ strncpy(_save_set, setName, strlen(setName) + 1); \ fprintf(stderr, "Start set: "); \ testIndent(); \ fprintf(stderr, "%s:%d ... %s\n", __FILE__, __LINE__, _save_set); \ testIndentation++; \ NS_DURING \ NSAutoreleasePool *_setPool = [NSAutoreleasePool new]; \ { /* Helper macro for END_SET() ... do not use directly. */ #if defined(TESTDEV) # define OMITTED \ { \ fprintf(stderr, "Skipped set: "); \ testIndent(); \ fprintf(stderr, "%s\n", [[localException reason] UTF8String]); \ } #else # define OMITTED ; #endif /* The END_SET() macro terminates a set of grouped tests. It must be matched * by a corresponding START_SET() with the same string as an argument. * The argument is a short description to be printed in the log on entry. * When a set ends, the function pointed to by the setEnded function is * called with three arguments which allow you to perform extra reporting * or cleanup etc. The three arguments are the set name, a flag to say * whether the set completed successfully, and the duration of the set. */ #define END_SET(setName) \ } \ [_setPool release]; \ NS_HANDLER \ _setSuccess = NO; \ if (YES == [[localException name] isEqualToString: @"SkipSet"]) \ { \ fprintf(stderr, "Skipped set: "); \ testIndent(); \ fprintf(stderr, "%s\n", [[localException reason] UTF8String]); \ } \ else if (YES == [[localException name] isEqualToString: @"OmitSet"]) \ OMITTED \ else \ { \ if (YES == [[localException name] isEqualToString: @"FailSet"]) \ { \ fprintf(stderr, "Failed set: "); \ testIndent(); \ fprintf(stderr, "%s:%d ... need not met in %s.\n", \ __FILE__, _save_line, _save_set); \ } \ else \ { \ fprintf(stderr, "EXCEPTION: %s %s %s\n", \ [[localException name] UTF8String], \ [[localException reason] UTF8String], \ [[[localException userInfo] description] UTF8String]); \ fprintf(stderr, "Failed set: "); \ testIndent(); \ fprintf(stderr, "%s:%d ... problem in %s.\n", \ __FILE__, _save_line, _save_set); \ } \ } \ NS_ENDHANDLER \ SET_TIMER(NO); \ if (0 != setEnded) (*setEnded)(setName, _setSuccess, setDuration); \ if (strcmp(_save_set, setName) != 0) \ fprintf(stderr, "Error: %s:%d ... END(%s) with START(%s).\n", \ __FILE__, __LINE__, setName, _save_set); \ testIndentation = _save_indentation; \ fprintf(stderr, "End set: "); \ testIndent(); \ fprintf(stderr, "%s:%d ... %s\n", __FILE__, __LINE__, _save_set); \ free(_save_set); \ testHopeful = _save_hopeful; \ } /* The NEED macro takes a test macro as an argument and breaks out of a set * and reports it as failed if the test does not pass. */ #define NEED(testToTry) \ {testToTry;} \ if (NO == testPassed) \ { \ if (nil != testRaised) \ { \ [testRaised raise]; \ } \ else \ { \ [NSException raise: @"FailSet" format: @"Test did not pass"]; \ } \ } /* The SKIP() macro skips the remainder of a set of grouped tests. * Its argument is a literal printf style format string and variable * arguments to print a message giving the reason for skipping the set. * This should be a short one line message (for immediate display), * preferably with a more detailed explanation on subsequent lines. */ #define SKIP(testFormat__, ...) \ [NSException raise: @"SkipSet" format: @"%s %d ... " testFormat__, \ __FILE__, __LINE__, ## __VA_ARGS__]; /* The OMIT() macro acts just like SKIP() except that it only reports the * set if running in developer mode. The idea is that it should be used for * groups of tests which are not expected to be available on most platforms * yet, so only developers should see them reported. */ #define OMIT(testFormat__, ...) \ [NSException raise: @"OmitSet" format: @"%s %d ... " testFormat__, \ __FILE__, __LINE__, ## __VA_ARGS__]; /* some good macros to compare floating point numbers */ #import <math.h> #import <float.h> #define EQ(x, y) (fabs((x) - (y)) <= fabs((x) + (y)) * (FLT_EPSILON * 100)) #define LE(x, y) ((x)<(y) || EQ(x, y)) #define GE(x, y) ((y)<(x) || EQ(x, y)) #define LT(x, y) (!GE(x, y)) #define GT(x, y) (!LE(x, y)) /* A convenience macro to pass an object as a string to a print function. */ #define POBJECT(obj) [[(obj) description] UTF8String] #endif #ifndef CREATE_AUTORELEASE_POOL #define RETAIN(object) [object retain] #define RELEASE(object) [object release] #define AUTORELEASE(object) [object autorelease] #define TEST_RETAIN(object) ({\ id __object = (id)(object); (__object != nil) ? [__object retain] : nil; }) #define TEST_RELEASE(object) ({\ id __object = (id)(object); if (__object != nil) [__object release]; }) #define TEST_AUTORELEASE(object) ({\ id __object = (id)(object); (__object != nil) ? [__object autorelease] : nil; }) #define ASSIGN(object,value) ({\ id __value = (id)(value); \ id __object = (id)(object); \ if (__value != __object) \ { \ if (__value != nil) \ { \ [__value retain]; \ } \ object = __value; \ if (__object != nil) \ { \ [__object release]; \ } \ } \ }) #define ASSIGNCOPY(object,value) ({\ id __value = (id)(value); \ id __object = (id)(object); \ if (__value != __object) \ { \ if (__value != nil) \ { \ __value = [__value copy]; \ } \ object = __value; \ if (__object != nil) \ { \ [__object release]; \ } \ } \ }) #define DESTROY(object) ({ \ if (object) \ { \ id __o = object; \ object = nil; \ [__o release]; \ } \ }) #define CREATE_AUTORELEASE_POOL(X) \ NSAutoreleasePool *(X) = [NSAutoreleasePool new] #define RECREATE_AUTORELEASE_POOL(X) \ if (X == nil) \ (X) = [NSAutoreleasePool new] #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/TestFramework/example4.m���������������������������������������������������������0000664�0001750�0001750�00000001355�11531503231�020424� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#import "Testing.h" /* A fourth test ... testing for an exception. * * If you run the test with 'gnustep-tests example4.m' it should * report three test passes. */ /* Import a header because we want to use a method from it. */ #import <Foundation/NSDictionary.h> int main() { START_SET("example set") /* We test for the code fragment raising an exception. We don't care * about the particular exception, so we pass nil as the expected exception * name. */ PASS_EXCEPTION([(NSDictionary*)@"abc" objectForKey: @"xxx"], nil, "sending a bad message causes an exception") pass(1 == 1, "integer equality works"); PASS([[NSObject new] autorelease] != nil, "+new creates an object") END_SET("example set") return 0; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/palette.make���������������������������������������������������������������������0000664�0001750�0001750�00000001626�10711636501�016236� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # palette.make # # Makefile rules to build GNUstep-based palettes. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/palette.make else ifeq ($(GNUSTEP_TYPE),palette) include $(GNUSTEP_MAKEFILES)/Instance/palette.make endif endif ����������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/ANNOUNCE�������������������������������������������������������������������������0000664�0001750�0001750�00000002123�13074115002�015054� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������1 Announcement ************** The GNUstep Makefile Package version 2.7.0 is now available. 1.1 What is the GNUstep makefile package? ========================================= The makefile package is a simple, powerful and extensible way to write makefiles for a GNUstep-based project. It allows the user to write a project without having to deal with the complex issues associated with configuration, building, installation, and packaging. It also allows the user to easily create cross-compiled binaries. 1.2 Changes in version '2.7.0' ============================== Garbage collection support removed ARC enabled by default if the ng runtime is used Multi-architecture directory layout adjusted to be more Debian compatible Framework support fixes Various other minor bugfixes 1.3 Obtaining gnustep-make ========================== You can get the gstep-make-2.7.0.tar.gz distribution file at <ftp://ftp.gnustep.org/pub/gnustep/core> Please log bug reports on the GNUstep project page <http://savannah.gnu.org/bugs/?group=gnustep> or send bug reports to <bug-gnustep@gnu.org>. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/GNUmakefile.in�������������������������������������������������������������������0000664�0001750�0001750�00000050265�13070647721�016432� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# @configure_input@ # # Main GNUmakefile for the GNUstep GNUmakefile Package. # # Copyright (C) 1997-2008 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <nicola.pero@meta-innovation.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Disable all built-in suffixes for performance. .SUFFIXES: # Disable all built-in rules with a vague % as target, for performance. %: %.c %: %.cpp %: %.cc %: %.C (%): % %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% # # I've thought about using the Makefile package files # to install the GNUmakefile package, a cool little recursion, # but there is nothing to made, and the files get installed # in a special directory, so it was simpler this way. # include config-noarch.make include config.make # To install everything inside a temporary directory (say as part of # building a binary package - deb or rpm), use something like `make # install DESTDIR=/var/tmp/gnustep-make' DESTDIR = # 'special_prefix' is an old alias for DESTDIR. ifneq ($(special_prefix),) ifeq ($(GNUSTEP_MAKE_STRICT_V2_MODE),yes) $(error "ERROR: special_prefix is deprecated. Please use DESTDIR instead") else $(warning "WARNING: special_prefix is deprecated. Please use DESTDIR instead") endif DESTDIR = $(special_prefix) endif override GNUSTEP_CONFIG_FILE = $(DESTDIR)@GNUSTEP_CONFIG_FILE@ override GNUSTEP_CONFIG_FILE_DIR = $(dir $(GNUSTEP_CONFIG_FILE)) tooldir = $(DESTDIR)@GNUSTEP_SYSTEM_TOOLS@ makedir = $(DESTDIR)@GNUSTEP_MAKEFILES@ mandir = $(DESTDIR)@GNUSTEP_SYSTEM_DOC_MAN@ srcdir = @srcdir@ VPATH = @srcdir@ testdir=$(makedir)/TestFramework override GNUSTEP_IS_FLATTENED = @GNUSTEP_IS_FLATTENED@ override GNUSTEP_TARGET_CPU = @clean_target_cpu@ override GNUSTEP_TARGET_VENDOR = @clean_target_vendor@ override GNUSTEP_TARGET_OS = @clean_target_os@ override GNUSTEP_LIB_COMBO = @ac_cv_library_combo@ ifeq ($(GNUSTEP_IS_FLATTENED), no) override GNUSTEP_TARGET_DIR = $(GNUSTEP_TARGET_CPU)-$(GNUSTEP_TARGET_OS) override GNUSTEP_TARGET_LDIR = $(GNUSTEP_TARGET_DIR)/$(GNUSTEP_LIB_COMBO) override MAYBE_LIBRARY_COMBO = $(GNUSTEP_LIB_COMBO) override MAKE_CONFIG_DIR = $(GNUSTEP_TARGET_LDIR) else override GNUSTEP_TARGET_DIR = . override GNUSTEP_TARGET_LDIR = . override MAYBE_LIBRARY_COMBO = . override MAKE_CONFIG_DIR = . endif export GNUSTEP_TARGET_DIR export GNUSTEP_TARGET_LDIR export MAYBE_LIBRARY_COMBO INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ VERTAG = $(subst .,_,$(GNUSTEP_MAKE_VERSION)) SVNPREFIX=svn+ssh://svn.gna.org/svn/gnustep/tools/make MAKE_FILES = aggregate.make application.make bundle.make service.make \ common.make empty.make library-combo.make java.make jni.make library.make \ messages.make parallel-subdirectories.make rules.make serial-subdirectories.make \ target.make names.make resource-set.make \ tool.make ctool.make test-library.make \ objc.make test-application.make test-tool.make subproject.make \ palette.make gswapp.make gswbundle.make clibrary.make \ documentation.make java-tool.make framework.make \ native-library.make spec-rules.template \ tar-exclude-list gnustep-make-help MASTER_MAKE_FILES = \ source-distribution.make rpm.make rules.make \ application.make bundle.make clibrary.make ctool.make \ documentation.make framework.make gswapp.make gswbundle.make \ library.make nsis.make deb.make objc.make java.make java-tool.make palette.make \ parallel-subdirectories.make resource-set.make serial-subdirectories.make \ service.make subproject.make test-application.make \ test-library.make test-tool.make tool.make INSTANCE_MAKE_FILES = \ rules.make \ application.make bundle.make clibrary.make ctool.make \ documentation.make framework.make gswapp.make gswbundle.make \ library.make objc.make java.make java-tool.make palette.make \ resource-set.make service.make subproject.make test-application.make \ test-library.make test-tool.make tool.make INSTANCE_SHARED_MAKE_FILES = bundle.make headers.make java.make \ pkgconfig.make stamp-string.make strings.make INSTANCE_DOC_MAKE_FILES = autogsdoc.make gsdoc.make install_files.make \ javadoc.make latex.make texi.make TEST_FRAMEWORK_FILES = \ GNUmakefile.in Testing.h ObjectTesting.h README \ example1.m example2.m example3.m example4.m example5.m \ example6.m example7.m example8.m example9.m # Decide which version of the GNUstep.conf file we are going to # install; the standard one, or the strict gnustep-make v2 one ? ifeq ($(GNUSTEP_MAKE_STRICT_V2_MODE),yes) GNUSTEP_DOT_CONF_FILE = GNUstep-strict-v2.conf else GNUSTEP_DOT_CONF_FILE = GNUstep.conf endif # You can type 'make messages=yes' to see exactly which commands are # being executed. Else we only print a summary description. ifeq ($(messages),yes) EC = else EC = @ endif # To produce a signed Debian source and binary package, # call 'make debsign=yes'. ifeq ($(debsign),yes) DEBUILD_ARGS = -nc else DEBUILD_ARGS = -us -uc -nc endif # Version code that will be used in 'svn-export' target. Expand immediately; # it should be constant in the script. DATE_TIME_VERSION := $(shell date +%Y%m%d%H%M) # Revision; potentially expensive so expand when used. SVN_REVISION = $(shell svn info . | sed -ne 's/^Revision: //p') # Used to override version of .tar.gz that will be copied and used as .orig.tar.gz. ifeq ($(DEB_TARBALL_VERSION), ) DEB_TARBALL_VERSION = $(GNUSTEP_MAKE_VERSION) endif all: generated-files $(EC)(echo "Thanks. All is ready: type '$(MAKE) install' to install gnustep-make.") install: generated-files $(EC)(echo "Creating system tools directory: $(tooldir)"; \ "$(srcdir)/mkinstalldirs" "$(tooldir)"; \ echo "Creating makefile directories in: $(makedir)"; \ "$(srcdir)/mkinstalldirs" \ "$(makedir)" \ "$(makedir)/$(GNUSTEP_TARGET_DIR)" \ "$(makedir)/$(GNUSTEP_TARGET_LDIR)" \ "$(makedir)/Additional" \ "$(makedir)/Auxiliary" \ "$(makedir)/Master" \ "$(makedir)/Instance" \ "$(makedir)/Instance/Shared" \ "$(makedir)/Instance/Documentation" \ "$(testdir)") $(EC)(echo "Installing GNUstep configuration file in $(GNUSTEP_CONFIG_FILE)"; \ "$(srcdir)/mkinstalldirs" "$(GNUSTEP_CONFIG_FILE_DIR)"; \ $(INSTALL_DATA) $(GNUSTEP_DOT_CONF_FILE) "$(GNUSTEP_CONFIG_FILE)") $(EC)(echo "Installing gnustep-make support software") $(EC)(for f in config.guess config.sub install-sh mkinstalldirs \ clean_cpu.sh clean_os.sh \ clean_vendor.sh cpu.sh os.sh vendor.sh \ print_unique_pathlist.sh \ relative_path.sh strip_makefiles.sh; do \ $(INSTALL_PROGRAM) -m 755 "$(srcdir)/$$f" "$(makedir)"; \ done) $(EC)($(INSTALL_DATA) GNUstep.sh "$(makedir)"; \ $(INSTALL_DATA) GNUstep.csh "$(makedir)"; \ $(INSTALL_DATA) filesystem.sh "$(makedir)"; \ $(INSTALL_DATA) filesystem.csh "$(makedir)"; \ $(INSTALL_DATA) "$(srcdir)/GNUstep-reset.sh" "$(makedir)"; \ $(INSTALL_PROGRAM) -m 755 fixpath.sh "$(makedir)"; \ $(INSTALL_PROGRAM) -m 755 openapp "$(tooldir)"; \ $(INSTALL_PROGRAM) -m 755 "$(srcdir)/debugapp" "$(tooldir)"; \ $(INSTALL_PROGRAM) -m 755 opentool "$(tooldir)"; \ $(INSTALL_PROGRAM) -m 755 gnustep-config "$(tooldir)") $(EC)(echo "Installing makefiles"; \ for f in $(MAKE_FILES); do \ $(INSTALL_DATA) "$(srcdir)/$$f" "$(makedir)"; \ done; \ for f in $(MASTER_MAKE_FILES); do \ $(INSTALL_DATA) "$(srcdir)/Master/$$f" "$(makedir)/Master"; \ done; \ for f in $(INSTANCE_MAKE_FILES); do \ $(INSTALL_DATA) "$(srcdir)/Instance/$$f" "$(makedir)/Instance"; \ done; \ for f in $(INSTANCE_SHARED_MAKE_FILES); do \ $(INSTALL_DATA) "$(srcdir)/Instance/Shared/$$f" \ "$(makedir)/Instance/Shared"; \ done; \ for f in $(INSTANCE_DOC_MAKE_FILES); do \ $(INSTALL_DATA) "$(srcdir)/Instance/Documentation/$$f" \ "$(makedir)/Instance/Documentation"; \ done; \ $(INSTALL_PROGRAM) -m 755 "$(srcdir)/app-wrapper.template" "$(makedir)"; \ $(INSTALL_PROGRAM) -m 755 "$(srcdir)/java-executable.template" "$(makedir)"; \ $(INSTALL_PROGRAM) -m 755 executable.template "$(makedir)"; \ $(INSTALL_DATA) "$(srcdir)/nsi-app.template" "$(makedir)"; \ $(INSTALL_DATA) -m 755 "$(srcdir)/bake_debian_files.sh" "$(makedir)"; \ $(INSTALL_DATA) config-noarch.make "$(makedir)"; \ $(INSTALL_DATA) filesystem.make "$(makedir)"; \ $(INSTALL_DATA) config.make "$(makedir)/$(MAKE_CONFIG_DIR)") $(EC)(echo "Installing Test Framework scripts"; \ $(INSTALL_PROGRAM) -m 755 TestFramework/gnustep-tests "$(tooldir)"; \ $(INSTALL_PROGRAM) -m 755 $(srcdir)/TestFramework/Summary.sh "$(testdir)") $(EC)(echo "Installing Test Framework support files"; \ for f in $(TEST_FRAMEWORK_FILES); do \ $(INSTALL_DATA) "$(srcdir)/TestFramework/$$f" "$(testdir)"; \ done) $(EC)(echo "Installing (and compressing) manpages"; \ "$(srcdir)/mkinstalldirs" "$(mandir)/man1" \ "$(mandir)/man7"; \ $(INSTALL_DATA) "$(srcdir)/Documentation/debugapp.1" "$(mandir)/man1"; \ which gzip > /dev/null 2>&1 && rm -f "$(mandir)/man1/debugapp.1.gz" && gzip -9 -n "$(mandir)/man1/debugapp.1"; \ $(INSTALL_DATA) "$(srcdir)/Documentation/gnustep-config.1" "$(mandir)/man1"; \ which gzip > /dev/null 2>&1 && rm -f "$(mandir)/man1/gnustep-config.1.gz" && gzip -9 -n "$(mandir)/man1/gnustep-config.1"; \ $(INSTALL_DATA) "$(srcdir)/Documentation/gnustep-tests.1" "$(mandir)/man1"; \ which gzip > /dev/null 2>&1 && rm -f "$(mandir)/man1/gnustep-tests.1.gz" && gzip -9 -n "$(mandir)/man1/gnustep-tests.1"; \ $(INSTALL_DATA) "$(srcdir)/Documentation/openapp.1" "$(mandir)/man1"; \ which gzip > /dev/null 2>&1 && rm -f "$(mandir)/man1/openapp.1.gz" && gzip -9 -n "$(mandir)/man1/openapp.1"; \ $(INSTALL_DATA) "$(srcdir)/Documentation/opentool.1" "$(mandir)/man1"; \ which gzip > /dev/null 2>&1 && rm -f "$(mandir)/man1/opentool.1.gz" && gzip -9 -n "$(mandir)/man1/opentool.1"; \ $(INSTALL_DATA) "$(srcdir)/Documentation/GNUstep.7" "$(mandir)/man7"; \ which gzip > /dev/null 2>&1 && rm -f "$(mandir)/man7/GNUstep.7.gz" && gzip -9 -n "$(mandir)/man7/GNUstep.7"; \ $(INSTALL_DATA) "$(srcdir)/Documentation/library-combo.7" "$(mandir)/man7"; \ which gzip > /dev/null 2>&1 && rm -f "$(mandir)/man7/library-combo.7.gz" && gzip -9 -n "$(mandir)/man7/library-combo.7") $(EC)(if [ "@GNUSTEP_STRIP_MAKEFILES@" = "strip" ]; then \ echo "Stripping makefiles and shell scripts..."; \ cd "$(makedir)"; ./strip_makefiles.sh; \ fi) $(EC)(if [ "@GNUSTEP_INSTALL_LD_SO_CONF@" = "yes" ] ; then \ echo "Installing ld.so.conf.d/gnustep-make.conf due to custom prefix..."; \ "$(srcdir)/mkinstalldirs" $(DESTDIR)/etc/ld.so.conf.d ; \ $(INSTALL_DATA) gnustep-make-ld.so.conf "$(DESTDIR)/etc/ld.so.conf.d/gnustep-make.conf"; \ \ fi) uninstall: rm -f "$(mandir)/man1/debugapp.1" "$(mandir)/man1/debugapp.1.gz"; \ rm -f "$(mandir)/man1/gnustep-config.1" "$(mandir)/man1/gnustep-config.1.gz"; \ rm -f "$(mandir)/man1/gnustep-tests.1" "$(mandir)/man1/gnustep-tests.1.gz"; \ rm -f "$(mandir)/man1/openapp.1" "$(mandir)/man1/openapp.1.gz"; \ rm -f "$(mandir)/man1/opentool.1" "$(mandir)/man1/opentool.1.gz"; \ rm -f "$(mandir)/man7/GNUstep.7" "$(mandir)/man7/GNUstep.7.gz"; \ rm -f "$(mandir)/man7/library-combo.7" "$(mandir)/man7/library-combo.7.gz" -rmdir "$(mandir)/man1" -rmdir "$(mandir)/man7" -rmdir "$(mandir)" for f in config.guess config.sub install-sh mkinstalldirs \ clean_cpu.sh clean_os.sh \ clean_vendor.sh cpu.sh os.sh vendor.sh \ print_unique_pathlist.sh fixpath.sh \ filesystem.sh filesystem.csh \ GNUstep.sh GNUstep.csh GNUstep-reset.sh \ relative_path.sh strip_makefiles.sh; do \ rm -f "$(makedir)/$$f"; \ done rm -f "$(tooldir)/openapp"; \ rm -f "$(tooldir)/debugapp"; \ rm -f "$(tooldir)/opentool"; \ rm -f "$(tooldir)/gnustep-config"; \ rm -f "$(tooldir)/gnustep-tests"; \ rm -f "$(testdir)/Summary.sh"; \ for f in $(MAKE_FILES); do \ rm -f "$(makedir)/$$f"; \ done for f in $(MASTER_MAKE_FILES); do \ rm -f "$(makedir)/Master/$$f"; \ done for f in $(INSTANCE_MAKE_FILES); do \ rm -f "$(makedir)/Instance/$$f"; \ done for f in $(INSTANCE_SHARED_MAKE_FILES); do \ rm -f "$(makedir)/Instance/Shared/$$f"; \ done for f in $(INSTANCE_DOC_MAKE_FILES); do \ rm -f "$(makedir)/Instance/Documentation/$$f"; \ done for f in $(TEST_FRAMEWORK_FILES); do \ rm -f "$(testdir)/$$f"; \ done rm -f "$(makedir)/executable.template" rm -f "$(makedir)/app-wrapper.template" rm -f "$(makedir)/java-executable.template" rm -f "$(makedir)/nsi-app.template" rm -f "$(makedir)/bake_debian_files.sh" rm -f "$(makedir)/config-noarch.make" rm -f "$(makedir)/filesystem.make" rm -f "$(makedir)/$(MAKE_CONFIG_DIR)/config.make" rm -f "$(GNUSTEP_CONFIG_FILE)" -rmdir "$(GNUSTEP_CONFIG_FILE_DIR)" -rmdir "$(testdir)" -rmdir "$(makedir)/Instance/Documentation" -rmdir "$(makedir)/Instance/Shared" -rmdir "$(makedir)/Instance" -rmdir "$(makedir)/Master" -rmdir "$(makedir)/Auxiliary" -rmdir "$(makedir)/Additional" -rmdir "$(makedir)/$(GNUSTEP_TARGET_LDIR)" -rmdir "$(makedir)/$(GNUSTEP_TARGET_DIR)" -rmdir "$(makedir)/$(GNUSTEP_TARGET_CPU)" -rmdir "$(makedir)/$(GNUSTEP_LIB_COMBO)" -rmdir "$(makedir)" -rmdir "$(tooldir)" clean: (cd Documentation; $(MAKE) distclean) rm -f *~ Master/*~ Instance/*~ Instance/Shared/*~ distclean: clean (cd Documentation; $(MAKE) distclean) rm -f GNUmakefile config-noarch.make config.make config.h rm -f config.cache config.log config.status rm -f openapp opentool executable.template rm -f GNUstep.sh GNUstep.csh fixpath.sh gnustep-config rm -f filesystem.make filesystem.sh filesystem.csh rm -f gnustep-make.spec GNUstep.conf GNUstep-strict-v2.conf rm -f config-precomp-test.out config-precomp-test.h.gch config-precomp-test.log rm -f debian_dist/ docs: (cd Documentation; $(MAKE)) install-docs: (cd Documentation; $(MAKE) install) install-all: install install-docs svn-tag: svn copy $(SVNPREFIX)/trunk $(SVNPREFIX)/tags/make-$(VERTAG) \ -m "Tag version $(VERTAG)" svn-tag-stable: svn copy $(SVNPREFIX)/branches/stable $(SVNPREFIX)/tags/make-$(VERTAG) \ -m "Tag version $(VERTAG)" svn-dist: svn export $(SVNPREFIX)/tags/make-$(VERTAG) \ gnustep-make-$(GNUSTEP_MAKE_VERSION) tar --gzip -cf gnustep-make-$(GNUSTEP_MAKE_VERSION).tar.gz gnustep-make-$(GNUSTEP_MAKE_VERSION) rm -rf gnustep-make-$(GNUSTEP_MAKE_VERSION) svn-snapshot: svn export $(SVNPREFIX)/trunk \ gnustep-make-$(GNUSTEP_MAKE_VERSION)~svn$(SVN_REVISION) tar --gzip -cf gnustep-make-$(GNUSTEP_MAKE_VERSION)~svn$(SVN_REVISION).tar.gz gnustep-make-$(GNUSTEP_MAKE_VERSION)~svn$(SVN_REVISION) echo $(GNUSTEP_MAKE_VERSION)~svn$(SVN_REVISION) > svn-snapshot-tarball-version rm -rf gnustep-make-$(GNUSTEP_MAKE_VERSION)~svn$(SVN_REVISION) svn-export: @echo Note: any local changes are included. svn export . \ gnustep-make-$(GNUSTEP_MAKE_VERSION)~svn$(SVN_REVISION)~date$(DATE_TIME_VERSION) tar --gzip -cf gnustep-make-$(GNUSTEP_MAKE_VERSION)~svn$(SVN_REVISION)~date$(DATE_TIME_VERSION).tar.gz gnustep-make-$(GNUSTEP_MAKE_VERSION)~svn$(SVN_REVISION)~date$(DATE_TIME_VERSION) echo $(GNUSTEP_MAKE_VERSION)~svn$(SVN_REVISION)~date$(DATE_TIME_VERSION) > svn-export-tarball-version rm -rf gnustep-make-$(GNUSTEP_MAKE_VERSION)~svn$(SVN_REVISION)~date$(DATE_TIME_VERSION) cvs-tag: cvs -z3 rtag make-$(VERTAG) make cvs-dist: cvs -z3 export -r make-$(VERTAG) make mv make gnustep-make-$(GNUSTEP_MAKE_VERSION) tar --gzip -cf gnustep-make-$(GNUSTEP_MAKE_VERSION).tar.gz gnustep-make-$(GNUSTEP_MAKE_VERSION) rm -rf gnustep-make-$(GNUSTEP_MAKE_VERSION) cvs-snapshot: cvs -z3 export -D now make mv make gnustep-make-$(GNUSTEP_MAKE_VERSION) tar --gzip -cf gnustep-make-$(GNUSTEP_MAKE_VERSION).tar.gz gnustep-make-$(GNUSTEP_MAKE_VERSION) rm -rf gnustep-make-$(GNUSTEP_MAKE_VERSION) test-RPM_TOPDIR: @(if [ -z "$(RPM_TOPDIR)" ]; then \ echo "Error - RPM_TOPDIR variable not set."; \ echo "You need to set it to the top of your rpm directory tree"; \ exit 1; \ fi) # The check for rpmbuild is for old RPM versions which didn't have # rpmbuild and used 'rpm -ba' instead. It can be removed when we are # reasonably sure no more old RPM versions (not having rpmbuild), are # still around. rpm: test-RPM_TOPDIR svn-dist cp gnustep-make-$(GNUSTEP_MAKE_VERSION).tar.gz $(RPM_TOPDIR)/SOURCES/ cp gnustep-make.spec $(RPM_TOPDIR)/SPECS/ cd $(RPM_TOPDIR)/SPECS/ if which rpmbuild > /dev/null 2>/dev/null; then \ rpmbuild="rpmbuild"; \ else \ if which rpm > /dev/null 2>/dev/null; then \ rpmbuild="rpm"; \ else \ echo "Error: You don't have rpm installed!"; \ rpmbuild="rpmbuild"; \ fi; \ fi; \ $${rpmbuild} -ba gnustep-make.spec debclean: -rm -rf debian_dist deb: debian_dist/gnustep-make_$(DEB_TARBALL_VERSION)_any.deb debian_dist/gnustep-make_$(DEB_TARBALL_VERSION)_any.deb: $(EC)(if [ ! -e "debian_dist/gnustep-make-$(DEB_TARBALL_VERSION)/debian/control" ] ; then \ echo "Please manually run 'make debfiles' first." ; \ echo "Intentionally not automatically depending to ease customization between steps." ; \ fi) cd debian_dist/gnustep-make-$(DEB_TARBALL_VERSION)/ && EDITOR=/bin/true dpkg-source --commit -q . gnustep-make-automatic cd debian_dist/gnustep-make-$(DEB_TARBALL_VERSION)/ && debuild $(DEBUILD_ARGS) -S cd debian_dist/gnustep-make-$(DEB_TARBALL_VERSION)/ && debuild $(DEBUILD_ARGS) -b debfiles: debian_dist/gnustep-make_$(DEB_TARBALL_VERSION).orig.tar.gz cd debian_dist && tar xfz gnustep-make_$(DEB_TARBALL_VERSION).orig.tar.gz PACKAGE_NAME="gnustep-make" VERSION=$(DEB_TARBALL_VERSION) DEB_MAINTAINER="GNUstep Developers <gnustep-dev@gnu.org>" DEB_ARCHITECTURE=any /bin/bash bake_debian_files.sh debian_dist/gnustep-make-$(DEB_TARBALL_VERSION)/ # Manual export is required to permit user to override .orig.tar.gz during the build process. # We also allow user to make a choice of where to grab .orig.tar.gz from. debian_dist/gnustep-make_$(DEB_TARBALL_VERSION).orig.tar.gz: $(EC)(if [ ! -e gnustep-make-$(DEB_TARBALL_VERSION).tar.gz ] ; then \ echo "Please manually create gnustep-make-$(DEB_TARBALL_VERSION).tar.gz." ; \ echo "Some available make targets:" ; \ echo " * svn-dist" ; \ echo " * svn-snapshot" ; \ echo " * svn-export" ; \ fi) mkdir -p debian_dist cp gnustep-make-$(DEB_TARBALL_VERSION).tar.gz debian_dist/gnustep-make_$(DEB_TARBALL_VERSION).orig.tar.gz generated-files: GNUmakefile GNUstep.sh GNUstep.csh fixpath.sh config-noarch.make config.make \ openapp opentool gnustep-make.spec executable.template gnustep-config \ filesystem.make filesystem.sh filesystem.csh GNUstep.conf GNUstep-strict-v2.conf \ gnustep-make-ld.so.conf GNUmakefile: GNUmakefile.in config.status $(SHELL) config.status GNUstep.sh: GNUstep.sh.in $(SHELL) config.status GNUstep.csh: GNUstep.csh.in $(SHELL) config.status GNUstep.conf: GNUstep.conf.in $(SHELL) config.status GNUstep-strict-v2.conf: GNUstep-strict-v2.conf.in $(SHELL) config.status fixpath.sh: fixpath.sh.in $(SHELL) config.status filesystem.make: filesystem.make.in $(SHELL) config.status filesystem.sh: filesystem.sh.in $(SHELL) config.status filesystem.csh: filesystem.csh.in $(SHELL) config.status config-noarch.make: config-noarch.make.in Version $(SHELL) config.status --recheck config.make: config.make.in $(SHELL) config.status --recheck openapp: openapp.in $(SHELL) config.status opentool: opentool.in $(SHELL) config.status gnustep-make.spec: gnustep-make.spec.in Version $(SHELL) config.status --recheck executable.template: executable.template.in $(SHELL) config.status gnustep-config: gnustep-config.in $(SHELL) config.status gnustep-make-ld.so.conf: gnustep-make-ld.so.conf.in $(SHELL) config.status �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/common.make����������������������������������������������������������������������0000664�0001750�0001750�00000103044�13071742120�016062� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # common.make # # Set all of the common environment variables. # # Copyright (C) 1997, 2001 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Ovidiu Predescu <ovidiu@net-community.com> # Author: Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # TODO: It would be nice to check here that the 'make' command being # used is indeed GNU make, and exit with a user-friendly error message # if not. We could, for example, check that the variable MAKE_VERSION # (which is defined by GNU make but not other makes) is defined. # Unfortunately, there doesn't exist a shared make syntax for checking # that a variable is defined across different versiosn of make; BSD # make would use '.ifdef' which doesn't work with GNU make, and the # GNU make syntax (eg, ifneq ($(MAKE_VERSION),)) wouldn't work with # BSD make. ifeq ($(COMMON_MAKE_LOADED),) COMMON_MAKE_LOADED = yes SHELL = /bin/sh # We have been located by using GNUSTEP_MAKEFILES. This variable # might actually have been determined in the user makefile by using # gnustep-config, so we want to export it to avoid sub-GNUmakefiles # from having to recompute it! export GNUSTEP_MAKEFILES # The fact that this make invocation is building its targets in # parallel does not mean that submakes should do it too. We control # exactly which make invocation runs in parallel, and which does not. # So, we do not want to export _GNUSTEP_MAKE_PARALLEL to submakes, # unless passed on the command line. FIXME: This does not work, so as # a quick hack I added _GNUSTEP_MAKE_PARALLEL=no to all submake # invocations. That works fine, but might be troublesome for custom # GNUmakefiles that run submakes. Need to think. #unexport _GNUSTEP_MAKE_PARALLEL # # Get the global config information. This includes # GNUSTEP_SYSTEM_ROOT, GNUSTEP_MAKE_VERSION, GNUSTEP_IS_FLATTENED, # default_library_combo, and, if multi-platform support is disabled, # it will also load GNUSTEP_HOST, GNUSTEP_HOST_CPU, etc. # include $(GNUSTEP_MAKEFILES)/config-noarch.make # # Scripts to run for parsing canonical names # CONFIG_GUESS_SCRIPT = $(GNUSTEP_MAKEFILES)/config.guess CONFIG_SUB_SCRIPT = $(GNUSTEP_MAKEFILES)/config.sub CONFIG_CPU_SCRIPT = $(GNUSTEP_MAKEFILES)/cpu.sh CONFIG_VENDOR_SCRIPT = $(GNUSTEP_MAKEFILES)/vendor.sh CONFIG_OS_SCRIPT = $(GNUSTEP_MAKEFILES)/os.sh CLEAN_CPU_SCRIPT = $(GNUSTEP_MAKEFILES)/clean_cpu.sh CLEAN_VENDOR_SCRIPT = $(GNUSTEP_MAKEFILES)/clean_vendor.sh CLEAN_OS_SCRIPT = $(GNUSTEP_MAKEFILES)/clean_os.sh REL_PATH_SCRIPT = $(GNUSTEP_MAKEFILES)/relative_path.sh # # Determine the compilation host and target # include $(GNUSTEP_MAKEFILES)/names.make # 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 # invoking `make library_combo=gnu-gnu-gnu'; command line # automatically takes the precedence over makefile definitions, so # setting library_combo here has no effect if the user already defined # it on the command line). ifdef LIBRARY_COMBO library_combo := $(LIBRARY_COMBO) else library_combo := $(default_library_combo) endif # Handle abbreviations for library combinations. the_library_combo = $(library_combo) ifeq ($(the_library_combo), nx) the_library_combo = nx-nx-nx endif ifeq ($(the_library_combo), apple) the_library_combo = apple-apple-apple endif ifeq ($(the_library_combo), gnu) the_library_combo = gnu-gnu-gnu endif ifeq ($(the_library_combo), ng) the_library_combo = ng-gnu-gnu endif ifeq ($(the_library_combo), fd) the_library_combo = gnu-fd-gnu endif # Strip out the individual libraries from the library_combo string combo_list = $(subst -, ,$(the_library_combo)) # NB: The user can always specify any of the OBJC_RUNTIME_LIB, the # FOUNDATION_LIB and the GUI_LIB variable manually overriding our # determination. ifeq ($(OBJC_RUNTIME_LIB),) OBJC_RUNTIME_LIB = $(word 1,$(combo_list)) endif ifeq ($(FOUNDATION_LIB),) FOUNDATION_LIB = $(word 2,$(combo_list)) endif ifeq ($(GUI_LIB),) GUI_LIB = $(word 3,$(combo_list)) endif # Now build and export the final LIBRARY_COMBO variable, which is the # only variable (together with OBJC_RUNTIME_LIB, FOUNDATION_LIB and # GUI_LIB) the other makefiles need to know about. This LIBRARY_COMBO # might be different from the original one, because we might have # replaced it with a library_combo provided on the command line, or we # might have fixed up parts of it in accordance to some custom # OBJC_RUNTIME_LIB, FOUNDATION_LIB and/or GUI_LIB ! export LIBRARY_COMBO = $(OBJC_RUNTIME_LIB)-$(FOUNDATION_LIB)-$(GUI_LIB) ifeq ($(GNUSTEP_IS_FLATTENED), no) GNUSTEP_HOST_DIR = $(GNUSTEP_HOST_CPU)-$(GNUSTEP_HOST_OS) GNUSTEP_TARGET_DIR = $(GNUSTEP_TARGET_CPU)-$(GNUSTEP_TARGET_OS) GNUSTEP_HOST_LDIR = $(GNUSTEP_HOST_DIR)/$(LIBRARY_COMBO) GNUSTEP_TARGET_LDIR = $(GNUSTEP_TARGET_DIR)/$(LIBRARY_COMBO) else GNUSTEP_HOST_DIR = . GNUSTEP_TARGET_DIR = . GNUSTEP_HOST_LDIR = . GNUSTEP_TARGET_LDIR = . endif # # Get the config information (host/target/library-combo specific), # this includes CC, OPTFLAG etc. # ifeq ($(GNUSTEP_IS_FLATTENED),yes) include $(GNUSTEP_MAKEFILES)/config.make else -include $(GNUSTEP_MAKEFILES)/config.make -include $(GNUSTEP_MAKEFILES)/$(GNUSTEP_TARGET_LDIR)/config.make endif # Then, work out precisely library combos etc include $(GNUSTEP_MAKEFILES)/library-combo.make # GNUSTEP_BUILD_DIR is the directory in which anything generated # during the build will be placed. '.' means it's the same as the # source directory; this case is the default/common and we optimize # for it whenever possible. ifeq ($(GNUSTEP_BUILD_DIR),) GNUSTEP_BUILD_DIR = . endif # # Get standard messages # include $(GNUSTEP_MAKEFILES)/messages.make ifneq ($(messages),yes) # This flag is passed to make so we do not print the directories that # we recurse into unless messages=yes is used. GNUSTEP_MAKE_NO_PRINT_DIRECTORY_FLAG = --no-print-directory else # If messages=yes is used, let make print out each directory it # recurses into. GNUSTEP_MAKE_NO_PRINT_DIRECTORY_FLAG = endif # # Get flags/config options for core libraries # # Then include custom makefiles with flags/config options # This is meant to be used by the core libraries to override loading # of the system makefiles from $(GNUSTEP_MAKEFILES)/Additional/*.make # with their local copy (presumably more up-to-date) ifneq ($(GNUSTEP_LOCAL_ADDITIONAL_MAKEFILES),) include $(GNUSTEP_LOCAL_ADDITIONAL_MAKEFILES) endif # Then include makefiles with flags/config options installed by the # libraries themselves -include $(GNUSTEP_MAKEFILES)/Additional/*.make # # Determine target specific settings # include $(GNUSTEP_MAKEFILES)/target.make # # Now load the filesystem locations. # include $(GNUSTEP_MAKEFILES)/filesystem.make # # GNUSTEP_INSTALLATION_DOMAIN is the domain where all things go. This # is the variable you should use to specify where you want things to # be installed. Valid values are SYSTEM, LOCAL, NETWORK and USER, # corresponding to the various domains. If you don't specify it, it # defaults to LOCAL. # ifeq ($(GNUSTEP_INSTALLATION_DOMAIN), ) GNUSTEP_INSTALLATION_DOMAIN = LOCAL # Try to read install.conf, if one exists. This file can be used # when compiling from source to specify default installation location # for certain packages. The location of install.conf can be specified # using the GNUSTEP_INSTALLATION_DOMAINS_CONF_FILE variable; if that variable # is not set, we look for a file called install.conf in the same directory as # the GNUSTEP_CONFIG_FILE. ifeq ($(GNUSTEP_INSTALLATION_DOMAINS_CONF_FILE), ) GNUSTEP_INSTALLATION_DOMAINS_CONF_FILE = $(dir $(GNUSTEP_CONFIG_FILE))installation-domains.conf endif -include $(GNUSTEP_INSTALLATION_DOMAINS_CONF_FILE) ifneq ($(filter $(PACKAGE_NAME), $(GNUSTEP_PACKAGES_TO_INSTALL_INTO_SYSTEM_BY_DEFAULT)), ) GNUSTEP_INSTALLATION_DOMAIN = SYSTEM endif ifneq ($(filter $(PACKAGE_NAME), $(GNUSTEP_PACKAGES_TO_INSTALL_INTO_LOCAL_BY_DEFAULT)), ) GNUSTEP_INSTALLATION_DOMAIN = LOCAL endif ifneq ($(filter $(PACKAGE_NAME), $(GNUSTEP_PACKAGES_TO_INSTALL_INTO_NETWORK_BY_DEFAULT)), ) GNUSTEP_INSTALLATION_DOMAIN = NETWORK endif ifneq ($(filter $(PACKAGE_NAME), $(GNUSTEP_PACKAGES_TO_INSTALL_INTO_USER_BY_DEFAULT)), ) GNUSTEP_INSTALLATION_DOMAIN = USER endif endif # Safety check. Very annoying when you mistype and you end up # installing into /. ;-) ifneq ($(GNUSTEP_INSTALLATION_DOMAIN), SYSTEM) ifneq ($(GNUSTEP_INSTALLATION_DOMAIN), LOCAL) ifneq ($(GNUSTEP_INSTALLATION_DOMAIN), NETWORK) ifneq ($(GNUSTEP_INSTALLATION_DOMAIN), USER) $(error "Invalid value '$(GNUSTEP_INSTALLATION_DOMAIN)' for GNUSTEP_INSTALLATION_DOMAIN. Valid values are SYSTEM, LOCAL, NETWORK and USER") endif endif endif endif # # GNUSTEP_INSTALLATION_DIR is an older/different mechanism for # specifying where things should be installed. It is expected to be a # fixed absolute path rather than a logical domain. You shouldn't # normally use it, but might be handy if you need to force things # and you're using the GNUstep filesystem structure. # # If GNUSTEP_INSTALLATION_DIR is set, we automatically install # everything in the GNUstep filesystem domain structure in the # specified directory. If the GNUstep filesystem structure is used, # then GNUSTEP_INSTALLATION_DOMAIN = SYSTEM is the same as # GNUSTEP_INSTALLATION_DIR = $(GNUSTEP_SYSTEM_ROOT). # # Please note that GNUSTEP_INSTALLATION_DIR overrides # GNUSTEP_INSTALLATION_DOMAIN, so if you want to use # GNUSTEP_INSTALLATION_DOMAIN, make sure you're not setting # GNUSTEP_INSTALLATION_DIR. # # GNUSTEP_INSTALLATION_DIR overrides GNUSTEP_INSTALLATION_DOMAIN ifneq ($(GNUSTEP_INSTALLATION_DIR),) # This is the case where we install things using a standard # GNUstep filesystem rooted in GNUSTEP_INSTALLATION_DIR. # This is not recommended since it does not work with custom # filesystem configurations. ifeq ($(GNUSTEP_MAKE_STRICT_V2_MODE),yes) $(error GNUSTEP_INSTALLATION_DIR is deprecated. Please use GNUSTEP_INSTALLATION_DOMAIN instead) else $(warning GNUSTEP_INSTALLATION_DIR is deprecated. Please use GNUSTEP_INSTALLATION_DOMAIN instead) endif # # DESTDIR allows you to relocate the entire installation somewhere else # (as per GNU Coding Standards). # # Add DESTDIR as a prefix to GNUSTEP_INSTALLATION_DIR, but only if we're # at the first top-level invocation. Else we risk adding it multiple # times ;-) # ifeq ($(_GNUSTEP_TOP_INVOCATION_DONE),) ifneq ($(DESTDIR),) override GNUSTEP_INSTALLATION_DIR := $(DESTDIR)/$(GNUSTEP_INSTALLATION_DIR) endif endif # Make it public and available to all submakes invocations export GNUSTEP_INSTALLATION_DIR # Use GNUSTEP_INSTALLATION_DIR to set the installation dirs GNUSTEP_APPS = $(GNUSTEP_INSTALLATION_DIR)/Applications GNUSTEP_ADMIN_APPS = $(GNUSTEP_INSTALLATION_DIR)/Applications/Admin GNUSTEP_WEB_APPS = $(GNUSTEP_INSTALLATION_DIR)/Library/WebApplications GNUSTEP_TOOLS = $(GNUSTEP_INSTALLATION_DIR)/Tools GNUSTEP_ADMIN_TOOLS = $(GNUSTEP_INSTALLATION_DIR)/Tools/Admin GNUSTEP_LIBRARY = $(GNUSTEP_INSTALLATION_DIR)/Library GNUSTEP_SERVICES = $(GNUSTEP_LIBRARY)/Services ifeq ($(GNUSTEP_IS_FLATTENED),yes) GNUSTEP_HEADERS = $(GNUSTEP_INSTALLATION_DIR)/Library/Headers else GNUSTEP_HEADERS = $(GNUSTEP_INSTALLATION_DIR)/Library/Headers/$(GNUSTEP_TARGET_LDIR) endif GNUSTEP_APPLICATION_SUPPORT = $(GNUSTEP_LIBRARY)/ApplicationSupport GNUSTEP_BUNDLES = $(GNUSTEP_LIBRARY)/Bundles GNUSTEP_FRAMEWORKS = $(GNUSTEP_LIBRARY)/Frameworks GNUSTEP_PALETTES = $(GNUSTEP_LIBRARY)/ApplicationSupport/Palettes GNUSTEP_LIBRARIES = $(GNUSTEP_INSTALLATION_DIR)/Library/Libraries GNUSTEP_RESOURCES = $(GNUSTEP_LIBRARY)/Libraries/Resources GNUSTEP_JAVA = $(GNUSTEP_LIBRARY)/Libraries/Java GNUSTEP_DOC = $(GNUSTEP_LIBRARY)/Documentation GNUSTEP_DOC_MAN = $(GNUSTEP_DOC)/man GNUSTEP_DOC_INFO = $(GNUSTEP_DOC)/info else # This is the case where we install things in GNUSTEP_INSTALLATION_DOMAIN # according to the (potentially custom) filesystem configuration of # that domain. This is the recommended way. # Make it public and available to all submakes invocations export GNUSTEP_INSTALLATION_DOMAIN # Use DESTDIR + GNUSTEP_INSTALLATION_DOMAIN to set the installation dirs ifeq ($(DESTDIR),) MAYBE_DESTDIR= else MAYBE_DESTDIR=$(DESTDIR)/ endif GNUSTEP_APPS = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_APPS) GNUSTEP_ADMIN_APPS = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_ADMIN_APPS) GNUSTEP_WEB_APPS = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_WEB_APPS) GNUSTEP_TOOLS = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_TOOLS) GNUSTEP_ADMIN_TOOLS = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_ADMIN_TOOLS) GNUSTEP_LIBRARY = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_LIBRARY) GNUSTEP_SERVICES = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_SERVICES) ifeq ($(GNUSTEP_IS_FLATTENED),yes) GNUSTEP_HEADERS = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_HEADERS) else GNUSTEP_HEADERS = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_HEADERS)/$(GNUSTEP_TARGET_LDIR) endif GNUSTEP_APPLICATION_SUPPORT = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_APPLICATION_SUPPORT) GNUSTEP_BUNDLES = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_BUNDLES) GNUSTEP_FRAMEWORKS = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_FRAMEWORKS) GNUSTEP_PALETTES = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_PALETTES) GNUSTEP_LIBRARIES = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_LIBRARIES) GNUSTEP_RESOURCES = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_RESOURCES) GNUSTEP_JAVA = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_JAVA) GNUSTEP_DOC = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_DOC) GNUSTEP_DOC_MAN = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_DOC_MAN) GNUSTEP_DOC_INFO = $(MAYBE_DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_DOC_INFO) endif # # Backwards-compatible long name variant of GNUSTEP_DOC*. # # The long variables names were too long for shells (eg, tcsh 6.12 has # a 30-char variable name limit, and GNUSTEP_SYSTEM_DOCUMENTATION_MAN # is 32 chars), so we replaced them with the shorter variant. For # consistency, we'd like the shorter variant to be used everywhere, # both in shell and make code. # # But for backwards compatibility, you can still use the long name # variants in makefiles though ... we'll keep this backwards # compatibility hack in place for about 4 years from now, so until # Feb 2011. # ifeq ($(GNUSTEP_MAKE_STRICT_V2_MODE),yes) # FIXME - these would be nice but needs careful testing # GNUSTEP_DOCUMENTATION = $(error GNUSTEP_DOCUMENTATION is deprecated) # GNUSTEP_DOCUMENTATION_MAN = $(error GNUSTEP_DOCUMENTATION_MAN is deprecated) # GNUSTEP_DOCUMENTATION_INFO = $(error GNUSTEP_DOCUMENTATION_INF is deprecated) else GNUSTEP_DOCUMENTATION = $(GNUSTEP_DOC) GNUSTEP_DOCUMENTATION_MAN = $(GNUSTEP_DOC_MAN) GNUSTEP_DOCUMENTATION_INFO = $(GNUSTEP_DOC_INFO) endif # # INSTALL_ROOT_DIR is the obsolete way of relocating stuff. It used # to only affect stuff that is not installed using # GNUSTEP_INSTALLATION_DIR (DESTDIR instead also affects stuff # installed using GNUSTEP_INSTALLATION_DIR). We prefer DESTDIR # because it is a widely accepted GNU standard, and makes packaging # easier. # # So all instances of INSTALL_ROOT_DIR in user's makefiles should be # replaced with DESTDIR. # # Anyway, until all makefiles have been updated, we set INSTALL_ROOT_DIR # for backwards compatibility. # ifeq ($(GNUSTEP_MAKE_STRICT_V2_MODE),yes) ifneq ($(INSTALL_ROOT_DIR),) $(error INSTALL_ROOT_DIR is deprecated in gnustep-make v2, please replace any instance of INSTALL_ROOT_DIR with DESTDIR) endif endif ifneq ($(DESTDIR),) ifeq ($(INSTALL_ROOT_DIR),) INSTALL_ROOT_DIR = $(DESTDIR) endif endif ifeq ($(GNUSTEP_MAKE_STRICT_V2_MODE),yes) # FIXME: Test that using 'error' here works reliably. # INSTALL_ROOT_DIR += $(error INSTALL_ROOT_DIR is deprecated, please replace any instance of INSTALL_ROOT_DIR with DESTDIR) INSTALL_ROOT_DIR += $(warning INSTALL_ROOT_DIR is deprecated, please replace any instance of INSTALL_ROOT_DIR with DESTDIR) else INSTALL_ROOT_DIR += $(warning INSTALL_ROOT_DIR is deprecated, please replace any instance of INSTALL_ROOT_DIR with DESTDIR) endif # The default name of the makefile to be used in recursive invocations of make ifeq ($(MAKEFILE_NAME),) MAKEFILE_NAME = GNUmakefile endif # Now prepare the library and header flags - we first prepare the list # of directories (trying to avoid duplicates in the list), then # optionally remove the empty ones, then prepend -I / -L to them. ifeq ($(GNUSTEP_IS_FLATTENED), no) # The following variables have to be evaluated after setting domain to # something, such as USER. When you evaluate them in that situation, # they will generate paths according to the following definition. # Later, we'll systematically replace domain with USER, the LOCAL, # then NETWORK, then SYSTEM. GS_HEADER_PATH = \ $(GNUSTEP_$(domain)_HEADERS)/$(GNUSTEP_TARGET_LDIR) \ $(GNUSTEP_$(domain)_HEADERS)/$(GNUSTEP_TARGET_DIR) \ $(GNUSTEP_$(domain)_HEADERS) GS_LIBRARY_PATH = \ $(GNUSTEP_$(domain)_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) \ $(GNUSTEP_$(domain)_LIBRARIES)/$(GNUSTEP_TARGET_DIR) else # In the flattened case, the paths to generate are considerably simpler. GS_HEADER_PATH = $(GNUSTEP_$(domain)_HEADERS) GS_LIBRARY_PATH = $(GNUSTEP_$(domain)_LIBRARIES) endif ifeq ($(FOUNDATION_LIB), apple) GS_FRAMEWORK_PATH = $(GNUSTEP_$(domain)_FRAMEWORKS) else GS_FRAMEWORK_PATH = endif # First, we add paths based in the USER domain. # But don't add GNUSTEP_USER_ROOT paths if being built by dpkg-buildpackage; # this is a Debian-specific convenience for package builders. ifndef DEB_BUILD_ARCH # Please note that the following causes GS_HEADER_PATH to be evaluated # with the variable domain equal to USER, which gives the effect we # wanted. GNUSTEP_HEADERS_DIRS = $(foreach domain,USER,$(GS_HEADER_PATH)) GNUSTEP_LIBRARIES_DIRS = $(foreach domain,USER,$(GS_LIBRARY_PATH)) GNUSTEP_FRAMEWORKS_DIRS = $(foreach domain,USER,$(GS_FRAMEWORK_PATH)) endif # Second, if LOCAL flags are different from USER flags (which have # already been added), we add the LOCAL flags too. ifneq ($(GNUSTEP_LOCAL_HEADERS), $(GNUSTEP_USER_HEADERS)) GNUSTEP_HEADERS_DIRS += $(foreach domain,LOCAL,$(GS_HEADER_PATH)) endif ifneq ($(GNUSTEP_LOCAL_LIBRARIES), $(GNUSTEP_USER_LIBRARIES)) GNUSTEP_LIBRARIES_DIRS += $(foreach domain,LOCAL,$(GS_LIBRARY_PATH)) endif ifneq ($(GNUSTEP_LOCAL_FRAMEWORKS), $(GNUSTEP_USER_FRAMEWORKS)) GNUSTEP_FRAMEWORKS_DIRS += $(foreach domain,LOCAL,$(GS_FRAMEWORK_PATH)) endif # Third, if NETWORK flags are different from USER and LOCAL flags (which # have already been added), we add those too. ifneq ($(GNUSTEP_NETWORK_HEADERS), $(GNUSTEP_USER_HEADERS)) ifneq ($(GNUSTEP_NETWORK_HEADERS), $(GNUSTEP_LOCAL_HEADERS)) GNUSTEP_HEADERS_DIRS += $(foreach domain,NETWORK,$(GS_HEADER_PATH)) endif endif ifneq ($(GNUSTEP_NETWORK_LIBRARIES), $(GNUSTEP_USER_LIBRARIES)) ifneq ($(GNUSTEP_NETWORK_LIBRARIES), $(GNUSTEP_LOCAL_LIBRARIES)) GNUSTEP_LIBRARIES_DIRS += $(foreach domain,NETWORK,$(GS_LIBRARY_PATH)) endif endif ifneq ($(GNUSTEP_NETWORK_FRAMEWORKS), $(GNUSTEP_USER_FRAMEWORKS)) ifneq ($(GNUSTEP_NETWORK_FRAMEWORKS), $(GNUSTEP_LOCAL_FRAMEWORKS)) GNUSTEP_FRAMEWORKS_DIRS += $(foreach domain,NETWORK,$(GS_FRAMEWORK_PATH)) endif endif # Last, if SYSTEM flags are different from USER, LOCAL and NETWORK # flags (which have already been added), we add the ones based on # SYSTEM too. ifneq ($(GNUSTEP_SYSTEM_HEADERS), $(GNUSTEP_USER_HEADERS)) ifneq ($(GNUSTEP_SYSTEM_HEADERS), $(GNUSTEP_LOCAL_HEADERS)) ifneq ($(GNUSTEP_SYSTEM_HEADERS), $(GNUSTEP_NETWORK_HEADERS)) GNUSTEP_HEADERS_DIRS += $(foreach domain,SYSTEM,$(GS_HEADER_PATH)) endif endif endif ifneq ($(GNUSTEP_SYSTEM_LIBRARIES), $(GNUSTEP_USER_LIBRARIES)) ifneq ($(GNUSTEP_SYSTEM_LIBRARIES), $(GNUSTEP_LOCAL_LIBRARIES)) ifneq ($(GNUSTEP_SYSTEM_LIBRARIES), $(GNUSTEP_NETWORK_LIBRARIES)) GNUSTEP_LIBRARIES_DIRS += $(foreach domain,SYSTEM,$(GS_LIBRARY_PATH)) endif endif endif ifneq ($(GNUSTEP_SYSTEM_FRAMEWORKS), $(GNUSTEP_USER_FRAMEWORKS)) ifneq ($(GNUSTEP_SYSTEM_FRAMEWORKS), $(GNUSTEP_LOCAL_FRAMEWORKS)) ifneq ($(GNUSTEP_SYSTEM_FRAMEWORKS), $(GNUSTEP_NETWORK_FRAMEWORKS)) GNUSTEP_FRAMEWORKS_DIRS += $(foreach domain,SYSTEM,$(GS_FRAMEWORK_PATH)) endif endif endif ifeq ($(REMOVE_EMPTY_DIRS),yes) # This variable, when evaluated, gives $(dir) if dir is non-empty, and # nothing if dir is empty. remove_if_empty = $(dir $(word 1,$(wildcard $(dir)/*))) # Build the GNUSTEP_HEADER_FLAGS by removing the empty dirs from # GNUSTEP_HEADER_DIRS, then prepending -I to each of them # # Important - because this variable is defined with = and not :=, it # is only evaluated when it is used. Which is good - it means we don't # scan the directories and try to remove the empty one on each make # invocation (eg, on 'make clean') - we only scan the dirs when we are using # GNUSTEP_HEADERS_FLAGS to compile. Please make sure to keep this # behaviour otherwise scanning the directories each time a makefile is # read might slow down the package unnecessarily for operations like # make clean, make distclean etc. # # Doing this filtering still gives a 5% to 10% slowdown in compilation times # due to directory scanning, which is why is normally turned off by # default - by default we put all directories in compilation commands. GNUSTEP_HEADERS_FLAGS = \ $(addprefix -I,$(foreach dir,$(GNUSTEP_HEADERS_DIRS),$(remove_if_empty))) GNUSTEP_LIBRARIES_FLAGS = \ $(addprefix -L,$(foreach dir,$(GNUSTEP_LIBRARIES_DIRS),$(remove_if_empty))) GNUSTEP_FRAMEWORKS_FLAGS = \ $(addprefix -F,$(foreach dir,$(GNUSTEP_FRAMEWORKS_DIRS),$(remove_if_empty))) else # Default case, just add -I / -L GNUSTEP_HEADERS_FLAGS = $(addprefix -I,$(GNUSTEP_HEADERS_DIRS)) GNUSTEP_LIBRARIES_FLAGS = $(addprefix -L,$(GNUSTEP_LIBRARIES_DIRS)) GNUSTEP_FRAMEWORKS_FLAGS = $(addprefix -F,$(GNUSTEP_FRAMEWORKS_DIRS)) endif ifeq ($(FOUNDATION_LIB), fd) # Map OBJC_RUNTIME_LIB values to OBJC_RUNTIME values as used by # libFoundation. TODO/FIXME: Drop all this stuff and have # libFoundation use OBJC_RUNTIME_LIB directly. # TODO: Remove all this cruft. Standardize. ifeq ($(OBJC_RUNTIME_LIB), nx) OBJC_RUNTIME = NeXT endif ifeq ($(OBJC_RUNTIME_LIB), sun) OBJC_RUNTIME = Sun endif ifeq ($(OBJC_RUNTIME_LIB), apple) OBJC_RUNTIME = apple endif ifeq ($(OBJC_RUNTIME_LIB), gnu) OBJC_RUNTIME = GNU endif ifeq ($(REMOVE_EMPTY_DIRS), yes) # Build the GNUSTEP_HEADERS_FND_FLAG by removing the empty dirs # from GNUSTEP_HEADERS_FND_DIRS, then prepending -I to each of them GNUSTEP_HEADERS_FND_FLAG = \ $(addprefix -I,$(foreach dir,$(GNUSTEP_HEADERS_FND_DIRS),$(remove_if_empty))) else # default case - simply prepend -I GNUSTEP_HEADERS_FND_FLAG = $(addprefix -I,$(GNUSTEP_HEADERS_FND_DIRS)) endif # Just add the result of all this to the standard header flags. GNUSTEP_HEADERS_FLAGS += $(GNUSTEP_HEADERS_FND_FLAG) endif # # Overridable compilation flags # # FIXME: We use -fno-strict-aliasing to prevent annoying gcc3.3 # compiler warnings. But we really need to investigate why the # warning appear in the first place, if they are serious or not, and # what can be done about it. INTERNAL_OBJCFLAGS = -fno-strict-aliasing # Linux CentOS 6.5 i386 clang... # Clang inserts move aligned packed instructions (i.e. movaps,etc) assembly # code however stack is not aligned causing fault crashes... ifeq ($(CC),clang) ifneq ($(wildcard /etc/redhat-release),"") RH_RELEASE := $(shell cat 2>/dev/null /etc/redhat-release) ifeq ($(findstring CentOS,$(RH_RELEASE)),CentOS) ifeq ($(findstring 6.5,$(RH_RELEASE)),6.5) LINUXVER := $(subst ., ,$(subst -, ,$(shell uname -r))) LINUXREV := $(word 4,$(LINUXVER)) ifeq ($(shell (test $(LINUXREV) -le 431 && echo 0)), 0) INTERNAL_OBJCFLAGS += -mno-sse endif endif endif endif endif CFLAGS = INTERNAL_LDFLAGS += # If the compiler supports native ObjC exceptions and the user wants us to # use them, turn them on! ifeq ($(USE_OBJC_EXCEPTIONS), yes) INTERNAL_OBJCFLAGS += -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS INTERNAL_LDFLAGS += -fexceptions endif # If the compiler supports nonfragile ABI and the user wants us to # use them, turn them on! ifeq ($(USE_NONFRAGILE_ABI), yes) INTERNAL_OBJCFLAGS += -fobjc-nonfragile-abi -D_NONFRAGILE_ABI endif # If we are using garbage collection we set a define to say so. ifeq ($(OBJC_WITH_GC), yes) INTERNAL_OBJCFLAGS += -DGS_WITH_GC=1 endif # # Now decide whether to build shared objects or not. Nothing depending # on the value of the shared variable is allowed before this point! # # # Fixup bundles to be always built as shared even when shared=no is given # ifeq ($(shared), no) ifeq ($(GNUSTEP_TYPE), bundle) $(warning "Static bundles are meaningless! I am using shared=yes!") override shared = yes export shared endif ifeq ($(GNUSTEP_TYPE), framework) $(warning "Static frameworks are meaningless! I am using shared=yes!") override shared = yes export shared endif endif # Enable building shared libraries by default. If the user wants to build a # static library, he/she has to specify shared=no explicitly. ifeq ($(HAVE_SHARED_LIBS), yes) # Unless shared=no has been purposedly set ... ifneq ($(shared), no) # ... set shared = yes shared = yes endif endif ifeq ($(shared), yes) LIB_LINK_CMD = $(SHARED_LIB_LINK_CMD) INTERNAL_OBJCFLAGS += $(SHARED_CFLAGS) INTERNAL_CFLAGS += $(SHARED_CFLAGS) AFTER_INSTALL_LIBRARY_CMD = $(AFTER_INSTALL_SHARED_LIB_CMD) else LIB_LINK_CMD = $(STATIC_LIB_LINK_CMD) AFTER_INSTALL_LIBRARY_CMD = $(AFTER_INSTALL_STATIC_LIB_CMD) endif ifeq ($(profile), yes) ADDITIONAL_FLAGS += -pg ifeq ($(LD), $(CC)) INTERNAL_LDFLAGS += -pg endif endif # The default set of compilation flags are set in config.make in the # OPTFLAG variable. They should default to -g -O2. These should be # an "average" set of flags, midway between debugging and performance; # they are used, unchanged, when we build with debug=no (the default # unless --enable-debug-by-default was used when configuring # gnustep-make). Using the set of GCC flags -g -O2 as default is # recommended by the GNU Coding Standards and is common practice. If # you specify debug=yes, you want to do a debug build, so we remove # the optimization flag that makes it harder to debug. If you specify # strip=yes, you do not want debugging symbols, so we strip all # executables before installing them. This gives you three main # options to use in a default setup: # # make (some optimization, and some debugging symbols are used) # make debug=yes (removes optimization flags) # make strip=yes (removes debugging symbols) # # By default we build using debug=no (unless --enable-debug-by-default # was specified when configuring gnustep-make) - so that the default # compilation flags should be -g -O2. This is according to the GNU # Coding Standards. ifeq ($(debug),) debug = $(GNUSTEP_DEFAULT_DEBUG) endif ifeq ($(debug), yes) # Optimization flags are filtered out as they make debugging harder. OPTFLAG := $(filter-out -O%, $(OPTFLAG)) CCFLAGS := $(filter-out -O%, $(CCFLAGS)) ADDITIONAL_FLAGS := $(filter-out -O%, $(ADDITIONAL_FLAGS)) # If OPTFLAG does not already include -g, add it here. ifneq ($(filter -g, $(OPTFLAG)), -g) ADDITIONAL_FLAGS += -g endif # Add standard debug compiler flags. ADDITIONAL_FLAGS += -DDEBUG -fno-omit-frame-pointer # The following is for Java. INTERNAL_JAVACFLAGS += -g else # The default OPTFLAG set in config.make are used to compile. # The following is for Java. INTERNAL_JAVACFLAGS += -O endif ifeq ($(warn), no) ADDITIONAL_FLAGS += -UGSWARN else ADDITIONAL_FLAGS += -Wall -DGSWARN INTERNAL_JAVACFLAGS += -deprecation endif ifeq ($(diagnose), no) ADDITIONAL_FLAGS += -UGSDIAGNOSE else ADDITIONAL_FLAGS += -DGSDIAGNOSE endif # The use of #import is no longer deprecated in gcc, and is supposed # to be recommended from now on ... so we disable the warnings for # older compilers. ADDITIONAL_FLAGS += -Wno-import AUXILIARY_CPPFLAGS += $(GNUSTEP_DEFINE) \ $(FND_DEFINE) $(GUI_DEFINE) $(BACKEND_DEFINE) \ $(RUNTIME_DEFINE) $(FOUNDATION_LIBRARY_DEFINE) INTERNAL_OBJCFLAGS += $(ADDITIONAL_FLAGS) $(OPTFLAG) $(OBJCFLAGS) \ $(RUNTIME_FLAG) INTERNAL_CFLAGS += $(ADDITIONAL_FLAGS) $(OPTFLAG) $(CFLAGS) # # Support building of Multiple Architecture Binaries (MAB). The object files # directory will be something like obj/ix86_m68k_sun/ # ifeq ($(arch),) ARCH_OBJ_DIR = $(GNUSTEP_TARGET_DIR) else ARCH_OBJ_DIR = \ $(shell echo $(CLEANED_ARCH) | sed -e 's/ /_/g')/$(GNUSTEP_TARGET_OS) endif ifeq ($(GNUSTEP_IS_FLATTENED), no) GNUSTEP_OBJ_DIR_NAME = obj/$(ARCH_OBJ_DIR)/$(LIBRARY_COMBO) else GNUSTEP_OBJ_DIR_NAME = obj endif GNUSTEP_OBJ_DIR = $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_OBJ_DIR_NAME) ifneq ($(GNUSTEP_INSTANCE),) GNUSTEP_OBJ_INSTANCE_DIR_NAME = $(GNUSTEP_OBJ_DIR_NAME)/$(GNUSTEP_INSTANCE).obj GNUSTEP_OBJ_INSTANCE_DIR = $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_OBJ_INSTANCE_DIR_NAME) else GNUSTEP_OBJ_INSTANCE_DIR_NAME = $(warn "Makefile bug ... GNUSTEP_OBJ_INSTANCE_DIR_NAME used in Master invocation!") GNUSTEP_OBJ_INSTANCE_DIR = $(warn "Makefile bug ... GNUSTEP_OBJ_INSTANCE_DIR used in Master invocation!") endif # # Common variables for subprojects # SUBPROJECT_PRODUCT = subproject$(OEXT) # # Set JAVA_HOME if not set. # ifeq ($(JAVA_HOME),) # Else, try JDK_HOME ifeq ($(JDK_HOME),) # Else, try by finding the path of javac and removing 'bin/javac' from it. # Please note that this is really inefficient, you should rather # set JAVA_HOME! ifeq ($(JAVAC),) JAVA_HOME = $(shell which javac | sed "s/bin\/javac//g") else # $(JAVAC) != "" JAVA_HOME = $(shell which $(JAVAC) | sed "s/bin\/javac//g") endif else # $(JDK_HOME) != "" JAVA_HOME = $(JDK_HOME) endif endif # # The java compiler. # ifeq ($(JAVAC),) JAVAC = $(JAVA_HOME)/bin/javac endif # # The java header compiler. # ifeq ($(JAVAH),) JAVAH = $(JAVA_HOME)/bin/javah endif # # The java jar tool. # ifeq ($(JAR),) JAR = $(JAVA_HOME)/bin/jar endif # Common variables - default values # # Because this file is included at the beginning of the user's # GNUmakefile, the user can override these variables by setting them # in the GNUmakefile. BUNDLE_EXTENSION = .bundle APP_EXTENSION = app # We want total control over GNUSTEP_INSTANCE. # GNUSTEP_INSTANCE determines wheter it's a Master or an Instance # invocation. Whenever we run a submake, we want it to be a Master # invocation, unless we specifically set it to run as an Instance # invocation by adding the GNUSTEP_INSTANCE=xxx flag. Tell make not # to mess with our games by passing this variable to submakes himself unexport GNUSTEP_INSTANCE unexport GNUSTEP_TYPE # # Sanity checks - only performed at the first make invocation # # Please note that _GNUSTEP_TOP_INVOCATION_DONE is set by the first # time Master/rules.make is read, and propagated to sub-makes. So # this check will pass only the very first time we parse this file, # and if Master/rules.make have not yet been parsed. ifeq ($(_GNUSTEP_TOP_INVOCATION_DONE),) # Print out a message with our version number and how to get help on # targets and options. We use $(notdir $(MAKE)) to print the command # that was used to invoke us; this is usually 'make' but it often is # 'gmake' on *BSD systems. ifeq ($(MAKE_WITH_INFO_FUNCTION),yes) # Use 'make quiet=yes' to disable the message ifneq ($(quiet),yes) $(info This is gnustep-make $(GNUSTEP_MAKE_VERSION). Type '$(notdir $(MAKE)) print-gnustep-make-help' for help.) ifeq ($(GNUSTEP_MAKE_STRICT_V2_MODE),yes) $(info Running in gnustep-make version 2 strict mode.) endif endif endif # Sanity check on $PATH - NB: if PATH is wrong, we can't do certain # things because we can't run the tools (and we can't locate tools # using opentool because we can't even run opentool if PATH is wrong) # - this is particularly bad for gui stuff # Skip the check if we are on an Apple system. I was told that you can't # source GNUstep.sh before running Apple's PB and that the only # friendly solution is to disable the check. ifneq ($(FOUNDATION_LIB), apple) # Under Win32 paths are so confused this warning is not worthwhile ifneq ($(findstring mingw, $(GNUSTEP_HOST_OS)), mingw) ifeq ($(findstring $(GNUSTEP_SYSTEM_TOOLS),$(PATH)),) $(warning WARNING: Your PATH may not be set up correctly !) $(warning Please try again after adding "$(GNUSTEP_SYSTEM_TOOLS)" to your path) endif endif endif # code used when FOUNDATION_LIB != apple endif # End of sanity checks run only at makelevel 0 endif # COMMON_MAKE_LOADED ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/config_thread.m������������������������������������������������������������������0000664�0001750�0001750�00000001464�11441030737�016713� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Test whether Objective-C runtime was compiled with thread support */ #ifdef GNU_RUNTIME /* Dummy NXConstantString impl for so libobjc that doesn't include it */ #include <objc/NXConstStr.h> @implementation NXConstantString @end #endif #ifdef GNU_RUNTIME #include <objc/thr.h> #else #include <pthread.h> void *dummy_thread_function(void *dummy) { pthread_exit(NULL); } #endif #include <objc/Object.h> int main() { #ifdef GNU_RUNTIME id o = [Object new]; return (objc_thread_detach (@selector(hash), o, nil) == NULL) ? -1 : 0; #else /* On Apple, there is no ObjC-specific thread library. We need to * use pthread directly. */ pthread_t thread_id; int error = pthread_create (&thread_id, NULL, dummy_thread_function, NULL); if (error != 0) { return -1; } return 0; #endif } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/filesystem.sh.in�����������������������������������������������������������������0000664�0001750�0001750�00000034155�11542136221�017066� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# This file must be sourced inside (ba)sh using: . # # @configure_input@ # # Sets up the GNUstep filesystem paths for shell scripts # # Copyright (C) 2007 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola.pero@meta-innovation.com>, # # Date: February 2007 # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # This does the same that filesystem.make does, but for GNUstep.sh. # Include this file after reading your config to make sure that all # the paths are available. # # PS: If you change this list, make sure that top update the list of # paths used in all other filesystem.*, and in common.make when # GNUSTEP_INSTALLATION_DIR is set. # # # Location of Users directories ... never used by gnustep-make. # if [ -z "$GNUSTEP_SYSTEM_USERS_DIR" ]; then GNUSTEP_SYSTEM_USERS_DIR="@GNUSTEP_SYSTEM_USERS_DIR@" fi if [ -z "$GNUSTEP_NETWORK_USERS_DIR" ]; then GNUSTEP_NETWORK_USERS_DIR="@GNUSTEP_NETWORK_USERS_DIR@" fi if [ -z "$GNUSTEP_LOCAL_USERS_DIR" ]; then GNUSTEP_LOCAL_USERS_DIR="@GNUSTEP_LOCAL_USERS_DIR@" fi # PS: We don't want to define these variables to avoid extreme # environment pollution. :-) They are fixed subdirs of LIBRARY if you # need them. #GNUSTEP_SYSTEM_APPLICATION_SUPPORT = $GNUSTEP_SYSTEM_LIBRARY/ApplicationSupport #GNUSTEP_SYSTEM_BUNDLES = $GNUSTEP_SYSTEM_LIBRARY/Bundles #GNUSTEP_SYSTEM_FRAMEWORKS = $GNUSTEP_SYSTEM_LIBRARY/Frameworks #GNUSTEP_SYSTEM_PALETTES = $GNUSTEP_SYSTEM_LIBRARY/ApplicationSupport/Palettes #GNUSTEP_SYSTEM_SERVICES = $GNUSTEP_SYSTEM_LIBRARY/Services #GNUSTEP_SYSTEM_RESOURCES = $GNUSTEP_SYSTEM_LIBRARY/Libraries/Resources #GNUSTEP_SYSTEM_JAVA = $GNUSTEP_SYSTEM_LIBRARY/Libraries/Java # # SYSTEM domain # if [ -z "$GNUSTEP_SYSTEM_APPS" ]; then GNUSTEP_SYSTEM_APPS="@GNUSTEP_SYSTEM_APPS@" fi if [ -z "$GNUSTEP_SYSTEM_ADMIN_APPS" ]; then GNUSTEP_SYSTEM_ADMIN_APPS="@GNUSTEP_SYSTEM_ADMIN_APPS@" fi if [ -z "$GNUSTEP_SYSTEM_WEB_APPS" ]; then GNUSTEP_SYSTEM_WEB_APPS="@GNUSTEP_SYSTEM_WEB_APPS@" fi if [ -z "$GNUSTEP_SYSTEM_TOOLS" ]; then GNUSTEP_SYSTEM_TOOLS="@GNUSTEP_SYSTEM_TOOLS@" fi if [ -z "$GNUSTEP_SYSTEM_ADMIN_TOOLS" ]; then GNUSTEP_SYSTEM_ADMIN_TOOLS="@GNUSTEP_SYSTEM_ADMIN_TOOLS@" fi if [ -z "$GNUSTEP_SYSTEM_LIBRARY" ]; then GNUSTEP_SYSTEM_LIBRARY="@GNUSTEP_SYSTEM_LIBRARY@" fi if [ -z "$GNUSTEP_SYSTEM_HEADERS" ]; then GNUSTEP_SYSTEM_HEADERS="@GNUSTEP_SYSTEM_HEADERS@" fi if [ -z "$GNUSTEP_SYSTEM_LIBRARIES" ]; then GNUSTEP_SYSTEM_LIBRARIES="@GNUSTEP_SYSTEM_LIBRARIES@" fi if [ -z "$GNUSTEP_SYSTEM_DOC" ]; then GNUSTEP_SYSTEM_DOC="@GNUSTEP_SYSTEM_DOC@" fi if [ -z "$GNUSTEP_SYSTEM_DOC_MAN" ]; then GNUSTEP_SYSTEM_DOC_MAN="@GNUSTEP_SYSTEM_DOC_MAN@" fi if [ -z "$GNUSTEP_SYSTEM_DOC_INFO" ]; then GNUSTEP_SYSTEM_DOC_INFO="@GNUSTEP_SYSTEM_DOC_INFO@" fi # # NETWORK domain # if [ -z "$GNUSTEP_NETWORK_APPS" ]; then GNUSTEP_NETWORK_APPS="@GNUSTEP_NETWORK_APPS@" fi if [ -z "$GNUSTEP_NETWORK_ADMIN_APPS" ]; then GNUSTEP_NETWORK_ADMIN_APPS="@GNUSTEP_NETWORK_ADMIN_APPS@" fi if [ -z "$GNUSTEP_NETWORK_WEB_APPS" ]; then GNUSTEP_NETWORK_WEB_APPS="@GNUSTEP_NETWORK_WEB_APPS@" fi if [ -z "$GNUSTEP_NETWORK_TOOLS" ]; then GNUSTEP_NETWORK_TOOLS="@GNUSTEP_NETWORK_TOOLS@" fi if [ -z "$GNUSTEP_NETWORK_ADMIN_TOOLS" ]; then GNUSTEP_NETWORK_ADMIN_TOOLS="@GNUSTEP_NETWORK_ADMIN_TOOLS@" fi if [ -z "$GNUSTEP_NETWORK_LIBRARY" ]; then GNUSTEP_NETWORK_LIBRARY="@GNUSTEP_NETWORK_LIBRARY@" fi if [ -z "$GNUSTEP_NETWORK_HEADERS" ]; then GNUSTEP_NETWORK_HEADERS="@GNUSTEP_NETWORK_HEADERS@" fi if [ -z "$GNUSTEP_NETWORK_LIBRARIES" ]; then GNUSTEP_NETWORK_LIBRARIES="@GNUSTEP_NETWORK_LIBRARIES@" fi if [ -z "$GNUSTEP_NETWORK_DOC" ]; then GNUSTEP_NETWORK_DOC="@GNUSTEP_NETWORK_DOC@" fi if [ -z "$GNUSTEP_NETWORK_DOC_MAN" ]; then GNUSTEP_NETWORK_DOC_MAN="@GNUSTEP_NETWORK_DOC_MAN@" fi if [ -z "$GNUSTEP_NETWORK_DOC_INFO" ]; then GNUSTEP_NETWORK_DOC_INFO="@GNUSTEP_NETWORK_DOC_INFO@" fi # # LOCAL domain # if [ -z "$GNUSTEP_LOCAL_APPS" ]; then GNUSTEP_LOCAL_APPS="@GNUSTEP_LOCAL_APPS@" fi if [ -z "$GNUSTEP_LOCAL_ADMIN_APPS" ]; then GNUSTEP_LOCAL_ADMIN_APPS="@GNUSTEP_LOCAL_ADMIN_APPS@" fi if [ -z "$GNUSTEP_LOCAL_WEB_APPS" ]; then GNUSTEP_LOCAL_WEB_APPS="@GNUSTEP_LOCAL_WEB_APPS@" fi if [ -z "$GNUSTEP_LOCAL_TOOLS" ]; then GNUSTEP_LOCAL_TOOLS="@GNUSTEP_LOCAL_TOOLS@" fi if [ -z "$GNUSTEP_LOCAL_ADMIN_TOOLS" ]; then GNUSTEP_LOCAL_ADMIN_TOOLS="@GNUSTEP_LOCAL_ADMIN_TOOLS@" fi if [ -z "$GNUSTEP_LOCAL_LIBRARY" ]; then GNUSTEP_LOCAL_LIBRARY="@GNUSTEP_LOCAL_LIBRARY@" fi if [ -z "$GNUSTEP_LOCAL_HEADERS" ]; then GNUSTEP_LOCAL_HEADERS="@GNUSTEP_LOCAL_HEADERS@" fi if [ -z "$GNUSTEP_LOCAL_LIBRARIES" ]; then GNUSTEP_LOCAL_LIBRARIES="@GNUSTEP_LOCAL_LIBRARIES@" fi if [ -z "$GNUSTEP_LOCAL_DOC" ]; then GNUSTEP_LOCAL_DOC="@GNUSTEP_LOCAL_DOC@" fi if [ -z "$GNUSTEP_LOCAL_DOC_MAN" ]; then GNUSTEP_LOCAL_DOC_MAN="@GNUSTEP_LOCAL_DOC_MAN@" fi if [ -z "$GNUSTEP_LOCAL_DOC_INFO" ]; then GNUSTEP_LOCAL_DOC_INFO="@GNUSTEP_LOCAL_DOC_INFO@" fi # # USER domain # if [ -z "$GNUSTEP_USER_DIR_APPS" ]; then GNUSTEP_USER_DIR_APPS="@GNUSTEP_USER_DIR_APPS@" fi if [ -z "$GNUSTEP_USER_DIR_ADMIN_APPS" ]; then GNUSTEP_USER_DIR_ADMIN_APPS="@GNUSTEP_USER_DIR_ADMIN_APPS@" fi if [ -z "$GNUSTEP_USER_DIR_WEB_APPS" ]; then GNUSTEP_USER_DIR_WEB_APPS="@GNUSTEP_USER_DIR_WEB_APPS@" fi if [ -z "$GNUSTEP_USER_DIR_TOOLS" ]; then GNUSTEP_USER_DIR_TOOLS="@GNUSTEP_USER_DIR_TOOLS@" fi if [ -z "$GNUSTEP_USER_DIR_ADMIN_TOOLS" ]; then GNUSTEP_USER_DIR_ADMIN_TOOLS="@GNUSTEP_USER_DIR_ADMIN_TOOLS@" fi if [ -z "$GNUSTEP_USER_DIR_LIBRARY" ]; then GNUSTEP_USER_DIR_LIBRARY="@GNUSTEP_USER_DIR_LIBRARY@" fi if [ -z "$GNUSTEP_USER_DIR_HEADERS" ]; then GNUSTEP_USER_DIR_HEADERS="@GNUSTEP_USER_DIR_HEADERS@" fi if [ -z "$GNUSTEP_USER_DIR_LIBRARIES" ]; then GNUSTEP_USER_DIR_LIBRARIES="@GNUSTEP_USER_DIR_LIBRARIES@" fi if [ -z "$GNUSTEP_USER_DIR_DOC" ]; then GNUSTEP_USER_DIR_DOC="@GNUSTEP_USER_DIR_DOC@" fi if [ -z "$GNUSTEP_USER_DIR_DOC_MAN" ]; then GNUSTEP_USER_DIR_DOC_MAN="@GNUSTEP_USER_DIR_DOC_MAN@" fi if [ -z "$GNUSTEP_USER_DIR_DOC_INFO" ]; then GNUSTEP_USER_DIR_DOC_INFO="@GNUSTEP_USER_DIR_DOC_INFO@" fi # # Now, for all the GNUSTEP_USER_DIR_xxx variables above, replace: # # %i with the userid # %u with the username # %% with % # # This allows you to, for example, specify the GNUSTEP_USER_TOOLS # should be /GNUstep/Users/%u/bin/, and that would mean # /GNUstep/Users/nicola/bin for user 'nicola' and # /GNUstep/Users/richard/bin for user 'richard'. # # Check if any of the strings contain %i ... case "${GNUSTEP_USER_DIR_APPS}\ ${GNUSTEP_USER_DIR_ADMIN_APPS}\ ${GNUSTEP_USER_DIR_WEB_APPS}\ ${GNUSTEP_USER_DIR_TOOLS}\ ${GNUSTEP_USER_DIR_ADMIN_TOOLS}\ ${GNUSTEP_USER_DIR_LIBRARY}\ ${GNUSTEP_USER_DIR_HEADERS}\ ${GNUSTEP_USER_DIR_LIBRARIES}\ ${GNUSTEP_USER_DIR_DOC}\ ${GNUSTEP_USER_DIR_DOC_MAN}\ ${GNUSTEP_USER_DIR_DOC_INFO}" in *%i*) # ... and if so, do the replacement. GNUSTEP__USERID=`id -u` GNUSTEP_USER_DIR_APPS=`echo ${GNUSTEP_USER_DIR_APPS} | sed -e "s/%i/${GNUSTEP__USERID}/g"` GNUSTEP_USER_DIR_ADMIN_APPS=`echo ${GNUSTEP_USER_DIR_ADMIN_APPS} | sed -e "s/%i/${GNUSTEP__USERID}/g"` GNUSTEP_USER_DIR_WEB_APPS=`echo ${GNUSTEP_USER_DIR_WEB_APPS} | sed -e "s/%i/${GNUSTEP__USERID}/g"` GNUSTEP_USER_DIR_TOOLS=`echo ${GNUSTEP_USER_DIR_TOOLS} | sed -e "s/%i/${GNUSTEP__USERID}/g"` GNUSTEP_USER_DIR_ADMIN_TOOLS=`echo ${GNUSTEP_USER_DIR_ADMIN_TOOLS} | sed -e "s/%i/${GNUSTEP__USERID}/g"` GNUSTEP_USER_DIR_LIBRARY=`echo ${GNUSTEP_USER_DIR_LIBRARY} | sed -e "s/%i/${GNUSTEP__USERID}/g"` GNUSTEP_USER_DIR_HEADERS=`echo ${GNUSTEP_USER_DIR_HEADERS} | sed -e "s/%i/${GNUSTEP__USERID}/g"` GNUSTEP_USER_DIR_LIBRARIES=`echo ${GNUSTEP_USER_DIR_LIBRARIES} | sed -e "s/%i/${GNUSTEP__USERID}/g"` GNUSTEP_USER_DIR_DOC=`echo ${GNUSTEP_USER_DIR_DOC} | sed -e "s/%i/${GNUSTEP__USERID}/g"` GNUSTEP_USER_DIR_DOC_MAN=`echo ${GNUSTEP_USER_DIR_DOC_MAN} | sed -e "s/%i/${GNUSTEP__USERID}/g"` GNUSTEP_USER_DIR_DOC_INFO=`echo ${GNUSTEP_USER_DIR_DOC_INFO} | sed -e "s/%i/${GNUSTEP__USERID}/g"` unset GNUSTEP__USERID;; esac # Check if any of the strings contain %u ... case "${GNUSTEP_USER_DIR_APPS}\ ${GNUSTEP_USER_DIR_ADMIN_APPS}\ ${GNUSTEP_USER_DIR_WEB_APPS}\ ${GNUSTEP_USER_DIR_TOOLS}\ ${GNUSTEP_USER_DIR_ADMIN_TOOLS}\ ${GNUSTEP_USER_DIR_LIBRARY}\ ${GNUSTEP_USER_DIR_HEADERS}\ ${GNUSTEP_USER_DIR_LIBRARIES}\ ${GNUSTEP_USER_DIR_DOC}\ ${GNUSTEP_USER_DIR_DOC_MAN}\ ${GNUSTEP_USER_DIR_DOC_INFO}" in *%u*) # ... and if so, do the replacement. GNUSTEP__USERNAME=`id -u -n` GNUSTEP_USER_DIR_APPS=`echo ${GNUSTEP_USER_DIR_APPS} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` GNUSTEP_USER_DIR_ADMIN_APPS=`echo ${GNUSTEP_USER_DIR_ADMIN_APPS} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` GNUSTEP_USER_DIR_WEB_APPS=`echo ${GNUSTEP_USER_DIR_WEB_APPS} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` GNUSTEP_USER_DIR_TOOLS=`echo ${GNUSTEP_USER_DIR_TOOLS} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` GNUSTEP_USER_DIR_ADMIN_TOOLS=`echo ${GNUSTEP_USER_DIR_ADMIN_TOOLS} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` GNUSTEP_USER_DIR_LIBRARY=`echo ${GNUSTEP_USER_DIR_LIBRARY} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` GNUSTEP_USER_DIR_HEADERS=`echo ${GNUSTEP_USER_DIR_HEADERS} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` GNUSTEP_USER_DIR_LIBRARIES=`echo ${GNUSTEP_USER_DIR_LIBRARIES} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` GNUSTEP_USER_DIR_DOC=`echo ${GNUSTEP_USER_DIR_DOC} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` GNUSTEP_USER_DIR_DOC_MAN=`echo ${GNUSTEP_USER_DIR_DOC_MAN} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` GNUSTEP_USER_DIR_DOC_INFO=`echo ${GNUSTEP_USER_DIR_DOC_INFO} | sed -e "s/%u/${GNUSTEP__USERNAME}/g"` unset GNUSTEP__USERNAME;; esac # Check if any of the strings contain %% ... case "${GNUSTEP_USER_DIR_APPS}\ ${GNUSTEP_USER_DIR_ADMIN_APPS}\ ${GNUSTEP_USER_DIR_WEB_APPS}\ ${GNUSTEP_USER_DIR_TOOLS}\ ${GNUSTEP_USER_DIR_ADMIN_TOOLS}\ ${GNUSTEP_USER_DIR_LIBRARY}\ ${GNUSTEP_USER_DIR_HEADERS}\ ${GNUSTEP_USER_DIR_LIBRARIES}\ ${GNUSTEP_USER_DIR_DOC}\ ${GNUSTEP_USER_DIR_DOC_MAN}\ ${GNUSTEP_USER_DIR_DOC_INFO}" in *%%*) # ... and if so, replace %% with % GNUSTEP_USER_DIR_APPS=`echo ${GNUSTEP_USER_DIR_APPS} | sed -e 's/%%/%/g'` GNUSTEP_USER_DIR_ADMIN_APPS=`echo ${GNUSTEP_USER_DIR_ADMIN_APPS} | sed -e 's/%%/%/g'` GNUSTEP_USER_DIR_WEB_APPS=`echo ${GNUSTEP_USER_DIR_WEB_APPS} | sed -e 's/%%/%/g'` GNUSTEP_USER_DIR_TOOLS=`echo ${GNUSTEP_USER_DIR_TOOLS} | sed -e 's/%%/%/g'` GNUSTEP_USER_DIR_ADMIN_TOOLS=`echo ${GNUSTEP_USER_DIR_ADMIN_TOOLS} | sed -e 's/%%/%/g'` GNUSTEP_USER_DIR_LIBRARY=`echo ${GNUSTEP_USER_DIR_LIBRARY} | sed -e 's/%%/%/g'` GNUSTEP_USER_DIR_HEADERS=`echo ${GNUSTEP_USER_DIR_HEADERS} | sed -e 's/%%/%/g'` GNUSTEP_USER_DIR_LIBRARIES=`echo ${GNUSTEP_USER_DIR_LIBRARIES} | sed -e 's/%%/%/g'` GNUSTEP_USER_DIR_DOC=`echo ${GNUSTEP_USER_DIR_DOC} | sed -e 's/%%/%/g'` GNUSTEP_USER_DIR_DOC_MAN=`echo ${GNUSTEP_USER_DIR_DOC_MAN} | sed -e 's/%%/%/g'` GNUSTEP_USER_DIR_DOC_INFO=`echo ${GNUSTEP_USER_DIR_DOC_INFO} | sed -e 's/%%/%/g'` ;; esac # # Now for all directories in the USER domain, check if they are # relative; if so, consider them as subdirs of GNUSTEP_HOME. # case "$GNUSTEP_USER_DIR_APPS" in /*) # An absolute path GNUSTEP_USER_APPS="$GNUSTEP_USER_DIR_APPS";; *) # Something else GNUSTEP_USER_APPS="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_APPS";; esac unset GNUSTEP_USER_DIR_APPS case "$GNUSTEP_USER_DIR_ADMIN_APPS" in /*) # An absolute path GNUSTEP_USER_ADMIN_APPS="$GNUSTEP_USER_DIR_ADMIN_APPS";; *) # Something else GNUSTEP_USER_ADMIN_APPS="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_ADMIN_APPS";; esac unset GNUSTEP_USER_DIR_ADMIN_APPS case "$GNUSTEP_USER_DIR_WEB_APPS" in /*) # An absolute path GNUSTEP_USER_WEB_APPS="$GNUSTEP_USER_DIR_WEB_APPS";; *) # Something else GNUSTEP_USER_WEB_APPS="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_WEB_APPS";; esac unset GNUSTEP_USER_DIR_WEB_APPS case "$GNUSTEP_USER_DIR_TOOLS" in /*) GNUSTEP_USER_TOOLS="$GNUSTEP_USER_DIR_TOOLS";; *) GNUSTEP_USER_TOOLS="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_TOOLS";; esac unset GNUSTEP_USER_DIR_TOOLS case "$GNUSTEP_USER_DIR_ADMIN_TOOLS" in /*) GNUSTEP_USER_ADMIN_TOOLS="$GNUSTEP_USER_DIR_ADMIN_TOOLS";; *) GNUSTEP_USER_ADMIN_TOOLS="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_ADMIN_TOOLS";; esac unset GNUSTEP_USER_DIR_ADMIN_TOOLS case "$GNUSTEP_USER_DIR_LIBRARY" in /*) GNUSTEP_USER_LIBRARY="$GNUSTEP_USER_DIR_LIBRARY";; *) GNUSTEP_USER_LIBRARY="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_LIBRARY";; esac unset GNUSTEP_USER_DIR_LIBRARY case "$GNUSTEP_USER_DIR_HEADERS" in /*) GNUSTEP_USER_HEADERS="$GNUSTEP_USER_DIR_HEADERS";; *) GNUSTEP_USER_HEADERS="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_HEADERS";; esac unset GNUSTEP_USER_DIR_HEADERS case "$GNUSTEP_USER_DIR_LIBRARIES" in /*) GNUSTEP_USER_LIBRARIES="$GNUSTEP_USER_DIR_LIBRARIES";; *) GNUSTEP_USER_LIBRARIES="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_LIBRARIES";; esac unset GNUSTEP_USER_DIR_LIBRARIES case "$GNUSTEP_USER_DIR_DOC" in /*) GNUSTEP_USER_DOC="$GNUSTEP_USER_DIR_DOC";; *) GNUSTEP_USER_DOC="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_DOC";; esac unset GNUSTEP_USER_DIR_DOC case "$GNUSTEP_USER_DIR_DOC_MAN" in /*) GNUSTEP_USER_DOC_MAN="$GNUSTEP_USER_DIR_DOC_MAN";; *) GNUSTEP_USER_DOC_MAN="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_DOC_MAN";; esac unset GNUSTEP_USER_DIR_DOC_MAN case "$GNUSTEP_USER_DIR_DOC_INFO" in /*) GNUSTEP_USER_DOC_INFO="$GNUSTEP_USER_DIR_DOC_INFO";; *) GNUSTEP_USER_DOC_INFO="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_DOC_INFO";; esac unset GNUSTEP_USER_DIR_DOC_INFO �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/config.guess���������������������������������������������������������������������0000775�0001750�0001750�00000125364�12717263316�016277� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-04-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see <http://www.gnu.org/licenses/>. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to <config-patches@gnu.org>. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to <config-patches@gnu.org>." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include <features.h> #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || \ echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "${UNAME_MACHINE_ARCH}" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; *:Sortix:*:*) echo ${UNAME_MACHINE}-unknown-sortix exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include <stdio.h> /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include <sys/systemcfg.h> main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include <stdlib.h> #include <unistd.h> int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include <unistd.h> int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; e2k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; k1om:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` echo ${UNAME_MACHINE}-pc-isc$UNAME_REL elif /bin/uname -X 2>/dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says <Richard.M.Bartel@ccMail.Census.GOV> echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes <hewes@openmarket.com>. # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; esac cat >&2 <<EOF $0: unable to guess system type This script, last modified $timestamp, has failed to recognize the operating system you are using. It is advised that you download the most up to date version of the config scripts from http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess and http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub If the version you run ($0) is already up to date, please send the following data and any information you think might be pertinent to <config-patches@gnu.org> in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/config.sub�����������������������������������������������������������������������0000775�0001750�0001750�00000106477�12717263316�015746� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-03-30' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see <http://www.gnu.org/licenses/>. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to <config-patches@gnu.org>. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to <config-patches@gnu.org>." version="\ GNU config.sub ($timestamp) Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; asmjs) basic_machine=asmjs-unknown ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ | -onefs* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -ios) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/GNUmakefile.postamble������������������������������������������������������������0000664�0001750�0001750�00000001530�10377003773�020001� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # GNUmakefile.postamble # # Project specific makefile rules # # Uncomment the targets you want. # The double colons (::) are important, do not make them single colons # otherwise the normal makefile rules will not be performed. # # Things to do before compiling # before-all:: # Things to do after compiling # after-all:: # Things to do before installing # before-install:: # Things to do after installing # after-install:: # Things to do before uninstalling # before-uninstall:: # Things to do after uninstalling # after-uninstall:: # Things to do before cleaning # before-clean:: # Things to do after cleaning # after-clean:: # Things to do before distcleaning # before-distclean:: # Things to do after distcleaning # after-distclean:: # Things to do before checking # before-check:: # Things to do after checking # after-check:: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/GNUstep-strict-v2.conf.in��������������������������������������������������������0000664�0001750�0001750�00000014747�10743142270�020405� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# This is the GNUstep configuration file. # This is the "strict version 2 mode" version of the file, which is # identical to the normal one, but all the obsolete v1 variables # (GNUSTEP_SYSTEM_ROOT, GNUSTEP_LOCAL_ROOT, GNUSTEP_NETWORK_ROOT, # GNUSTEP_USER_DIR) have been removed. # Any line starting with a '#' is a comment. # Empty lines are ignored. # Every other line in this file must be of the form # XXX=YYY # where there should be no spaces around the '=' (this is because we # include this file in shell scripts and makefiles, and sh syntax # requires no spaces around the '='). # # Standard sh quotes can be used in YYY but only at runtime; they can # not be used while building. # GNUstep can use up to 4 domains at the same time. They are System, # Local, Network and User. You can install your programs / resources # in any of these domains. This file mostly deals with configuring # how the domains map to your filesystem. # IMPORTANT: Don't delete lines from this file unless you want # the values hardcoded in the packages to be used. If you want # to suppress the network domain, set all its paths to be the same # as the system domain. If you want to suppress the local domain, # set all its paths to be the same as the network domain. If you # want to suppress the user domain, set its paths to be the same # as the local domain. You can not suppress the system domain. # The paths should not include a '/' at the end. # The name of the user config file. This file can override # some settings in this file. Usually used by users that want # to install things into their GNUstep user domain and/or have # many such domains. GNUSTEP_USER_CONFIG_FILE=@GNUSTEP_USER_CONFIG_FILE@ # The name of the user directory where defaults (eg, preferences) are # stored. If it does not start with a '/', it will be considered # relative to the user home directory. GNUSTEP_USER_DEFAULTS_DIR=@GNUSTEP_USER_DEFAULTS_DIR@ # This is where the gnustep-make Makefiles are installed. # Traditionally, this is /usr/GNUstep/System/Library/Makefiles GNUSTEP_MAKEFILES=@GNUSTEP_MAKEFILES@ # This is where the user home directories are. Only used to provide # NSUserDirectory in gnustep-base. Never used anywhere else. GNUSTEP_SYSTEM_USERS_DIR=@GNUSTEP_SYSTEM_USERS_DIR@ GNUSTEP_NETWORK_USERS_DIR=@GNUSTEP_NETWORK_USERS_DIR@ GNUSTEP_LOCAL_USERS_DIR=@GNUSTEP_LOCAL_USERS_DIR@ # This is where System GUI Applications get installed. # Traditionally it is /usr/GNUstep/System/Applications. GNUSTEP_SYSTEM_APPS=@GNUSTEP_SYSTEM_APPS@ # This is where System GUI Applications that only the # Administrator can use get installed. # Traditionally it is /usr/GNUstep/System/Applications/Admin. GNUSTEP_SYSTEM_ADMIN_APPS=@GNUSTEP_SYSTEM_ADMIN_APPS@ # This is where System Web Applications (GSWeb, SOPE) get # installed. # Traditionally it is /usr/GNUstep/System/Library/WebApplications. GNUSTEP_SYSTEM_WEB_APPS=@GNUSTEP_SYSTEM_WEB_APPS@ # This is where System Command-Line Tools get installed. # Traditionally it is /usr/GNUstep/System/Tools. GNUSTEP_SYSTEM_TOOLS=@GNUSTEP_SYSTEM_TOOLS@ # This is where System Command-Line Tools that only the # Administrator can use get installed. Important: this # should not be in the PATH of normal users. # Traditionally it is /usr/GNUstep/System/Tools/Admin. GNUSTEP_SYSTEM_ADMIN_TOOLS=@GNUSTEP_SYSTEM_ADMIN_TOOLS@ # This is where System resources get installed. This directory will # contain a lot of executable code since *step traditionally likes to # bundle executables and resources together. # Traditionally it is /usr/GNUstep/System/Library. GNUSTEP_SYSTEM_LIBRARY=@GNUSTEP_SYSTEM_LIBRARY@ # This is where System headers get installed. They are the # library .h headers. # Traditionally it is /usr/GNUstep/System/Library/Headers. GNUSTEP_SYSTEM_HEADERS=@GNUSTEP_SYSTEM_HEADERS@ # This is where System libraries get installed. By libraries we mean # the shared/static object files that you can link into programs. # Traditionally it is /usr/GNUstep/System/Library/Libraries. GNUSTEP_SYSTEM_LIBRARIES=@GNUSTEP_SYSTEM_LIBRARIES@ # This is where System documentation get installed. This is known # not to contain any executable, so we keep it separate. # Traditionally it is /usr/GNUstep/System/Library/Documentation. GNUSTEP_SYSTEM_DOC=@GNUSTEP_SYSTEM_DOC@ # This is where System man pages get installed. # Traditionally it is /usr/GNUstep/System/Library/Documentation/man. GNUSTEP_SYSTEM_DOC_MAN=@GNUSTEP_SYSTEM_DOC_MAN@ # This is where System info pages get installed. # Traditionally it is /usr/GNUstep/System/Library/Documentation/info. GNUSTEP_SYSTEM_DOC_INFO=@GNUSTEP_SYSTEM_DOC_INFO@ GNUSTEP_NETWORK_APPS=@GNUSTEP_NETWORK_APPS@ GNUSTEP_NETWORK_ADMIN_APPS=@GNUSTEP_NETWORK_ADMIN_APPS@ GNUSTEP_NETWORK_WEB_APPS=@GNUSTEP_NETWORK_WEB_APPS@ GNUSTEP_NETWORK_TOOLS=@GNUSTEP_NETWORK_TOOLS@ GNUSTEP_NETWORK_ADMIN_TOOLS=@GNUSTEP_NETWORK_ADMIN_TOOLS@ GNUSTEP_NETWORK_LIBRARY=@GNUSTEP_NETWORK_LIBRARY@ GNUSTEP_NETWORK_HEADERS=@GNUSTEP_NETWORK_HEADERS@ GNUSTEP_NETWORK_LIBRARIES=@GNUSTEP_NETWORK_LIBRARIES@ GNUSTEP_NETWORK_DOC=@GNUSTEP_NETWORK_DOC@ GNUSTEP_NETWORK_DOC_MAN=@GNUSTEP_NETWORK_DOC_MAN@ GNUSTEP_NETWORK_DOC_INFO=@GNUSTEP_NETWORK_DOC_INFO@ GNUSTEP_LOCAL_APPS=@GNUSTEP_LOCAL_APPS@ GNUSTEP_LOCAL_ADMIN_APPS=@GNUSTEP_LOCAL_ADMIN_APPS@ GNUSTEP_LOCAL_WEB_APPS=@GNUSTEP_LOCAL_WEB_APPS@ GNUSTEP_LOCAL_TOOLS=@GNUSTEP_LOCAL_TOOLS@ GNUSTEP_LOCAL_ADMIN_TOOLS=@GNUSTEP_LOCAL_ADMIN_TOOLS@ GNUSTEP_LOCAL_LIBRARY=@GNUSTEP_LOCAL_LIBRARY@ GNUSTEP_LOCAL_HEADERS=@GNUSTEP_LOCAL_HEADERS@ GNUSTEP_LOCAL_LIBRARIES=@GNUSTEP_LOCAL_LIBRARIES@ GNUSTEP_LOCAL_DOC=@GNUSTEP_LOCAL_DOC@ GNUSTEP_LOCAL_DOC_MAN=@GNUSTEP_LOCAL_DOC_MAN@ GNUSTEP_LOCAL_DOC_INFO=@GNUSTEP_LOCAL_DOC_INFO@ # Important: settings in the User should normally be relative paths, # and will be interpreted as relative to the user's directory. This # allows each user to have their own domain to install things. You # can set them to be absolute, mostly if you want to disable them # by setting them equal to the ones in the Network domain. GNUSTEP_USER_DIR_APPS=@GNUSTEP_USER_DIR_APPS@ GNUSTEP_USER_DIR_ADMIN_APPS=@GNUSTEP_USER_DIR_ADMIN_APPS@ GNUSTEP_USER_DIR_WEB_APPS=@GNUSTEP_USER_DIR_WEB_APPS@ GNUSTEP_USER_DIR_TOOLS=@GNUSTEP_USER_DIR_TOOLS@ GNUSTEP_USER_DIR_ADMIN_TOOLS=@GNUSTEP_USER_DIR_ADMIN_TOOLS@ GNUSTEP_USER_DIR_LIBRARY=@GNUSTEP_USER_DIR_LIBRARY@ GNUSTEP_USER_DIR_HEADERS=@GNUSTEP_USER_DIR_HEADERS@ GNUSTEP_USER_DIR_LIBRARIES=@GNUSTEP_USER_DIR_LIBRARIES@ GNUSTEP_USER_DIR_DOC=@GNUSTEP_USER_DIR_DOC@ GNUSTEP_USER_DIR_DOC_MAN=@GNUSTEP_USER_DIR_DOC_MAN@ GNUSTEP_USER_DIR_DOC_INFO=@GNUSTEP_USER_DIR_DOC_INFO@ �������������������������gnustep-make-2.7.0/Master/��������������������������������������������������������������������������0000775�0001750�0001750�00000000000�13074115163�015170� 5����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/java.make�����������������������������������������������������������������0000664�0001750�0001750�00000003564�12445471664�016774� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/java.make # # Master Makefile rules to build java-based (not necessarily # GNUstep) packages. # # Copyright (C) 2000 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif JAVA_PACKAGE_NAME := $(strip $(JAVA_PACKAGE_NAME)) # Parallel building here is probably of little help since most # GNUmakefiles will have a single java package. There is no point in # having more than one. internal-all:: $(JAVA_PACKAGE_NAME:=.all.java-package.variables) internal-jar:: $(JAVA_PACKAGE_NAME:=.jar.java-package.variables) internal-install:: $(JAVA_PACKAGE_NAME:=.install.java-package.variables) internal-uninstall:: $(JAVA_PACKAGE_NAME:=.uninstall.java-package.variables) internal-clean:: $(JAVA_PACKAGE_NAME:=.clean.java-package.variables) internal-distclean:: JAVA_PACKAGES_WITH_SUBPROJECTS = $(strip $(foreach java-package,$(JAVA_PACKAGE_NAME),$(patsubst %,$(java-package),$($(java-package)_SUBPROJECTS)))) ifneq ($(JAVA_PACKAGES_WITH_SUBPROJECTS),) internal-distclean:: $(JAVA_PACKAGES_WITH_SUBPROJECTS:=.distclean.java-package.subprojects) endif $(JAVA_PACKAGE_NAME): $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.java-package.variables$(END_ECHO_RECURSIVE_MAKE) ��������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/service.make��������������������������������������������������������������0000664�0001750�0001750�00000005265�11336101653�017475� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/service.make # # Master Makefile rules to build GNUstep-based services. # # Copyright (C) 1998, 2001 Free Software Foundation, Inc. # # Author: Richard Frith-Macdonald <richard@brainstorm.co.uk> # Based on the makefiles by Scott Christley. # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif SERVICE_NAME := $(strip $(SERVICE_NAME)) ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) internal-all:: $(GNUSTEP_OBJ_DIR) $(SERVICE_NAME:=.all.service.variables) else internal-all:: $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-master-service-all \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) .PHONY: internal-master-service-all internal-master-service-all: $(SERVICE_NAME:=.all.service.variables) endif internal-install:: $(SERVICE_NAME:=.install.service.variables) internal-uninstall:: $(SERVICE_NAME:=.uninstall.service.variables) _PSWRAP_C_FILES = $(foreach service,$(SERVICE_NAME),$($(service)_PSWRAP_FILES:.psw=.c)) _PSWRAP_H_FILES = $(foreach service,$(SERVICE_NAME),$($(service)_PSWRAP_FILES:.psw=.h)) internal-clean:: ifeq ($(GNUSTEP_IS_FLATTENED), no) (cd $(GNUSTEP_BUILD_DIR); \ rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) *.service/$(GNUSTEP_TARGET_LDIR)) else (cd $(GNUSTEP_BUILD_DIR); \ rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) *.service) endif internal-distclean:: ifeq ($(GNUSTEP_IS_FLATTENED), no) (cd $(GNUSTEP_BUILD_DIR); rm -rf *.service) endif SERVICES_WITH_SUBPROJECTS = $(strip $(foreach service,$(SERVICE_NAME),$(patsubst %,$(service),$($(service)_SUBPROJECTS)))) ifneq ($(SERVICES_WITH_SUBPROJECTS),) internal-clean:: $(SERVICES_WITH_SUBPROJECTS:=.clean.service.subprojects) internal-distclean:: $(SERVICES_WITH_SUBPROJECTS:=.distclean.service.subprojects) endif internal-strings:: $(SERVICE_NAME:=.strings.service.variables) $(SERVICE_NAME): $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.service.variables$(END_ECHO_RECURSIVE_MAKE) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/rpm.make������������������������������������������������������������������0000664�0001750�0001750�00000023670�11344477626�016652� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # rpm.make # # Makefile rules to build a RPM spec files and RPM packages # # Copyright (C) 2001-2007 Free Software Foundation, Inc. # # Author: Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # FIXME: Move all this documentation into the documentation # # # FIXME/TODO: Update for GNUSTEP_BUILD_DIR # # rpm puts all tools, bundles, applications, subprojects, libraries, # etc specified in the GNUmakefile into a single rpm. There aren't any # provisions for putting separate apps/tools/etc in separate rpms # (other than putting them in separate dirs). # # Note: we don't make development packages separated from the standard # ones. Every package containing a library's object files will also # contain the header files for the library <only the ones which were # declared in the makefile of course>. # # # When building a package, the make package generates automatically: # # * the .tgz source file to be copied into where_you_build_rpms/SOURCES/ # <generated by source-dist.make> # # * the spec file to be copied into where_you_build_rpms/SPECS/ # <generate by rpm.make> # # at this point, to build the rpm you just do # cd where_you_build_rpms/SPECS/ # rpm -ba my_package.spec # # If you are *very* lazy, typing `make rpm' will do it all automatically # for you. But in that case, you need to have set the shell environment # variable `RPM_TOPDIR' to the top dir of where you build rpms (eg, # /usr/src/redhat/). # # To build the spec file for a package, you need to do two things: # [1] Add - after common.make - the following lines in your GNUmakefile: # # PACKAGE_NAME = Gomoku # PACKAGE_VERSION = 1.1.1 # # (replace them with name, version of your software). This is mainly # needed so that when you build the .tgz and the spec file, they have # names which are in sync. Make sure to keep the library version and # the package version in sync. # # The other important variable you may want to set in your makefiles is # # GNUSTEP_INSTALLATION_DOMAIN - Installation domain (defaults to LOCAL) # # Make sure that your filesystem layout matches the one of your target # system else your files might end up in the wrong directory when # installed. In other words, use the same version of gnustep-make # that will be used on the target system, and configured in the same # way. # [2] Provide a $(PACKAGE_NAME).spec.in file, which contains the RPM # spec preamble. Here is an example: # Summary: A table board game # Release: 1 # License: GPL # Group: Amusements/Games # Source: http://www.gnustep.it/nicola/Applications/Gomoku/%{gs_name}-%{gs_version}.tar.gz # # %description # Gomoku is an extended TicTacToe game for GNUstep. You win the game if # you are able to put 5 of your pieces in a row, column or diagonal. You # loose if the computer does it before you. You can play the game on # boards of different size; the default size is 8 but 10 is also nice to # play. The game has 6 different difficulty levels. # Comments: # you must not include: `Name', `Version', `BuildRoot' and `Prefix' # entries. These are generated automatically; `Name' and `Version' # from $(PACKAGE_NAME) and $(PACKAGE_VERSION), and so for BuildRoot # and Prefix. you might include all the other tags listed in the RPM # doc if you want. # # You can use the following if you need: # %{gs_name} expands to the value of the make variable PACKAGE_NAME # %{gs_version} expands to the value of the make variable PACKAGE_VERSION # (make sure you use them in `Source:' as shown). # # A special note: if you need `./configure' to be run before # compilation (usually only needed for GNUstep core libraries # themselves), define the following make variable: # # PACKAGE_NEEDS_CONFIGURE = yes # # in your makefile. # # At this point, typing # `make dist' will generate the .tgz (can be used outside rpm.make) # `make specfile' will generate the (matching) specfile. # # # As said before, if you are very lazy, typing something like # # make distclean # `RPM_TOPDIR=/usr/src/redhat' make rpm # # will do the whole job once you have written your '.spec.in' file, # and set the PACKAGE_NAME and PACKAGE_VERSION variables in the makefile. # The generated rpm will be in /usr/src/redhat/RPMS/. # # # Internal targets # # If we have been called with something like # # make DESTDIR=/var/tmp/package-build filelist=yes install # # we are being called inside the rpm installation stage, and we need # to produce the file list from the installed files. # GNUSTEP_FILE_LIST = $(GNUSTEP_OBJ_DIR)/file-list ifeq ($(filelist),yes) # Build the file-list only at top level # ifeq ($(MAKELEVEL),0) # Remove the old file list before installing, and initialize the new one. before-install:: $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING)rm -f $(GNUSTEP_FILE_LIST)$(END_ECHO) $(ECHO_NOTHING)echo "%attr (-, root, root)" >> $(GNUSTEP_FILE_LIST)$(END_ECHO) # Get the list of files inside DESTDIR internal-after-install:: $(ECHO_NOTHING)for file in `$(TAR) Pcf - $(DESTDIR) | $(TAR) t`; do \ if [ -d "$$file" ]; then \ echo "%dir $$file" > /dev/null; \ else \ echo "$$file" >> $(GNUSTEP_FILE_LIST); \ fi; \ done$(END_ECHO) $(ECHO_NOTHING)sed -e "s|^$(DESTDIR)||" $(GNUSTEP_FILE_LIST) > file-list.tmp$(END_ECHO) $(ECHO_NOTHING)mv file-list.tmp $(GNUSTEP_FILE_LIST)$(END_ECHO) # endif # MAKELEVEL endif # filelist == yes # NB: The filelist is automatically deleted when GNUSTEP_OBJ_DIR is # deleted (that is, by make clean) SPEC_FILE_NAME=$(PACKAGE_NAME).spec SPEC_FILE=$(GNUSTEP_OBJ_DIR)/$(SPEC_FILE_NAME) SPEC_RULES_TEMPLATE=$(GNUSTEP_MAKEFILES)/spec-rules.template SPEC_IN=$(PACKAGE_NAME).spec.in SPEC_SCRIPT_IN=$(PACKAGE_NAME).script.spec.in # Recognize both YES and yes ifeq ($(PACKAGE_NEEDS_CONFIGURE),YES) PACKAGE_NEEDS_CONFIGURE = yes endif .PHONY: specfile rpm check-RPM_TOPDIR # # The user will type `make specfile' to generate the specfile # specfile: $(SPEC_FILE) # # This is the real target - depends on having a correct .spec.in file # $(SPEC_FILE): $(SPEC_IN) $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING)echo "Generating the spec file..."$(END_ECHO) $(ECHO_NOTHING)rm -f $@$(END_ECHO) $(ECHO_NOTHING)echo "##" >> $@$(END_ECHO) $(ECHO_NOTHING)echo "## Generated automatically by GNUstep make - do not edit!" >> $@$(END_ECHO) $(ECHO_NOTHING)echo "## Edit the $(SPEC_IN) file instead" >> $@$(END_ECHO) $(ECHO_NOTHING)echo "##" >> $@$(END_ECHO) $(ECHO_NOTHING)echo " " >> $@$(END_ECHO) $(ECHO_NOTHING)echo "## Code dynamically generated" >> $@$(END_ECHO) $(ECHO_NOTHING)echo "%define gs_name $(PACKAGE_NAME)" >> $@$(END_ECHO) $(ECHO_NOTHING)echo "%define gs_version $(PACKAGE_VERSION)" >> $@$(END_ECHO) $(ECHO_NOTHING)echo "%define gs_install_domain $(GNUSTEP_INSTALLATION_DOMAIN)" >> $@$(END_ECHO) $(ECHO_NOTHING)echo "%define gs_makefiles $(GNUSTEP_MAKEFILES)" >> $@$(END_ECHO) $(ECHO_NOTHING)echo "%define gs_file_list $(GNUSTEP_FILE_LIST)" >> $@$(END_ECHO) ifeq ($(PACKAGE_NEEDS_CONFIGURE),yes) $(ECHO_NOTHING)echo "%define gs_configure YES" >> $@$(END_ECHO) else $(ECHO_NOTHING)echo "%define gs_configure NO" >> $@$(END_ECHO) endif $(ECHO_NOTHING)echo " " >> $@$(END_ECHO) $(ECHO_NOTHING)echo "Name: %{gs_name}" >> $@$(END_ECHO) $(ECHO_NOTHING)echo "Version: %{gs_version}" >> $@$(END_ECHO) $(ECHO_NOTHING)echo "BuildRoot: /var/tmp/%{gs_name}-buildroot" >> $@$(END_ECHO) $(ECHO_NOTHING)echo "" >> $@$(END_ECHO) $(ECHO_NOTHING)echo "## Code from $(SPEC_IN)" >> $@$(END_ECHO) $(ECHO_NOTHING)cat $(SPEC_IN) >> $@$(END_ECHO) $(ECHO_NOTHING)echo "" >> $@$(END_ECHO) $(ECHO_NOTHING)echo "## Fixed rules from $(SPEC_RULES_TEMPLATE)" >> $@$(END_ECHO) $(ECHO_NOTHING)cat $(SPEC_RULES_TEMPLATE) >> $@$(END_ECHO) $(ECHO_NOTHING)if [ -f $(SPEC_SCRIPT_IN) ]; then \ echo "" >> $@; \ echo "## Script rules from $(SPEC_SCRIPT_IN)" >> $@; \ cat $(SPEC_SCRIPT_IN) >> $@; \ fi$(END_ECHO) check-RPM_TOPDIR: $(ECHO_NOTHING)if [ "$(RPM_TOPDIR)" = "" ]; then \ echo "I can't build the RPM if you do not set your RPM_TOPDIR"; \ echo "shell variable"; \ exit 1; \ fi;$(END_ECHO) # In old RPM versions, building was done using 'rpm -ba'; in newer RPM # versions, it can only be done using 'rpmbuild -ba'. Try to support # the old RPM versions by using 'rpm' instead of 'rpmbuild', if # 'rpmbuild' is not available. This hack can presumably be removed # when all RPM versions on earth will have been updated to the new # setup (it might take a while). rpm: check-RPM_TOPDIR dist specfile $(ECHO_NOTHING)echo "Generating the rpm..."$(END_ECHO) ifneq ($(RELEASE_DIR),) $(ECHO_NOTHING)cp $(RELEASE_DIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz \ $(RPM_TOPDIR)/SOURCES/$(END_ECHO) else $(ECHO_NOTHING)cp ../$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz $(RPM_TOPDIR)/SOURCES/$(END_ECHO) endif $(ECHO_NOTHING)cp $(SPEC_FILE) $(RPM_TOPDIR)/SPECS/; \ cd $(RPM_TOPDIR)/SPECS/; \ if which rpmbuild > /dev/null 2>/dev/null; then \ rpmbuild="rpmbuild"; \ else \ if which rpm > /dev/null 2>/dev/null; then \ rpmbuild="rpm"; \ else \ echo "Error: You don't have rpm installed!"; \ rpmbuild="rpmbuild"; \ fi; \ fi; \ $${rpmbuild} -ba $(SPEC_FILE_NAME)$(END_ECHO) ������������������������������������������������������������������������gnustep-make-2.7.0/Master/clibrary.make�������������������������������������������������������������0000664�0001750�0001750�00000005061�12611441235�017636� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/clibrary.make # # Master Makefile rules to build C libraries. # # Copyright (C) 1997, 2001 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Ovidiu Predescu <ovidiu@net-community.com> # Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif CLIBRARY_NAME := $(strip $(CLIBRARY_NAME)) ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) internal-all:: $(GNUSTEP_OBJ_DIR) $(CLIBRARY_NAME:=.all.clibrary.variables) else internal-all:: $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-master-clibrary-all \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) .PHONY: internal-master-clibrary-all internal-master-clibrary-all: $(CLIBRARY_NAME:=.all.clibrary.variables) endif internal-check:: $(CLIBRARY_NAME:=.check.clibrary.variables) internal-install:: $(CLIBRARY_NAME:=.install.clibrary.variables) internal-uninstall:: $(CLIBRARY_NAME:=.uninstall.clibrary.variables) _PSWRAP_C_FILES = $(foreach lib,$(CLIBRARY_NAME),$($(lib)_PSWRAP_FILES:.psw=.c)) _PSWRAP_H_FILES = $(foreach lib,$(CLIBRARY_NAME),$($(lib)_PSWRAP_FILES:.psw=.h)) internal-clean:: ifneq ($(_PSWRAP_C_FILES)$(_PSWRAP_H_FILES),) (cd $(GNUSTEP_BUILD_DIR); \ rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES)) endif internal-distclean:: CLIBRARIES_WITH_SUBPROJECTS = $(strip $(foreach clibrary,$(CLIBRARY_NAME),$(patsubst %,$(clibrary),$($(clibrary)_SUBPROJECTS)))) ifneq ($(CLIBRARIES_WITH_SUBPROJECTS),) internal-clean:: $(CLIBRARIES_WITH_SUBPROJECTS:=.clean.clibrary.subprojects) internal-distclean:: $(CLIBRARIES_WITH_SUBPROJECTS:=.distclean.clibrary.subprojects) endif internal-strings:: $(CLIBRARY_NAME:=.strings.clibrary.variables) $(CLIBRARY_NAME): $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.clibrary.variables$(END_ECHO_RECURSIVE_MAKE) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/subproject.make�����������������������������������������������������������0000664�0001750�0001750�00000005232�11336101653�020207� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/subproject.make # # Master Makefile rules to build subprojects in GNUstep projects. # # Copyright (C) 1998, 2001 Free Software Foundation, Inc. # # Author: Jonathan Gapen <jagapen@whitewater.chem.wisc.edu> # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # # The name of the subproject is in the SUBPROJECT_NAME variable. # SUBPROJECT_NAME := $(strip $(SUBPROJECT_NAME)) # Count the number of subprojects - we can support only one! ifneq ($(words $(SUBPROJECT_NAME)), 1) SUBPROJECT_NAME := $(word 1, $(SUBPROJECT_NAME)) $(warning Only a single subproject can be built in any directory!) $(warning Ignoring all subprojects and building only $(SUBPROJECT_NAME)) endif build-headers:: $(SUBPROJECT_NAME:=.build-headers.subproject.variables) # No need for parallel building, since we are guaranteed to always # have only one subproject. Avoid the parallel building submake for # efficiency in that case. internal-all:: $(GNUSTEP_OBJ_DIR) $(SUBPROJECT_NAME:=.all.subproject.variables) internal-install:: $(SUBPROJECT_NAME:=.install.subproject.variables) internal-uninstall:: $(SUBPROJECT_NAME:=.uninstall.subproject.variables) _PSWRAP_C_FILES = $($(SUBPROJECT_NAME)_PSWRAP_FILES:.psw=.c) _PSWRAP_H_FILES = $($(SUBPROJECT_NAME)_PSWRAP_FILES:.psw=.h) internal-clean:: ifneq ($(_PSWRAP_C_FILES)$(_PSWRAP_H_FILES)$($(SUBPROJECT_NAME)_HAS_RESOURCE_BUNDLE),) (cd $(GNUSTEP_BUILD_DIR); \ rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) Resources) endif internal-distclean:: SUBPROJECTS_WITH_SUBPROJECTS = $(strip $(patsubst %,$(SUBPROJECT_NAME),$($(SUBPROJECT_NAME)_SUBPROJECTS))) ifneq ($(SUBPROJECTS_WITH_SUBPROJECTS),) internal-clean:: $(SUBPROJECTS_WITH_SUBPROJECTS:=.clean.subproject.subprojects) internal-distclean:: $(SUBPROJECTS_WITH_SUBPROJECTS:=.distclean.subproject.subprojects) endif internal-strings:: $(SUBPROJECT_NAME:=.strings.subproject.variables) $(SUBPROJECT_NAME): $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.subproject.variables$(END_ECHO_RECURSIVE_MAKE) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/objc.make�����������������������������������������������������������������0000664�0001750�0001750�00000004430�11336101653�016743� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/objc.make # # Master Makefile rules to build ObjC-based (but not GNUstep) programs. # # Copyright (C) 1997, 2001 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. OBJC_PROGRAM_NAME := $(strip $(OBJC_PROGRAM_NAME)) ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) internal-all:: $(GNUSTEP_OBJ_DIR) $(OBJC_PROGRAM_NAME:=.all.objc-program.variables) else internal-all:: $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-master-objc-program-all \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) .PHONY: internal-master-objc-program-all internal-master-objc-program-all: $(OBJC_PROGRAM_NAME:=.all.objc-program.variables) endif internal-install:: $(OBJC_PROGRAM_NAME:=.install.objc-program.variables) internal-uninstall:: $(OBJC_PROGRAM_NAME:=.uninstall.objc-program.variables) internal-clean:: internal-distclean:: OBJC_PROGRAMS_WITH_SUBPROJECTS = $(strip $(foreach objc_program,$(OBJC_PROGRAM_NAME),$(patsubst %,$(objc_program),$($(objc_program)_SUBPROJECTS)))) ifneq ($(OBJC_PROGRAMS_WITH_SUBPROJECTS),) internal-clean:: $(OBJC_PROGRAMS_WITH_SUBPROJECTS:=.clean.objc-program.subprojects) internal-distclean:: $(OBJC_PROGRAMS_WITH_SUBPROJECTS:=.distclean.objc-program.subprojects) endif internal-strings:: $(OBJC_PROGRAM_NAME:=.strings.objc-program.variables) $(OBJC_PROGRAM_NAME): $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.objc-program.variables$(END_ECHO_RECURSIVE_MAKE) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/java-tool.make������������������������������������������������������������0000664�0001750�0001750�00000003517�11336101653�017727� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/java-tool.make # # Master Makefile rules to build Java command-line tools. # # Copyright (C) 2001 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 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. # # The name of the tools is in the JAVA_TOOL_NAME variable. # The main class (the one implementing main) is in the # xxx_PRINCIPAL_CLASS variable. # JAVA_TOOL_NAME := $(strip $(JAVA_TOOL_NAME)) ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # TODO: Parallel building. internal-all:: $(JAVA_TOOL_NAME:=.all.java_tool.variables) internal-install:: $(JAVA_TOOL_NAME:=.install.java_tool.variables) internal-uninstall:: $(JAVA_TOOL_NAME:=.uninstall.java_tool.variables) internal-clean:: $(JAVA_TOOL_NAME:=.clean.java_tool.variables) internal-distclean:: JAVA_TOOLS_WITH_SUBPROJECTS = $(strip $(foreach java_tool,$(JAVA_TOOL_NAME),$(patsubst %,$(java_tool),$($(java_tool)_SUBPROJECTS)))) ifneq ($(JAVA_TOOLS_WITH_SUBPROJECTS),) internal-distclean:: $(JAVA_TOOLS_WITH_SUBPROJECTS:=.distclean.java_tool.subprojects) endif $(JAVA_TOOL_NAME): $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.java_tool.variables$(END_ECHO_RECURSIVE_MAKE) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/parallel-subdirectories.make����������������������������������������������0000664�0001750�0001750�00000011520�11336101653�022644� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # parallel-subdirectories.make # # Master Makefile rules to build a set of subdirectories in parallel. # # Copyright (C) 2010 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola.pero@meta-innovation.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # The list of subdirectories is in the makefile variable # PARALLEL_SUBDIRECTORIES. PARALLEL_SUBDIRECTORIES := $(strip $(PARALLEL_SUBDIRECTORIES)) # This file builds all the PARALLEL_SUBDIRECTORIES in parallel. It # fires off a parallel submake invocation which starts a submake in # each of the subdirectories. These submakes are started in parallel # if a parallel build is being done. The project types in the # directories can be anything - tools, documentation, libraries, # bundles, applications, whatever. For example, if your package is # composed by a bunch of applications and tools that can be built # independently of each other, you can simply put them into various # subdirectories, then have a top level GNUmakefile which has them as # PARALLEL_SUBDIRECTORIES; they will be built in parallel, if possible # (or in a random serial order if parallel building is not used). # # If you do require the subdirectories to be built in strict order, # you can use serial-subdirectories.make which will build them in the # specified order. ifneq ($(PARALLEL_SUBDIRECTORIES),) # We fire off a submake with _GNUSTEP_MAKE_PARALLEL=yes, so that that # submake invocation will be able to build its # 'internal-master-subdirectories-xxx' target in parallel. If the # build is not parallel, that submake will simply build normally. internal-all internal-clean internal-distclean \ internal-check internal-strings:: $(ECHO_NOTHING_RECURSIVE_MAKE)operation=$(subst internal-,,$@); \ $(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-master-subdirectories-$$operation \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) .PHONY: \ internal-master-subdirectories-all \ internal-master-subdirectories-clean \ internal-master-subdirectories-distclean \ internal-master-subdirectories-check \ internal-master-subdirectories-strings internal-master-subdirectories-all: $(PARALLEL_SUBDIRECTORIES:=.all.subdirectories) internal-master-subdirectories-clean: $(PARALLEL_SUBDIRECTORIES:=.clean.subdirectories) internal-master-subdirectories-distclean: $(PARALLEL_SUBDIRECTORIES:=.distclean.subdirectories) internal-master-subdirectories-check: $(PARALLEL_SUBDIRECTORIES:=.check.subdirectories) internal-master-subdirectories-strings: $(PARALLEL_SUBDIRECTORIES:=.strings.subdirectories) # See Master/rules.make as to why we use .PRECIOUS instead of .PHONY # here. .PRECIOUS: %.subdirectories %.subdirectories: $(ECHO_NOTHING_RECURSIVE_MAKE)directory=$(basename $*); \ operation=$(subst .,,$(suffix $*)); \ abs_build_dir="$(ABS_GNUSTEP_BUILD_DIR)"; \ $(INSIDE_ECHO_MAKING_OPERATION_IN_DIRECTORY) \ if [ "$${abs_build_dir}" = "." ]; then \ gsbuild="."; \ else \ gsbuild="$${abs_build_dir}/$$instance"; \ fi; \ if $(MAKE) -C $$directory -f $(MAKEFILE_NAME) $(GNUSTEP_MAKE_NO_PRINT_DIRECTORY_FLAG) --no-keep-going \ $$operation \ GNUSTEP_BUILD_DIR="$$gsbuild" _GNUSTEP_MAKE_PARALLEL=no; then \ :; else exit $$?; \ fi$(END_ECHO_RECURSIVE_MAKE) # We still do 'install' and 'uninstall' in non-parallel mode, to # prevent any race conditions with the creation of installation # directories. TODO: It would be cool to make this configurable # so you could make it parallel if you so wish. internal-install internal-uninstall:: $(ECHO_NOTHING_RECURSIVE_MAKE)operation=$(subst internal-,,$@); \ abs_build_dir="$(ABS_GNUSTEP_BUILD_DIR)"; \ for directory in $(PARALLEL_SUBDIRECTORIES); do \ $(INSIDE_ECHO_MAKING_OPERATION_IN_DIRECTORY) \ if [ "$${abs_build_dir}" = "." ]; then \ gsbuild="."; \ else \ gsbuild="$${abs_build_dir}/$$directory"; \ fi; \ if $(MAKE) -C $$directory -f $(MAKEFILE_NAME) $(GNUSTEP_MAKE_NO_PRINT_DIRECTORY_FLAG) --no-keep-going \ $$operation \ GNUSTEP_BUILD_DIR="$$gsbuild" _GNUSTEP_MAKE_PARALLEL=no; then \ :; else exit $$?; \ fi; \ done$(END_ECHO_RECURSIVE_MAKE) endif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/gswbundle.make������������������������������������������������������������0000664�0001750�0001750�00000004666�11336101653�020033� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/gswbundle.make # # Master Makefile rules to build GNUstep web bundles. # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Manuel Guesdon <mguesdon@sbuilders.com> # Based on WOBundle.make by Helge Hess, MDlink online service center GmbH. # Based on bundle.make by Ovidiu Predescu <ovidiu@net-community.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif ifeq ($(strip $(GSWBUNDLE_EXTENSION)),) GSWBUNDLE_EXTENSION = .gswbundle endif GSWBUNDLE_NAME := $(strip $(GSWBUNDLE_NAME)) ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) internal-all:: $(GNUSTEP_OBJ_DIR) $(GSWBUNDLE_NAME:=.all.gswbundle.variables) else internal-all:: $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-master-gswbundle-all \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) .PHONY: internal-master-gswbundle-all internal-master-gswbundle-all: $(GSWBUNDLE_NAME:=.all.gswbundle.variables) endif internal-install:: $(GSWBUNDLE_NAME:=.install.gswbundle.variables) internal-uninstall:: $(GSWBUNDLE_NAME:=.uninstall.gswbundle.variables) internal-clean:: (cd $(GNUSTEP_BUILD_DIR); \ rm -rf $(addsuffix $(GSWBUNDLE_EXTENSION),$(GSWBUNDLE_NAME))) internal-distclean:: GSWBUNDLES_WITH_SUBPROJECTS = $(strip $(foreach gswbundle,$(GSWBUNDLE_NAME),$(patsubst %,$(gswbundle),$($(gswbundle)_SUBPROJECTS)))) ifneq ($(GSWBUNDLES_WITH_SUBPROJECTS),) internal-clean:: $(GSWBUNDLES_WITH_SUBPROJECTS:=.clean.gswbundle.subprojects) internal-distclean:: $(GSWBUNDLES_WITH_SUBPROJECTS:=.distclean.gswbundle.subprojects) endif internal-all:: $(GSWBUNDLE_NAME:=.all.gswbundle.variables) $(GSWBUNDLE_NAME): $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.gswbundle.variables$(END_ECHO_RECURSIVE_MAKE) ��������������������������������������������������������������������������gnustep-make-2.7.0/Master/resource-set.make���������������������������������������������������������0000664�0001750�0001750�00000002237�11335213634�020453� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/resource-set.make # # Master makefile rules to install resource files # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif RESOURCE_SET_NAME := $(strip $(RESOURCE_SET_NAME)) # Only install and uninstall are actually performed for this project type internal-all:: internal-install:: $(RESOURCE_SET_NAME:=.install.resource-set.variables) internal-uninstall:: $(RESOURCE_SET_NAME:=.uninstall.resource-set.variables) internal-clean:: internal-distclean:: �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/deb.make������������������������������������������������������������������0000664�0001750�0001750�00000011005�12344645671�016571� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # deb.make # # Makefile rules to build a Debian package # # Copyright (C) 2013 Free Software Foundation, Inc. # # Author: Ivan Vucica <ivan@vucica.net> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # This file provides targets 'deb' and 'debfile'. # # - debfile - produces a 'packagename.debequivs' file, which can be # processed by program 'equivs-build' inside Debian package # 'equivs'. Such processing will produce file named # gomoku_1.1.1_i386.deb (for example). # - deb - runs 'equivs'build. # # Processor architecture is detected from output of $(CC) -dumpmachine. # If $(CC) is not defined, gcc is used. # [1] Add - after common.make - the following lines in your GNUmakefile: # # PACKAGE_NAME = Gomoku # PACKAGE_VERSION = 1.1.1 # # The other important variable you may want to set in your makefiles is # # GNUSTEP_INSTALLATION_DOMAIN - Installation domain (defaults to LOCAL) # # A special note: if you need `./configure' to be run before # compilation (usually only needed for GNUstep core libraries # themselves), define the following make variable: # # PACKAGE_NEEDS_CONFIGURE = yes # # in your makefile. ifeq ($(CC), ) CC=cc endif _DEB_ARCH=$(GNUSTEP_TARGET_CPU) # $(shell (/bin/bash -c "$(CC) -dumpmachine | sed -e 's,\\([^-]*\\).*,\\1,g'")) _DEB_LOWERCASE_PACKAGE_NAME=$(shell (echo $(PACKAGE_NAME) | sed -e 's/\(.*\)/\L\1/')) _DEB_VERSION=$(TARBALL_VERSION) ifeq ($(_DEB_VERSION), ) _DEB_VERSION=$(PACKAGE_VERSION) endif ifeq ($(_DEB_VERSION), ) _DEB_VERSION=$(VERSION) endif _DEB_ORIGTARNAME=$(_DEB_LOWERCASE_PACKAGE_NAME)_$(_DEB_VERSION) _DEB_FILE=$(_DEB_TARNAME)_$(_DEB_ARCH).deb _ABS_OBJ_DIR=$(shell (cd "$(GNUSTEP_BUILD_DIR)"; pwd))/obj # To produce a signed Debian source and binary package, # call 'make debsign=yes'. ifeq ($(debsign),yes) DEBUILD_ARGS = -nc else DEBUILD_ARGS = -us -uc -nc endif _DEB_TARBALL = $(shell (test -e $(VERSION_NAME).tar.gz && echo $(VERSION_NAME).tar.gz) || \ (test -e ../$(VERSION_NAME).tar.gz && echo ../$(VERSION_NAME).tar.gz)) ### ifeq ($(_DEB_SHOULD_EXPORT), ) # _debenv.phony:: -rm _debenv _DEB_SHOULD_EXPORT=1 make _debenv debclean:: -rm _debenv -rm -rf $(_ABS_OBJ_DIR)/debian_dist debfiles:: _debenv.phony $(ECHO_NOTHING)(if [ -z "$(_DEB_TARBALL)" ] || [ ! -e "$(_DEB_TARBALL)" ] ; then \ echo "No tarball found. Please produce it manually using a target such as dist, svn-dist, " ; \ echo "svn-bugfix, svn-snapshot or svn-export." ; \ echo "Expecting name $(VERSION_NAME).tar.gz in current or parent directory." ; \ exit 1 ; \ fi)$(END_ECHO) $(ECHO_NOTHING)echo "Baking deb control files ("$(GNUSTEP_TARGET_CPU)")..."$(END_ECHO) /bin/bash -c ". _debenv && mkdir -p $(_ABS_OBJ_DIR)/debian_files && $(GNUSTEP_MAKEFILES)/bake_debian_files.sh $(_ABS_OBJ_DIR)/debian_files" -rm _debenv $(ECHO_NOTHING)echo "Preparing directory layout for building deb package..."$(END_ECHO) -rm -rf $(_ABS_OBJ_DIR)/debian_dist mkdir -p $(_ABS_OBJ_DIR)/debian_dist cp $(_DEB_TARBALL) $(_ABS_OBJ_DIR)/debian_dist/$(_DEB_ORIGTARNAME).orig.tar.gz cd $(_ABS_OBJ_DIR)/debian_dist && tar xfz $(_DEB_ORIGTARNAME).orig.tar.gz mkdir -p $(_ABS_OBJ_DIR)/debian_dist/$(VERSION_NAME)/debian mv $(_ABS_OBJ_DIR)/debian_files/debian/* $(_ABS_OBJ_DIR)/debian_dist/$(VERSION_NAME)/debian -rm -rf $(_ABS_OBJ_DIR)/debian_files deb:: $(ECHO_NOTHING)echo "Building Debian package..."$(END_ECHO) cd $(_ABS_OBJ_DIR)/debian_dist/$(VERSION_NAME)/ && debuild $(DEBUILD_ARGS) -S cd $(_ABS_OBJ_DIR)/debian_dist/$(VERSION_NAME)/ && debuild $(DEBUILD_ARGS) -b # else # ifeq ($(DEB_BUILD_DEPENDS),) DEB_BUILD_DEPENDS =gnustep-make (>= $(shell dpkg -s gnustep-make | grep 'Version: ' | sed 's/Version: //')) export DEB_BUILD_DEPENDS else DEB_BUILD_DEPENDS +=, gnustep-make (>= $(shell dpkg -s gnustep-make | grep 'Version: ' | sed 's/Version: //')) export DEB_BUILD_DEPENDS endif .PHONY: _debenv # Export all variables, but only if we explicitly are working with bake_debian_files.sh export _debenv: export > _debenv endif ### ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/test-tool.make������������������������������������������������������������0000664�0001750�0001750�00000004315�11336101653�017762� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/test-tool.make # # Copyright (C) 1997, 2001 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. TEST_TOOL_NAME := $(strip $(TEST_TOOL_NAME)) ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # Building of test tools works as in tool.make, except we don't install them. ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) internal-all:: $(GNUSTEP_OBJ_DIR) $(TEST_TOOL_NAME:=.all.test-tool.variables) else internal-all:: $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-master-test-tool-all \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) .PHONY: internal-master-test-tool-all internal-master-test-tool-all: $(TEST_TOOL_NAME:=.all.test-tool.variables) endif internal-clean:: internal-distclean:: TEST_TOOLS_WITH_SUBPROJECTS = $(strip $(foreach test-tool,$(TEST_TOOL_NAME),$(patsubst %,$(test-tool),$($(test-tool)_SUBPROJECTS)))) ifneq ($(TEST_TOOLS_WITH_SUBPROJECTS),) internal-clean:: $(TEST_TOOLS_WITH_SUBPROJECTS:=.clean.test-tool.subprojects) internal-distclean:: $(TEST_TOOLS_WITH_SUBPROJECTS:=.distclean.test-tool.subprojects) endif internal-strings:: $(TEST_TOOL_NAME:=.strings.test-tool.variables) $(TEST_TOOL_NAME): $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.test-tool.variables$(END_ECHO_RECURSIVE_MAKE) internal-install:: @ echo Skipping installation of test tools... internal-uninstall:: @ echo Skipping uninstallation of test tools... �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/rules.make����������������������������������������������������������������0000664�0001750�0001750�00000040514�12733427351�017173� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # rules.make # # Makefile rules for the Master invocation. # # Copyright (C) 1997, 2001, 2002 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Ovidiu Predescu <ovidiu@net-community.com> # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Quick explanation - # # Say that you run `make all'. The rule for `all' is below here, and # depends on internal-all. Rules for internal-all are found in # tool.make, library.make etc; there, internal-all will depend on a # list of appropriate %.variables targets, such as # gsdoc.tool.all.variables <which means we need to make `all' for the # `tool' called `gsdoc'> - to process these prerequisites, the # %.variables rule below is used. this rule gets an appropriate make # subprocess going, with the task of building that specific # instance-type-operation prerequisite. The make subprocess will be run # as in `make internal-tool-all GNUSTEP_INSTANCE=gsdoc ...<and other # variables>' and this make subprocess wil find the internal-tool-all # rule in tool.make, and execute that, building the tool. # # Hint: run make with `make -n' to see the recursive method invocations # with the parameters used # # # Global targets # # The first time you invoke `make', if you have not given a target, # `all' is executed as it is the first one. If a GNUSTEP_BUILD_DIR is # specifed, make sure to create it before anything else is done. ifeq ($(GNUSTEP_BUILD_DIR),.) all:: before-all internal-all after-all else all:: $(GNUSTEP_BUILD_DIR) before-all internal-all after-all $(GNUSTEP_BUILD_DIR): $(ECHO_CREATING)$(MKDIRS) $(GNUSTEP_BUILD_DIR)$(END_ECHO) endif jar:: all before-jar internal-jar after-jar # The rule to create the objects file directory. This should be done # in the Master invocation before any parallel stuff is started (to # avoid race conditions in trying to create it). $(GNUSTEP_OBJ_DIR): $(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR); \ $(MKDIRS) ./$(GNUSTEP_OBJ_DIR_NAME)$(END_ECHO) # internal-after-install is used by packaging to get the list of files # installed (see rpm.make); it must come after *all* the installation # rules have been executed. # internal-check-installation-permissions comes before everything so # that we run any command if we aren't allowed to install # install depends on all as per GNU/Unix habits, conventions and standards. # The very first top-most make invocation we want to have install # depend on all, and distclean depend on clean. # We used to check MAKELEVEL=0 here to # determine if this is the top-most invocation of make, but that does # not work if the top-most invocation of make is done from within a # (non-gnustep-make) makefile itself! So we use a marker variable. # _GNUSTEP_TOP_INVOCATION_DONE is not set the very first / top-most # make invocation , but we set it for all sub-invocations, so all # subinvocations will have it set and we can distinguish them. ifeq ($(_GNUSTEP_TOP_INVOCATION_DONE),) # Top-most invocation of make install:: all \ before-install internal-install after-install internal-after-install distclean:: clean before-distclean internal-distclean after-distclean # Further make invocations will have this variable set export _GNUSTEP_TOP_INVOCATION_DONE = 1 else # Sub-invocation of make install:: internal-before-install before-install internal-install after-install internal-after-install distclean:: before-distclean internal-distclean after-distclean endif uninstall:: before-uninstall internal-uninstall after-uninstall internal-after-uninstall clean:: before-clean internal-clean after-clean check:: before-check internal-check after-check strings:: before-strings internal-strings after-strings # # Placeholders for internal targets # before-all:: internal-all:: after-all:: before-jar:: internal-jar:: after-jar:: # By adding an ADDITIONAL_INSTALL_DIRS variable you can request # additional installation directories to be created before the first # installation target is executed. You can also have xxx_INSTALL_DIRS # for specific instances, which are processed in the Instance # invocation. $(ADDITIONAL_INSTALL_DIRS): $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) internal-before-install:: $(ADDITIONAL_INSTALL_DIRS) before-install:: internal-install:: after-install:: # The following for exclusive use of packaging code internal-after-install:: before-uninstall:: internal-uninstall:: after-uninstall:: internal-after-uninstall:: ifneq ($(ADDITIONAL_INSTALL_DIRS),) -$(ECHO_NOTHING)for dir in $(ADDITIONAL_INSTALL_DIRS); do \ rmdir $$dir ; \ done$(END_ECHO) endif before-clean:: internal-clean:: rm -rf $(GNUSTEP_BUILD_DIR)/*~ $(GNUSTEP_BUILD_DIR)/obj after-clean:: before-distclean:: internal-distclean:: after-distclean:: before-check:: internal-check:: after-check:: before-strings:: internal-strings:: after-strings:: # declare targets as PHONY .PHONY: \ all before-all internal-all after-all \ jar before-jar internal-jar after-jar \ install before-install internal-install after-install \ internal-after-install \ uninstall before-uninstall internal-uninstall after-uninstall \ clean before-clean internal-clean after-clean \ distclean before-distclean internal-distclean after-distclean \ check before-check internal-check after-check \ strings before-strings internal-strings after-strings \ build-headers before-build-headers after-build-headers # Prevent make from trying to remove stuff like # libcool.library.all.subprojects thinking that it is a temporary file # FIXME - we really want to declare these as .PHONY, not .PRECIOUS, # we only declare them .PRECIOUS because .PHONY doesn't seem to support # wildcards (FIXME)! .PRECIOUS: %.variables %.subprojects # ## The magical %.variables rules, thank you GNU make! # # The %.variables target has to be called with the name of the actual # instance, followed by the operation, then the makefile fragment to be # called and then the variables word. Suppose for example we build the # library libgmodel, the target should look like: # # libgmodel.all.library.variables # # when the rule is executed, $* is libgmodel.all.libray; # instance will be libgmodel # operation will be all # type will be library # # this rule might be executed many times, for different targets to build. # the rule then calls a submake, which runs the real code # the following is the code used in %.variables and %.subprojects # to extract the instance, operation and type from the $* (the stem) of the # rule. with GNU make => 3.78, we could define the following as macros # and use $(call ...) to call them; but because we have users who are using # GNU make older than that, we have to manually `paste' this code # wherever we need to access instance or type or operation. # (FIXME: Requiring GNU make >= 3.78 should be OK nowadays) # # Anyway, the following table tells you what these commands do - # # instance=$(basename $(basename $(1))) # operation=$(subst .,,$(suffix $(basename $(1)))) # type=$(subst -,_,$(subst .,,$(suffix $(1)))) # # It's very important to notice that $(basename $(basename $*)) in # these rules is simply the instance (such as libgmodel). # Before building the real thing, we must build the subprojects # If we are at the very first make invocation, convert # GNUSTEP_BUILD_DIR into an absolute path. All other make invocations # can then assume it is already an absolute path form, and avoid the # shell invocation to convert into absolute path. Let's avoid the # shell invocation unless strictly necessary - it's slow. ifeq ($(MAKELEVEL),0) ifneq ($(GNUSTEP_BUILD_DIR),.) # We can't use ':=' here (which we'd like, since it would guarantee # that the shell command is executed only once) because ':=' would # cause the shell command to be executed immediately, which is *now* # during parsing, before any rule has been executed; in particular, # before the rule which creates GNUSTEP_BUILD_DIR has been executed # (if it had to be executed), and that might cause the 'cd' in the # following shell command to fail. So what we do, is we define this # as a simple variable with '=', which means it will be evaluated # every time it is used, but not before, and then we make sure to # use it as little as possible and only in rules which are executed # after the rule to build GNUSTEP_BUILD_DIR. Please note that in # this setup, *any* reference to this variable causes a slow # subshell invocation. At the moment, it's used when running # the subprojects/variables and when running the aggregate # projects. # That makes 1 invocation per type of project per type of target # used in the top-level makefile. For example, if the top-level # makefile includes aggregate.make and documentation.make and does # a make all, we evaluate this variable twice. If it does a make # distclean (which automatically invokes make clean as well) we # evaluate this variable 4 times. All non-top-level make code # is free from overhead. # In the rules which need the ABS_GNUSTEP_BUILD_DIR variable more # than once we copy it into a shell variable and reuse the shell # variable to avoid evaluating ABS_GNUSTEP_BUILD_DIR multiple # times in the same rule. # DO NOT EVER USE THIS VARIABLE UNLESS YOU FULLY UNDERSTAND THE # PERFORMANCE IMPLICATIONS JUST DESCRIBED. ABS_GNUSTEP_BUILD_DIR = $(shell (cd "$(GNUSTEP_BUILD_DIR)"; pwd)) else ABS_GNUSTEP_BUILD_DIR = . endif else ABS_GNUSTEP_BUILD_DIR = $(strip $(GNUSTEP_BUILD_DIR)) endif # If you change the subprojects code here, make sure to update the # %.subprojects rule below too! The code from the %.subprojects rule # below is 'inlined' here for speed (so that we don't run a separate # shell just to execute that code). %.variables: $(ECHO_NOTHING_RECURSIVE_MAKE) \ instance=$(basename $(basename $*)); \ operation=$(subst .,,$(suffix $(basename $*))); \ type=$(subst -,_,$(subst .,,$(suffix $*))); \ abs_build_dir="$(ABS_GNUSTEP_BUILD_DIR)"; \ if [ "$($(basename $(basename $*))_SUBPROJECTS)" != "" ]; then \ $(INSIDE_ECHO_MAKING_OPERATION_IN_SUBPROJECTS) \ for f in $($(basename $(basename $*))_SUBPROJECTS) __done; do \ if [ $$f != __done ]; then \ if [ "$${abs_build_dir}" = "." ]; then \ gsbuild="."; \ else \ gsbuild="$${abs_build_dir}/$$f"; \ fi; \ if [ "$(OWNING_PROJECT_HEADER_DIR_NAME)" = "" ]; then \ if [ "$$type" = "framework" ]; then \ if [ "$(FRAMEWORK_VERSION_SUPPORT)" = "yes" ]; then \ framework_version="$($(basename $(basename $*))_CURRENT_VERSION_NAME)"; \ if [ "$$framework_version" = "" ]; then \ framework_version="$($(basename $(basename $*))_INTERFACE_VERSION)"; \ if [ "$$framework_version" = "" ]; then \ framework_version="$(word 1,$(subst ., ,$($(basename $(basename $*))_VERSION)))"; \ if [ "$$framework_version" = "" ]; then \ framework_version="0"; \ fi; \ fi; \ 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 \ owning_project_header_dir="../$(OWNING_PROJECT_HEADER_DIR_NAME)"; \ fi; \ if $(MAKE) -C $$f -f $(MAKEFILE_NAME) $(GNUSTEP_MAKE_NO_PRINT_DIRECTORY_FLAG) --no-keep-going $$operation \ OWNING_PROJECT_HEADER_DIR_NAME="$${owning_project_header_dir}" \ DERIVED_SOURCES="../$(DERIVED_SOURCES)" \ GNUSTEP_BUILD_DIR="$$gsbuild" \ _GNUSTEP_MAKE_PARALLEL=no \ ; then \ :; \ else exit $$?; \ fi; \ fi; \ done; \ fi; \ $(INSIDE_ECHO_MAKING_OPERATION) \ $(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-$${type}-$$operation \ GNUSTEP_TYPE=$$type \ GNUSTEP_INSTANCE=$$instance \ GNUSTEP_OPERATION=$$operation \ GNUSTEP_BUILD_DIR="$${abs_build_dir}" \ _GNUSTEP_MAKE_PARALLEL=no$(END_ECHO_RECURSIVE_MAKE) # # This rule provides exactly the same code as the %.variables one with # respect to subprojects; it is available for clean targets when they # want to run make clean in subprojects but do not need a full Instance # invocation. In that case, they can depend on %.subprojects only. # # NB: The OWNING_PROJECT_HEADER_DIR_NAME hack in this rule is sort of # horrible, because it pollutes this general rule with code specific # to the framework implementation (eg, where the framework headers are # located). Still, it's the least evil we could think of at the # moment :-) The framework code is now completely confined into # framework.make makefiles, except for this little hack in here. It # would be nice to remove this hack without loosing functionality (or # polluting other general-purpose makefiles). %.subprojects: $(ECHO_NOTHING_RECURSIVE_MAKE) \ instance=$(basename $(basename $*)); \ operation=$(subst .,,$(suffix $(basename $*))); \ type=$(subst -,_,$(subst .,,$(suffix $*))); \ abs_build_dir="$(ABS_GNUSTEP_BUILD_DIR)"; \ if [ "$($(basename $(basename $*))_SUBPROJECTS)" != "" ]; then \ $(INSIDE_ECHO_MAKING_OPERATION_IN_SUBPROJECTS) \ for f in $($(basename $(basename $*))_SUBPROJECTS) __done; do \ if [ $$f != __done ]; then \ if [ "$${abs_build_dir}" = "." ]; then \ gsbuild="."; \ else \ gsbuild="$${abs_build_dir}/$$f"; \ fi; \ if [ "$(OWNING_PROJECT_HEADER_DIR_NAME)" = "" ]; then \ if [ "$$type" = "framework" ]; then \ if [ "$(FRAMEWORK_VERSION_SUPPORT)" = "yes" ]; then \ framework_version="$($(basename $(basename $*))_CURRENT_VERSION_NAME)"; \ if [ "$$framework_version" = "" ]; then \ framework_version="$($(basename $(basename $*))_INTERFACE_VERSION)"; \ if [ "$$framework_version" = "" ]; then \ framework_version="$(word 1,$(subst ., ,$($(basename $(basename $*))_VERSION)))"; \ if [ "$$framework_version" = "" ]; then \ framework_version="0"; \ fi; \ fi; \ 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 \ owning_project_header_dir="../$(OWNING_PROJECT_HEADER_DIR_NAME)"; \ fi; \ if $(MAKE) -C $$f -f $(MAKEFILE_NAME) $(GNUSTEP_MAKE_NO_PRINT_DIRECTORY_FLAG) --no-keep-going $$operation \ OWNING_PROJECT_HEADER_DIR_NAME="$${owning_project_header_dir}" \ DERIVED_SOURCES="../$(DERIVED_SOURCES)" \ GNUSTEP_BUILD_DIR="$$gsbuild" \ _GNUSTEP_MAKE_PARALLEL=no \ ; then \ :; \ else exit $$?; \ fi; \ fi; \ done; \ fi$(END_ECHO_RECURSIVE_MAKE) # # Now rules for packaging - all automatically included # PACKAGE_NAME := $(strip $(PACKAGE_NAME)) ifeq ($(PACKAGE_NAME),) # Use a default of unnamed-package if nothing better is provided. PACKAGE_NAME = unnamed-package endif # For backwards compatibility, take value of PACKAGE_VERSION from # VERSION. New GNUmakefiles should all use the PACKAGE_VERSION # variable rather than the VERSION variable. ifeq ($(PACKAGE_VERSION),) PACKAGE_VERSION = $(VERSION) # Use a default of 0.0.1 if nothing better is provided. ifeq ($(PACKAGE_VERSION),) PACKAGE_VERSION = 0.0.1 endif endif # # Rules for building source distributions # include $(GNUSTEP_MAKEFILES)/Master/source-distribution.make # # Rules for building spec files/file lists for RPMs, and RPMs # include $(GNUSTEP_MAKEFILES)/Master/rpm.make # # Rules for building debian/* scripts for DEBs, and DEBs # #include $(GNUSTEP_MAKEFILES)/Master/deb.make <TODO> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/gswapp.make���������������������������������������������������������������0000664�0001750�0001750�00000005153�11336101653�017332� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/gswapp.make # # Master Makefile rules to build GNUstep web based applications. # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Manuel Guesdon <mguesdon@sbuilders.com> # Based on application.make by Ovidiu Predescu <ovidiu@net-community.com> # Based on gswapp.make by Helge Hess, MDlink online service center GmbH. # Based on the original version by Scott Christley. # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # Determine the application directory extension GSWAPP_EXTENSION=gswa GSWAPP_NAME := $(strip $(GSWAPP_NAME)) ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) internal-all:: $(GNUSTEP_OBJ_DIR) $(GSWAPP_NAME:=.all.gswapp.variables) else internal-all:: $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-master-gswapp-all \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) .PHONY: internal-master-gswapp-all internal-master-gswapp-all: $(GSWAPP_NAME:=.all.gswapp.variables) endif internal-install:: $(GSWAPP_NAME:=.install.gswapp.variables) internal-uninstall:: $(GSWAPP_NAME:=.uninstall.gswapp.variables) internal-clean:: ifeq ($(GNUSTEP_IS_FLATTENED), no) (cd $(GNUSTEP_BUILD_DIR); \ rm -rf *.$(GSWAPP_EXTENSION)/$(GNUSTEP_TARGET_LDIR)) else (cd $(GNUSTEP_BUILD_DIR); \ rm -rf *.$(GSWAPP_EXTENSION)) endif internal-distclean:: ifeq ($(GNUSTEP_IS_FLATTENED), no) (cd $(GNUSTEP_BUILD_DIR); \ rm -rf *.$(GSWAPP_EXTENSION)) endif GSWAPPS_WITH_SUBPROJECTS = $(strip $(foreach gswapp,$(GSWAPP_NAME),$(patsubst %,$(gswapp),$($(gswapp)_SUBPROJECTS)))) ifneq ($(GSWAPPS_WITH_SUBPROJECTS),) internal-clean:: $(GSWAPPS_WITH_SUBPROJECTS:=.clean.gswapp.subprojects) internal-distclean:: $(GSWAPPS_WITH_SUBPROJECTS:=.distclean.gswapp.subprojects) endif internal-strings:: $(GSWAPP_NAME:=.strings.gswapp.variables) $(GSWAPP_NAME): $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.gswapp.variables$(END_ECHO_RECURSIVE_MAKE) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/bundle.make���������������������������������������������������������������0000664�0001750�0001750�00000004710�11336101653�017300� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/bundle.make # # Master makefile rules to build GNUstep-based bundles. # # Copyright (C) 1997, 2001 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Ovidiu Predescu <ovidiu@net-community.com> # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif BUNDLE_NAME := $(strip $(BUNDLE_NAME)) ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) internal-all:: $(GNUSTEP_OBJ_DIR) $(BUNDLE_NAME:=.all.bundle.variables) else internal-all:: $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-master-bundle-all \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) .PHONY: internal-master-bundle-all internal-master-bundle-all: $(BUNDLE_NAME:=.all.bundle.variables) endif internal-install:: $(BUNDLE_NAME:=.install.bundle.variables) internal-uninstall:: $(BUNDLE_NAME:=.uninstall.bundle.variables) _PSWRAP_C_FILES = $(foreach bundle,$(BUNDLE_NAME),$($(bundle)_PSWRAP_FILES:.psw=.c)) _PSWRAP_H_FILES = $(foreach bundle,$(BUNDLE_NAME),$($(bundle)_PSWRAP_FILES:.psw=.h)) internal-clean:: (cd $(GNUSTEP_BUILD_DIR); \ rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) $(addsuffix $(BUNDLE_EXTENSION),$(BUNDLE_NAME))) internal-distclean:: BUNDLES_WITH_SUBPROJECTS = $(strip $(foreach bundle,$(BUNDLE_NAME),$(patsubst %,$(bundle),$($(bundle)_SUBPROJECTS)))) ifneq ($(BUNDLES_WITH_SUBPROJECTS),) internal-clean:: $(BUNDLES_WITH_SUBPROJECTS:=.clean.bundle.subprojects) internal-distclean:: $(BUNDLES_WITH_SUBPROJECTS:=.distclean.bundle.subprojects) endif internal-strings:: $(BUNDLE_NAME:=.strings.bundle.variables) $(BUNDLE_NAME): $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.bundle.variables$(END_ECHO_RECURSIVE_MAKE) ��������������������������������������������������������gnustep-make-2.7.0/Master/nsis.make�����������������������������������������������������������������0000664�0001750�0001750�00000013601�11717535034�017011� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # nsis.make # # Makefile rules to build a NSIS installer # # Copyright (C) 2007 Free Software Foundation, Inc. # # Author: Adam Fedor <fedor@gnu.org> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # BUGS: Currently only works for applications # Pathnames only work with the GUI NSIS installer (not on msys at least) # # make nsifile will build the nsi installer script # make nsis will compile it, assuming there is a suitable # nsis compiler availabe. # [1] Add - after common.make - the following lines in your GNUmakefile: # # PACKAGE_NAME = Gomoku # PACKAGE_VERSION = 1.1.1 # # The other important variable you may want to set in your makefiles is # # GNUSTEP_INSTALLATION_DOMAIN - Installation domain (defaults to LOCAL) # # [2] Provide a $(PACKAGE_NAME).nsi.in file, which contains the NSIS # installer template. An example is in the gnustep-make package - which # will be used if you don't provide your own template # # You can use the following if you need: # @gs_name@ expands to the value of the make variable PACKAGE_NAME # @gs_version@ expands to the value of the make variable PACKAGE_VERSION # # A special note: if you need `./configure' to be run before # compilation (usually only needed for GNUstep core libraries # themselves), define the following make variable: # # PACKAGE_NEEDS_CONFIGURE = yes # # in your makefile. MAKENSIS=makensis # the GNUstep Windows Installer always puts things in, e.g. /GNUstep/System, # so we need to match these regardless of the local filesystem layout # Hackish way to get the installation dir/domain NSI_DOMAIN=System ifeq ($(GNUSTEP_INSTALLATION_DOMAIN), LOCAL) NSI_DOMAIN=Local endif # FIXME: What should this be on Windows? ifeq ($(GNUSTEP_INSTALLATION_DOMAIN), USER) NSI_DOMAIN=Local endif NSI_BASE=$(dir $(GNUSTEP_APPS)) ABS_OBJ_DIR=$(shell (cd "$(GNUSTEP_BUILD_DIR)"; pwd))/obj GNUSTEP_FILE_LIST = $(ABS_OBJ_DIR)/package/file-list GNUSTEP_DELETE_LIST = $(ABS_OBJ_DIR)/package/delete-list GNUSTEP_RMDIR_LIST = $(ABS_OBJ_DIR)/package/rmdir-list REL_INSTALL_DIR=$(GNUSTEP_OBJ_DIR)/package/$(NSI_BASE) NSI_FILE_NAME=$(PACKAGE_NAME).nsi NSI_FILE=$(NSI_FILE_NAME) NSI_TEMPLATE=$(GNUSTEP_MAKEFILES)/nsi-lib.template ifneq ($(LIBRARY_NAME),) NSI_TEMPLATE=$(GNUSTEP_MAKEFILES)/nsi-lib.template endif ifneq ($(FRAMEWORK_NAME),) NSI_TEMPLATE=$(GNUSTEP_MAKEFILES)/nsi-lib.template endif ifneq ($(APP_NAME),) NSI_TEMPLATE=$(GNUSTEP_MAKEFILES)/nsi-app.template endif NSI_IN=$(PACKAGE_NAME).nsi.in .PHONY: nsifile nsis nsis_package_install nsis_build_filelist nsis_package_install: $(ECHO_NOTHING)if [ -d $(ABS_OBJ_DIR)/package ]; then \ rm -rf $(ABS_OBJ_DIR)/package; fi;$(END_ECHO) $(ECHO_NOTHING)$(MAKE) DESTDIR=$(ABS_OBJ_DIR)/package nsilist=yes install$(END_ECHO) # # Target to build up the file lists # nsis_build_filelist:: $(ECHO_NOTHING)rm -f $(GNUSTEP_FILE_LIST)$(END_ECHO) $(ECHO_NOTHING)rm -f $(GNUSTEP_DELETE_LIST)$(END_ECHO) $(ECHO_NOTHING)rm -f $(GNUSTEP_RMDIR_LIST)$(END_ECHO) $(ECHO_NOTHING)cdir="nosuchdirectory"; \ for file in `$(TAR) Pcf - $(REL_INSTALL_DIR) | $(TAR) t`; do \ wfile=`echo $$file | sed "s,$(REL_INSTALL_DIR),," | tr '/' '\'`; \ wodir=`echo $(REL_INSTALL_DIR) | tr '/' '\'`; \ slashsuffix=`basename $${file}yes`; \ if [ "$$slashsuffix" = yes ]; then \ newdir=`dirname $$file`/`basename $$file`; \ else \ newdir=`dirname $$file`; \ fi; \ if [ "$$file" = "$(REL_INSTALL_DIR)/" ]; then \ :; \ elif [ -d "$$file" ]; then \ cdir=$$newdir; \ echo " RMDir \"\$$DOMDIR\\$$wfile\"" >> $(GNUSTEP_RMDIR_LIST); \ echo " SetOutPath \"\$$DOMDIR\\$$wfile\"" >> $(GNUSTEP_FILE_LIST); \ elif [ $$cdir != $$newdir ]; then \ cdir=$$newdir; \ wdir=`dirname $$file`; \ wdir=`echo $$wdir | sed "s,$(REL_INSTALL_DIR),," | tr '/' '\'`; \ echo " SetOutPath \"\$$DOMDIR\\$$wdir\"" >> $(GNUSTEP_FILE_LIST); \ echo " File \"$$wodir$$wfile\"" >> $(GNUSTEP_FILE_LIST); \ echo " Delete \"\$$DOMDIR\\$$wfile\"" >> $(GNUSTEP_DELETE_LIST); \ else \ echo " Delete \"\$$DOMDIR\\$$wfile\"" >> $(GNUSTEP_DELETE_LIST); \ echo " File \"$$wodir$$wfile\"" >> $(GNUSTEP_FILE_LIST); \ fi; \ done$(END_ECHO) # # The user will type `make nsifile' to generate the nsifile # nsifile: $(NSI_FILE) # # This is the real target # $(NSI_FILE): nsis_package_install nsis_build_filelist $(ECHO_NOTHING)echo "Generating the nsi script..."$(END_ECHO) $(ECHO_NOTHING)rm -f $@$(END_ECHO) $(ECHO_NOTHING)rm -f ${GNUSTEP_RMDIR_LIST}.reverse$(END_ECHO) $(ECHO_NOTHING)sed '1!G;h;$$!d' ${GNUSTEP_RMDIR_LIST} > \ ${GNUSTEP_RMDIR_LIST}.reverse$(END_ECHO) $(ECHO_NOTHING)mv ${GNUSTEP_RMDIR_LIST}.reverse \ ${GNUSTEP_RMDIR_LIST}$(END_ECHO) $(ECHO_NOTHING)if [ -f $(NSI_IN) ]; then \ nsi_infile=${NSI_IN}; \ else \ nsi_infile=${NSI_TEMPLATE}; fi; \ sed -e :t \ -e "s,@gs_domain@,$(NSI_DOMAIN),;t t" \ -e "s,@gs_name@,$(PACKAGE_NAME),;t t" \ -e "s,@gs_version@,$(PACKAGE_VERSION),;t t" \ -e "/@file_list@/ r ${GNUSTEP_FILE_LIST}" \ -e "/@delete_list@/ r ${GNUSTEP_DELETE_LIST}" \ -e "/@rmdir_list@/ r ${GNUSTEP_RMDIR_LIST}" \ $$nsi_infile > $@ \ $(END_ECHO) nsis: nsifile # $(ECHO_NOTHING)echo "Generating the nsis installer..."$(END_ECHO) # ${MAKENSIS} $(NSI_FILE_NAME) �������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/palette.make��������������������������������������������������������������0000664�0001750�0001750�00000005233�11336101653�017466� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/palette.make # # Master Makefile rules to build GNUstep-based palettes. # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Ovidiu Predescu <ovidiu@net-community.com> # Author: Richard Frith-Macdonald <richard@brainstorm.co.uk> # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif PALETTE_NAME:=$(strip $(PALETTE_NAME)) ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) internal-all:: $(GNUSTEP_OBJ_DIR) $(PALETTE_NAME:=.all.palette.variables) else internal-all:: $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-master-palette-all \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) .PHONY: internal-master-palette-all internal-master-palette-all: $(PALETTE_NAME:=.all.palette.variables) endif internal-install:: $(PALETTE_NAME:=.install.palette.variables) internal-uninstall:: $(PALETTE_NAME:=.uninstall.palette.variables) _PSWRAP_C_FILES = $(foreach palette,$(PALETTE_NAME),$($(palette)_PSWRAP_FILES:.psw=.c)) _PSWRAP_H_FILES = $(foreach palette,$(PALETTE_NAME),$($(palette)_PSWRAP_FILES:.psw=.h)) internal-clean:: ifeq ($(GNUSTEP_IS_FLATTENED), no) (cd $(GNUSTEP_BUILD_DIR); \ rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) *.palette/$(GNUSTEP_TARGET_LDIR)) else (cd $(GNUSTEP_BUILD_DIR); \ rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) *.palette) endif internal-distclean:: ifeq ($(GNUSTEP_IS_FLATTENED), no) (cd $(GNUSTEP_BUILD_DIR); rm -rf *.palette) endif PALETTES_WITH_SUBPROJECTS = $(strip $(foreach palette,$(PALETTE_NAME),$(patsubst %,$(palette),$($(palette)_SUBPROJECTS)))) ifneq ($(PALETTES_WITH_SUBPROJECTS),) internal-clean:: $(PALETTES_WITH_SUBPROJECTS:=.clean.palette.subprojects) endif internal-strings:: $(PALETTE_NAME:=.strings.palette.variables) $(PALETTE_NAME): $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.palette.variables$(END_ECHO_RECURSIVE_MAKE) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/test-application.make�����������������������������������������������������0000664�0001750�0001750�00000005327�11336101653�021314� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/test-application.make # # Copyright (C) 1997, 2001, 2002 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. TEST_APP_NAME := $(strip $(TEST_APP_NAME)) ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # Building of test applications works as in application.make, except # you can't install them! ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) internal-all:: $(GNUSTEP_OBJ_DIR) $(TEST_APP_NAME:=.all.test-app.variables) else internal-all:: $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-master-test-app-all \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) .PHONY: internal-master-test-app-all internal-master-test-app-all: $(TEST_APP_NAME:=.all.test-app.variables) endif _PSWRAP_C_FILES = $(foreach app,$(TEST_APP_NAME),$($(app)_PSWRAP_FILES:.psw=.c)) _PSWRAP_H_FILES = $(foreach app,$(TEST_APP_NAME),$($(app)_PSWRAP_FILES:.psw=.h)) internal-clean:: ifeq ($(GNUSTEP_IS_FLATTENED), no) (cd $(GNUSTEP_BUILD_DIR); \ rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) *.$(APP_EXTENSION)/$(GNUSTEP_TARGET_LDIR)) else (cd $(GNUSTEP_BUILD_DIR); \ rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) *.$(APP_EXTENSION)) endif internal-distclean:: ifeq ($(GNUSTEP_IS_FLATTENED), no) (cd $(GNUSTEP_BUILD_DIR); rm -rf *.$(APP_EXTENSION)) endif TEST_APPS_WITH_SUBPROJECTS = $(strip $(foreach test-app,$(TEST_APP_NAME),$(patsubst %,$(test-app),$($(test-app)_SUBPROJECTS)))) ifneq ($(TEST_APPS_WITH_SUBPROJECTS),) internal-clean:: $(TEST_APPS_WITH_SUBPROJECTS:=.clean.test-app.subprojects) internal-distclean:: $(TEST_APPS_WITH_SUBPROJECTS:=.distclean.test-app.subprojects) endif internal-strings:: $(TEST_APP_NAME:=.strings.test-app.variables) $(TEST_APP_NAME): $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.test-app.variables$(END_ECHO_RECURSIVE_MAKE) internal-install:: @ echo Skipping installation of test apps... internal-uninstall:: @ echo Skipping uninstallation of test apps... ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/README��������������������������������������������������������������������0000664�0001750�0001750�00000004730�10377003773�016062� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������The 'Master' invocation is the first time that 'make' is run on any GNUmakefile in your project. During the 'Master' invocation, gnustep-make determines exactly what it needs to build. For example, in the following GNUmakefile - include $(GNUSTEP_MAKEFILES)/common.make LIBRARY_NAME = libquantum TOOL_NAME = create destroy create_OBJC_FILES = create.m destroy_OBJC_FILES = destroy.m libquantum_OBJC_FILES = quantum.m include $(GNUSTEP_MAKEFILES)/library.make include $(GNUSTEP_MAKEFILES)/tool.make the 'Master' invocation will determine that we need to perform the following logically separated operations - type:library name:libquantum operation:all type:tool name:create operation:all type:tool name:destroy operation:all It will then run an 'Instance' invocation for each of these tasks. The 'Instance' invocation is a submake invocation, with some special variables set telling it exactly what task it needs to perform out of all the available ones. The 'Instance' invocation will read the same user GNUmakefile(s) as the 'Master' invocation, but will use different system makefiles. The 'Instance' invocation will actually include and use all the code to perform the required tasks. The role of the 'Master' invocation is very limited. It needs to determine which 'Instance' invocations to run, and then exit. Please note that we have a 'Master' invocation per each GNUmakefile in your project. We have an 'Instance' invocation per each logically separate thing to do in your project. You might wonder why we use 'Instance' invocations at all, and why we don't actually perform each instance task inside the 'Master' invocation itself. The explanation is very technical ... in a few words, we can't because of limitations of make. The problem is that if you have multiple instances of the same type, say multiple libraries or multiple tools or multiple yyys (or all of them), each one might require an arbitrarily complex makefile code to be built, which should change according to the value of xxx_ANY_VARIABLE_HERE, where xxx is the library/tool/yyy name. So we have the problem that we need to execute the same makefile code with an arbitrary value of xxx, for each xxx. That is difficult to do in the same make invocation, because the make grammar doesn't contain any looping construct allowing us to include the same makefile multiple times, one for each value of xxx. What we do to work around this problem is, we run a separate submake invocation per instance to be built. ����������������������������������������gnustep-make-2.7.0/Master/tool.make�����������������������������������������������������������������0000664�0001750�0001750�00000010606�12256221136�017006� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/tool.make # # Master Makefile rules to build GNUstep-based command line tools. # # Copyright (C) 1997, 2001 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif TOOL_NAME := $(strip $(TOOL_NAME)) # We need to create/delete the GNUSTEP_BUILD_DIR/Resources directory # in the Master invocation stage, to prevent different tools, built in # parallel, from trying to create it concurrently and causing race # conditions. But, if no tool has a resource bundle, we don't create # or delete the directory at all. ;-) TOOLS_WITH_RESOURCE_BUNDLES = $(strip $(foreach tool,$(TOOL_NAME),$($(tool)_HAS_RESOURCE_BUNDLE:yes=$(tool)))) ifneq ($(TOOLS_WITH_RESOURCE_BUNDLES),) MAYBE_GNUSTEP_BUILD_DIR_RESOURCES = $(GNUSTEP_BUILD_DIR)/Resources $(GNUSTEP_BUILD_DIR)/Resources: $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) # On distclean, we want to efficiently wipe out the Resources/ # directory. internal-clean:: rm -rf $(MAYBE_GNUSTEP_BUILD_DIR_RESOURCES)/$(TOOL_NAME) else MAYBE_GNUSTEP_BUILD_DIR_RESOURCES = endif ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) # Standard building internal-all:: $(GNUSTEP_OBJ_DIR) $(MAYBE_GNUSTEP_BUILD_DIR_RESOURCES) $(TOOL_NAME:=.all.tool.variables) else # Parallel building. The actual compilation is delegated to a # sub-make invocation where _GNUSTEP_MAKE_PARALLEL is set to yes. # That sub-make invocation will fire off the building of the tools in # parallel. This is great as the entire building (including the # linking) of the tools is then parallelized. # Please note that we need to create the ./obj directory (and the # GNUSTEP_BUILD_DIR/Resources directory if any tool has a resource # bundle) before we fire off all the parallel sub-makes, else they'll # be a race condition to create it. (typically what happens is that # two sub-makes detect that it needs creating, the first one creates # it, and when the second one tries to create it, it will fail as it's # already been created). internal-all:: $(GNUSTEP_OBJ_DIR) $(MAYBE_GNUSTEP_BUILD_DIR_RESOURCES) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-master-tool-all \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) .PHONY: internal-master-tool-all internal-master-tool-all: $(TOOL_NAME:=.all.tool.variables) endif # TODO: Installing and uninstalling in parallel would be extremely # cool, but if you fire off many sub-makes (one for each instance) in # parallel, you end up with a lot of race conditions as the tools are # most often installed in the same directories, which the different # sub-makes will attempt to create concurrently. A better solution # would be to fire off a single Master invocation with # _GNUSTEP_MAKE_PARELLEL enabled, and in there install all the tools # using parallel rules. This requires moving all the tool installation # code from Instance/ to Master/. internal-install:: $(TOOL_NAME:=.install.tool.variables) internal-uninstall:: $(TOOL_NAME:=.uninstall.tool.variables) internal-clean:: internal-distclean:: TOOLS_WITH_SUBPROJECTS = $(strip $(foreach tool,$(TOOL_NAME),$(patsubst %,$(tool),$($(tool)_SUBPROJECTS)))) ifneq ($(TOOLS_WITH_SUBPROJECTS),) internal-clean:: $(TOOLS_WITH_SUBPROJECTS:=.clean.tool.subprojects) internal-distclean:: $(TOOLS_WITH_SUBPROJECTS:=.distclean.tool.subprojects) endif # TODO: It should be really safe to parallelize the 'strings' targets, # but it's worth checking to make sure we're not breaking anything. internal-strings:: $(TOOL_NAME:=.strings.tool.variables) $(TOOL_NAME): $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going $@.all.tool.variables$(END_ECHO_RECURSIVE_MAKE) ��������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/ctool.make����������������������������������������������������������������0000664�0001750�0001750�00000004130�11336101653�017143� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/ctool.make # # Master Makefile rules to build GNUstep-based command line ctools. # # Copyright (C) 1997, 2001 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif CTOOL_NAME := $(strip $(CTOOL_NAME)) ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) internal-all:: $(GNUSTEP_OBJ_DIR) $(CTOOL_NAME:=.all.ctool.variables) else internal-all:: $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-master-ctool-all \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) .PHONY: internal-master-ctool-all internal-master-ctool-all: $(CTOOL_NAME:=.all.ctool.variables) endif internal-install:: $(CTOOL_NAME:=.install.ctool.variables) internal-uninstall:: $(CTOOL_NAME:=.uninstall.ctool.variables) internal-clean:: internal-distclean:: CTOOLS_WITH_SUBPROJECTS = $(strip $(foreach ctool,$(CTOOL_NAME),$(patsubst %,$(ctool),$($(ctool)_SUBPROJECTS)))) ifneq ($(CTOOLS_WITH_SUBPROJECTS),) internal-clean:: $(CTOOLS_WITH_SUBPROJECTS:=.clean.ctool.subprojects) internal-distclean:: $(CTOOLS_WITH_SUBPROJECTS:=.distclean.ctool.subprojects) endif internal-strings:: $(CTOOL_NAME:=.strings.ctool.variables) $(CTOOL_NAME): $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.ctool.variables$(END_ECHO_RECURSIVE_MAKE) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/source-distribution.make��������������������������������������������������0000664�0001750�0001750�00000026024�12333546557�022064� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # source-distribution.make # # Makefile rules to build snapshots from cvs, source .tar.gz etc # # Copyright (C) 2000, 2001 Free Software Foundation, Inc. # # Author: Adam Fedor <fedor@gnu.org> # Author: Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Interesting variables to define in your GNUmakefile: # # PACKAGE_NAME = gnustep-base # PACKAGE_VERSION = 1.0.0 # # For SVN exports, you may want to define something like: # # SVN_MODULE_NAME = base # SVN_BASE_URL = http://svn.gna.org/svn/gnustep/libs # # SVN_TAG_NAME is the same as SVN_MODULE_NAME if not set and is used to # tag and retreive a module version # # For CVS exports, you may want to define something like: # # CVS_MODULE_NAME = base # CVS_FLAGS = -d :pserver:anoncvs@subversions.gnu.org:/cvsroot/gnustep # # CVS_TAG_NAME is the same as CVS_MODULE_NAME if not set and is used to # tag and retreive a module version # # You can also pass/override them on the command line if you want, # make cvs-snapshot CVS_FLAGS="-d :pserver:anoncvs@subversions.gnu.org:/cvsroot/gnustep -z9" # # If you set the RELEASE_DIR variable, all generated .tar.gz files will # be automatically moved to that directory after having being created. # RELEASE_DIR is either an absolute path, or a relative path to the # current directory. # # # By default, .tar.gz archives will be created for distributions. # You can change the compression mechanism used by setting COMPRESSION # to any of the following variables - # # none (no compression used) # gzip (gzip, it's the default) # bzip2 (bzip2) # # For example, 'make dist COMPRESSION=bzip2' creates a .tar.bz2 for # distribution. # # # If you want to omit some files from the distribution archive, add a # .dist-ignore file in the top-level directory of your package, listing # all files (/directories) you want to exclude from distribution. # CVS and .svn files are automatically excluded. # ifeq ($(CVS_MODULE_NAME),) CVS_MODULE_NAME = $(PACKAGE_NAME) endif ifeq ($(CVS_TAG_NAME),) CVS_TAG_NAME = $(CVS_MODULE_NAME) endif ifeq ($(CVS_FLAGS),) CVS_FLAGS = -z3 endif ifeq ($(SVN_MODULE_NAME),) SVN_MODULE_NAME = $(PACKAGE_NAME) endif ifeq ($(SVN_TAG_NAME),) SVN_TAG_NAME = $(SVN_MODULE_NAME) endif # Set the cvs command we use. Most of the times, this is 'cvs' and # you need to do nothing. But you can override 'cvs' with something # else. Useful for example when you need cvs to go through runsocks # you can do make cvs-snapshot CVS='runsocks cvs' ifeq ($(CVS),) CVS = cvs endif ifeq ($(SVN),) SVN = svn endif # # You can set COMPRESSION_PROGRAM and COMPRESSION_EXT by hand if your # COMPRESSION type is not listed here. # # Otherwise, set COMPRESSION to '' or 'gzip' (for gzip), to 'none' # (for no compression), to 'bzip2' (for bzip2), and # COMPRESSION_PROGRAM, COMPRESSION_EXT is set for you. # ifeq ($(COMPRESSION_PROGRAM),) ifeq ($(COMPRESSION), none) COMPRESSION_PROGRAM = cat COMPRESSION_EXT = else ifeq ($(COMPRESSION), bzip2) COMPRESSION_PROGRAM = bzip2 COMPRESSION_EXT = .bz2 else ifeq ($(COMPRESSION),) COMPRESSION_PROGRAM = gzip COMPRESSION_EXT = .gz else ifeq ($(COMPRESSION), gzip) COMPRESSION_PROGRAM = gzip COMPRESSION_EXT = .gz else $(warning "Unrecognized COMPRESSION - available are 'none', 'gzip', 'bzip2'") $(warning "Unrecognized COMPRESSION - using gzip") COMPRESSION_PROGRAM = gzip COMPRESSION_EXT = .gz endif endif endif endif endif # COMPRESSION # Due to peculiarities of some packaging systems or package distribution # systems, we may want to permit customization of tarball version string. ifeq ($(TARBALL_VERSION), ) TARBALL_VERSION := $(PACKAGE_VERSION) endif ifeq ($(TARBALL_VERSION_INCLUDE_SVN_REVISION), yes) # Revision; potentially expensive so expand when used. SVN_REVISION = $(shell svn info . | sed -ne 's/^Revision: //p') TARBALL_VERSION := $(TARBALL_VERSION)~svn$(SVN_REVISION) endif ifeq ($(TARBALL_VERSION_INCLUDE_DATE_TIME), yes) # Expand immediately; it should be constant in the script. DATE_TIME_VERSION := $(shell date +%Y%m%d%H%M) TARBALL_VERSION := $(TARBALL_VERSION)~date$(DATE_TIME_VERSION) endif VERSION_NAME = $(PACKAGE_NAME)-$(TARBALL_VERSION) ARCHIVE_FILE = $(VERSION_NAME).tar$(COMPRESSION_EXT) VERTAG = $(subst .,_,$(PACKAGE_VERSION)) .PHONY: dist cvs-tag cvs-dist cvs-snapshot internal-cvs-export svn-tag svn-tag-stable svn-dist svn-bugfix internal-svn-export svn-snapshot # # Build a .tar.gz with the whole directory tree # dist: distclean $(ECHO_NOTHING)echo "Generating $(ARCHIVE_FILE) in the parent directory..."; \ SNAPSHOT_DIR=`basename $$(pwd)`; \ if [ "$$SNAPSHOT_DIR" != "$(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)~; \ fi; \ mkdir ../$(VERSION_NAME); \ $(TAR) cfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list . | (cd ../$(VERSION_NAME); $(TAR) xf -); \ fi; \ cd ..; \ if [ -f $(ARCHIVE_FILE) ]; then \ echo "$(ARCHIVE_FILE) already exists:"; \ echo "Saving old version in $(ARCHIVE_FILE)~"; \ mv $(ARCHIVE_FILE) $(ARCHIVE_FILE)~; \ fi; \ if [ -f $(VERSION_NAME)/.dist-ignore ]; then \ $(TAR) cfX - $(VERSION_NAME)/.dist-ignore $(VERSION_NAME) \ | $(COMPRESSION_PROGRAM) > $(ARCHIVE_FILE); \ else \ $(TAR) cf - $(VERSION_NAME) \ | $(COMPRESSION_PROGRAM) > $(ARCHIVE_FILE); \ fi; \ if [ "$$SNAPSHOT_DIR" != "$(VERSION_NAME)" ]; then \ rm -rf $(VERSION_NAME); \ fi; \ if [ ! -f $(ARCHIVE_FILE) ]; then \ echo "*Error* creating .tar$(COMPRESSION_EXT) archive"; \ exit 1; \ fi;$(END_ECHO) ifneq ($(RELEASE_DIR),) $(ECHO_NOTHING)echo "Moving $(ARCHIVE_FILE) to $(RELEASE_DIR)..."; \ if [ ! -d $(RELEASE_DIR) ]; then \ $(MKDIRS) $(RELEASE_DIR); \ fi; \ if [ -f $(RELEASE_DIR)/$(ARCHIVE_FILE) ]; then \ echo "$(RELEASE_DIR)/$(ARCHIVE_FILE) already exists:"; \ echo "Saving old version in $(RELEASE_DIR)/$(ARCHIVE_FILE)~";\ mv $(RELEASE_DIR)/$(ARCHIVE_FILE) \ $(RELEASE_DIR)/$(ARCHIVE_FILE)~;\ fi; \ mv ../$(ARCHIVE_FILE) $(RELEASE_DIR)$(END_ECHO) endif # # Tag the SVN source with the $(SVN_TAG_NAME)-$(VERTAG) tag # svn-tag-stable: $(SVN) copy $(SVN_BASE_URL)/$(SVN_MODULE_NAME)/branches/stable $(SVN_BASE_URL)/$(SVN_MODULE_NAME)/tags/$(SVN_TAG_NAME)-$(VERTAG) -m "Tag version $(VERTAG)" svn-tag: $(SVN) copy $(SVN_BASE_URL)/$(SVN_MODULE_NAME)/trunk $(SVN_BASE_URL)/$(SVN_MODULE_NAME)/tags/$(SVN_TAG_NAME)-$(VERTAG) -m "Tag version $(VERTAG)" # # Build a .tar.gz from the SVN sources using revision/tag # $(SVN_TAG_NAME)-$(VERTAG) as for a new release of the package. # svn-dist: EXPORT_SVN_URL = $(SVN_BASE_URL)/$(SVN_MODULE_NAME)/tags/$(SVN_TAG_NAME)-$(VERTAG) svn-dist: internal-svn-export # # Build a .tar.gz from the SVN source from the stable branch # as a bugfix release. # svn-bugfix: EXPORT_SVN_URL = $(SVN_BASE_URL)/$(SVN_MODULE_NAME)/branches/stable svn-bugfix: internal-svn-export # # Build a .tar.gz from the SVN source as they are now # svn-snapshot: EXPORT_SVN_URL = $(SVN_BASE_URL)/$(SVN_MODULE_NAME)/trunk svn-snapshot: internal-svn-export # # Build a .tar.gz from the local SVN tree # svn-export: EXPORT_SVN_URL = . svn-export: internal-svn-export internal-svn-export: $(ECHO_NOTHING)echo "Exporting from module $(SVN_MODULE_NAME) on SVN..."; \ if [ -e $(VERSION_NAME) ]; then \ echo "*Error* cannot export: $(VERSION_NAME) already exists"; \ exit 1; \ fi; \ $(SVN) export $(EXPORT_SVN_URL) $(VERSION_NAME); \ echo "Generating $(ARCHIVE_FILE)"; \ if [ -f $(ARCHIVE_FILE) ]; then \ echo "$(ARCHIVE_FILE) already exists:"; \ echo "Saving old version in $(ARCHIVE_FILE)~"; \ mv $(ARCHIVE_FILE) $(ARCHIVE_FILE)~; \ fi; \ if [ -f $(VERSION_NAME)/.dist-ignore ]; then \ $(TAR) cfX - $(VERSION_NAME)/.dist-ignore $(VERSION_NAME) \ | $(COMPRESSION_PROGRAM) > $(ARCHIVE_FILE); \ else \ $(TAR) cf - $(VERSION_NAME) \ | $(COMPRESSION_PROGRAM) > $(ARCHIVE_FILE); \ fi; \ rm -rf $(VERSION_NAME); \ if [ ! -f $(ARCHIVE_FILE) ]; then \ echo "*Error* creating .tar$(COMPRESSION_EXT) archive"; \ exit 1; \ fi;$(END_ECHO) ifneq ($(RELEASE_DIR),) $(ECHO_NOTHING)echo "Moving $(ARCHIVE_FILE) to $(RELEASE_DIR)..."; \ if [ ! -d $(RELEASE_DIR) ]; then \ $(MKDIRS) $(RELEASE_DIR); \ fi; \ if [ -f $(RELEASE_DIR)/$(ARCHIVE_FILE) ]; then \ echo "$(RELEASE_DIR)/$(ARCHIVE_FILE) already exists:"; \ echo "Saving old version in $(RELEASE_DIR)/$(ARCHIVE_FILE)~";\ mv $(RELEASE_DIR)/$(ARCHIVE_FILE) \ $(RELEASE_DIR)/$(ARCHIVE_FILE)~;\ fi; \ mv $(ARCHIVE_FILE) $(RELEASE_DIR)$(END_ECHO) endif # # Tag the CVS source with the $(CVS_TAG_NAME)-$(VERTAG) tag # cvs-tag: $(CVS) $(CVS_FLAGS) rtag $(CVS_TAG_NAME)-$(VERTAG) $(CVS_MODULE_NAME) # # Build a .tar.gz from the CVS sources using revision/tag # $(CVS_TAG_NAME)-$(VERTAG) # cvs-dist: EXPORT_CVS_FLAGS = -r $(CVS_TAG_NAME)-$(VERTAG) cvs-dist: internal-cvs-export # # Build a .tar.gz from the CVS source as they are now # cvs-snapshot: EXPORT_CVS_FLAGS = -D now cvs-snapshot: internal-cvs-export internal-cvs-export: $(ECHO_NOTHING)echo "Exporting from module $(CVS_MODULE_NAME) on CVS..."; \ if [ -e $(CVS_MODULE_NAME) ]; then \ echo "*Error* cannot export: $(CVS_MODULE_NAME) already exists"; \ exit 1; \ fi; \ $(CVS) $(CVS_FLAGS) export $(EXPORT_CVS_FLAGS) $(CVS_MODULE_NAME); \ echo "Generating $(ARCHIVE_FILE)"; \ mv $(CVS_MODULE_NAME) $(VERSION_NAME); \ if [ -f $(ARCHIVE_FILE) ]; then \ echo "$(ARCHIVE_FILE) already exists:"; \ echo "Saving old version in $(ARCHIVE_FILE)~"; \ mv $(ARCHIVE_FILE) $(ARCHIVE_FILE)~; \ fi; \ if [ -f $(VERSION_NAME)/.dist-ignore ]; then \ $(TAR) cfX - $(VERSION_NAME)/.dist-ignore $(VERSION_NAME) \ | $(COMPRESSION_PROGRAM) > $(ARCHIVE_FILE); \ else \ $(TAR) cf - $(VERSION_NAME) \ | $(COMPRESSION_PROGRAM) > $(ARCHIVE_FILE); \ fi; \ rm -rf $(VERSION_NAME); \ if [ ! -f $(ARCHIVE_FILE) ]; then \ echo "*Error* creating .tar$(COMPRESSION_EXT) archive"; \ exit 1; \ fi;$(END_ECHO) ifneq ($(RELEASE_DIR),) $(ECHO_NOTHING)echo "Moving $(ARCHIVE_FILE) to $(RELEASE_DIR)..."; \ if [ ! -d $(RELEASE_DIR) ]; then \ $(MKDIRS) $(RELEASE_DIR); \ fi; \ if [ -f $(RELEASE_DIR)/$(ARCHIVE_FILE) ]; then \ echo "$(RELEASE_DIR)/$(ARCHIVE_FILE) already exists:"; \ echo "Saving old version in $(RELEASE_DIR)/$(ARCHIVE_FILE)~";\ mv $(RELEASE_DIR)/$(ARCHIVE_FILE) \ $(RELEASE_DIR)/$(ARCHIVE_FILE)~;\ fi; \ mv $(ARCHIVE_FILE) $(RELEASE_DIR)$(END_ECHO) endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/serial-subdirectories.make������������������������������������������������0000664�0001750�0001750�00000005436�11336101653�022340� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # serial-subdirectories.make # # Master Makefile rules to build a set of subdirectories in serial sequence. # # Copyright (C) 2010 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola.pero@meta-innovation.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif # The list of subdirectories is in the makefile variable # SERIAL_SUBDIRECTORIES. SERIAL_SUBDIRECTORIES := $(strip $(SERIAL_SUBDIRECTORIES)) # This file iterates over the SERIAL_SUBDIRECTORIES, in order, steps # in each directory in turn, and runs a submake in there. The project # types in the directories can be anything - tools, documentation, # libraries, bundles, applications, whatever. For example, if your # package is composed by a library and then by some tools using the # library, you could have the library in one directory, the tools in # another directory, and have a top level GNUmakefile which has the # two as SERIAL_SUBDIRECTORIES; they will be built in the specified # order. # # If you do not require the subdirectories to be built in strict # order, you can use parallel-subdirectories.make which will # parallelize the build of the subdirectories if possible. ifneq ($(SERIAL_SUBDIRECTORIES),) # We use a subshell and do the job there to minimize the number of processes we need to spawn # to perform this job. Note that we don't need to pass _GNUSTEP_MAKE_PARALLEL=no to it (as this # shouldn't be a parallel Master invocation), but we do it anyway for safety. internal-all internal-install internal-uninstall \ internal-clean internal-distclean \ internal-check internal-strings:: $(ECHO_NOTHING_RECURSIVE_MAKE)operation=$(subst internal-,,$@); \ abs_build_dir="$(ABS_GNUSTEP_BUILD_DIR)"; \ for directory in $(SERIAL_SUBDIRECTORIES); do \ $(INSIDE_ECHO_MAKING_OPERATION_IN_DIRECTORY) \ if [ "$${abs_build_dir}" = "." ]; then \ gsbuild="."; \ else \ gsbuild="$${abs_build_dir}/$$directory"; \ fi; \ if $(MAKE) -C $$directory -f $(MAKEFILE_NAME) $(GNUSTEP_MAKE_NO_PRINT_DIRECTORY_FLAG) --no-keep-going \ $$operation \ GNUSTEP_BUILD_DIR="$$gsbuild" _GNUSTEP_MAKE_PARALLEL=no; then \ :; else exit $$?; \ fi; \ done$(END_ECHO_RECURSIVE_MAKE) endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/test-library.make���������������������������������������������������������0000664�0001750�0001750�00000005241�12611441235�020450� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/test-library.make # # Master Makefile rules for dejagnu/GNUstep based testing # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Ovidiu Predescu <ovidiu@net-community.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. TEST_LIBRARY_NAME := $(strip $(TEST_LIBRARY_NAME)) ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) internal-all:: $(GNUSTEP_OBJ_DIR) $(TEST_LIBRARY_NAME:=.all.test-lib.variables) else internal-all:: $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-master-test-lib-all \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) .PHONY: internal-master-test-lib-all internal-master-test-lib-all: $(TEST_LIBRARY_NAME:=.all.test-lib.variables) endif internal-check:: $(TEST_LIBRARY_NAME:=.check.test-lib.variables) internal-install:: $(TEST_LIBRARY_NAME:=.install.test-lib.variables) internal-uninstall:: $(TEST_LIBRARY_NAME:=.uninstall.test-lib.variables) _PSWRAP_C_FILES = $(foreach lib,$(TEST_LIBRARY_NAME),$($(lib)_PSWRAP_FILES:.psw=.c)) _PSWRAP_H_FILES = $(foreach lib,$(TEST_LIBRARY_NAME),$($(lib)_PSWRAP_FILES:.psw=.h)) internal-clean:: ifneq ($(_PSWRAP_C_FILES)$(_PSWRAP_H_FILES),) (cd $(GNUSTEP_BUILD_DIR); \ rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES)) endif internal-distclean:: TEST_LIBRARIES_WITH_SUBPROJECTS = $(strip $(foreach test-library,$(TEST_LIBRARY_NAME),$(patsubst %,$(test-library),$($(test-library)_SUBPROJECTS)))) ifneq ($(TEST_LIBRARIES_WITH_SUBPROJECTS),) internal-clean:: $(TEST_LIBRARIES_WITH_SUBPROJECTS:=.clean.test-library.subprojects) internal-distclean:: $(TEST_LIBRARIES_WITH_SUBPROJECTS:=.distclean.test-library.subprojects) endif internal-check:: $(TEST_LIBRARY_NAME:=.check.test-lib.variables) internal-strings:: $(TEST_LIBRARY_NAME:=.strings.test-lib.variables) $(TEST_LIBRARY_NAME): $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.test-lib.variables$(END_ECHO_RECURSIVE_MAKE) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/documentation.make��������������������������������������������������������0000664�0001750�0001750�00000004253�12665543416�020717� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/documentation.make # # Master Makefile rules to build GNUstep-based documentation. # # Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif ifeq ($(documentation),no) internal-all:: $(info Not building documentation on user request) internal-install:: $(info Not building documentation on user request) internal-uninstall:: $(info Not building documentation on user request) internal-clean:: $(info Not building documentation on user request) insternal-distclean:: $(info Not building documentation on user request) else DOCUMENT_NAME := $(strip $(DOCUMENT_NAME)) DOCUMENT_TEXT_NAME := $(strip $(DOCUMENT_TEXT_NAME)) # FIXME/TODO: Parallel build of documentation internal-all:: $(DOCUMENT_NAME:=.all.doc.variables) \ $(DOCUMENT_TEXT_NAME:=.all.textdoc.variables) internal-install:: $(DOCUMENT_NAME:=.install.doc.variables) \ $(DOCUMENT_TEXT_NAME:=.install.textdoc.variables) internal-uninstall:: $(DOCUMENT_NAME:=.uninstall.doc.variables) \ $(DOCUMENT_TEXT_NAME:=.uninstall.textdoc.variables) internal-clean:: $(DOCUMENT_NAME:=.clean.doc.variables) \ $(DOCUMENT_TEXT_NAME:=.clean.textdoc.variables) internal-distclean:: $(DOCUMENT_NAME:=.distclean.doc.variables) \ $(DOCUMENT_TEXT_NAME:=.distclean.textdoc.variables) endif #$(DOCUMENT_NAME): # @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ # $@.all.doc.variables �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/framework.make������������������������������������������������������������0000664�0001750�0001750�00000003777�12611441235�020040� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/framework.make # # Master Makefile rules to build GNUstep-based frameworks. # # Copyright (C) 2000, 2001 Free Software Foundation, Inc. # # Author: Mirko Viviani <mirko.viviani@rccr.cremona.it> # Author: Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif FRAMEWORK_NAME := $(strip $(FRAMEWORK_NAME)) before-build-headers:: after-build-headers:: # A framework has a special task to do before all, which is to build # the public framework headers. build-headers:: before-build-headers $(FRAMEWORK_NAME:=.build-headers.framework.variables) after-build-headers before-all:: build-headers # TODO: Parallel building internal-all:: $(GNUSTEP_OBJ_DIR) $(FRAMEWORK_NAME:=.all.framework.variables) $(FRAMEWORK_NAME:=.all.framework.variables): $(FRAMEWORK_NAME:=.build-headers.framework.variables) internal-check:: $(FRAMEWORK_NAME:=.check.framework.variables) internal-install:: $(FRAMEWORK_NAME:=.install.framework.variables) internal-uninstall:: $(FRAMEWORK_NAME:=.uninstall.framework.variables) internal-clean:: $(FRAMEWORK_NAME:=.clean.framework.variables) internal-distclean:: $(FRAMEWORK_NAME:=.distclean.framework.variables) internal-strings:: $(FRAMEWORK_NAME:=.strings.framework.variables) $(FRAMEWORK_NAME): $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going $@.all.framework.variables$(END_ECHO_RECURSIVE_MAKE) �gnustep-make-2.7.0/Master/application.make����������������������������������������������������������0000664�0001750�0001750�00000007145�11336101653�020337� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # application.make # # Master makefile rules to build GNUstep-based applications. # # Copyright (C) 1997, 2001, 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # Author: Ovidiu Predescu <ovidiu@net-community.com> # Based on the original version by Scott Christley. # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif APP_NAME := $(strip $(APP_NAME)) ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) internal-all:: $(GNUSTEP_OBJ_DIR) $(APP_NAME:=.all.app.variables) else # See tool.make for an explanation of the parallel building. internal-all:: $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-master-app-all \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) .PHONY: internal-master-app-all internal-master-app-all: $(APP_NAME:=.all.app.variables) endif internal-install:: $(APP_NAME:=.install.app.variables) internal-uninstall:: $(APP_NAME:=.uninstall.app.variables) # Compute them manually to avoid having to do an Instance make # invocation just to remove them. _PSWRAP_C_FILES = $(foreach app,$(APP_NAME),$($(app)_PSWRAP_FILES:.psw=.c)) _PSWRAP_H_FILES = $(foreach app,$(APP_NAME),$($(app)_PSWRAP_FILES:.psw=.h)) # The following intricate code computes the list of xxxInfo.plist files # for all applications xxx which have xxx_PREPROCESS_INFO_PLIST=yes. _PLIST_INFO_FILES = $(addsuffix Info.plist,$(foreach app,$(APP_NAME),$(patsubst yes,$(app),$($(app)_PREPROCESS_INFO_PLIST)))) internal-clean:: ifeq ($(GNUSTEP_IS_FLATTENED), no) (cd $(GNUSTEP_BUILD_DIR); \ rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) $(_PLIST_INFO_FILES) *.$(APP_EXTENSION)/$(GNUSTEP_TARGET_LDIR)) else (cd $(GNUSTEP_BUILD_DIR); \ rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) $(_PLIST_INFO_FILES) *.$(APP_EXTENSION)) endif internal-distclean:: ifeq ($(GNUSTEP_IS_FLATTENED), no) (cd $(GNUSTEP_BUILD_DIR); rm -rf *.$(APP_EXTENSION)) endif # The following make trick extracts all apps in APP_NAME for which # the xxx_SUBPROJECTS variable is set to something non-empty. # For those apps (and only for them), we need to run 'clean' and # 'distclean' in subprojects too. # # Please note that newer GNU make has a $(if condition,then,else) # function, which would be so handy here! But unfortunately it's not # available in older GNU makes, so we must not use it. This trick # works around this problem. APPS_WITH_SUBPROJECTS = $(strip $(foreach app,$(APP_NAME),$(patsubst %,$(app),$($(app)_SUBPROJECTS)))) ifneq ($(APPS_WITH_SUBPROJECTS),) internal-clean:: $(APPS_WITH_SUBPROJECTS:=.clean.app.subprojects) internal-distclean:: $(APPS_WITH_SUBPROJECTS:=.distclean.app.subprojects) endif internal-strings:: $(APP_NAME:=.strings.app.variables) # FIXME - GNUSTEP_BUILD_DIR here. Btw should we remove this or # provide a better more general way of doing it ? $(APP_NAME): $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.app.variables$(END_ECHO_RECURSIVE_MAKE) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Master/library.make��������������������������������������������������������������0000664�0001750�0001750�00000005035�12611441235�017474� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # Master/library.make # # Master Makefile rules to build GNUstep-based libraries. # # Copyright (C) 1997, 2001 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Ovidiu Predescu <ovidiu@net-community.com> # Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(RULES_MAKE_LOADED),) include $(GNUSTEP_MAKEFILES)/rules.make endif LIBRARY_NAME := $(strip $(LIBRARY_NAME)) ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no) internal-all:: $(GNUSTEP_OBJ_DIR) $(LIBRARY_NAME:=.all.library.variables) else internal-all:: $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ internal-master-library-all \ GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \ _GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO_RECURSIVE_MAKE) .PHONY: internal-master-library-all internal-master-library-all: $(LIBRARY_NAME:=.all.library.variables) endif internal-check:: $(LIBRARY_NAME:=.check.library.variables) internal-install:: $(LIBRARY_NAME:=.install.library.variables) internal-uninstall:: $(LIBRARY_NAME:=.uninstall.library.variables) _PSWRAP_C_FILES = $(foreach lib,$(LIBRARY_NAME),$($(lib)_PSWRAP_FILES:.psw=.c)) _PSWRAP_H_FILES = $(foreach lib,$(LIBRARY_NAME),$($(lib)_PSWRAP_FILES:.psw=.h)) internal-clean:: ifneq ($(_PSWRAP_C_FILES)$(_PSWRAP_H_FILES),) (cd $(GNUSTEP_BUILD_DIR); \ rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES)) endif internal-distclean:: LIBRARIES_WITH_SUBPROJECTS = $(strip $(foreach library,$(LIBRARY_NAME),$(patsubst %,$(library),$($(library)_SUBPROJECTS)))) ifneq ($(LIBRARIES_WITH_SUBPROJECTS),) internal-clean:: $(LIBRARIES_WITH_SUBPROJECTS:=.clean.library.subprojects) internal-distclean:: $(LIBRARIES_WITH_SUBPROJECTS:=.distclean.library.subprojects) endif internal-strings:: $(LIBRARY_NAME:=.strings.library.variables) $(LIBRARY_NAME): $(GNUSTEP_OBJ_DIR) $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.library.variables$(END_ECHO_RECURSIVE_MAKE) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/Version��������������������������������������������������������������������������0000664�0001750�0001750�00000000603�13074115002�015274� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# This file is included in various Makefile's to get version information. # Compatible with Bourne shell syntax, so it can included there too. # The version number of this release. GNUSTEP_MAKE_MAJOR_VERSION=2 GNUSTEP_MAKE_MINOR_VERSION=7 GNUSTEP_MAKE_SUBMINOR_VERSION=0 GNUSTEP_MAKE_VERSION=${GNUSTEP_MAKE_MAJOR_VERSION}.${GNUSTEP_MAKE_MINOR_VERSION}.${GNUSTEP_MAKE_SUBMINOR_VERSION} �����������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/library-combo.make���������������������������������������������������������������0000664�0001750�0001750�00000010717�12715322050�017337� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # library-combo.make # # Determine which runtime, foundation and gui library to use. # # Copyright (C) 1997, 2001 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. OBJC_LDFLAGS = OBJC_LIBS = # # Set the appropriate ObjC runtime library and other information # # PS: OBJC_LIB_FLAG is set by config.make. ifeq ($(OBJC_RUNTIME_LIB), gnu) OBJC_LDFLAGS = OBJC_LIB_DIR = OBJC_LIBS = $(OBJC_LIB_FLAG) RUNTIME_FLAG = -fgnu-runtime RUNTIME_DEFINE = -DGNU_RUNTIME=1 endif ifeq ($(OBJC_RUNTIME_LIB), ng) OBJC_LDFLAGS = OBJC_LIB_DIR = OBJC_LIBS = $(OBJC_LIB_FLAG) -fobjc-nonfragile-abi RUNTIME_FLAG = -fobjc-runtime=gnustep-1.8 -fblocks RUNTIME_DEFINE = -DGNUSTEP_RUNTIME=1 -D_NONFRAGILE_ABI=1 # Projects may control the use of ARC by defining GS_WITH_ARC=1 # or GS_WITH_ARC=0 at the start of their GNUmakefile, or in the environment, # or as an argument to the 'make' command. # The default behavior is not to use ARC, unless GNUSTEP_NG_ARC is # set to 1 (perhaps in the GNUstep config file; GNUstep.conf). # ifeq ($(GS_WITH_ARC),) ifeq ($(GNUSTEP_NG_ARC), 1) GS_WITH_ARC=1 endif endif ifeq ($(GS_WITH_ARC), 1) RUNTIME_FLAG += -fobjc-arc RUNTIME_DEFINE += -DGS_WITH_ARC=1 endif endif ifeq ($(OBJC_RUNTIME_LIB), nx) RUNTIME_FLAG = -fnext-runtime RUNTIME_DEFINE = -DNeXT_RUNTIME=1 ifeq ($(FOUNDATION_LIB), gnu) OBJC_LIBS = $(OBJC_LIB_FLAG) endif endif ifeq ($(OBJC_RUNTIME_LIB), sun) RUNTIME_DEFINE = -DSun_RUNTIME=1 endif ifeq ($(OBJC_RUNTIME_LIB), apple) RUNTIME_FLAG = -fnext-runtime RUNTIME_DEFINE = -DNeXT_RUNTIME=1 OBJC_LIBS = $(OBJC_LIB_FLAG) endif FND_LDFLAGS = FND_LIBS = # # Set the appropriate Foundation library # ifeq ($(FOUNDATION_LIB), gnu) FOUNDATION_LIBRARY_NAME = gnustep-base FOUNDATION_LIBRARY_DEFINE = -DGNUSTEP_BASE_LIBRARY=1 endif # # Third-party foundations not using make package # Our own foundation will install a base.make file into # $GNUSTEP_MAKEFILES/Additional/ to set the needed flags # ifeq ($(FOUNDATION_LIB), nx) # -framework Foundation is used both to find headers, and to link INTERNAL_OBJCFLAGS += -framework Foundation FND_LIBS = -framework Foundation FND_DEFINE = -DNeXT_Foundation_LIBRARY=1 LIBRARIES_DEPEND_UPON += -framework Foundation BUNDLE_LIBS += -framework Foundation endif ifeq ($(FOUNDATION_LIB), sun) FND_DEFINE = -DSun_Foundation_LIBRARY=1 endif ifeq ($(FOUNDATION_LIB), apple) # -framework Foundation is used only to link FND_LIBS = -framework Foundation FND_DEFINE = -DNeXT_Foundation_LIBRARY=1 LIBRARIES_DEPEND_UPON += -framework Foundation endif # # FIXME - Ask Helge to move this inside his libFoundation, and have # it installed as a $(GNUSTEP_MAKEFILES)/Additional/libFoundation.make # ifeq ($(FOUNDATION_LIB), fd) -include $(GNUSTEP_MAKEFILES)/libFoundation.make FND_DEFINE = -DLIB_FOUNDATION_LIBRARY=1 FND_LIBS = -lFoundation ifeq ($(gc), yes) ifeq ($(LIBFOUNDATION_WITH_GC), yes) ifeq ($(leak), yes) AUXILIARY_CPPFLAGS += -DLIB_FOUNDATION_LEAK_GC=1 else AUXILIARY_CPPFLAGS += -DLIB_FOUNDATION_BOEHM_GC=1 endif endif endif endif GUI_LDFLAGS = GUI_LIBS = # # Third-party GUI libraries - our own sets its flags into # $(GNUSTEP_MAKEFILES)/Additional/gui.make # ifeq ($(GUI_LIB), nx) GUI_DEFINE = -DNeXT_GUI_LIBRARY=1 # -framework AppKit is used both to find headers, and to link INTERNAL_OBJCFLAGS += -framework AppKit GUI_LIBS = -framework AppKit LIBRARIES_DEPEND_UPON += -framework AppKit BUNDLE_LIBS += -framework AppKit endif ifeq ($(GUI_LIB), apple) GUI_DEFINE = -DNeXT_GUI_LIBRARY=1 # -framework AppKit is used only to link GUI_LIBS = -framework AppKit LIBRARIES_DEPEND_UPON += -framework AppKit endif SYSTEM_INCLUDES = $(CONFIG_SYSTEM_INCL) SYSTEM_LDFLAGS = $(LDFLAGS) SYSTEM_LIB_DIR = $(CONFIG_SYSTEM_LIB_DIR) SYSTEM_LIBS = �������������������������������������������������gnustep-make-2.7.0/GNUstep.sh.in��������������������������������������������������������������������0000775�0001750�0001750�00000056557�12737722775�016272� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� # This file must be sourced inside (ba)sh using: . # # @configure_input@ # # Shell initialization for the GNUstep environment. # # Copyright (C) 1997-2008 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Adam Fedor <fedor@gnu.org> # Author: Richard Frith-Macdonald <rfm@gnu.org> # Author: Nicola Pero <nicola.pero@meta-innovation.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Warning - this shell script is delicate, because it is sourced by # using . rather than simply executed. It is sourced because that is # the only way to change the shell variables in the calling # environment. # # Sourcing makes the shell script more delicate for the following reasons: # # * temporary variables are automatically set in the calling # environment! WORKAROUND: we need to unset all them after using # them to avoid polluting the calling environment; # # * not only the exit value of the script, but the exit value of each # command we execute, might be interpreted by the calling # environment. Typically, the calling environment might be using the # shell errexit option ('set -e') in bash parlance, which causes the # shell to exit if any command returns an error value. If this were # a normal script, this option would mean that the shell would exit # if the return value of the whole script were an error value; but # because we are sourced, it is as all the commands in this script # were executed directly in the calling environment, so *all* values # returned by *all* commands must be non-error. [this all typically # happens in rpm builds, where scripts are run with the errexit # option so that errors in scripts abort the build, and now if a # script sources GNUstep.sh, then we are exactly in this situation - # if any command inside GNUstep.sh returns an error value (even if # GNUstep.sh as a whole would be happy and return succes), the whole # rpm build process aborts!]. WORKAROUND: we must make sure all # commands return success - last resorts hacks like 'command || :' # which always returns success whatever command returns. # # If we're running in zsh (auch!) make sure we're using -y # (SH_WORD_SPLIT) else our path manipulations won't work. if [ -n "$ZSH_VERSION" ]; then # If -y is not already set, set it and remember that we # need to set it back to what it was at the end. if ( setopt | grep shwordsplit > /dev/null ); then :; else setopt shwordsplit GS_ZSH_NEED_TO_RESTORE_SET=yes fi fi # When this is set to 'yes', strict gnustep-make v2 compatibility mode # is turned on. GNUSTEP_MAKE_STRICT_V2_MODE=@GNUSTEP_MAKE_STRICT_V2_MODE@ # # Read our configuration files # # Determine the location of the system configuration file if [ -z "$GNUSTEP_CONFIG_FILE" ]; then GNUSTEP_CONFIG_FILE=@GNUSTEP_CONFIG_FILE@ else # Remember that the variable was already set in the environment, and # preserve it at the end of the script. Otherwise we'll unset it to # avoid polluting the environment with our own internal variables. GNUSTEP_KEEP_CONFIG_FILE=yes fi # Determine the location of the user configuration file if [ -z "$GNUSTEP_USER_CONFIG_FILE" ]; then GNUSTEP_USER_CONFIG_FILE=@GNUSTEP_USER_CONFIG_FILE@ else GNUSTEP_KEEP_USER_CONFIG_FILE=yes fi # Read the system configuration file if [ -f "$GNUSTEP_CONFIG_FILE" ]; then . "$GNUSTEP_CONFIG_FILE" fi # FIXME: determining GNUSTEP_HOME GNUSTEP_HOME=~ # Read the user configuration file ... unless it is disabled (ie, set # to an empty string) if [ -n "$GNUSTEP_USER_CONFIG_FILE" ]; then case "$GNUSTEP_USER_CONFIG_FILE" in /*) # An absolute path if [ -f "$GNUSTEP_USER_CONFIG_FILE" ]; then . "$GNUSTEP_USER_CONFIG_FILE" fi;; *) # Something else if [ -f "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" ]; then . "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" fi;; esac fi # Now, set any essential variable (that is not already set) to the # built-in values. if [ "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then # In strict v2 mode, clean these obsolete variables in case the # config file contains them. They shouldn't exist so unsetting # them can't harm. unset GNUSTEP_SYSTEM_ROOT unset GNUSTEP_LOCAL_ROOT unset GNUSTEP_NETWORK_ROOT else # This is deprecated and will be removed if [ -z "$GNUSTEP_SYSTEM_ROOT" ]; then GNUSTEP_SYSTEM_ROOT=@GNUSTEP_SYSTEM_ROOT@ fi # This is deprecated and will be removed if [ -z "$GNUSTEP_LOCAL_ROOT" ]; then GNUSTEP_LOCAL_ROOT=@GNUSTEP_LOCAL_ROOT@ fi # This is deprecated and will be removed if [ -z "$GNUSTEP_NETWORK_ROOT" ]; then GNUSTEP_NETWORK_ROOT=@GNUSTEP_NETWORK_ROOT@ fi export GNUSTEP_SYSTEM_ROOT GNUSTEP_LOCAL_ROOT GNUSTEP_NETWORK_ROOT fi # GNUSTEP_FLATTENED is obsolete, please use GNUSTEP_IS_FLATTENED # instead if [ "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then unset GNUSTEP_FLATTENED else GNUSTEP_FLATTENED=@GNUSTEP_FLATTENED@ export GNUSTEP_FLATTENED fi GNUSTEP_IS_FLATTENED=@GNUSTEP_IS_FLATTENED@ if [ -z "$LIBRARY_COMBO" ]; then LIBRARY_COMBO=@ac_cv_library_combo@ fi if [ ! "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then # Having these variables in the environment is deprecated and will # be removed. But for now, if we are not in strict gnustep-make v2 # mode, then we always export these variables for # backwards-compatibility. export GNUSTEP_IS_FLATTENED LIBRARY_COMBO # Else they are only exported if GNUSTEP_SH_EXPORT_ALL_VARIABLES # is defined - at the end of the script. fi GNUSTEP_HAS_PKGCONFIG=@GNUSTEP_HAS_PKGCONFIG@ if [ -z "$GNUSTEP_MAKEFILES" ]; then GNUSTEP_MAKEFILES=@GNUSTEP_MAKEFILES@ fi export GNUSTEP_MAKEFILES if [ "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then # Make sure this is never set in gnustep-make v2 strict mode; it # might have been set in the config file. unset GNUSTEP_USER_DIR unset GNUSTEP_USER_ROOT else # GNUSTEP_USER_DIR is deprecated and will be removed if [ -z "$GNUSTEP_USER_DIR" ]; then GNUSTEP_USER_DIR=@GNUSTEP_USER_DIR@ fi # # Set GNUSTEP_USER_ROOT which is the variable used in practice. # GNUSTEP_USER_ROOT is deprecated and will be removed # case "$GNUSTEP_USER_DIR" in /*) # An absolute path GNUSTEP_USER_ROOT="$GNUSTEP_USER_DIR";; *) # Something else GNUSTEP_USER_ROOT="$GNUSTEP_HOME/$GNUSTEP_USER_DIR";; esac # This variable was used to set up GNUSTEP_USER_ROOT which is the one # that is actually exported; we can now drop it from the environment. unset GNUSTEP_USER_DIR # This is deprecated and will be removed export GNUSTEP_USER_ROOT fi # If multi-platform support is disabled, just use the hardcoded cpu, # vendor and os determined when gnustep-make was configured. The # reason using the hardcoded ones might be better is that config.guess # and similar scripts might even require compiling test files to # determine the platform - but then you can't source GNUstep.sh # without having gcc, binutils, libc6-dev installed. Which can be a # problem for end-users who are not developers and have no development # tools installed. To prevent this problem, unless we were configured # to determine the platform at run time, by default we use the # hardcoded values of GNUSTEP_HOST*. if [ -z "@GNUSTEP_MULTI_PLATFORM@" ]; then GNUSTEP_HOST=@target@ GNUSTEP_HOST_CPU=@clean_target_cpu@ GNUSTEP_HOST_VENDOR=@clean_target_vendor@ GNUSTEP_HOST_OS=@clean_target_os@ fi # # Determine the host information # if [ -z "$GNUSTEP_HOST" ]; then # Not all shells (e.g. /bin/sh on FreeBSD < 4.0 or ash) have pushd/popd tmpdir=`pwd`; cd /tmp GNUSTEP_HOST=`$GNUSTEP_MAKEFILES/config.guess` GNUSTEP_HOST=`$GNUSTEP_MAKEFILES/config.sub $GNUSTEP_HOST` cd "$tmpdir" unset tmpdir fi if [ -z "$GNUSTEP_HOST_CPU" ]; then GNUSTEP_HOST_CPU=`$GNUSTEP_MAKEFILES/cpu.sh $GNUSTEP_HOST` GNUSTEP_HOST_CPU=`$GNUSTEP_MAKEFILES/clean_cpu.sh $GNUSTEP_HOST_CPU` fi if [ -z "$GNUSTEP_HOST_VENDOR" ]; then GNUSTEP_HOST_VENDOR=`$GNUSTEP_MAKEFILES/vendor.sh $GNUSTEP_HOST` GNUSTEP_HOST_VENDOR=`$GNUSTEP_MAKEFILES/clean_vendor.sh $GNUSTEP_HOST_VENDOR` fi if [ -z "$GNUSTEP_HOST_OS" ]; then GNUSTEP_HOST_OS=`$GNUSTEP_MAKEFILES/os.sh $GNUSTEP_HOST` GNUSTEP_HOST_OS=`$GNUSTEP_MAKEFILES/clean_os.sh $GNUSTEP_HOST_OS` fi if [ ! "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then # These variables are deprecated for usage in shell scripts; you # need to use gnustep-config to get them in a shell script. export GNUSTEP_HOST GNUSTEP_HOST_CPU GNUSTEP_HOST_VENDOR GNUSTEP_HOST_OS # Even in strict gnustep-make v2 mode, we export them at the end # if explicitly requested to export all variables. fi # Now load in all the remaining paths . $GNUSTEP_MAKEFILES/filesystem.sh # No longer needed unset GNUSTEP_HOME # Determine if the paths look like Windows paths that need fixing fixup_paths=no # Here we want to use `...` but the only portable way to use it when # there are "..." inside the expression (ie, it's actually # `..."..."...`) seems to be to use it in variable assignments. So we # use a temporary variable and assign the result of `...` to it path_check=`echo "$GNUSTEP_MAKEFILES" | sed 's|^[a-zA-Z]:/.*$||'` if [ -z "$path_check" ]; then fixup_paths=yes fi unset path_check if [ "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then unset GNUSTEP_PATHLIST else # GNUSTEP_PATHLIST is deprecated and will be removed. # # GNUSTEP_PATHLIST is like an abstract path-like shell variable, which # can be used to search the gnustep directories. # if [ -z "$GNUSTEP_PATHLIST" ]; then GNUSTEP_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_ROOT" "$GNUSTEP_LOCAL_ROOT" "$GNUSTEP_NETWORK_ROOT" "$GNUSTEP_SYSTEM_ROOT" $fixup_paths` export GNUSTEP_PATHLIST fi fi # # Add path to Tools to PATH # # NB: functionally, print_unique_pathlist.sh is mostly used to do the # fixup_paths thing, since duplicated paths will automatically be # checked below when we add them to the PATH. On the other hand, # removing duplicates later can be expensive since we do a echo+grep # for each duplicate. When there are many duplicates it's faster to # use print_unique_pathlist.sh first to remove them and skip the # echos+greps later. GNUSTEP_TOOLS_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_TOOLS" "$GNUSTEP_LOCAL_TOOLS" "$GNUSTEP_NETWORK_TOOLS" "$GNUSTEP_SYSTEM_TOOLS" $fixup_paths` # Now, we check the paths in GNUSTEP_*_ADMIN_TOOLS. These paths # should only be used by Administrators -- normal users don't have # enough powers to use those tools to do useful things. Our test for # being an 'Administrator' is that anyone who can write to an Admin # directory can be considered powerful enough to use those tools. # FIXME: Unfortunately, this doesn't work if the Admin directory # is mounted read-only, so a better test is required! # So we examine GNUSTEP_*_ADMIN_TOOLS; if we find any path in that # list that exists and that we can write to, we add it to our PATH. for dir in "$GNUSTEP_SYSTEM_ADMIN_TOOLS" "$GNUSTEP_NETWORK_ADMIN_TOOLS" "$GNUSTEP_LOCAL_ADMIN_TOOLS" "$GNUSTEP_USER_ADMIN_TOOLS"; do if [ -d "$dir" -a -w "$dir" ]; then # Only add the new dir if it's not already in GNUSTEP_TOOLS_PATHLIST if (echo ":${GNUSTEP_TOOLS_PATHLIST}:" \ |grep -v ":${dir}:" >/dev/null); then GNUSTEP_TOOLS_PATHLIST="$dir:$GNUSTEP_TOOLS_PATHLIST" fi fi done # # And now, we put the results into PATH # old_IFS="$IFS" IFS=: for dir in $GNUSTEP_TOOLS_PATHLIST; do # Prepare the path_fragment if [ "$GNUSTEP_IS_FLATTENED" = "no" ]; then path_fragment="$dir:$dir/${GNUSTEP_HOST_CPU}-${GNUSTEP_HOST_OS}/${LIBRARY_COMBO}:$dir/${GNUSTEP_HOST_CPU}-${GNUSTEP_HOST_OS}" else path_fragment="$dir" fi # Add it to PATH, but only if not already there (eg, typically /usr/bin is already there) if [ -z "$PATH" ]; then PATH="$path_fragment" else if ( echo ":${PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then PATH="${path_fragment}:${PATH}" fi fi done IFS="$old_IFS" unset old_IFS unset dir unset path_fragment unset GNUSTEP_TOOLS_PATHLIST export PATH # Determine the library paths GNUSTEP_LIBRARIES_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARIES" "$GNUSTEP_LOCAL_LIBRARIES" "$GNUSTEP_NETWORK_LIBRARIES" "$GNUSTEP_SYSTEM_LIBRARIES" $fixup_paths` old_IFS="$IFS" IFS=: for dir in $GNUSTEP_LIBRARIES_PATHLIST; do # prepare the path_fragment for libraries and this dir if [ "$GNUSTEP_IS_FLATTENED" = "yes" ]; then path_fragment="$dir" else path_fragment="$dir/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS/$LIBRARY_COMBO:$dir/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS" fi # Append the path_fragment to lib_paths ... in a different way, # depending on the machine we're on. case "$GNUSTEP_HOST_OS" in *nextstep4* | *darwin*) if [ -z "$DYLD_LIBRARY_PATH" ]; then DYLD_LIBRARY_PATH="$path_fragment" else if ( echo ":${DYLD_LIBRARY_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then DYLD_LIBRARY_PATH="$path_fragment:$DYLD_LIBRARY_PATH" fi fi export DYLD_LIBRARY_PATH;; *hpux*) if [ -z "$SHLIB_PATH" ]; then SHLIB_PATH="$path_fragment" else if ( echo ":${SHLIB_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then SHLIB_PATH="$path_fragment:$SHLIB_PATH" fi fi export SHLIB_PATH; if [ -z "$LD_LIBRARY_PATH" ]; then LD_LIBRARY_PATH="$path_fragment" else if ( echo ":${LD_LIBRARY_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then LD_LIBRARY_PATH="$path_fragment:$LD_LIBRARY_PATH" fi fi export LD_LIBRARY_PATH;; *) if [ -z "$LD_LIBRARY_PATH" ]; then LD_LIBRARY_PATH="$path_fragment" else if ( echo ":${LD_LIBRARY_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then LD_LIBRARY_PATH="$path_fragment:$LD_LIBRARY_PATH" fi fi export LD_LIBRARY_PATH;; esac done IFS="$old_IFS" unset old_IFS unset dir unset path_fragment unset GNUSTEP_LIBRARIES_PATHLIST # Determine the framework paths - but only on Darwin since it's the # only platform where this is of any use. case "$GNUSTEP_HOST_OS" in *darwin*) GNUSTEP_FRAMEWORKS_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARY/Frameworks" "$GNUSTEP_LOCAL_LIBRARY/Frameworks" "$GNUSTEP_NETWORK_LIBRARY/Frameworks" "$GNUSTEP_SYSTEM_LIBRARY/Frameworks" $fixup_paths` old_IFS="$IFS" IFS=: for dir in $GNUSTEP_FRAMEWORKS_PATHLIST; do # prepare the path_fragment for frameworks path_fragment="$dir" # The code below has been temporarily removed, because... # 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 if [ -z "$DYLD_FRAMEWORK_PATH" ]; then DYLD_FRAMEWORK_PATH="$path_fragment" else if ( echo ":${DYLD_FRAMEWORK_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then DYLD_FRAMEWORK_PATH="$path_fragment:$DYLD_FRAMEWORK_PATH" fi fi export DYLD_FRAMEWORK_PATH done IFS="$old_IFS" unset old_IFS unset dir unset path_fragment unset GNUSTEP_FRAMEWORKS_PATHLIST ;; *) ;; esac # # Setup Java CLASSPATH and Guile GUILE_LOAD_PATH # GNUSTEP_LIBRARY_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARY" "$GNUSTEP_LOCAL_LIBRARY" "$GNUSTEP_NETWORK_LIBRARY" "$GNUSTEP_SYSTEM_LIBRARY" $fixup_paths` old_IFS="$IFS" IFS=: for dir in $GNUSTEP_LIBRARY_PATHLIST; do path_fragment="$dir/Libraries/Java" if [ -z "$CLASSPATH" ]; then CLASSPATH="$path_fragment" else if ( echo ":${CLASSPATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then CLASSPATH="$path_fragment:$CLASSPATH" fi fi path_fragment="$dir/Libraries/Guile" if [ -z "$GUILE_LOAD_PATH" ]; then GUILE_LOAD_PATH="$path_fragment" else if ( echo ":${GUILE_LOAD_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then GUILE_LOAD_PATH="$path_fragment:$GUILE_LOAD_PATH" fi fi done IFS="$old_IFS" unset old_IFS unset dir unset path_fragment unset GNUSTEP_LIBRARY_PATHLIST export CLASSPATH export GUILE_LOAD_PATH # # Make sure info files, that we install by default into # xxx/Library/Documentation/info, are found by the info browsing # programs. To get this effect, we add those paths to INFOPATH. # GNUSTEP_INFO_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_DOC_INFO" "$GNUSTEP_LOCAL_DOC_INFO" "$GNUSTEP_NETWORK_DOC_INFO" "$GNUSTEP_SYSTEM_DOC_INFO" $fixup_paths` old_IFS="$IFS" IFS=: for dir in $GNUSTEP_INFO_PATHLIST; do if [ -z "$INFOPATH" ]; then # The ':' at the end means to use the built-in paths after searching # the INFOPATH we provide. INFOPATH="${dir}:" else if ( echo ":${INFOPATH}:"\ |grep -v ":${dir}:" >/dev/null ); then INFOPATH="$INFOPATH:${dir}:" fi fi done IFS="$old_IFS" unset old_IFS unset dir unset GNUSTEP_INFO_PATHLIST export INFOPATH if [ "$GNUSTEP_HAS_PKGCONFIG" = "yes" ]; then # Determine the library paths GNUSTEP_PKGCONFIG_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARIES" "$GNUSTEP_LOCAL_LIBRARIES" "$GNUSTEP_NETWORK_LIBRARIES" "$GNUSTEP_SYSTEM_LIBRARIES" $fixup_paths` old_IFS="$IFS" IFS=: GNUSTEP_PKGCONFIG_FRAGMENT=pkgconfig for dir in $GNUSTEP_PKGCONFIG_PATHLIST; do # prepare the path_fragment for libraries and this dir if [ "$GNUSTEP_IS_FLATTENED" = "yes" ]; then path_fragment="$dir/$GNUSTEP_PKGCONFIG_FRAGMENT" else path_fragment="$dir/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS/$LIBRARY_COMBO/$GNUSTEP_PKGCONFIG_FRAGMENT:$dir/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS/$GNUSTEP_PKGCONFIG_FRAGMENT" fi if [ -z "$PKG_CONFIG_PATH" ]; then PKG_CONFIG_PATH="$path_fragment" else if ( echo ":${PKG_CONFIG_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null ); then PKG_CONFIG_PATH="$path_fragment:$PKG_CONFIG_PATH" fi fi export PKG_CONFIG_PATH done IFS="$old_IFS" unset old_IFS unset dir unset path_fragment unset GNUSTEP_PKGCONFIG_FRAGMENT unset GNUSTEP_PKGCONFIG_PATHLIST unset GNUSTEP_HAS_PKGCONFIG fi # [ "$GNUSTEP_HAS_PKGCONFIG" = "yes" ] # # Clean up the environment by removing the filesystem variables. Do # it unless we were explicitly requested not to clean it up! Mostly # gnustep-config will request that the environment is not cleaned up, # so it can print out all of the GNUstep variables. # if [ -n "$GNUSTEP_SH_EXPORT_ALL_VARIABLES" ]; then export GNUSTEP_MAKE_STRICT_V2_MODE unset GNUSTEP_KEEP_CONFIG_FILE GNUSTEP_KEEP_USER_CONFIG_FILE export GNUSTEP_CONFIG_FILE GNUSTEP_USER_CONFIG_FILE export GNUSTEP_USER_DEFAULTS_DIR # Always export these variables even if in strict gnustep-make v2 # mode, so that for example gnustep-config can determine them. export GNUSTEP_IS_FLATTENED LIBRARY_COMBO export GNUSTEP_HOST GNUSTEP_HOST_CPU GNUSTEP_HOST_VENDOR GNUSTEP_HOST_OS export GNUSTEP_SYSTEM_APPS GNUSTEP_SYSTEM_ADMIN_APPS GNUSTEP_SYSTEM_WEB_APPS GNUSTEP_SYSTEM_TOOLS GNUSTEP_SYSTEM_ADMIN_TOOLS export GNUSTEP_SYSTEM_LIBRARY GNUSTEP_SYSTEM_HEADERS GNUSTEP_SYSTEM_LIBRARIES export GNUSTEP_SYSTEM_DOC GNUSTEP_SYSTEM_DOC_MAN GNUSTEP_SYSTEM_DOC_INFO export GNUSTEP_NETWORK_APPS GNUSTEP_NETWORK_ADMIN_APPS GNUSTEP_NETWORK_WEB_APPS GNUSTEP_NETWORK_TOOLS GNUSTEP_NETWORK_ADMIN_TOOLS export GNUSTEP_NETWORK_LIBRARY GNUSTEP_NETWORK_HEADERS GNUSTEP_NETWORK_LIBRARIES export GNUSTEP_NETWORK_DOC GNUSTEP_NETWORK_DOC_MAN GNUSTEP_NETWORK_DOC_INFO export GNUSTEP_LOCAL_APPS GNUSTEP_LOCAL_ADMIN_APPS GNUSTEP_LOCAL_WEB_APPS GNUSTEP_LOCAL_TOOLS GNUSTEP_LOCAL_ADMIN_TOOLS export GNUSTEP_LOCAL_LIBRARY GNUSTEP_LOCAL_HEADERS GNUSTEP_LOCAL_LIBRARIES export GNUSTEP_LOCAL_DOC GNUSTEP_LOCAL_DOC_MAN GNUSTEP_LOCAL_DOC_INFO export GNUSTEP_USER_APPS GNUSTEP_USER_ADMIN_APPS GNUSTEP_USER_WEB_APPS GNUSTEP_USER_TOOLS GNUSTEP_USER_ADMIN_TOOLS export GNUSTEP_USER_LIBRARY GNUSTEP_USER_HEADERS GNUSTEP_USER_LIBRARIES export GNUSTEP_USER_DOC GNUSTEP_USER_DOC_MAN GNUSTEP_USER_DOC_INFO export GNUSTEP_SYSTEM_USERS_DIR GNUSTEP_LOCAL_USERS_DIR GNUSTEP_NETWORK_USERS_DIR else if [ "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then unset GNUSTEP_IS_FLATTENED unset LIBRARY_COMBO unset GNUSTEP_HOST unset GNUSTEP_HOST_CPU unset GNUSTEP_HOST_VENDOR unset GNUSTEP_HOST_OS fi unset GNUSTEP_MAKE_STRICT_V2_MODE # Unset these variables but only if we set them internally; keep # them if they were already in the environment. if [ -z "$GNUSTEP_KEEP_CONFIG_FILE" ]; then unset GNUSTEP_CONFIG_FILE fi unset GNUSTEP_KEEP_CONFIG_FILE if [ -z "$GNUSTEP_KEEP_USER_CONFIG_FILE" ]; then unset GNUSTEP_USER_CONFIG_FILE fi unset GNUSTEP_KEEP_USER_CONFIG_FILE # Always unset these variables unset GNUSTEP_USER_DEFAULTS_DIR unset GNUSTEP_SYSTEM_APPS unset GNUSTEP_SYSTEM_ADMIN_APPS unset GNUSTEP_SYSTEM_WEB_APPS unset GNUSTEP_SYSTEM_TOOLS unset GNUSTEP_SYSTEM_ADMIN_TOOLS unset GNUSTEP_SYSTEM_LIBRARY unset GNUSTEP_SYSTEM_HEADERS unset GNUSTEP_SYSTEM_LIBRARIES unset GNUSTEP_SYSTEM_DOC unset GNUSTEP_SYSTEM_DOC_MAN unset GNUSTEP_SYSTEM_DOC_INFO unset GNUSTEP_NETWORK_APPS unset GNUSTEP_NETWORK_ADMIN_APPS unset GNUSTEP_NETWORK_WEB_APPS unset GNUSTEP_NETWORK_TOOLS unset GNUSTEP_NETWORK_ADMIN_TOOLS unset GNUSTEP_NETWORK_LIBRARY unset GNUSTEP_NETWORK_HEADERS unset GNUSTEP_NETWORK_LIBRARIES unset GNUSTEP_NETWORK_DOC unset GNUSTEP_NETWORK_DOC_MAN unset GNUSTEP_NETWORK_DOC_INFO unset GNUSTEP_LOCAL_APPS unset GNUSTEP_LOCAL_ADMIN_APPS unset GNUSTEP_LOCAL_WEB_APPS unset GNUSTEP_LOCAL_TOOLS unset GNUSTEP_LOCAL_ADMIN_TOOLS unset GNUSTEP_LOCAL_LIBRARY unset GNUSTEP_LOCAL_HEADERS unset GNUSTEP_LOCAL_LIBRARIES unset GNUSTEP_LOCAL_DOC unset GNUSTEP_LOCAL_DOC_MAN unset GNUSTEP_LOCAL_DOC_INFO unset GNUSTEP_USER_APPS unset GNUSTEP_USER_ADMIN_APPS unset GNUSTEP_USER_WEB_APPS unset GNUSTEP_USER_TOOLS unset GNUSTEP_USER_ADMIN_TOOLS unset GNUSTEP_USER_LIBRARY unset GNUSTEP_USER_HEADERS unset GNUSTEP_USER_LIBRARIES unset GNUSTEP_USER_DOC unset GNUSTEP_USER_DOC_MAN unset GNUSTEP_USER_DOC_INFO unset GNUSTEP_SYSTEM_USERS_DIR unset GNUSTEP_LOCAL_USERS_DIR unset GNUSTEP_NETWORK_USERS_DIR fi if [ -n "$GS_ZSH_NEED_TO_RESTORE_SET" ]; then unsetopt shwordsplit fi # EOF �������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/print_unique_pathlist.sh���������������������������������������������������������0000775�0001750�0001750�00000006556�11113760636�020745� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # # print_unique_path_list.sh # # Script for creating unique lists of paths # # Copyright (C) 2007 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola.pero@meta-innovation.com # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # If we knew the shell is bash, we could easily put this code into a # function. (FIXME: check if there is a portable way of doing that) # This is a shell script that takes 5 arguments (a list of 4 paths, # followed by "yes" if it needs to automatically convert the paths # from Win32 to Unix style), and prints the 4 paths separated by ':', # removing duplicates. # The order of the paths printed is the REVERSE of the order in which # they were supplied, this is so that code which iterates through them # prepending them to a PATH will leave them in the correct order in # that path. # GNUSTEP_MAKEFILES needs to be defined when you execute this script. if [ ! $# -eq 5 ]; then echo "Usage: $0 path1 path2 path3 path4 windowsToUnixConversion" echo " prints out path1:path2:path3:path4 removing duplicates" echo " and converting paths from windows to unix if windowsToUnixConversion" echo " is 'yes'" exit 1 fi GS_MAKE_RESULT="" if [ "$5" = "yes" ]; then GS_MAKE_PATH_1=`$GNUSTEP_MAKEFILES/fixpath.sh -u "$1"` GS_MAKE_PATH_2=`$GNUSTEP_MAKEFILES/fixpath.sh -u "$2"` GS_MAKE_PATH_3=`$GNUSTEP_MAKEFILES/fixpath.sh -u "$3"` GS_MAKE_PATH_4=`$GNUSTEP_MAKEFILES/fixpath.sh -u "$4"` else GS_MAKE_PATH_1="$1" GS_MAKE_PATH_2="$2" GS_MAKE_PATH_3="$3" GS_MAKE_PATH_4="$4" fi # Now we basically want to build # GS_MAKE_RESULT="$GS_MAKE_PATH_1:$GS_MAKE_PATH_2:$GS_MAKE_PATH_3:$GS_MAKE_PATH_4" # but we want to remove duplicates. # Start with $GS_MAKE_PATH_1:$GS_MAKE_PATH_2 - or $GS_MAKE_PATH_1 if they are the same if [ "$GS_MAKE_PATH_2" != "$GS_MAKE_PATH_1" ]; then GS_MAKE_RESULT="$GS_MAKE_PATH_1:$GS_MAKE_PATH_2" else GS_MAKE_RESULT="$GS_MAKE_PATH_1" fi # Now append $GS_MAKE_PATH_3 but only if different from what already there if [ "$GS_MAKE_PATH_3" != "$GS_MAKE_PATH_1" ]; then if [ "$GS_MAKE_PATH_3" != "$GS_MAKE_PATH_2" ]; then GS_MAKE_RESULT="$GS_MAKE_RESULT:$GS_MAKE_PATH_3" fi fi # Now append $GS_MAKE_PATH_4 but only if different from what already there if [ "$GS_MAKE_PATH_4" != "$GS_MAKE_PATH_1" ]; then if [ "$GS_MAKE_PATH_4" != "$GS_MAKE_PATH_2" ]; then if [ "$GS_MAKE_PATH_4" != "$GS_MAKE_PATH_3" ]; then GS_MAKE_RESULT="$GS_MAKE_RESULT:$GS_MAKE_PATH_4" fi fi fi # Now reverse the order of the path fragments so that the calling code # can iterate through them and prepend each in turn to another path. old_IFS="$IFS" IFS=: reversed="" for dir in $GS_MAKE_RESULT; do path_fragment="$dir" if [ -z "$reversed" ]; then reversed="$path_fragment" else reversed="$path_fragment:$reversed" fi done GS_MAKE_RESULT="$reversed" IFS="$old_IFS" unset reversed unset old_IFS echo "$GS_MAKE_RESULT" ��������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/native-library.make��������������������������������������������������������������0000664�0001750�0001750�00000003074�10711636501�017527� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # native-library.make # # Makefile rules to build native libraries. # # Copyright (C) 2003 Free Software Foundation, Inc. # # Author: Nicola Pero <n.pero@mi.flashnet.it> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 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 # words, it is to be built as the most appropriate native equivalent # of a traditional unix shared library. # NATIVE_LIBRARY_NAME should be the name of the native library, # without the 'lib'. All the other variables are the same as # the ones used in libraries and frameworks. # To compile something against a native library, you can use # ADDITIONAL_NATIVE_LIBS += MyLibrary # This will be converted into -lMyLibrary link flag on unix/windows, and # into -framework MyLibrary link flag on apple. ifeq ($(FOUNDATION_LIB), apple) FRAMEWORK_NAME = $(NATIVE_LIBRARY_NAME) include $(GNUSTEP_MAKEFILES)/framework.make else LIBRARY_NAME = $(NATIVE_LIBRARY_NAME) include $(GNUSTEP_MAKEFILES)/library.make endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/NEWS�����������������������������������������������������������������������������0000664�0001750�0001750�00000050723�13074115002�014433� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������1 NEWS ****** The currently released version is '2.7.0'. 1.1 Changes in version '2.7.0' ============================== Garbage collection support removed ARC enabled by default if the ng runtime is used Multi-architecture directory layout adjusted to be more Debian compatible Framework support fixes Various other minor bugfixes 1.2 Changes in version '2.6.8' ============================== Configure option '-with-library-combo=ng-gnu-gnu' to use the 'Next Generation' setup of the latest ObjectiveC-2 runtime and compiler features rather than traditional runtime. Requires the new runtime and a recent clang compiler. With the 'ng' runtime in use, you can define GS_WITH_ARC=1 at the start of a makefile, or in your environment, or in the command line arguments to have objC code built using ARC. Command line option 'documentation=no' to suppress builds of documentation. Integration of testsuite for regression/unit testing of libraries using the 'check' target. In your makefile define libraryname_TEST_DIR = TestsSubdirectory Various minor bugfixes, documentation spelling corrections etc. The '-enable-strict-v2-mode' option is now, after eight years, turned on by default (in anticipation of finally removing backward compatibility with version one). WARNING; Packagers please ensure that you update any old gnustep-make version one makefiles. Garbage collection support to be removed at the next release. 1.3 Changes in version '2.6.7' ============================== Improved package building support Improved environment variable support Improved Java support Various minor bugfixes, documentation spelling corrections etc. 1.4 Changes in version '2.6.6' ============================== Debian packaging support Minor bugfixes. 1.5 Changes in version '2.6.5' ============================== Bugfix for non-fragile ABI test Bugfix order if include diorectories for system includes Bugfix equality test for prorocol testing Added minimal test support for .c and .cc files. 1.6 Changes in version '2.6.4' ============================== Test framework extended equality tests. Android build target 1.7 Changes in version '2.6.3' ============================== Minor bugfix release. 1.8 Changes in version '2.6.2' ============================== Added standalone filesystem layout for putting everything in one directory for easy deployment of relocatable. Other bug fixes. 1.9 Changes in version '2.6.1' ============================== Bug fix release. Most notably to fix a problem compiling GNUstep with clang. 1.10 Changes in version '2.6.0' =============================== * The default filesystem layout is now the 'fhs' layout * The default location of the configuration file changed when not installing system-wide * Removed the -with-system-root, -with-local-root and -with-network-root options * Removed obsolete variables (deprecated 4 years ago). * A new test framework is included in the pacakge * objc.make deprecated. Use tool.make instead * -enable-absolute-install-paths is now the default on Darwin 1.11 Changes in version '2.4.0' =============================== * Add -enable-objc-nonfragile-abi flag * New serial-subdirectories.make and parallel-subdirectories.make. * Support for parallel building of subdirectories. * Support for parallel building of different instances. * Support source files in subdirectories without using a subproject. * Support header files in sub-subdirectories. * Batch-compile Java files (much faster). * Changed default compilation flags to -O2 -g. * Fixes for building documentation. * Renamed info files to prevent conflicts. * Updated cygwin support. 1.12 Changes in version '2.2.0' =============================== * New -with-objc-lib-flag for specifying libobjc. * Automatically uses -lobjc_gc with configured with garbage collection * Parallel building supported using e.g. make -j 2 * Use install -p if available. * make uninstall works better now. 1.13 Changes in version '2.0.8' =============================== Minor bug fix to deal with installing in different domains 1.14 Changes in version '2.0.7' =============================== * New configuration file to set default installation * gnustep-make now uses the -no-print-directory flag when invoking make * Files make have same name but different extensions (.c and .m) * Change in path checking algorithm in GNUstep.sh and GNUstep.csh * Test applications linked against gnustep-gui by default 1.15 Changes in version '2.0.6' =============================== * Fixed some spurious rebuilds of plists, and framework headers. * Added the -enable-absolute-install-paths option for Darwin systems. * Install GNUstep.conf in /etc/GNUstep/GNUstep.conf on all systems. 1.16 Changes in version '2.0.5' =============================== * Update C++ and ObjC++ support so that g++ and proper flags are automatically used. * Added a new filesystem layout for Apple Mac OS X and use this by default on this system. * NEEDS_GUI variable added to determine linking behavior against gui library. * New option -enable-strict-v2-mode to test for obsolete variables. * ~/GNUstep/GNUstep.sh is no longer sourced. 1.17 Changes in version '2.0.4' =============================== Fixed a bug finding relative paths on Windows (during configuration). 1.18 Changes in version '2.0.3' =============================== New man pages for tools. Better uninstallation of files Add Windows installer makefile for Applications. 1.19 Changes in version '2.0.2' =============================== Update license to GPLv3. 1.20 Changes in version '2.0.1' =============================== Bug fixes in filesystem layout and framework installation. 1.21 Changes in version '2.0.0' =============================== The Makefile package has had a major makover which befits a major version update. The most user-visible change of this is customized filesystem support. GNUstep can now be configured and installed using any of many typical filesystem layouts, including FHS, Mac, and the traditional GNUstep layout. Due to this change a number of variable names have been changed or deprecated. If you are a developer maintaining makefiles, you should check your makefiles for these variables. Most notibly, variables such as 'GNUSTEP_SYSTEM_ROOT' no longer make any sense, as various directories that were previously in a traditional GNUstep system root directory exist accross multiple directories in disparate places in other filesystem layouts. If you are a user or developer that is just installing GNUstep, read the 'GNUstep-HOWTO' and 'INSTALL' documents to find out new information about configuring and installing make. If you are a developer, read the files 'filesystem' and 'make' for information on new and changed variables. Read the 'RELEASENOTES' file for specific changes in this release and updates you will need to make with this version of make. Various changes include (See 'RELEASENOTES' for more information): * New configure option '--with-layout' to choose different filesystem layouts. * All applications use the '.app' extension even when compiled with debugging or profiling. * Precompiled header support added using xxx_OBJC_PRECOMPILED_HEADERS. * gnustep-config is a program which prints out information on the GNUstep filesystem and variables (Similar to programs like pkg-config). * Better inline messages/help, including printing the version of gnustep-make that is being used * Applications can be started now just using their name (by installing a wrapper in the tools directory). * Versioning of Microsoft Windows DLLs implemented. * Use of 'GNUSTEP_SYSTEM_ROOT' and similar variables deprecated. * Implement use of GNU standard 'DESTDIR' variable. * Object files are now placed in the 'obj' directory. * Static and profile libraries have the same name as normal libraries. * Support for Admin Tools and Admin Apps directories * RPM support rewritten * Microsoft Windows support updated and extended * Easy consistent way to link non-installed frameworks by using -Lpath_to_framework/xxx.framework/$GNUSTEP_TARGET_LDIR * Versioning of library resources * Fixed rebuilding .plist and .palette files 1.22 Changes in version '1.13.0' ================================ Debug libraries now have the same name as normal libraries (i.e. no "_d" suffix). This reduces the possiblity of multiple libraries being loaded into the same executable. Added dragonfly OS to make targets. Spaces and backslashes are no longer allowed in paths used by the make package (e.g. with Windows OS). The libraries can still use native paths. 1.23 Changes in version '1.12.0' ================================ Minor fixes. 1.24 Changes in version '1.11.2' ================================ The 'GNUstep.conf' file is now viewed as the essential determination of the install location for GNUstep libraries, tools and other files. During configuration, this file is read, if it exists, to determine this information. This can still be overriden with environment and command line options, however. See the filesystem documentation in the GNUstep Make Documentation directory for more information. You no longer need to source GNUstep.sh in order to compile GNUstep programs. All that is needed is the definition of GNUSTEP_MAKEFILES. You should also have the GNUstep system tools directory in your path. All netbsd systems are assumed to use ELF libraries. Support for the old static libs version of netbsd was removed. Serveral new options were added to configure to change the location of basic dir locations and basic configuration files. Also, the help was greatly improved. Note that -prefix=/usr/GNUstep/System no longer works. Please use -prefix=/usr/GNUstep or -with-system-root=/usr/GNUstep/System. A few more fixes for cygwin are included as well as Windows resource rules. Support for ObjC++ has been added. You should list the ObjC++ .mm files in the xxx_OBJCC_FILES variable, and put extra ObjC++ flags in xxx_OBJCCFLAGS or ADDITIONAL_OBJCCFLAGS. 1.25 Changes in version '1.11.1' ================================ Part of the previous change was reversed. Now libobjc is still linked with individual applications (as well as the base library), since some operating systems require this to resolve external symbols. However, there is no need to recompile all applications again. Compilation of GNUstep on cygwin was revampled and fixed due to a lot of work by Tom MacSween. 1.26 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. 1.27 Changes in version '1.10.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.) * make_services is not run by GNUstep.sh anymore. You must run this manually now (see the gnustep-gui documentation). * Palettes use a plist instead of a strings format file now for the palette.table file. * You can use the '--enable-native-objc-exceptions' argument to configure to enable use of built in objc exceptions with compilers that support it. 1.28 Changes in version '1.9.2' =============================== * Application and Bundles use the latest convention on Apple. * Improve/Simplify dependency checking when making docs 1.29 Changes in version '1.9.1' =============================== * Remove '--disable-import' option * README.Darwin for darwin/MacOSX install * Framework version and naming clarified. 1.30 Changes in version '1.9.0' =============================== * Support for building in a separate build dir. * Add '--enable-strip-makefiles' option to configure * List of classes in a framework gets written to the plist file. 1.31 Changes in version '1.8.0' =============================== Read the NEWS file for a complete list of changes since the last stable release. The major difference from 1.6.0 is that the locations of certain directories have changed. Generally this will not cause a problem unless your GNUstep directory is shared by multiple machines running this and earlier (1.6.x) versions of the software. 1.32 Changes in version '1.7.4' =============================== Bug fixes. 1.33 Changes in version '1.7.3' =============================== * Adds library combo to Headers directory if not flattened. * Add Markup file (Renaissance) support. 1.34 Changes in version '1.7.2' =============================== -enable-flattened (Flat directory structure) is on by default. * On WIN32 use HOMEPATH in preference to USERPROFILE * netbsd and openbsd compile fixes. 1.35 Changes in version '1.7.1' =============================== Bug fixes. 1.36 Changes in version '1.7.0' =============================== This version contains a major change in the location of certain directories and installed files as detailed in the 'filesystem.texi' document. When installing this version for the first time, all old directories and files in those directories will be moved to the new locations automatically. However, you should update all GNUstep versions on any machine you have them installed on in order to avoid any incompatibilities. Other changes: * Support for preprocessed Info.plists. 1.37 Changes in version '1.6.0' =============================== Make now configures by default for only one system. To compile and run GNUstep for multiple platforms from the same directory, use the configure argument -enable-multi-platform. * Auto-build def file for DLLs * Work natively on MacOSX systems. Now use apple-apple-apple instead of nx-nx-nx on OSX systems. * More efficient checks for re-making a project. 1.38 Changes in version '1.5.1' =============================== * Framework support rewritten, also supports multiple names. * API change: Replace frameowork's xxx_TOOLS by xxx_COPY_INTO_DIR. * Unified link commands between libraries and frameworks (LIB_LINK_*). * New 'make strings' target for localization support. * Speed improvements. * Doesn't try to build OSX bundle on GNUstep and vice versa. * API change: Tools/Subproj can have resources. * API change: TOOL_INSTALL_DIR. 1.39 Changes in version '1.5.0' =============================== * Add NetBSD Elf support 1.40 Changes in version '1.4.0' =============================== * Update Darwin/GNU gcc and Irix targets 1.41 Changes in version '1.3.4' =============================== This is a first prerelease version for 1.4. * Use gnugc-gnu-gnu library combo for garbage collecting version. * Add support for -library-combo in opentool * Change GNUSTEP_PATHPREFIX_LIST to GNUSTEP_PATHLIST * Add verbosity levels. Use make messages=yes for full messages. 1.42 Changes in version '1.3.3' =============================== * Recognizes XXX_STANDARD_INSTALL=no to not do installation. * Updated instructions for MingW/MSYS installation. 1.43 Changes in version '1.3.2' =============================== * Instructions for building on Windows with MSYS * Resolve library dependencies better on Windows * Fix frameworks in RPMs and DEBs * Continued reorganization. 1.44 Changes in version '1.3.0' =============================== The package has gone through an extensive reorganization to break up each sub-make into two separate components. This allows for much simplified code and lots of code sharing between components. As a side effect, it also increased the speed of the code by at least a factor of 2. * Force shared=yes for cygwin and mingw * Bundles copy resources from subprojects. * Better resource management. Resources handled accross all project types. * Simplified and fixed user root location between make and base libraries. * Changed Apps directory to Applications * Fixes for MacOSX, MingW 1.45 Changes in version '1.2.1' =============================== * the source distribution code has been rewritten to be more general and extended. Packages built using gnustep-make now automatically have handy targets building tarballs from sources or from CVS imports. * implemented support for auto-dependencies, which means that any object file automatically depends on all the header files which were used to build it. Only works with newer compilers. * implemented INSTALL_AS_USER and INSTALL_AS_GROUP. * implemented a strip=yes option. * various bug fixes and minor improvements. 1.46 Changes in version '1.2.0' =============================== * The core rules and internals of gnustep-make have been fundamentally redesigned and rewritten. notably, gnustep-make now works using only a single recursive sub-make invocation rather than two, which makes it consistently faster and simpler in all circumstances. * The clean rules have been heavily optimized - they no longer use recursive sub-make invocations at all and so they are really fast. * Many improvements to java support. Optimized management of nested classes * Better conformance to make conventions. * File specific compilation flags * Fixed darwin support * Support for C++ files. * Made use of library installation dir consistent with other installation. * Much improved Windows path support 1.47 Changes in version '1.0.1' =============================== * Support for Java tools. * Build GUI backend as a bundle (default). * Remove backend part of LIBRARY_COMBO. * Fixes to run on FreeBSD, Solaris. 1.48 Changes in version '1.0.0' =============================== * Optimizations that in many cases more than double the speed. * Added preliminary darwin support. * rpm packeing improvements. * Better checking for mingw and cygwin 1.49 Changes in version '0.9.2' =============================== * HOWTO and faq files moved from core package to here * Configurable GNUSTEP_LOCAL_ROOT and GNUSTEP_NETWORK_ROOT 1.50 Changes in version '0.9.1' =============================== Make has been reoganized so that it only relies on libraries and other things that are necessary for the Makefile package itself. Any libraries wanting to add extra package information can do so by installing a make stub in the 'Additional' directory. This greatly simplifies compilation and packaging. * Javadoc support added. * debian directory added for dpkg * RPM support rewritten from scratch. 1.51 Changes in version '0.9.0' =============================== ffcall library is highly recommended for use with the GNUstep base library. You need to have installed it prior to configuring the Makefile package. See the INSTALL file. * Support for automatically generating RPM spec files. * Build suitable files for MacOS bundles * Add option for flattened directory structure. * LaText documentation support. * Added support for Frameworks 1.52 Noteworthy changes in version '0.6.6' ========================================== The GNUstep system libraries are now installed in a separate system root directory (default /usr/GNUstep/System) rather than the GNUstep root directory (default /usr/GNUstep). You can revert to the old behavior using a configure option '--without-system-root'. We also recommend removing any previous GNUstep versions before installing the new one in order to avoid problems with the system finding the correct binary and/or library. * Support for Windows compilation (cygwin and mingw) and DLL creation and usage. * Java support rewritten and extended. ���������������������������������������������gnustep-make-2.7.0/test-application.make������������������������������������������������������������0000664�0001750�0001750�00000001673�10711636501�020062� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # test-application.make # # Makefile rules to build GNUstep-based test applications. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/test-application.make else ifeq ($(GNUSTEP_TYPE),test_app) include $(GNUSTEP_MAKEFILES)/Instance/test-application.make endif endif ���������������������������������������������������������������������gnustep-make-2.7.0/README���������������������������������������������������������������������������0000664�0001750�0001750�00000004551�13074115002�014612� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������1 GNUstep makefile package ************************** Here is some introductory info to get you started: 1.1 What is the GNUstep makefile package? ========================================= The makefile package is a simple, powerful and extensible way to write makefiles for a GNUstep-based project. It allows the user to write a project without having to deal with the complex issues associated with configuration, building, installation, and packaging. It also allows the user to easily create cross-compiled binaries. 1.2 Information =============== The file 'NEWS' has this packages feature history. The files 'INSTALL' or 'GNUstep-HOWTO' give instructions for installing the packages. Also see the 'machines' documentation and various machine specific READMEs in the Documentation directory. Files in the 'Documentation' directory have information on the design of the Makefile system and how to write your own makefiles that work with it. 1.3 License =========== The GNUstep libraries are covered under the GNU Lesser Public License. This means you can use these libraries in any program (even non-free programs). If you distribute the libraries along with your program, you must make the improvements you have made to the libraries freely available. You should read the COPYING.LIB file for more information. GNUstep tools, test programs, and other files are covered under the 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. The GNUstep make package is licensed under the GNU GPL. 1.4 History =========== The GNUstep makefile package was designed by Scott Christley and Ovidiu Predescu. Flags for building shared libraries and bundles on several systems were originally identified by Mircea Oancea <mircea@pathcom.com>. Richard Frith-Macdonald <richard@brainstorm.co.uk> also contributed with ideas. Nicola Pero <nicola@brainstorm.co.uk> rewrote much of the rule procedures to increase the speed of the package by over a factor of 7. He also rewrote much of the rest of the system to make it simpler and more effective. 1.5 How can you help? ===================== * Give us feedback! Tell us what you like; tell us what you think could be better. Send bug reports to <bug-gnustep@gnu.org>. �������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/install-sh�����������������������������������������������������������������������0000775�0001750�0001750�00000004212�10377003773�015746� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5; it is not part of GNU. # # $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $ # # This script is compatible with the BSD install script, but was written # from scratch. # # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" instcmd="$cpprog" chmodcmd="" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; *) if [ x"$src" = x ] then src=$1 else dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` fi # Make a temp file name in the proper directory. dstdir=`dirname $dst` dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp # and set any options; do chmod last to preserve setuid bits if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; fi if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; fi if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; fi if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; fi # Now rename the file to the real destination. $doit $rmcmd $dst $doit $mvcmd $dsttmp $dst exit 0 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/GNUstep-HOWTO��������������������������������������������������������������������0000664�0001750�0001750�00000112323�11123543630�016102� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� GNUstep HOWTO ************* Last Update: 20 December 2008 This document explains how to build the different components of the GNUstep core libraries and GNUstep Launchpad. Copyright (C) 1996 - 2007 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Public License, Version 1.0 or any later version published by the Free Software Foundation. 1 Introduction ************** This document explains how to build the GNUstep core libraries. The core libraries, along with associated tools and other files provide everything necessary for a working GNUstep system. In order to easily compile and debug GNUstep projects, you will need the GNU Objective-C compiler `GCC' as well as various other GNU packages. You will need at least 80Mb of hard disk space (150Mb prefered) in order to compile the GNUstep core libraries. 2 Summary ********* In order to compile the libraries, you need to compile and install the following packages first (if you don't already have them): * gcc (Version 2.95 or greater, 3.0.4 or greater recommended) * GNU make (Version 3.75 or greater) * gdb (Version 6.0 or greater recommended), if you plan to do any debugging You may also need to install some of the following libraries and packages described below. Most of these packages are optional, but some are required. `ffcall libraries (HIGHLY RECOMMENDED)' This is a library that provides stack-frame handling for NSInvocation and NSConnection. This library is highly recommended. The previous builtin method for stack frame handling is no longer supported and may be removed in the future. 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. `libffi library (ALTERNATIVE RECOMMENDATION)' This is a library that provides stack frame handling for NSInvocation and NSConnection similar to ffcall. Use this instead of ffcall. You don't need both. `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 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. `openssl (OPTIONAL)' The openssl library is used to provide support for https connections by the NSURL and HSURLHandle classes. This functionality is compiled as a separate bundle since the OpenSSL license is not compatible with GPL, and in the hopes that if someone writes an openssl replacement, it can quickly be used by creating another bundle. `libiconv (OPTIONAL)' Note: Do not install this library unless you are sure you need it. You probably don't need it except perhaps on MinGW. Unicode support functions (iconv) come with glibc version 2.1 or greater. If you don't have glibc (try iconv -version), you can get the separate libiconv library from `http://clisp.cons.org/~haible/packages-libiconv.html'. However, neither one is required to use GNUstep. `The TIFF library (libtiff) (Version 3.4beta36 or greater) (REQUIRED)' The GUI library uses this to handle loading and saving TIFF images. `The JPEG library (libjpeg) (RECOMMENDED)' The GUI library uses this to handle loading JPEG images. `The PNG library (libpng) (RECOMMENDED)' The GUI library uses this to handle loading PNG images. `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. Use v19, which has several API changes since the previous version. v19 hasn't actually been formally released, but several distributions (SuSE, etc) use it anyway. `freetype2 (RECOMMENDED, REQUIRED for art backend)' This is used for font information. Freetype2 cache API is in flux. GNUstep tries to account for this, but if you get errors about undefined FTC_ symbols, you might be using an unsupported version of freetype. `libart_lgpl2 (REQUIRED for art backend only)' Drawing library for the art backend. `WindowMaker (Version >= 0.62) (OPTIONAL)' GNUstep and WindowMaker work together to provide a consistant interface. Although it is not required, GNUstep will work much better if you use it with the WindowMaker window manager. Get WindowMaker from `http://www.windowmaker.info'. `gnustep-objc package (REQUIRED BUT ONLY for gcc version < 3.0 or MINGW/Cygwin)' Note: Do not install this library unless you are sure you need it. 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 is compiled as a shared library. It is available at `ftp://ftp.gnustep.org/pub/gnustep/libs' which compiles using the GNUstep Makefile package (so you don't have to get the entire gcc dist). Make sure to set the THREADING variable in the GNUmakefile. It's possible to compile the library static (make shared=no) and just copy to the place where the gcc libobjc library is (type gcc -v to get this location). Note you have to install gnustep-make (below) before installing this library. `GDB (OPTIONAL)' GDB can be obtained from `ftp://ftp.gnu.org/gnu/gdb'. As of release 6.0, gdb has special support for debugging Objective-C programs. `TeX (OPTIONAL)' You need a TeX implementation, like tetex, to compile some of the documentation (although most of that is available on the web). 3 Compiling and Installing the packages *************************************** Get the following individual packages: * gnustep-make * gnustep-base * gnustep-gui * gnustep-back See `http://www.gnustep.org' for information on where to get these packages. Make sure you install (if necessary) all the previously mentioned libraries first before configuring and building GNUstep. You should install these packages as root (read special note for the gnustep-base library, below, if you cannot do this). For installation on specific systems, read the machine specific instructions at the end of this document or appropriate README files in the gnustep-make Documentation directory (such as README.MingW for Windows). 3.1 Installing the Core Libraries ================================= The GNUstep packages uses the Autoconf mechanism for configuration; it checks some host capabilities which are used by all GNUstep software. The first package you will compile is gnustep-make. To configure gnustep-make just type: ./configure The GNUstep makefile package can be configured to use different types of filesystem layouts. By default, GNUstep is installed with a GNUstep filesystem layout into /usr/GNUstep. That is a good, recommended default if you don't have an opinion on which filesystem layout to use. But you can also install it somewhere else by using the prefix parameter; the following command makes /usr/local/GNUstep the root directory: ./configure --prefix=/usr/local/GNUstep You can also install GNUstep using an FHS layout (or some other filesystem layout of your choice) by using the with-layout parameter; the following command configures GNUstep to use the standard FHS (unix) filesystem layout: ./configure --with-layout=fhs In this document we will always present examples that assume that you are using the default GNUstep filesystem layout in /usr/GNUstep. If you are using a different layout, you will need to make the obvious changes. 3.1.1 Alternate Library Setup ----------------------------- Read the installation instructions in the Makefile package (make) for more installation options. Make sure you use the same configuration options when configuring each GNUstep library. 3.1.2 Building the Package -------------------------- To build the individual packages, use this familiar set of commands for each pacakge (add any additional options you decide upon): ./configure make make install Start with the Makefile Package (gnustep-make). After installing gnustep-make you need to execute GNUstep's shell configuration script, as follows: . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh before proceeding any further. NOTE for gcc 2.X or MinGW users: Now install gnustep-objc. Before building gnustep-objc, edit the `GNUmakefile' and set the THREADING variable to the thread library used on your system (usually its posix, but you can leave it at single if you don't need threads). At this point you should probably re-configure, make and install gnustep-make, so it can pick up on any threading information that gnustep-objc provides. Now install gnustep-base, gnustep-gui and finally gnustep-back. NOTE: If you are trying to install the packages without root permission, you may need to change one thing in the base library. Edit the file gnustep-base/Tools/gdomap.h to uncomment the last line and modify the specified port number to a port which you _know_ is not in use on your network. You should only do this if absolutely necessary since making this change will break communications with any systems where an identical change has not been made. Also, the standard gdomap port is the one officially registered with IANA and is reserved for use by gdomap - it should only be changed if you can't get your system administrator to start the gdomap server using it. 4 Additional Installation ************************* 4.1 Environment Setup ===================== You need to make sure your environment is properly setup in order to compile and run GNUstep software. The steps to setup your environment differ slightly depending on your filesystem layout. There is a way of setting up your environment that always works: sourcing the `GNUstep.sh' shell script before using GNUstep. The shell script `GNUstep.sh' is located in the Makefile package; you may want to add it to your shell startup file (such as `.profile'). For instance, if you installed GNUstep with the default GNUstep filesystem layout in `/usr/GNUstep', then adding . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh in your `.profile' file will work (Note the period at the beginning of the line, and the space between the period and the following path; if you installed GNUstep somewhere else, you need to replace `/usr/GNUstep/System/Library/Makefiles' with the path to your `GNUstep.sh' script). The script defines environment variables that are needed to find GNUstep files and executables. Users of csh need to use the `GNUstep.csh' script. Read the make package `README' for more info. Some systems, like GNU/Linux have an `/etc/profile.d' directory where scripts can be executed automatically. If you want to set up GNUstep for every user on your system, you can try copying/linking the `GNUstep.sh' there. For csh or tcsh, try source /usr/GNUstep/System/Library/Makefiles/GNUstep.csh Finally, in most filesystem configuration it's also possible to manually set up your environment by setting PATH, the linker library paths and the `GNUSTEP_MAKEFILES' variable (instead of using `GNUstep.sh'). For example, on GNU/Linux (with a default GNUstep installation), instead of sourcing `GNUstep.sh' you could manually add the Tools directories to your PATH: PATH="/usr/GNUstep/System/Tools:/usr/GNUstep/Local/Tools:$PATH" manually add `/usr/GNUstep/System/Library/Libraries' and `/usr/GNUstep/Local/Library/Libraries' to your `/etc/ld.so.conf' file (don't forget to run `ldconfig' every time you install a library), and set the environment variable `GNUSTEP_MAKEFILES' when you want to compile something: GNUSTEP_MAKEFILES=/usr/GNUstep/System/Library/Makefiles 4.2 GNUstep Home ================ 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). 4.3 Time Zone ============= 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 `/usr/GNUstep/System/Library/Libraries/gnustep-base/Versions/1.14/Resources/NSTimeZones/zones/' (or equivalent on your system depending on your filesystem layout) for typical time zones. 4.4 GNUstep deamons =================== Set up your system to execute some GNUstep deamons. This is optional because if you don't do this, they will be started automatically when you run your first GNUstep app: * gdomap - Put this in a system startup file, like `/etc/rc.local' or `/etc/rc.d/rc.local' (customize for your system) if [ -f /usr/GNUstep/System/Tools/gdomap ]; then /usr/GNUstep/System/Tools/gdomap fi * gdnc - Start after sourcing `GNUstep.sh' (e.g. in .profile) * 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 5 Test Tools and Applications ***************************** Example applications are located in the gstep-examples package. To build 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 `/usr/GNUstep/System/Tools'). Usage is: openapp application_name [additional arguments to app] Good Luck! 6 Machine Specific Instructions ******************************* \input texinfo Below is a list of machines that people have attempted to compile GNUstep on. GNUstep compiles with little or no trouble on many of the more popular operating systems. Some machines marked with _Unstable_ may have some trouble or may not work at all. Platforms marked _Needs Testing_ are not actively tested by developers and need someone to help with reporting problems and fixes. Platforms marked _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 <bug-gnustep@gnu.org>. 6.1 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 Most likely will not work and is not supported. GCC 2.95.X Support for this compiler is deprecated as of Aug 2006. Mostly likely it will work in the near future and bug fixes will be accepted, but any bugs are considered non-critical. 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. Not supported. GCC 3.0.X A fairly good compiler. 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 Pretty good. GCC 3.3.X Recommended. Fixes some bugs relating to protocols as well as other improvements. GCC 3.4.X Recommended. The #import directive is no longer deprecated as of this version of the compiler. GCC 4.0 Probably OK. Did start triggering compiler errors on parts of base, but there has been a workaround in base for that. Does not work on MacOSX. GCC 4.0.1 Probably OK. This version should work on MacOSX. GCC 4.1.X 4.1.0 and 4.1.1 don't work if you use precompiled headers. 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, `CFLAGS="" ./configure'. Or when building, `make OPTFLAG=""'. Also if you manually upgraded gcc and/or make, we recommend reading the documentation at `http://www.LinuxFromScratch.org' for tips on compiling and installing gcc and make. If you had GNUstep previously installed, make sure you completely remove all of it, including installed init scripts. Support Notes: SUPPORTED Regularly used and tested by developers RELEASE Tested before a release UNSUPPORTED Not regularly used or tested UNSTABLE Has problems either building or running GNUstep or requires special setp procedures to run correctly. 6.2 CentOS/ix86 (_Supported_) ============================= This RedHat variant is well-tested and well-supported (tested at least up to CentOS release 4.4). For more information, please check the section on RedHat/i386 below. 6.3 Darwin/ix86 (_Unsupported_) =============================== Currently tested on Darwin 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 ffcall because libffi hasn't been ported to Darwin x86. SPECIAL INSTRUCTIONS Read the `README.Darwin' file in the gnustep-make/Documentation directory for complete instructions. 6.4 Darwin/PowerPC (_Supported_) ================================ 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, 8.x RECOMMENDED COMPILER FSF gcc 4.x, 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). Apple gcc with Mac OS X 10.4 or later and XCode 2.5 or later EXTRA LIBS NEEDED Use libffi (not ffcall). This should be enabled by default in gnustep-base so you don't have to type -enable-libffi. For 6.x, you need the dlcompat library (from `www.opendarwin.org') to load bundles (not needed for 7.x or later). libjpeg that comes with fink conflicts with the Apple libraries and screw up other apps on Mac OSX (like X11). SPECIAL INSTRUCTIONS Read the `README.Darwin' file in the gnustep-make/Documentation directory for complete instructions. If you compiled FSF gcc by hand, make sure to rename to GNU libobjc library to libobjc-gnu.dylib See also the MacOSX/PowerPC section 6.5 Debian/Alpha (_Unsupported_) ================================ 6.6 Debian/i386 (_Supported_) ============================= Tested on sid. 6.7 Debian/em64t (_Supported_) ============================== Tested on 'unstable'. 6.8 Debian/PowerPC (_Supported_) ================================ Tested on sid. 6.9 Debian/SPARC (_Release_) ============================ Tested on sid. 6.10 FedoraCore/ix86 (_Supported_) ================================== This RedHat variant is well-tested and well-supported (tested at least up to Fedora Core release 6). For more information, please check the section on RedHat/i386 below. 6.11 FreeBSD 5.x (_Supported_) ============================== Tested on 5.0, 5.1, 5.3 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. 6.12 FreeBSD 4.x (_Unsupported_) ================================ SPECIAL INSTRUCTIONS For gcc 3.0.4, make WANT_THREADS_SUPPORT=YES For libxml2 2.4.24, make WITHOUT_PYTHON=YES 6.13 FreeBSD 3.x (_Obsolete_) ============================== Compiles "out of the box" on FreeBSD 3.4. SPECIAL INSTRUCTIONS You need to use gmake not make to compile the GNUstep packages. A special port of gdb can be used with the Objective-C patches from `ftp://ftp.pcnet.com/users/eischen/FreeBSD/gdb-4.17-port.tar.gz' The best compiler for GNUstep is the latest release of the GNU Compiler Collection (GCC). You can find it at `http://egcs.cygnus.com/'. If you want to use the native POSIX threads support from `libc_r' pass `--enable-threads=posix' to configure. This is the recommended option as this is the FreeBSD threads package that gives the best results -with others you may be unable to run some examples like `diningPhilosophers'. The whole compilation process can fail if you have another threads library installed so watch out for installed packages like `pth' and such. Besides the support for libc_r, GNUstep will also look for `pth' and `pcthreads', so if you have installed them and they aren't detected prepare to write a nice bug report. This can be done more much easily by using the port version. Just `cd' to `/usr/ports/lang/egcs' and do a `"make WANT_THREADS=yes install"'. Easy. If configure cannot find tiff.h or the tiff library and you have it installed in a non-standard place (even `/usr/local'), you may need to pass these flags to configure: `CFLAGS="-I/usr/local/include"' and `LDFLAGS="-L/usr/local/lib"'. 6.14 FreeBSD 2.x (_Obsolete,Unstable_) ====================================== SPECIAL INSTRUCTIONS Only static libraries work on this system. Use /stand/sysinstall to install these packages if you have not already done so: gmake (GNU make) gcc 2.8.x Seems to compile ok, but some tests crash. Possibly due to a performace 'hack' in base. Might be a good idea to upgrade to FreeBSD 3.x. You need to use gmake not make to compile the GNUstep packages. 6.15 Gentoo/i686 (_Supported_) ============================== SPECIAL INSTRUCTIONS libffi sometimes causes odd problems. Try to use ffcall. 6.16 Gentoo/PPC (_Supported_) ============================= 6.17 Gentoo/amd64 (_Unsupported_) ================================= 32-bit mode only? 6.18 Gentoo/alpha (_Unsupported_) ================================= 6.19 Gentoo/sparc (_Unsupported_) ================================= 6.20 Irix 6.5/MIPS (_Unsupported_) ================================== RECOMMENDED COMPILER gcc 3.2.1 To use threads, it's necessary to bootstrap a compiler yourself: configure with -enable-threads=posix, that will work as long as you link EVERY objective C executable with -lpthread, no matter what warnings the irix linker produces! EXTRA LIBS NEEDED Unknown 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 link the library by hand. No libffi-support: Use ffcall 6.21 MacOSX/PowerPC (_Release_) =============================== 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. For 10.1.5, you need to add -no-cpp-precomp to CFLAGS (For instance, ./configure CFLAGS="-no-cpp-precomp" ...) EXTRA LIBS NEEDED None. SPECIAL INSTRUCTIONS Warning ! To know how to install a complete GNUstep system on Mac OS X, read the Darwin/PowerPC section. By default, on Mac OS X, only the GNUstep extensions are built. Read the `README.Darwin' file in the gnustep-make/Documentation directory for complete instructions. To build the GNUstep extensions only is useful, when you want to build on Mac OS X, GNUstep related projects like gdl2, etc linked to Cocoa. Xcode project files exist, but they may not be up-to-date. Make sure /usr/sbin is in your path: PATH=$PATH:/usr/sbin Then type: cd make ./configure --with-library-combo=apple-apple-apple make install . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh cd ../base ./configure --with-xml-prefix=/usr --disable-xmltest make debug=yes install On Mac OS X 10.1.5, there is no libxml. Either install libxml2 or configure base with -disable-xml. See also the Darwin/PowerPC section. 6.22 MkLinux/PowerPC (_Unsupported_) ==================================== Tested with R2 RC2 (2004/03/04). 6.23 NetBSD/i386 (_Release_) ============================ 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 works fine (over ffcall). 6.24 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. 6.25 Netwinder (_Unstable_) =========================== RECOMMENDED COMPILER Build #12 of the system. EXTRA LIBS NEEDED Unknown SPECIAL INSTRUCTIONS See `http://www.netwinder.org/~patrix' 6.26 OpenBSD 3.9 (_Unsupported_) ================================= Information for version 3.9 (2006/08/13) Ports at `http://mail.rochester.edu/~asveikau/gnustep-openbsd/' 6.27 OSF/Alpha (_Needs Testing, Unstable_) =========================================== Information is for Version 3.2C RECOMMENDED COMPILER Unknown EXTRA LIBS NEEDED Unknown 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 versions. Linker sometimes fails to find symbols, in which case you may need to link with a library twice. For instance, add an extra -lgnustep-gui in ADDTIONAL_TOOL_LIBS in the GNUmakefile(.preamble). 6.28 RedHat/i386 (_Supported_) ============================== RedHat and variants/clones such as Fedora Core and CentOS are all very well supported and are regularly tested with all GNUstep releases. RECOMMENDED COMPILER The default compiler works very well. EXTRA LIBS NEEDED All extra libs needed are easily available from standard packages; the only tricky one is ffcall. If you don't find an RPM for that one, download it directly from the GNUstep web site (http://www.gnustep.org). SPECIAL INSTRUCTIONS None. 6.29 Slackware/Intel (_Unsupported_) ==================================== 6.30 Slackware/Sparc (Splack) (_Unsupported_) ============================================= Tested with Spalck 8.0 (2005/03/01) 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 6.31 Solaris 2.5.1/Sparc (_Obsolete_) ===================================== This configuration is no longer being tested, but it may still work. RECOMMENDED COMPILER Unknown EXTRA LIBS NEEDED tiff, Don't use the one in /usr/openwin SPECIAL INSTRUCTIONS See the Solaris 2.6 section for more instructions. 6.32 Solaris 2.[678]/Sparc (_Supported_) ======================================== Tested on Solaris version 6, 7, 8 and 9 RECOMMENDED COMPILER gcc 3.2.1 or greater gcc 3.04. Not 3.1 - does not compile parts of GNUstep. EXTRA LIBS NEEDED tiff, Don't use the one in /usr/openwin 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. Some people have reported problems when using binutils assembler and linker. Using the native Solaris assmebler and linker should work fine. Older Instructions: If you are using threads, make sure the Objective-C runtime (libobjc that comes with gcc) is compiled with threads enabled (This is true by default) AND that it is compiled with the _REENTRANT flag defined (This does not seem to be true by default). Or use the gnustep-objc package. Also make sure THREADS is set to 'posix' not 'solaris'. 6.33 Solaris 2.7/Intel (_Unsupported_) ====================================== RECOMMENDED COMPILER Unknown. EXTRA LIBS NEEDED Unknown 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, line 989. Also, configuring gnustep-make with `--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 instructions above for more information. 6.34 Suse 6.x/Intel (_Obsolete_) ================================ GNUstep has been tested on version 6.2-6.4 of Suse RECOMMENDED COMPILER Standard EXTRA LIBS NEEDED None 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 working. 6.35 Suse/Intel (_Supported_) ============================= GNUstep has been tested on version 7.0, 8.0, 8.1, 8.2, 9.0, 9.1, 9.3, 10.1, 11.0 RECOMMENDED COMPILER The default compiler that comes with Susu is fine. Compile with -threads-enabled (non-standard). EXTRA LIBS NEEDED None SPECIAL INSTRUCTIONS Suse 10.1 does not work with the x11 backend. 6.36 Suse 7.x/PPC (_Unsupported_) ================================= GNUstep has been tested on version 7.0 of Suse/PPC 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 None SPECIAL INSTRUCTIONS 6.37 Unixware-2.1.3/Intel (_Unsupported_) ========================================= RECOMMENDED COMPILER Unknown EXTRA LIBS NEEDED Unknown Special Instructions for GNUstep installation on Unixware 2.1 systems 1 Tune the kernel to increase the argument space so that we can pass long command-line argument strings to processes (which the makefiles do) (/etc/conf/bin/idtune ARG_MAX 102400) 2 Install raft of the latest GNU software gzip (you need this to unpack other stuff) make (to build everything) m4 (for autoconf etc) autoconf (if you need to change anything) bison flex binutils (required by gcc if you want to debug) gcc-2.8.1 (configure -with-gnu-as -with-gnu-ld -with-stabs) NB. gcc-2.8.1 needs a fix to __do_global_dtors_aux() in crtstuff.c on Unixware 2.1.3 (and possibly other unixware versions) The fix is already in recent versions of egcs. ================================== static void __do_global_dtors_aux () { static func_ptr *p = __DTOR_LIST__ + 1; static int completed = 0; if (completed) return; while (*p) { p++; (*(p-1)) (); } #ifdef EH_FRAME_SECTION_ASM_OP __deregister_frame_info (__EH_FRAME_BEGIN__); #endif completed = 1; } ====================================== 3 Having got gcc working - it's probably a good idea to rebuild all your GNU software using it! 4 Build gstep as normal. 5 The SIOCGIFCONF ioctl sometimes doesn't work on unixware after applying some of the OS patches. So I have added a '-a' flag to gdomap to give it the name of a file containing IP address and netmask information for the network interfaces on the system. You need to set up a file (I suggest '/etc/gdomap_addresses') containing the information for your machine and modify your system startup files in /etc/rc?.d to run gdomap, telling it to use that file. eg. If your machine has an IP address of '193.111.111.2' and is on a class-C network, your /etc/gdomap_addresses file would contain the line 193.111.111.2 255.255.255.0 and your startup file would contain the lines . /usr/local/GNUstep/Library/Makefiles/GNUstep.sh gdomap -a /etc/gdomap_addresses If you don't set gdomap up correctly, Distributed Objects will not work. 6.38 Windows with CYGWIN (_Unsupported_) ======================================== RECOMMENDED COMPILER gcc 3.3.1 or later (with libobjc and libjava (if using libffi)) EXTRA LIBS NEEDED Objective-C library DLL (`ftp://ftp.gnustep.org/pub/gnustep/windows/cygwin') for shared libs. It's a good idea to remove the libobjc.a that comes with gcc (gcc -v for location) so that it isn't accidentally found. For ffcall, you should get version 1.8b or above (the earlier ones don't compile). There are still some problems with structure passing, but that is generally not supported on any architecture. libffi also works. SPECIAL INSTRUCTIONS Make sure you have good shared libraries for everthing. Sometimes a bad shared library (like libtiff) will cause odd and untraceable problems. See `README.Cygwin' for information on compiling. 6.39 Windows with MinGW (_Supported_) ===================================== RECOMMENDED COMPILER See below. EXTRA LIBS NEEDED See below. SPECIAL INSTRUCTIONS See the `README.MinGW' file located in the gnustep-make Documentation directory for instructions. Windows NT/2000/XP only. Win98 machines and earlier are very buggy and are not supported. Native GUI backend is alpha version. 6.40 Yellowdog/PowerPC (_Unsupported_) ====================================== 7 Getting Libraries via SVN *************************** If you didn't get one of the snapshots, or if you want to be sure to stay on the bleading edge, then you should get the libraries via SVN. Go to `http://www.gnustep.org/resources/sources.html' for information on how to get the sourcecode. If you haven't already done so, change to the directory, where you want the source to reside. To checkout all of the GNUstep repository, type svn co http://svn.gna.org/svn/gnustep/modules To check out only the `core', which contains all the GNUstep core libraries: svn co http://svn.gna.org/svn/gnustep/modules/core After you have checked out the source you can compile it as usual. To update the source, go into the directory of the source tree you want to update, for example, go into 'base', and type: svn update You don't have to re-checkout after you have the source, just update! �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/COPYING��������������������������������������������������������������������������0000664�0001750�0001750�00000104514�10711636501�014774� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the program's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: <program> Copyright (C) <year> <name of author> This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <http://www.gnu.org/licenses/>. The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <http://www.gnu.org/philosophy/why-not-lgpl.html>. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/tool.make������������������������������������������������������������������������0000664�0001750�0001750�00000001624�10711636501�015553� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # tool.make # # Makefile rules to build GNUstep-based command line tools. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/tool.make else ifeq ($(GNUSTEP_TYPE),tool) include $(GNUSTEP_MAKEFILES)/Instance/tool.make endif endif ������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/GNUmakefile.preamble�������������������������������������������������������������0000664�0001750�0001750�00000002167�10377003773�017611� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # GNUmakefile.preamble # # Project specific makefile variables, and additional # # Do not put any GNUmakefile rules in this file, instead they should # be put into GNUmakefile.postamble. # # # Flags dealing with compiling and linking # # Additional flags to pass to the preprocessor ADDITIONAL_CPPFLAGS += # Additional flags to pass to the Objective-C compiler ADDITIONAL_OBJCFLAGS += # Additional flags to pass to the C compiler ADDITIONAL_CFLAGS += # Additional LDFLAGS to pass to the linker ADDITIONAL_LDFLAGS += # Additional include directories the compiler should search ADDITIONAL_INCLUDE_DIRS += # Additional library directories the linker should search ADDITIONAL_LIB_DIRS += # Additional libraries when linking Objective-C programs ADDITIONAL_OBJC_LIBS += # Additional libraries when linking tools ADDITIONAL_TOOL_LIBS += # Additional libraries when linking applications ADDITIONAL_GUI_LIBS += # Libraries that a shared library depends upon LIBRARIES_DEPEND_UPON += # # Flags dealing with installing and uninstalling # # Additional directories to be created during installation ADDITIONAL_INSTALL_DIRS += ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/nsi-lib.template�����������������������������������������������������������������0000664�0001750�0001750�00000007256�11717535034�017046� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������; @gs_name@ Framework installer script ; !define PRODUCT_NAME "@gs_name@" !define PRODUCT_VERSION "@gs_version@" !define PRODUCT_PUBLISHER "GNUstep" !define PRODUCT_WEB_SITE "http://www.gnustep.org" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\GNUstep" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" !define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir" ; MUI 1.67 compatible ------ !include "MUI.nsh" ; MUI Settings !define MUI_ABORTWARNING !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" ; Welcome page !insertmacro MUI_PAGE_WELCOME ; Directory page !insertmacro MUI_PAGE_DIRECTORY ; Start menu page var ICONS_GROUP !define MUI_STARTMENUPAGE_NODISABLE !define MUI_STARTMENUPAGE_DEFAULTFOLDER "GNUstep\Frameworks" !define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}" !insertmacro MUI_PAGE_STARTMENU Framework $ICONS_GROUP ; Instfiles page !insertmacro MUI_PAGE_INSTFILES ; Finish page !define MUI_FINISHPAGE_RUN_NOTCHECKED !insertmacro MUI_PAGE_FINISH ; Uninstaller pages !insertmacro MUI_UNPAGE_INSTFILES ; Language files !insertmacro MUI_LANGUAGE "English" ; Reserve files !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ; MUI end ------ Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "@gs_name@-${PRODUCT_VERSION}-setup.exe" InstallDir "C:\GNUstep" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" ShowInstDetails show ShowUnInstDetails show Var DOMDIR Section "Main" SEC01 SetOverwrite try StrCpy $DOMDIR "$INSTDIR\GNUstep\@gs_domain@" ;@file_list@ SectionEnd Section Uninstall StrCpy $DOMDIR "$INSTDIR\GNUstep\@gs_domain@" ;@delete_list@ ;@rmdir_list@ Delete "$INSTDIR\Uninstall${PRODUCT_NAME}.exe" !insertmacro MUI_STARTMENU_GETFOLDER Framework $ICONS_GROUP Delete "$SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME}.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall\Uninstall${PRODUCT_NAME}.lnk" RMDir "$SMPROGRAMS\$ICONS_GROUP\Uninstall" RMDir "$SMPROGRAMS\$ICONS_GROUP" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" SetAutoClose true SectionEnd Section -AdditionalIcons !insertmacro MUI_STARTMENU_WRITE_BEGIN Framework CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" CreateDirectory "$SMPROGRAMS\$ICONS_GROUP\Uninstall" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall\Uninstall${PRODUCT_NAME}.lnk" "$INSTDIR\Uninstall${PRODUCT_NAME}.exe" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section -Post WriteUninstaller "$INSTDIR\Uninstall${PRODUCT_NAME}.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\Uninstall${PRODUCT_NAME}.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\m.ico" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" SectionEnd Function un.onUninstSuccess HideWindow MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." FunctionEnd Function un.onInit MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2 Abort FunctionEnd ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/openapp.in�����������������������������������������������������������������������0000775�0001750�0001750�00000025277�12733427351�015755� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # @configure_input@ # # Copyright (C) 1997 - 2006 Free Software Foundation, Inc. # # Author: Ovidiu Predescu <ovidiu@net-community.com> # Date: October 1997 # Author: Nicola Pero <n.pero@mi.flashnet.it> # Date: 2002 - 2006 # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Please note that all local variables are prefixed with 'openapp_' to # avoid conflicts. # Try to execute the application passed as argument. The application # is searched through the GNUstep directories if a complete or # relative path name is not specified. The arguments passed after the # application name are passed unmodified to the application. The # option --debug case the application to be launched inside a debugger # (originally we had a separate script, called debugapp, for that). if [ -z "$1" ]; then echo usage: `basename "$0"` [--find] [--debug] application [arguments...] echo `basename "$0"` --help for more help exit 1 fi # Here read all the --find/--debug/--help/etc arguments, up to the # first non-argument. That one is the name of the application we want # to launch. We leave any parameters after the app name unchanged so # that we have them available in $@ to give to the application. while [ x"$1" != x ]; do case "$1" in --help) echo usage: `basename "$0"` [--find] [--debug] application [arguments...] echo echo "application is the complete or relative name of the application" echo "program with or without the .app extension, like Ink.app." echo echo "[arguments...] are the arguments to the application." echo echo "If --find is used, openapp prints out the full path of the application " echo "executable which would be executed, without actually executing it. It" echo "will also list all paths that are attempted." echo echo "If --debug is used, openapp starts the application in the debugger " echo "(by default gdb, but can be changed using the GDB shell variable, " echo "or the --gdb=... argument)." echo echo "A rarely used option is --library-combo=... which can be used" echo "in non-flattened (advanced/non standard) setups to start up" echo "the application using a specified library-combo." echo echo "Invoking this program as 'debugapp' is equivalent to using the --debug" echo "option." exit 0 ;; --find) openapp_only_find=yes; if [ -z "$2" ]; then echo "Missing application name. Please try openapp --help for more help." exit 1 fi shift;; --debug) # debugapp manually sets this variable before invoking openapp. # So if you change this, make sure to update debugapp too. openapp_debug_mode=yes; if [ -z "$2" ]; then echo "Missing application name. Please try openapp --help for more help." exit 1 fi shift;; --gdb=*) GDB=`echo "$1" | sed 's/--gdb=//'` if [ -z "$2" ]; then echo "Missing application name. Please try openapp --help for more help." exit 1 fi shift;; --library-combo=*) # FIXME - Reset the existing library combo environment ? We haven't read # the config file yet, so GNUSTEP_MAKEFILES might not be set yet! :-/ # . $GNUSTEP_MAKEFILES/GNUstep-reset.sh LIBRARY_COMBO=`echo "$1" | sed 's/--library-combo=//'` if [ -z "$2" ]; then echo "Missing application name. Please try openapp --help for more help." exit 1 fi shift;; *) openapp_app="$1"; shift; # Exit from the loop so the remaining arguments are in $@ and we # can pass them unchanged to the application. break;; esac done # Try to determine GNUSTEP_MAKEFILES to source GNUstep.sh if [ -z "$GNUSTEP_CONFIG_FILE" ]; then GNUSTEP_CONFIG_FILE=@GNUSTEP_CONFIG_FILE@ fi if [ -z "$GNUSTEP_USER_CONFIG_FILE" ]; then GNUSTEP_USER_CONFIG_FILE=@GNUSTEP_USER_CONFIG_FILE@ fi if [ -f "$GNUSTEP_CONFIG_FILE" ]; then . "$GNUSTEP_CONFIG_FILE" fi GNUSTEP_HOME=~ if [ -n "$GNUSTEP_USER_CONFIG_FILE" ]; then case "$GNUSTEP_USER_CONFIG_FILE" in /*) # An absolute path if [ -f "$GNUSTEP_USER_CONFIG_FILE" ]; then . "$GNUSTEP_USER_CONFIG_FILE" fi;; *) # Something else if [ -f "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" ]; then . "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" fi;; esac fi if [ -z "$GNUSTEP_MAKEFILES" ]; then GNUSTEP_MAKEFILES="@GNUSTEP_MAKEFILES@" fi # OK, we now have GNUSTEP_MAKEFILES, source GNUstep.sh # Ahm ... TODO: we shouldn't need to source GNUstep.sh if we are # running flattened. :-) Anyway it won't harm (just slow things down a # lot). This must be after parsing the --library-combo parameter. # Also, we'd like to get the GNUSTEP_*_APPS directories so we can # search them, so tell GNUstep.sh to export all variabes. GNUSTEP_SH_EXPORT_ALL_VARIABLES=yes . "$GNUSTEP_MAKEFILES/GNUstep.sh" unset GNUSTEP_SH_EXPORT_ALL_VARIABLES if [ -z "$GNUSTEP_IS_FLATTENED" ]; then GNUSTEP_IS_FLATTENED=@GNUSTEP_IS_FLATTENED@ fi if [ -z "$GDB" ]; then GDB=gdb fi # Remove leading slashes at the end of the application name openapp_app=`echo "$openapp_app" | sed 's%/*$%%'` # Check if the user has provided the .app suffix; if not, add it. # Save the appname (without the .app suffix) if we have it, so # we save a sed (to remove the .app suffix) later on. case "$openapp_app" in *.app) openapp_appname="";; *) openapp_appname="$openapp_app"; openapp_app="$openapp_app.app";; esac case "$openapp_app" in /*) # An absolute path. if [ -n "$openapp_only_find" ]; then echo "Trying $openapp_app..." fi if [ -d "$openapp_app" ]; then openapp_full_appname="$openapp_app" fi ;; */*) # A relative path if [ -n "$openapp_only_find" ]; then echo "Trying $openapp_app..." fi if [ -d "$openapp_app" ]; then openapp_full_appname=`(cd "$openapp_app"; pwd)` fi ;; *) # We should first search the standard GNUstep locations. for openapp_dir in "$GNUSTEP_USER_APPS" "$GNUSTEP_LOCAL_APPS" "$GNUSTEP_NETWORK_APPS" "$GNUSTEP_SYSTEM_APPS"; do # Standard locations ... in $domain_apps/$openapp_app if [ -n "$openapp_only_find" ]; then echo "Trying $openapp_dir/$openapp_app..." fi if [ -d "$openapp_dir/$openapp_app" ]; then openapp_full_appname=`(cd "$openapp_dir/$openapp_app"; pwd)` break fi done if [ -z "$openapp_full_appname" ]; then # Now search the Admin Apps locations ... but only if they are # Administrators. But how do we know if we are an Admin ? We # need a portable way. Our first attempt here is to check if # we can write to an ADMIN directory, we are an Administrator. # So, if any GNUSTEP_*_ADMIN_APPS directory exists and we can # write to it, then we consider us enough powerful to execute # applications from it and search in it. # # FIXME: Unfortunately, this doesn't work if the Admin directory # is mounted read-only, so a better test is required! # for openapp_dir in "$GNUSTEP_USER_ADMIN_APPS" "$GNUSTEP_LOCAL_ADMIN_APPS" "$GNUSTEP_NETWORK_ADMIN_APPS" "$GNUSTEP_SYSTEM_ADMIN_APPS"; do if [ -d "$openapp_dir" -a -w "$openapp_dir" ]; then if [ -n "$openapp_only_find" ]; then echo "Trying $openapp_dir/$openapp_app..." fi if [ -d "$openapp_dir/$openapp_app" ]; then openapp_full_appname=`(cd "$openapp_dir/$openapp_app"; pwd)` break fi fi done # And now search the standard PATH (may include '.') old_IFS="$IFS" IFS=: for openapp_dir in $PATH; do if [ -n "$openapp_only_find" ]; then echo "Trying $openapp_dir/$openapp_app..." fi if [ -d "$openapp_dir/$openapp_app" ]; then openapp_full_appname=`(cd "$openapp_dir/$openapp_app"; pwd)` break fi done IFS="$old_IFS" fi ;; esac if [ -z "$openapp_full_appname" ]; then echo "Can't find the required application: $openapp_app!" if [ -d "./$openapp_app" ]; then echo "There is a $openapp_app in this directory; please use 'openapp ./$openapp_app' if you want to open it!" fi exit 1 fi # get base app name if [ -z "$openapp_appname" ]; then openapp_appname=`echo "$openapp_app" | sed 's/\.app$//'` fi openapp_appname=`basename "$openapp_appname"` if [ -z "$EXEEXT" ]; then EXEEXT=@EXEEXT@ fi if [ -n "$EXEEXT" ]; then openapp_appname="$openapp_appname$EXEEXT" fi if [ "$GNUSTEP_IS_FLATTENED" = "no" ]; then case "$LIBRARY_COMBO" in apple-*) openapp_app_executable="$openapp_full_appname/Contents/MacOS/$openapp_appname";; *) openapp_app_executable="$openapp_full_appname/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS/$LIBRARY_COMBO/$openapp_appname";; esac else case "$LIBRARY_COMBO" in apple-*) openapp_app_executable="$openapp_full_appname/Contents/MacOS/$openapp_appname";; *) openapp_app_executable="$openapp_full_appname/$openapp_appname";; esac fi if [ ! -f "$openapp_app_executable" ]; then echo "Could not find $openapp_app_executable executable/script" exit 1 fi if [ -n "$openapp_only_find" ]; then echo " => Using $openapp_app_executable" exit 0 fi if [ -n "$openapp_debug_mode" ]; then # Search for a core file in the current directory. openapp_corearg= openapp_corefiles="core*" for openapp_corefile in $openapp_corefiles; do if [ -f "$openapp_corefile" ]; then echo "Core image ($openapp_corefile) has been found in working directory. Use it (y/n)? "; # Need an argument here for Solaris read REPLY; if [ $REPLY = y ]; then echo "Using it."; corearg="--core=$openapp_corefile"; break; else echo "Ignoring it."; fi fi done unset openapp_corefile unset openapp_corefiles if [ -z "$openapp_corearg" ]; then # Old versions of gdb don't support --args, so we only use it if # 'gdb --help' lists it. openapp_args= if ("$GDB" --help | grep -e '\-\-args' > /dev/null); then openapp_args="--args" fi # Arguments passed to debugapp are passed over to the # application, in the same way as it happens for openapp. "$GDB" $openapp_args "$openapp_app_executable" "$@" else "$GDB" "$openapp_app_executable" "$openapp_corearg" fi else # non-debug follows exec "$openapp_app_executable" "$@" fi ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/ctool.make�����������������������������������������������������������������������0000664�0001750�0001750�00000001631�10711636501�015714� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # ctool.make # # Makefile rules to build GNUstep-based command line ctools. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/ctool.make else ifeq ($(GNUSTEP_TYPE),ctool) include $(GNUSTEP_MAKEFILES)/Instance/ctool.make endif endif �������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/jni.make�������������������������������������������������������������������������0000664�0001750�0001750�00000003406�12717263316�015366� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # jni.make # # Makefile to include to compile JNI code. # # Copyright (C) 2000 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Include this file if you need to compile JNI code. # This files simply adds automatically the compiler flags to find the # jni headers. # # prevent multiple inclusions ifeq ($(JNI_MAKE_LOADED),) JNI_MAKE_LOADED=yes # Default JAVA_OS = linux # MacOS-X ifeq ($(findstring darwin, $(GNUSTEP_TARGET_OS)), darwin) JAVA_OS = darwin # JNI_INCLUDE_HEADERS = -I/System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Headers JNI_INCLUDE_HEADERS = -I/System/Library/Frameworks/JavaVM.framework/Headers else # Solaris ifeq ($(findstring solaris, $(GNUSTEP_TARGET_OS)), solaris) JAVA_OS = solaris endif # Windows ifeq ($(findstring mingw32, $(GNUSTEP_TARGET_OS)), mingw32) JAVA_OS = win32 else ifeq ($(findstring mingw64, $(GNUSTEP_TARGET_OS)), mingw64) JAVA_OS = win32 endif # Add more platforms here # # This should be where your jni.h and jni_md.h are located. # JNI_INCLUDE_HEADERS = -I$(JAVA_HOME)/include/ \ -I$(JAVA_HOME)/include/$(JAVA_OS) endif ADDITIONAL_INCLUDE_DIRS += $(JNI_INCLUDE_HEADERS) endif # jni.make loaded ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/serial-subdirectories.make�������������������������������������������������������0000664�0001750�0001750�00000002225�11335347545�021111� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*-makefile-*- # serial-subdirectories.make # # Makefile rules to build a set of subdirectories in serial sequence. # # Copyright (C) 2010 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola.pero@meta-innovation.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # This header was introduced in gnustep-make 2.4.0. If you are using # gnustep-make before 2.4.0, you can use aggregate.make which does the # same thing. # prevent multiple inclusions ifeq ($(SERIAL_SUBDIRECTORIES_MAKE_LOADED),) SERIAL_SUBDIRECTORIES_MAKE_LOADED=yes ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/serial-subdirectories.make endif endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/installation-domains.conf��������������������������������������������������������0000664�0001750�0001750�00000005373�11673736166�020764� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������## Introduction # This file is not installed by default because it must only be used # by advanced users and mostly when they are compiling everything from # source. # To use this file, manually copy it into the same directory where the # GNUstep.conf file is installed (by default, /etc/GNUstep/), then # edit it to suit your installation tastes. # This file can be used to change the default installation domains for # GNUstep software. By default, everything is installed into the # Local domain; this file allows you to customize the default # installation domains and specify that some packages are to be # installed by default into System (or Network, or User). # The System domain is normally reserved for prebuilt packages, that # is the components shipped with your GNUstep system. So if you're # building everything from source yourself, the System domain would # never be used. In that case, you can use this file to change the # default installation domain for some GNUstep software, installing # them into System (instead of Local) by default. # This file only specifies the default; you can always install a # specific piece of software into whatever domain you want by using # GNUSTEP_INSTALLATION_DOMAIN as in 'make install # GNUSTEP_INSTALLATION_DOMAIN=LOCAL'. # This file is very dangerous for end-users since they might be # overwriting their System installation if they compile and install # source code downloaded from the internet (eg, if they're trying a # new version of Gorm). Only advanced users should be using it. # Please never ship this file to end-users. Packagers (people # building ready-to-use GNUstep distributions to be distributed to # end-users) must never distribute this file. # If you are an end-user and have found this file shipped with your # GNUstep distribution or gnustep-make binary package, this is a bug # in your GNUstep distribution or package. Please complain to your # packager and put <bug-gnustep@gnu.org> in Cc:. ## The actual file # To be activated, an entry in this list must match the PACKAGE_NAME # as defined in the GNUmakefile of the project. For example, Gorm's # top-level GNUmakefile has the lines # # PACKAGE_NAME = gorm # export PACKAGE_NAME # # so you can have it be installed into System by adding 'gorm' # to the list. # # Please note that any project not explicitly listed here will be # installed into Local by default. GNUSTEP_PACKAGES_TO_INSTALL_INTO_SYSTEM_BY_DEFAULT = \ gnustep-objc \ gnustep-objc2 \ libobjc2 \ toydispatch \ gnustep-base \ gnustep-gui \ gnustep-back \ gorm \ ProjectCenter \ gworkspace \ SystemPreferences GNUSTEP_PACKAGES_TO_INSTALL_INTO_LOCAL_BY_DEFAULT = \ GNUSTEP_PACKAGES_TO_INSTALL_INTO_NETWORK_BY_DEFAULT = \ GNUSTEP_PACKAGES_TO_INSTALL_INTO_USER_BY_DEFAULT = \ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/test-library.make����������������������������������������������������������������0000664�0001750�0001750�00000001663�10711636501�017222� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # test-library.make # # Makefile rules to build GNUstep-based dejagnu testing stuff. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/test-library.make else ifeq ($(GNUSTEP_TYPE),test_lib) include $(GNUSTEP_MAKEFILES)/Instance/test-library.make endif endif �����������������������������������������������������������������������������gnustep-make-2.7.0/documentation.make���������������������������������������������������������������0000664�0001750�0001750�00000001777�10711636501�017460� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # documentation.make # # Makefile rules to build documentation # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/documentation.make else ifeq ($(GNUSTEP_TYPE),doc) include $(GNUSTEP_MAKEFILES)/Instance/documentation.make else ifeq ($(GNUSTEP_TYPE),textdoc) include $(GNUSTEP_MAKEFILES)/Instance/documentation.make endif endif endif �gnustep-make-2.7.0/GNUstep.csh.in�������������������������������������������������������������������0000775�0001750�0001750�00000035464�12737722775�016427� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� # This file must be sourced inside csh using: source # # @configure_input@ # # Shell initialization for the GNUstep environment. # # Copyright (C) 1998-2008 Free Software Foundation, Inc. # # Author: Scott Christley <scottc@net-community.com> # Author: Adam Fedor <fedor@gnu.org> # Author: Richard Frith-Macdonald <rfm@gnu.org> # Author: Nicola Pero <nicola.pero@meta-innovation.com> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # When this is set to 'yes', strict gnustep-make v2 compatibility mode # is turned on. set GNUSTEP_MAKE_STRICT_V2_MODE=@GNUSTEP_MAKE_STRICT_V2_MODE@ # # Read our configuration files # # Determine the location of the system configuration file if ( ! ${?GNUSTEP_CONFIG_FILE} ) then setenv GNUSTEP_CONFIG_FILE "@GNUSTEP_CONFIG_FILE@" else set GNUSTEP_KEEP_CONFIG_FILE=yes endif # Determine the location of the user configuration file if ( ! ${?GNUSTEP_USER_CONFIG_FILE} ) then setenv GNUSTEP_USER_CONFIG_FILE "@GNUSTEP_USER_CONFIG_FILE@" else set GNUSTEP_KEEP_USER_CONFIG_FILE=yes endif # Read the system configuration file if ( -e "${GNUSTEP_CONFIG_FILE}" ) then # # Convert the config file from sh syntax to csh syntax, and execute it. # # We want to convert every line of the type ^xxx=yyy$ into setenv xxx yyy; # and ignore any other line. # # This sed expression will first delete all lines that don't match # the pattern ^[^#=][^#=]*=.*$ -- which means "start of line (^), # followed by a character that is not # and not = ([^#=]), followed # by 0 or more characters that are not # and not = ([^#=]*), # followed by a = (=), followed by some characters until end of the # line (.*$). It will then replace each occurrence of the same # pattern (where the first and second relevant parts are now tagged # -- that's what the additional \(...\) do) with 'setenv \1 \2'. # # The result of all this is ... something that we want to execute! # We use eval to execute the results of `...`. # # Please note that ! must always be escaped in csh, which is why we # write \\! # # Also note that we add a ';' at the end of each setenv command so # that we can pipe all the commands through a single eval. # eval `sed -e '/^[^#=][^#=]*=.*$/\\!d' -e 's/^\([^#=][^#=]*\)=\(.*\)$/setenv \1 \2;/' "${GNUSTEP_CONFIG_FILE}"` endif # FIXME: determining GNUSTEP_HOME set GNUSTEP_HOME = ~ # Read the user configuration file ... unless it is disabled (ie, set # to an empty string) if ( ${?GNUSTEP_USER_CONFIG_FILE} ) then switch ("${GNUSTEP_USER_CONFIG_FILE}") case /*: # An absolute path if ( -e "${GNUSTEP_USER_CONFIG_FILE}" ) then # See above for an explanation of the sed expression eval `sed -e '/^[^#=][^#=]*=.*$/\\!d' -e 's/^\([^#=][^#=]*\)=\(.*\)$/setenv \1 \2;/' "${GNUSTEP_USER_CONFIG_FILE}"` endif breaksw default: # Something else if ( -e "${GNUSTEP_HOME}/${GNUSTEP_USER_CONFIG_FILE}" ) then eval `sed -e '/^[^#=][^#=]*=.*$/\\!d' -e 's/^\([^#=][^#=]*\)=\(.*\)$/setenv \1 \2;/' "${GNUSTEP_HOME}/${GNUSTEP_USER_CONFIG_FILE}"` endif breaksw endsw endif # Now, set any essential variable (that is not already set) to the # built-in values. if ( "${GNUSTEP_MAKE_STRICT_V2_MODE}" == "yes" ) then unsetenv GNUSTEP_SYSTEM_ROOT unsetenv GNUSTEP_LOCAL_ROOT unsetenv GNUSTEP_NETWORK_ROOT unsetenv GNUSTEP_FLATTENED else if ( ! ${?GNUSTEP_SYSTEM_ROOT} ) then setenv GNUSTEP_SYSTEM_ROOT "@GNUSTEP_SYSTEM_ROOT@" endif if ( ! ${?GNUSTEP_LOCAL_ROOT} ) then setenv GNUSTEP_LOCAL_ROOT "@GNUSTEP_LOCAL_ROOT@" endif if ( ! ${?GNUSTEP_NETWORK_ROOT} ) then setenv GNUSTEP_NETWORK_ROOT "@GNUSTEP_NETWORK_ROOT@" endif # GNUSTEP_FLATTENED is obsolete, please use GNUSTEP_IS_FLATTENED # instead setenv GNUSTEP_FLATTENED "@GNUSTEP_FLATTENED@" endif setenv GNUSTEP_IS_FLATTENED "@GNUSTEP_IS_FLATTENED@" if ( ! ${?LIBRARY_COMBO} ) then setenv LIBRARY_COMBO "@ac_cv_library_combo@" endif setenv GNUSTEP_HAS_PKGCONFIG "@GNUSTEP_HAS_PKGCONFIG@" if ( ! ${?GNUSTEP_MAKEFILES} ) then setenv GNUSTEP_MAKEFILES "@GNUSTEP_MAKEFILES@" endif if ( "${GNUSTEP_MAKE_STRICT_V2_MODE}" == "yes" ) then unsetenv GNUSTEP_USER_DIR unsetenv GNUSTEP_USER_ROOT else if ( ! ${?GNUSTEP_USER_DIR} ) then setenv GNUSTEP_USER_DIR "@GNUSTEP_USER_DIR@" endif # # Set GNUSTEP_USER_ROOT which is the variable used in practice # switch ("${GNUSTEP_USER_DIR}") case /*: # An absolute path setenv GNUSTEP_USER_ROOT "${GNUSTEP_USER_DIR}" breaksw default: # Something else setenv GNUSTEP_USER_ROOT "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR}" breaksw endsw unsetenv GNUSTEP_USER_DIR endif if ( "@GNUSTEP_MULTI_PLATFORM@" == "" ) then setenv GNUSTEP_HOST "@target@" setenv GNUSTEP_HOST_CPU "@clean_target_cpu@" setenv GNUSTEP_HOST_VENDOR "@clean_target_vendor@" setenv GNUSTEP_HOST_OS "@clean_target_os@" endif # # Determine the host information # if ( ! ${?GNUSTEP_HOST} ) then pushd /tmp > /dev/null setenv GNUSTEP_HOST `${GNUSTEP_MAKEFILES}/config.guess` setenv GNUSTEP_HOST `${GNUSTEP_MAKEFILES}/config.sub ${GNUSTEP_HOST}` popd > /dev/null endif if ( ! ${?GNUSTEP_HOST_CPU} ) then setenv GNUSTEP_HOST_CPU `${GNUSTEP_MAKEFILES}/cpu.sh ${GNUSTEP_HOST}` setenv GNUSTEP_HOST_CPU `${GNUSTEP_MAKEFILES}/clean_cpu.sh ${GNUSTEP_HOST_CPU}` endif if ( ! ${?GNUSTEP_HOST_VENDOR} ) then setenv GNUSTEP_HOST_VENDOR `${GNUSTEP_MAKEFILES}/vendor.sh ${GNUSTEP_HOST}` setenv GNUSTEP_HOST_VENDOR `${GNUSTEP_MAKEFILES}/clean_vendor.sh ${GNUSTEP_HOST_VENDOR}` endif if ( ! ${?GNUSTEP_HOST_OS} ) then setenv GNUSTEP_HOST_OS `${GNUSTEP_MAKEFILES}/os.sh ${GNUSTEP_HOST}` setenv GNUSTEP_HOST_OS `${GNUSTEP_MAKEFILES}/clean_os.sh ${GNUSTEP_HOST_OS}` endif # Now load in all the remaining paths source "${GNUSTEP_MAKEFILES}/filesystem.csh" # No longer needed unset GNUSTEP_HOME # Determine if the paths look like Windows paths that need fixing set fixup_paths=no if ( `echo $GNUSTEP_MAKEFILES | sed 's|^[a-zA-Z]:/.*$||'` == "" ) then set fixup_paths=yes endif # # Add the GNUstep tools directories to the path # if ( "${GNUSTEP_MAKE_STRICT_V2_MODE}" == "no" ) then if ( ! ${?GNUSTEP_PATHLIST} ) then setenv GNUSTEP_PATHLIST `$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_ROOT" "$GNUSTEP_LOCAL_ROOT" "$GNUSTEP_NETWORK_ROOT" "$GNUSTEP_SYSTEM_ROOT" $fixup_paths` endif endif set GNUSTEP_TOOLS_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_TOOLS" "$GNUSTEP_LOCAL_TOOLS" "$GNUSTEP_NETWORK_TOOLS" "$GNUSTEP_SYSTEM_TOOLS" $fixup_paths` foreach dir ( "${GNUSTEP_SYSTEM_ADMIN_TOOLS}" "${GNUSTEP_NETWORK_ADMIN_TOOLS}" "${GNUSTEP_LOCAL_ADMIN_TOOLS}" "${GNUSTEP_USER_ADMIN_TOOLS}" ) if ( -d "${dir}" && -w "${dir}" ) then if ( { (echo ":${GNUSTEP_TOOLS_PATHLIST}:"\ |grep -v ":${dir}:" >/dev/null) } ) then setenv GNUSTEP_TOOLS_PATHLIST "${dir}:${GNUSTEP_TOOLS_PATHLIST}" endif endif end foreach dir ( `/bin/sh -c 'IFS=:; for i in '"${GNUSTEP_TOOLS_PATHLIST}"'; do echo $i; done'` ) set path_fragment="${dir}" if ( "${GNUSTEP_IS_FLATTENED}" == "no" ) then set path_fragment="${dir}:${dir}/${GNUSTEP_HOST_CPU}-${GNUSTEP_HOST_OS}/${LIBRARY_COMBO}:${dir}/${GNUSTEP_HOST_CPU}-${GNUSTEP_HOST_OS}" endif if ( ! ${?PATH} ) then setenv PATH "${path_fragment}" else if ( { (echo ":${PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null) } ) then setenv PATH "${path_fragment}:${PATH}" endif end unset path_fragment dir unset GNUSTEP_TOOLS_PATHLIST set GNUSTEP_LIBRARIES_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARIES" "$GNUSTEP_LOCAL_LIBRARIES" "$GNUSTEP_NETWORK_LIBRARIES" "$GNUSTEP_SYSTEM_LIBRARIES" $fixup_paths` foreach dir ( `/bin/sh -c 'IFS=:; for i in '"${GNUSTEP_LIBRARIES_PATHLIST}"'; do echo $i; done'` ) if ( "$GNUSTEP_IS_FLATTENED" == "yes" ) then set path_fragment="$dir" else set path_fragment="$dir/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS/$LIBRARY_COMBO:$dir/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS" endif switch ( "${GNUSTEP_HOST_OS}" ) case *nextstep4* : case *darwin* : if ( $?DYLD_LIBRARY_PATH == 0 ) then setenv DYLD_LIBRARY_PATH "${path_fragment}" else if ( { (echo ":${DYLD_LIBRARY_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null) } ) then setenv DYLD_LIBRARY_PATH "${path_fragment}:${DYLD_LIBRARY_PATH}" endif breaksw case *hpux* : if ( $?SHLIB_PATH == 0 ) then setenv SHLIB_PATH "${path_fragment}" else if ( { (echo ":${SHLIB_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null) } ) then setenv SHLIB_PATH "${path_fragment}:${SHLIB_PATH}" endif if ( $?LD_LIBRARY_PATH == 0 ) then setenv LD_LIBRARY_PATH "${path_fragment}" else if ( { (echo ":${LD_LIBRARY_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null) } ) then setenv LD_LIBRARY_PATH "${path_fragment}:${LD_LIBRARY_PATH}" endif breaksw case * : if ( $?LD_LIBRARY_PATH == 0 ) then setenv LD_LIBRARY_PATH "${path_fragment}" else if ( { (echo ":${LD_LIBRARY_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null) } ) then setenv LD_LIBRARY_PATH "${path_fragment}:${LD_LIBRARY_PATH}" endif breaksw endsw end unset path_fragment dir unset GNUSTEP_LIBRARIES_PATHLIST switch ( "${GNUSTEP_HOST_OS}" ) case *darwin* : set GNUSTEP_FRAMEWORKS_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARY/Frameworks" "$GNUSTEP_LOCAL_LIBRARY/Frameworks" "$GNUSTEP_NETWORK_LIBRARY/Frameworks" "$GNUSTEP_SYSTEM_LIBRARY/Frameworks" $fixup_paths` foreach dir ( `/bin/sh -c 'IFS=:; for i in '"${GNUSTEP_FRAMEWORKS_PATHLIST}"'; do echo $i; done'` ) set path_fragment="$dir" if ( $?DYLD_FRAMEWORK_PATH == 0 ) then setenv DYLD_FRAMEWORK_PATH "${path_fragment}" else if ( { (echo ":${DYLD_FRAMEWORK_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null) } ) then setenv DYLD_FRAMEWORK_PATH "${path_fragment}:${DYLD_FRAMEWORK_PATH}" endif end unset dir path_fragment unset GNUSTEP_FRAMEWORKS_PATHLIST breaksw case * : breaksw endsw set GNUSTEP_LIBRARY_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARY" "$GNUSTEP_LOCAL_LIBRARY" "$GNUSTEP_NETWORK_LIBRARY" "$GNUSTEP_SYSTEM_LIBRARY" $fixup_paths` foreach dir ( `/bin/sh -c 'IFS=:; for i in '"${GNUSTEP_LIBRARY_PATHLIST}"'; do echo $i; done'` ) set path_fragment="${dir}/Libraries/Java" if ( ! ${?CLASSPATH} ) then setenv CLASSPATH "${path_fragment}" else if ( { (echo ":${CLASSPATH}:"\ |grep -v ":${path_fragment}:" >/dev/null) } ) then setenv CLASSPATH "${path_fragment}:${CLASSPATH}" endif set path_fragment="${dir}/Libraries/Guile" if ( ! ${?GUILE_LOAD_PATH} ) then setenv GUILE_LOAD_PATH "${path_fragment}" else if ( { (echo ":${GUILE_LOAD_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null) } ) then setenv GUILE_LOAD_PATH "${path_fragment}:${GUILE_LOAD_PATH}" endif end unset path_fragment dir unset GNUSTEP_LIBRARY_PATHLIST set GNUSTEP_INFO_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_DOC_INFO" "$GNUSTEP_LOCAL_DOC_INFO" "$GNUSTEP_NETWORK_DOC_INFO" "$GNUSTEP_SYSTEM_DOC_INFO" $fixup_paths` foreach dir ( `/bin/sh -c 'IFS=:; for i in '"${GNUSTEP_INFO_PATHLIST}"'; do echo $i; done'` ) if ( ! ${?INFOPATH} ) then setenv INFOPATH "${dir}:" else if ( { (echo ":${INFOPATH}:"\ |grep -v ":${dir}:" >/dev/null) } ) then setenv INFOPATH "${INFOPATH}:${dir}:" endif end unset dir if ( "${GNUSTEP_HAS_PKGCONFIG}" == "yes" ) then set GNUSTEP_PKGCONFIG_FRAGMENT=pkgconfig set GNUSTEP_PKGCONFIG_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARIES" "$GNUSTEP_LOCAL_LIBRARIES" "$GNUSTEP_NETWORK_LIBRARIES" "$GNUSTEP_SYSTEM_LIBRARIES" $fixup_paths` foreach dir ( `/bin/sh -c 'IFS=:; for i in '"${GNUSTEP_PKGCONFIG_PATHLIST}"'; do echo $i; done'` ) if ( "$GNUSTEP_IS_FLATTENED" == "yes" ) then set path_fragment="$dir/$GNUSTEP_PKGCONFIG_FRAGMENT" else set path_fragment="$dir/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS/$LIBRARY_COMBO/$GNUSTEP_PKGCONFIG_FRAGMENT:$dir/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS/$GNUSTEP_PKGCONFIG_FRAGMENT" endif if ( $?PKG_CONFIG_PATH == 0 ) then setenv PKG_CONFIG_PATH "${path_fragment}" else if ( { (echo ":${PKG_CONFIG_PATH}:"\ |grep -v ":${path_fragment}:" >/dev/null) } ) then setenv PKG_CONFIG_PATH "${path_fragment}:${PKG_CONFIG_PATH}" endif end unset path_fragment dir unset GNUSTEP_PKGCONFIG_PATHLIST GNUSTEP_PKGCONFIG_FRAGMENT endif if ( "${GNUSTEP_MAKE_STRICT_V2_MODE}" == "yes" ) then unsetenv GNUSTEP_IS_FLATTENED unsetenv LIBRARY_COMBO unsetenv GNUSTEP_HOST unsetenv GNUSTEP_HOST_CPU unsetenv GNUSTEP_HOST_VENDOR unsetenv GNUSTEP_HOST_OS endif unset GNUSTEP_MAKE_STRICT_V2_MODE if ( ! {$?GNUSTEP_KEEP_CONFIG_FILE} ) then unsetenv GNUSTEP_CONFIG_FILE endif unset GNUSTEP_KEEP_CONFIG_FILE if ( ! ${?GNUSTEP_KEEP_USER_CONFIG_FILE} ) then unsetenv GNUSTEP_USER_CONFIG_FILE endif unset GNUSTEP_KEEP_USER_CONFIG_FILE unsetenv GNUSTEP_USER_DEFAULTS_DIR unsetenv GNUSTEP_SYSTEM_APPS unsetenv GNUSTEP_SYSTEM_ADMIN_APPS unsetenv GNUSTEP_SYSTEM_WEB_APPS unsetenv GNUSTEP_SYSTEM_TOOLS unsetenv GNUSTEP_SYSTEM_ADMIN_TOOLS unsetenv GNUSTEP_SYSTEM_LIBRARY unsetenv GNUSTEP_SYSTEM_HEADERS unsetenv GNUSTEP_SYSTEM_LIBRARIES unsetenv GNUSTEP_SYSTEM_DOC unsetenv GNUSTEP_SYSTEM_DOC_MAN unsetenv GNUSTEP_SYSTEM_DOC_INFO unsetenv GNUSTEP_NETWORK_APPS unsetenv GNUSTEP_NETWORK_ADMIN_APPS unsetenv GNUSTEP_NETWORK_WEB_APPS unsetenv GNUSTEP_NETWORK_TOOLS unsetenv GNUSTEP_NETWORK_ADMIN_TOOLS unsetenv GNUSTEP_NETWORK_LIBRARY unsetenv GNUSTEP_NETWORK_HEADERS unsetenv GNUSTEP_NETWORK_LIBRARIES unsetenv GNUSTEP_NETWORK_DOC unsetenv GNUSTEP_NETWORK_DOC_MAN unsetenv GNUSTEP_NETWORK_DOC_INFO unsetenv GNUSTEP_LOCAL_APPS unsetenv GNUSTEP_LOCAL_ADMIN_APPS unsetenv GNUSTEP_LOCAL_WEB_APPS unsetenv GNUSTEP_LOCAL_TOOLS unsetenv GNUSTEP_LOCAL_ADMIN_TOOLS unsetenv GNUSTEP_LOCAL_LIBRARY unsetenv GNUSTEP_LOCAL_HEADERS unsetenv GNUSTEP_LOCAL_LIBRARIES unsetenv GNUSTEP_LOCAL_DOC unsetenv GNUSTEP_LOCAL_DOC_MAN unsetenv GNUSTEP_LOCAL_DOC_INFO unsetenv GNUSTEP_USER_APPS unsetenv GNUSTEP_USER_ADMIN_APPS unsetenv GNUSTEP_USER_WEB_APPS unsetenv GNUSTEP_USER_TOOLS unsetenv GNUSTEP_USER_ADMIN_TOOLS unsetenv GNUSTEP_USER_LIBRARY unsetenv GNUSTEP_USER_HEADERS unsetenv GNUSTEP_USER_LIBRARIES unsetenv GNUSTEP_USER_DOC unsetenv GNUSTEP_USER_DOC_MAN unsetenv GNUSTEP_USER_DOC_INFO unsetenv GNUSTEP_SYSTEM_USERS_DIR unsetenv GNUSTEP_LOCAL_USERS_DIR unsetenv GNUSTEP_NETWORK_USERS_DIR ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/framework.make�������������������������������������������������������������������0000664�0001750�0001750�00000001640�10711636501�016571� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # framework.make # # Makefile rules to build GNUstep-based frameworks. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/framework.make else ifeq ($(GNUSTEP_TYPE),framework) include $(GNUSTEP_MAKEFILES)/Instance/framework.make endif endif ������������������������������������������������������������������������������������������������gnustep-make-2.7.0/application.make�����������������������������������������������������������������0000664�0001750�0001750�00000002003�10711636501�017071� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # application.make # # Makefile rules to build GNUstep-based applications. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/application.make else ifeq ($(GNUSTEP_TYPE),app) include $(GNUSTEP_MAKEFILES)/Instance/application.make endif # Else, it's the Instance invocation for something which is not an # application - include nothing endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/configure������������������������������������������������������������������������0000775�0001750�0001750�00000767601�13001521665�015663� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 </dev/null exec 6>&1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= PACKAGE_URL= ac_unique_file="application.make" ac_default_prefix=NONE ac_subst_vars='LTLIBOBJS LIBOBJS TESTPROG SHELLPROG LATEX2HTML clean_target_vendor clean_target_cpu clean_target_os GNUSTEP_MAKE_SUBMINOR_VERSION GNUSTEP_MAKE_MINOR_VERSION GNUSTEP_MAKE_MAJOR_VERSION GNUSTEP_MAKE_VERSION GNUSTEP_MAKE_PARALLEL_BUILDING GNUSTEP_STRIP_MAKEFILES MAKE_WITH_INFO_FUNCTION GNUMAKE GNUSTEP_DEFAULT_DEBUG OBJCFLAGS LIB_DIR INCLUDES SOLARIS_SHARED GCC_WITH_PRECOMPILED_HEADERS AUTO_DEPENDENCIES USE_OBJC_EXCEPTIONS CLANG_CC OBJ_MERGE_CMD_FLAG USE_ARC USE_NONFRAGILE_ABI OBJCXX ac_cv_objc_threaded objc_threaded OBJC_LIB_FLAG cc_gnuruntime GNUSTEP_INSTALL_LD_SO_CONF BACKEND_BUNDLE GNUSTEP_MULTI_PLATFORM GNUSTEP_USER_DIR GNUSTEP_LOCAL_ROOT GNUSTEP_NETWORK_ROOT GNUSTEP_SYSTEM_ROOT GNUSTEP_LOCAL_USERS_DIR GNUSTEP_NETWORK_USERS_DIR GNUSTEP_SYSTEM_USERS_DIR GNUSTEP_USER_DIR_DOC_MAN GNUSTEP_USER_DIR_DOC_INFO GNUSTEP_USER_DIR_DOC GNUSTEP_USER_DIR_LIBRARIES GNUSTEP_USER_DIR_HEADERS GNUSTEP_USER_DIR_LIBRARY GNUSTEP_USER_DIR_ADMIN_TOOLS GNUSTEP_USER_DIR_TOOLS GNUSTEP_USER_DIR_WEB_APPS GNUSTEP_USER_DIR_ADMIN_APPS GNUSTEP_USER_DIR_APPS GNUSTEP_LOCAL_DOC_MAN GNUSTEP_LOCAL_DOC_INFO GNUSTEP_LOCAL_DOC GNUSTEP_LOCAL_LIBRARIES GNUSTEP_LOCAL_HEADERS GNUSTEP_LOCAL_LIBRARY GNUSTEP_LOCAL_ADMIN_TOOLS GNUSTEP_LOCAL_TOOLS GNUSTEP_LOCAL_WEB_APPS GNUSTEP_LOCAL_ADMIN_APPS GNUSTEP_LOCAL_APPS GNUSTEP_NETWORK_DOC_MAN GNUSTEP_NETWORK_DOC_INFO GNUSTEP_NETWORK_DOC GNUSTEP_NETWORK_LIBRARIES GNUSTEP_NETWORK_HEADERS GNUSTEP_NETWORK_LIBRARY GNUSTEP_NETWORK_ADMIN_TOOLS GNUSTEP_NETWORK_TOOLS GNUSTEP_NETWORK_WEB_APPS GNUSTEP_NETWORK_ADMIN_APPS GNUSTEP_NETWORK_APPS GNUSTEP_SYSTEM_DOC_MAN GNUSTEP_SYSTEM_DOC_INFO GNUSTEP_SYSTEM_DOC GNUSTEP_SYSTEM_LIBRARIES GNUSTEP_SYSTEM_HEADERS GNUSTEP_SYSTEM_LIBRARY GNUSTEP_SYSTEM_ADMIN_TOOLS GNUSTEP_SYSTEM_TOOLS GNUSTEP_SYSTEM_WEB_APPS GNUSTEP_SYSTEM_ADMIN_APPS GNUSTEP_SYSTEM_APPS GNUSTEP_IS_FLATTENED GNUSTEP_FLATTENED HOST_INSTALL GNUSTEP_MAKEFILES GNUSTEP_USER_DEFAULTS_DIR GNUSTEP_USER_CONFIG_FILE GNUSTEP_CONFIG_FILE GNUSTEP_PREFIX GNUSTEP_ABSOLUTE_INSTALL_PATHS GNUSTEP_MAKE_STRICT_V2_MODE CHOWN TAR NM LN_S INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM DLLTOOL AR RANLIB CYGWIN cc_bundle cc_cppprecomp EGREP GREP ac_ct_CXX CXXFLAGS CXX CPP OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC ac_cv_library_combo GNUSTEP_HAS_PKGCONFIG target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_library_combo enable_install_p with_tar enable_strict_v2_mode with_layout enable_absolute_install_paths with_config_file enable_importing_config_file with_user_config_file with_user_dir with_user_defaults_dir enable_flattened enable_multi_platform enable_backend_bundle enable_install_ld_so_conf with_objc_lib_flag with_thread_lib enable_objc_nonfragile_abi enable_objc_arc enable_native_objc_exceptions enable_debug_by_default enable_strip_makefiles enable_parallel_building ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP CXX CXXFLAGS CCC' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-install-p Disable using 'install -p' when installing files. By default, assuming that 'install -p' works, when installing files such as header files or libraries, gnustep-make uses 'install -p', which preserves the original timestamp of the header file or library. If you do not want the timestamp to be preserved, use this option to have gnustep-make use 'install' instead of 'install -p'. Unless you have a specific reason for not liking the default behaviour this option is most likely irrelevant for you. --enable-strict-v2-mode Enable strict gnustep-make version 2 mode by default. Use this option to have gnustep-make be aggressively backwards-incompatible with gnustep-make version 1. You should use it to help upgrade old makefiles. Packegers should make sure that old makefiles have been upgraded before releasing builds using this option. --enable-absolute-install-paths Enable the use of absolute paths for the install_name of dynamic libraries on Darwin. This option is specific to Darwin and is ignored on all other platforms. Any code that links against a dynamic library with an absolute install_name will tell dyld to find the library at that location. Enabling this option allows one to place libraries in non-standard locations without having to set DYLD_LIBRARY_PATH and DYLD_FRAMEWORK_PATH in the shell and ~/.MacOSX/environment.plist, but libraries built with an absolute install_name are not relocatable. By default, this setting is disabled unless the gnu-gnu-gnu library combo is used, in which case it is enabled. --enable-importing-config-file Enable importing the existing system GNUstep configuration file. Use this option to use an existing configuration file for setting up the filesystem layout and prefix. If you specify this option, all the configuration will be read from the existing system GNUstep configuration file and any --with-layout=xxx and --prefix=yyy options will be ignored. --disable-flattened Disable flattened directory structure. Use this option if you want to have support for multiple library combos and fat binaries. A library combo specifies the Objective-C frameworks to use to compile a program, so having multiple library combos is only useful if you have (or plan to have) multiple OpenStep-like Objective-C frameworks installed on your machine, for example both the Apple Cocoa Objective-C frameworks and the GNUstep frameworks. Fat binaries allow you to have multiple versions for different CPUs and Operating Systems. Please note that using the fat directory structure will not blend easily with native filesystems and so if you want the non-flattened directory structure you probably want to install GNUstep using its own default filesystem layout. To switch between different library-combos, you also need to source GNUstep.sh after setting the LIBRARY_COMBO environment variable. Please refer to the documentation for more information on library-combos and fat binaries. --enable-multi-platform Enable run-time multi-platform support. If this option is enabled, then every time GNUstep.sh is run it will determine/guess the type of local host machine instead of using the hardcoded value. Use this together with --disable-flattened if you have a single GNUstep installation with fat binaries that is being shared over the network by a variety of machines with different hardware and o/s. --disable-backend-bundle Compile GUI backend as a library. Use this option if the default compilation of the GUI backend as a bundle (loadable module) is not supported / does not work on your machine. --enable-install-ld-so-conf Enable installation of ld.so.conf/gnustep-make.conf. This is useful if you are installing in a non-standard prefix, and a component of the build system needs to be able to find libraries even without GNUstep.sh or equivalent providing environment. Some packaging systems clear out the environment at certain points during the packaging build process, hence making LD_LIBRARY_PATH set by gnustep-make.conf ineffective. --enable-objc-nonfragile-abi Use the non-fragile ABI for Objective-C. Use this option if you want to use non-fragile instance variables provided by clang and libobjc2. --enable-objc-arc Use automatic retain counts for Objective-C. Use this option if you want to use the ARC mechanism of the Objective-C compiler and runtime. --disable-native-objc-exceptions Disable native Objective-C exception support (@try / @catch / @finally / @synchronized). If unspecified, Objective-C exception support is enabled if the compiler can compile Objective-C code containing @try / @catch / @finally / @synchronized. Please note that native exceptions also require support in the Objective-C runtime; GNUstep-base will check for that support and may still disable native exceptions if such support is not available. Use this option if you do not want to use the native Objective-C exception support provided by newer compilers. --enable-debug-by-default Enable building with 'make debug=yes' by default. When you use gnustep-make to build software, you have a choice of using debug=yes or debug=no. The debug=no will use the default compiler flags determined when gnustep-make was configured (usually -g -O2), while debug=yes will remove the optimization flags and add a number of debugging compiler flags. If you do not specify the --enable-debug-by-default option, gnustep-make will default to building with debug=no when nothing is specified. If you specify the --enable-debug-by-default option, gnustep-make will default to building with debug=yes instead, which can be handy if you always want to compile software with debug=yes and want to avoid having to type debug=yes each time you compile (an alternative is to define the variable debug=yes in your shell). If you are unsure, you should stick with the default and ignore this option. --enable-strip-makefiles Enable stripping system makefiles after installation. This will speed up gnustep-make by about 5% (average), but will remove all comments from the installed makefiles. Those comments are quite useful if you are trying to find some information on how gnustep-make works (eg, if you're trying to locate a bug), and the performance gain is quite small, so you probably don't want to strip makefiles. --disable-parallel-building Disable support for parallel building. Normally this is enabled and you can request parallel building of a project by using the '-j N' flag for make (where N is a number, eg, '-j 4'). If you know that you are never going to be using parallel building, you can disable parallel building here - which will ignore all '-j N' flags, and also avoid executing a 'compile' submake invocation - resulting in slightly faster non-parallel builds, but making it impossible to do parallel builds. Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-library-combo Define the default "library combo". The library combo is a string of the form aaa-bbb-ccc where 'aaa' is the Objective-C runtime library to use (examples are 'gnu' and 'apple'), 'bbb' is the Foundation library to use (examples are 'gnu' for gnustep-base, and 'apple' for Apple Cocoa FoundationKit), and 'ccc' is the ApplicationKit to use (examples are 'gnu' for gnustep-gui and 'apple' for Apple Cocoa AppKit). Use this option if you want to force a different default library combo than the one that would be used by default. For example, on Darwin GNUstep will automatically use the Apple Objective-C frameworks by default (library-combo=apple-apple-apple); if you are planning on installing and using gnustep-base on there, you would need to use --with-library-combo=gnu-gnu-gnu instead. Please notice that if --disable-flattened is used, gnustep-make can have fat binaries that support multiple library combos. In that case, this flag will only configure the default one, but you can still use other ones at run-time. Please use 'ng-gnu-gnu' to build with 'next generation' cutting edge runtime and compile time featured (requires a recent version of clang). --with-tar Set the name of the tar program to use. Use this option if the default choice does not work for you. --with-layout=FILE Set the type of filesystem layout that you want your GNUstep installation to use. The layout described by FILE will be read from the FilesystemLayouts directory. Check the FilesystemLayouts subdirectory for a list of layouts and how to choose which one you want (or create your own). If you do not specify a layout then 'fhs' is used except when the library-combo is apple-apple-apple, in which case it is 'apple'. Example: --with-layout=fhs --with-config-file=PATH Set the path of the system GNUstep config file. Use this option if you want to have the GNUstep config file in a non-standard place. Example: --with-config-file=/usr/GNUstep/GNUstep.conf By default, if this option is not specified, the config file is /etc/GNUstep/GNUstep.conf if the prefix is /, /usr or /usr/GNUstep and $prefix/etc/GNUstep/GNUstep.conf otherwise. On Apple, it is always /Library/GNUstep/GNUstep.conf regardless of prefix. --with-user-config-file Set the name of the user config file to use. This can be relative to the user's home directory if it is a relative path, or an absolute directory (the same for all users) if it is an absolute path. Use '' if you want to disable user config files. The default is .GNUstep.conf if not specified. Example: --with-user-config-file=GNUstep/GNUstep.conf --with-user-dir This is an obsolete option. It used to determine the location of the USER domain directory (inside of each user's home directory) under the 'gnustep' layout. We ignore this option so that you can write ./configure commands that work with both old and new gnustep-makes. To get the effect of this option with this version of gnustep-make, please create your own layout file and use --with-layout=xxx to use it. --with-user-defaults-dir Set the GNUstep user defaults directory for all users. This can be relative to the user's home directory if it is a relative path, or an absolute directory (the same for all users) if it is an absolute path. Use this option if you want to have the GNUSTEP_USER_DEFAULTS_DIR directory in a non default place for all users. The default is 'GNUstep/Defaults' Example: --with-user-defaults-dir='GNUstep/Library/Defaults' --with-objc-lib-flag Specify a different flag to link libobjc (the Objective-C runtime library). The default is -lobjc. In some situations you may have multiple versions of libobjc installed and if your linker supports it you may want to specify exactly which one must be used; for example on GNU/Linux you should be able to use --with-objc-lib-flag=-l:libobjc.so.1 to request libobjc.so.1 (as opposed to, say, libobjc.so.2) to be linked. --with-thread-lib Specify alternate thread library. Use this flag if configure can not properly determine the thread library used by your libobjc. Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir> LIBS libraries to pass to the linker, e.g. -l<library> CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir> CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # # TODO: This configure file should not contain any checks that depend on the # Objective-C runtime being used or available. This is because on # some platforms the Objective-C runtime itself is compiled using # gnustep-make! # # All the runtime-dependent checks should go in gnustep-base. # # We still need compiler checks, because if we are compiling the # Objective-C runtime itself, we need to know what compiler we have # and what flags we can use. But these checks should test # compilation, not linking or execution, because we don't necessarily # have an Objective-C runtime available yet. # targetArgument=${target} ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 $as_echo_n "checking target system type... " >&6; } if ${ac_cv_target+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 $as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- # Extract the first word of "pkgconfig", so it can be a program name with args. set dummy pkgconfig; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GNUSTEP_HAS_PKGCONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $GNUSTEP_HAS_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_GNUSTEP_HAS_PKGCONFIG="$GNUSTEP_HAS_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in no do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GNUSTEP_HAS_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GNUSTEP_HAS_PKGCONFIG" && ac_cv_path_GNUSTEP_HAS_PKGCONFIG="yes" ;; esac fi GNUSTEP_HAS_PKGCONFIG=$ac_cv_path_GNUSTEP_HAS_PKGCONFIG if test -n "$GNUSTEP_HAS_PKGCONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_HAS_PKGCONFIG" >&5 $as_echo "$GNUSTEP_HAS_PKGCONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi #-------------------------------------------------------------------- # Setup the library combination #-------------------------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library combo" >&5 $as_echo_n "checking for library combo... " >&6; } # Check whether --with-library-combo was given. if test "${with_library_combo+set}" = set; then : withval=$with_library_combo; ac_cv_library_combo=$withval else ac_cv_library_combo=$ac_cv_library_combo fi if test "$ac_cv_library_combo" = "" -o "$ac_cv_library_combo" = "no"; then case "$host_os" in darwin*) ac_cv_library_combo=apple-apple-apple ;; nextstep4) ac_cv_library_combo=nx-nx-nx ;; openstep4) ac_cv_library_combo=nx-nx-nx ;; *) ac_cv_library_combo=gnu-gnu-gnu ;; esac fi case "$ac_cv_library_combo" in apple) ac_cv_library_combo=apple-apple-apple ;; gnu) ac_cv_library_combo=gnu-gnu-gnu ;; ng) ac_cv_library_combo=ng-gnu-gnu ;; nx) ac_cv_library_combo=nx-nx-nx ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_library_combo" >&5 $as_echo "$ac_cv_library_combo" >&6; } OBJC_RUNTIME_LIB=`echo $ac_cv_library_combo | awk -F- '{print $1}'` # The ng runtime library setting requires clang rather than gcc if test "$OBJC_RUNTIME_LIB" = "ng"; then defaultng=yes; if test "$OBJCC" = ""; then OBJCC=clang fi if test "$CC" = ""; then CC=clang fi if test "$OBJCXX" = ""; then OBJCXX=clang++ fi if test "$CXX" = ""; then CXX=clang++ fi else defaultng=no; fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <stdio.h> int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <stdarg.h> #include <stdio.h> struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since # <limits.h> exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include <limits.h> #else # include <assert.h> #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since # <limits.h> exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include <limits.h> #else # include <assert.h> #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # We also look for a C++ compiler. While not strictly needed, some # people use gnustep-make to compile C++ code. It's nice to detect a # C++ compiler, if we have one, and automatically use it to # compile/link C++ code. :-) ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Similarly for the ObjC++ compiler ... but only new versions of autoconf # support it, so we pretend by using the C++ compiler #AC_PROG_OBJCXX OBJCXX="${CXX}" # We may use egrep for some tests further down below { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" #-------------------------------------------------------------------- # Check if we are using Apple cc #-------------------------------------------------------------------- cc_cppprecomp=0 cc_byndle=0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for apple compiler flags" >&5 $as_echo_n "checking for apple compiler flags... " >&6; } cc_cppprecomp=`${CC} -no-cpp-precomp 2>&1 | grep -c "unrecognized"` cc_bundle=`${CC} -bundle 2>&1 | grep -c "couldn"` # 0 means we have the flag if test $cc_cppprecomp = 0; then cc_cppprecomp=yes else cc_cppprecomp=no fi if test $cc_bundle = 0; then cc_bundle=yes else cc_bundle=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cc_bundle" >&5 $as_echo "$cc_bundle" >&6; } #-------------------------------------------------------------------- # specific target_os options #-------------------------------------------------------------------- case "$target_os" in freebsd* | openbsd* ) INCLUDES="$INCLUDES -I/usr/local/include" LIB_DIR="$LIB_DIR -L/usr/local/lib";; netbsd*) INCLUDES="$INCLUDES -I/usr/pkg/include" LIB_DIR="$LIB_DIR -Wl,-R/usr/pkg/lib -L/usr/pkg/lib";; esac #-------------------------------------------------------------------- # Determine the host, build, and target systems #-------------------------------------------------------------------- case $host_os in *cygwin* ) MINGW32=no MINGW64=no CYGWIN=yes MSWIND=yes;; *mingw32* ) MINGW32=yes MINGW64=no CYGWIN=no MSWIND=yes;; *mingw64* ) MINGW32=no MINGW64=yes CYGWIN=no MSWIND=yes;; * ) MINGW32=no MINGW64=no CYGWIN=no MSWIND=no;; esac if test "$MINGW32" = yes; then echo "hosted on mingw32 .." export SHELL=sh if test "$OBJC_RUNTIME_LIB" = ng; then export CC=${CC:-clang} else export CC=${CC:-gcc} fi export AR=${AR:-ar} export RANLIB=${RANLIB:-ranlib} export DLLTOOL=${DLLTOOL:-dlltool} elif test "$MINGW64" = yes; then echo "hosted on mingw64 .." export SHELL=sh if test "$OBJC_RUNTIME_LIB" = ng; then export CC=${CC:-clang} else export CC=${CC:-gcc} fi export AR=${AR:-ar} export RANLIB=${RANLIB:-ranlib} export DLLTOOL=${DLLTOOL:-dlltool} elif test "$CYGWIN" = yes; then echo "hosted on cygwin .." if test "$OBJC_RUNTIME_LIB" = ng; then export CC=${CC:-clang} else export CC=${CC:-gcc} fi export AR=${AR:-ar} export RANLIB=${RANLIB:-ranlib} export DLLTOOL=${DLLTOOL:-dlltool} fi #-------------------------------------------------------------------- # Find the binary and compile tools #-------------------------------------------------------------------- if test "x$target" != "x$host"; then echo "cross compiling from $host to $target .." cross_compiling="yes" if test "$OBJC_RUNTIME_LIB" = ng; then # Extract the first word of ""${targetArgument}-clang"", so it can be a program name with args. set dummy "${targetArgument}-clang"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC=" "${targetArgument}-clang"" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_CC" && ac_cv_prog_CC="clang" fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else # Extract the first word of ""${targetArgument}-gcc"", so it can be a program name with args. set dummy "${targetArgument}-gcc"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC=" "${targetArgument}-gcc"" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_CC" && ac_cv_prog_CC="gcc" fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # Extract the first word of ""${targetArgument}-ranlib"", so it can be a program name with args. set dummy "${targetArgument}-ranlib"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB=" "${targetArgument}-ranlib"" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB="ranlib" fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of ""${targetArgument}-ar"", so it can be a program name with args. set dummy "${targetArgument}-ar"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR=" "${targetArgument}-ar"" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of ""${targetArgument}-dlltool"", so it can be a program name with args. set dummy "${targetArgument}-dlltool"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL=" "${targetArgument}-dlltool"" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_DLLTOOL" && ac_cv_prog_DLLTOOL="dlltool" fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else if test "$OBJC_RUNTIME_LIB" = ng; then # # Detect compiler support for Blocks; perhaps someday -fblocks won't be # required, in which case we'll need to change this. # saveCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fblocks" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { (void)^{int i; i = 0; }(); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac64v_blocks="yes" else ac_cv_blocks="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saveCFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "$ac_cv_blocks" = no; then as_fn_error $? "Your compiler doesn't appear to support blocks. To fix this use the CC environment varibale to specify a different compiler (or use a different library-combo)" "$LINENO" 5; fi fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="ar" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi fi # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking if 'install -p' works" >&5 $as_echo_n "checking if 'install -p' works... " >&6; } gs_install_p_test_builddir="`pwd`" gs_install_p_test_results=`(INSTALL="$INSTALL"; export INSTALL; cd "$srcdir/config-install-p-test/"; ./run-test.sh "$gs_install_p_test_builddir"; echo $?) 2>&5` if test "$gs_install_p_test_results" = "0"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we should use 'install -p' when installing files" >&5 $as_echo_n "checking if we should use 'install -p' when installing files... " >&6; } # Check whether --enable-install-p was given. if test "${enable_install_p+set}" = set; then : enableval=$enable_install_p; ac_cv_install_p=$enableval else ac_cv_install_p="yes" fi if test "$ac_cv_install_p" = "yes"; then if test "$gs_install_p_test_results" = "0"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; INSTALL="${INSTALL} -p" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: install -p does not work" >&5 $as_echo "no: install -p does not work" >&6; }; fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi for ac_prog in gnm do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then ac_cv_prog_NM="$NM" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NM="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NM=$ac_cv_prog_NM if test -n "$NM"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5 $as_echo "$NM" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$NM" && break done test -n "$NM" || NM="nm" for ac_prog in gnutar gtar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_TAR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$TAR"; then ac_cv_prog_TAR="$TAR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_TAR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi TAR=$ac_cv_prog_TAR if test -n "$TAR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAR" >&5 $as_echo "$TAR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$TAR" && break done test -n "$TAR" || TAR="tar" # Check whether --with-tar was given. if test "${with_tar+set}" = set; then : withval=$with_tar; TAR="$withval" fi # Extract the first word of "chown", so it can be a program name with args. set dummy chown; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CHOWN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CHOWN"; then ac_cv_prog_CHOWN="$CHOWN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CHOWN="chown" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_CHOWN" && ac_cv_prog_CHOWN="none" fi fi CHOWN=$ac_cv_prog_CHOWN if test -n "$CHOWN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHOWN" >&5 $as_echo "$CHOWN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$MINGW32" = no; then if test "$MINGW64" = no; then if test "$CHOWN" = "none"; then as_fn_error $? "\"Could not find chown.\"" "$LINENO" 5; fi fi fi #------------------------------------------------------------------- # GNUstep specific options follow #------------------------------------------------------------------- #------------------------------------------------------------------- # Determine if we should enable strict gnustep-make v2 mode by default #------------------------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we should enable strict gnustep-make version 2 mode by default" >&5 $as_echo_n "checking if we should enable strict gnustep-make version 2 mode by default... " >&6; } # Check whether --enable-strict-v2-mode was given. if test "${enable_strict_v2_mode+set}" = set; then : enableval=$enable_strict_v2_mode; ac_cv_strict_v2_mode=$enableval else ac_cv_strict_v2_mode="yes" fi if test "$ac_cv_strict_v2_mode" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; GNUSTEP_MAKE_STRICT_V2_MODE="yes" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Useing strict version 2 mode; ancient makefiles may need to be updated" >&5 $as_echo "$as_me: WARNING: Useing strict version 2 mode; ancient makefiles may need to be updated" >&2;} else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; GNUSTEP_MAKE_STRICT_V2_MODE="no" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Disable strict version 2 mode at your own risk; it may allow faulty makefiles to go unnoticed" >&5 $as_echo "$as_me: WARNING: Disable strict version 2 mode at your own risk; it may allow faulty makefiles to go unnoticed" >&2;} fi #------------------------------------------------------------------- # Determine filesystem layout to use #------------------------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNUstep filesystem layout to use" >&5 $as_echo_n "checking for GNUstep filesystem layout to use... " >&6; } # Check whether --with-layout was given. if test "${with_layout+set}" = set; then : withval=$with_layout; GNUSTEP_FILESYSTEM_LAYOUT="$withval" fi # The variable GNUSTEP_FILESYSTEM_LAYOUT is empty if no layout was # specified on the command line. if test ! x"$GNUSTEP_FILESYSTEM_LAYOUT" = x""; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_FILESYSTEM_LAYOUT" >&5 $as_echo "$GNUSTEP_FILESYSTEM_LAYOUT" >&6; } GNUSTEP_FILESYSTEM_LAYOUT_FILE="$GNUSTEP_FILESYSTEM_LAYOUT" else # This is the default layout that is used when installing # GNUstep with no other indication. We normally use 'fhs'. # However, if the library-combo is apple-apple-apple we use # 'apple' irrespective of the target OS. if test "$ac_cv_library_combo" = "apple-apple-apple"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: default layout: 'apple' since we're on apple-apple-apple" >&5 $as_echo "default layout: 'apple' since we're on apple-apple-apple" >&6; } GNUSTEP_FILESYSTEM_LAYOUT_FILE=apple else GNUSTEP_FILESYSTEM_LAYOUT_FILE=fhs { $as_echo "$as_me:${as_lineno-$LINENO}: result: default layout: '$GNUSTEP_FILESYSTEM_LAYOUT_FILE'" >&5 $as_echo "default layout: '$GNUSTEP_FILESYSTEM_LAYOUT_FILE'" >&6; } fi fi if test ! -f "$srcdir/FilesystemLayouts/$GNUSTEP_FILESYSTEM_LAYOUT_FILE" >&5 2>&5; then echo "Can not find $srcdir/FilesystemLayouts/$GNUSTEP_FILESYSTEM_LAYOUT_FILE" echo "Please check your --with-layout=xxx argument and try again." echo "Valid arguments for --with-layout= are:" echo `ls "$srcdir/FilesystemLayouts/" | grep -v README` exit 1 fi # Need to do some checks related to building dylibs on darwin. GNUSTEP_ABSOLUTE_INSTALL_PATHS=; case "$target_os" in darwin*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we should build dynamic libraries with an absolute install_name" >&5 $as_echo_n "checking if we should build dynamic libraries with an absolute install_name... " >&6; } # Check whether --enable-absolute-install-paths was given. if test "${enable_absolute_install_paths+set}" = set; then : enableval=$enable_absolute_install_paths; ac_cv_absolute_install_paths=$enableval else ac_cv_absolute_install_paths="undefined" fi if test "$ac_cv_absolute_install_paths" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } GNUSTEP_ABSOLUTE_INSTALL_PATHS=yes; else if test "$ac_cv_absolute_install_paths" = "undefined"; then # gnu-gnu-gnu on darwin is difficult because of the risk of # conflicts between the GNU Objective-C runtime and the Apple # one. absolute-install-paths makes this slightly easier # by hardcoding the absolute path of dynamic libraries into the # programs that link them so that it's less likely that the # wrong dynamic libraries will be pulled in. So we enable it # by default in that case. if test "$ac_cv_library_combo" = "gnu-gnu-gnu"; then GNUSTEP_ABSOLUTE_INSTALL_PATHS=yes; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi ;; esac #------------------------------------------------------------------- # Read filesystem layout from file #------------------------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we manage to import the filesystem layout configuration" >&5 $as_echo_n "checking if we manage to import the filesystem layout configuration... " >&6; } . "$srcdir/FilesystemLayouts/$GNUSTEP_FILESYSTEM_LAYOUT_FILE" if test ! x"$GNUSTEP_DEFAULT_PREFIX" = x""; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } echo "Please check your $srcdir/FilesystemLayouts/$GNUSTEP_FILESYSTEM_LAYOUT_FILE" echo "layout file, as it can not be loaded (GNUSTEP_DEFAULT_PREFIX missing)" exit 1 fi # Now, all MAKEFILES/SYSTEM/LOCAL/NETWORK paths in the filesystem # layout file will be relative to prefix. So we need to immediately # determine prefix, and use it. #-------------------------------------------------------------------- # Process --prefix #-------------------------------------------------------------------- # We use this to make sure we know if the user has passed a # --prefix=xxx option or not. We use it if it was passed. # # If it wasn't passed, then we want to know because in that case we # want to use the specified default prefix for that filesystem. For # example, the 'gnustep' filesystem will install by default in # /usr/GNUstep, while the 'fhs' filesystem will install by default in # /usr/local. Please note that AC_PREFIX_DEFAULT will actually be # done at the very beginning of ./configure, not here. So we wouldn't # have access to all the filesystem layout information yet, which is # why we only use the macro to know if a --prefix=xxx was passed or # not. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prefix" >&5 $as_echo_n "checking for prefix... " >&6; } if test "x$prefix" = "xNONE"; then # Use the default prefix for this filesystem layout GNUSTEP_PREFIX="$GNUSTEP_DEFAULT_PREFIX"; else # Use the prefix that the user specified GNUSTEP_PREFIX="$prefix"; fi # Remove any '/' at the end of prefix. All system/network/local paths # from layout files must start with a '/'. We don't want a '/' at the # end of the prefix to generate a '//' mostly because common.make will # try to double-check that GNUSTEP_SYSTEM_TOOLS is in your PATH. Any # '//' in GNUSTEP_SYSTEM_TOOLS will have been normalized to '/' in # PATH (on some systems at least) and so comparing them won't find a # match and the check will fail even if GNUSTEP_SYSTEM_TOOLS is in # PATH and a spurious warning will be produced. GNUSTEP_PREFIX=`echo "$GNUSTEP_PREFIX" | sed 's%/*$%%'` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_PREFIX" >&5 $as_echo "$GNUSTEP_PREFIX" >&6; } # Now we apply the prefix (we don't need to apply it to # GNUSTEP_SYSTEM_USERS_DIR and similar, which are something like # '/home' - we never install anything in there). GNUSTEP_MAKEFILES="$GNUSTEP_PREFIX$GNUSTEP_MAKEFILES" GNUSTEP_SYSTEM_APPS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_APPS" GNUSTEP_SYSTEM_ADMIN_APPS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_ADMIN_APPS" GNUSTEP_SYSTEM_WEB_APPS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_WEB_APPS" GNUSTEP_SYSTEM_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_TOOLS" GNUSTEP_SYSTEM_ADMIN_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_ADMIN_TOOLS" GNUSTEP_SYSTEM_LIBRARY="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_LIBRARY" GNUSTEP_SYSTEM_HEADERS="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_HEADERS" GNUSTEP_SYSTEM_LIBRARIES="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_LIBRARIES" GNUSTEP_SYSTEM_DOC="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_DOC" GNUSTEP_SYSTEM_DOC_MAN="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_DOC_MAN" GNUSTEP_SYSTEM_DOC_INFO="$GNUSTEP_PREFIX$GNUSTEP_SYSTEM_DOC_INFO" GNUSTEP_NETWORK_APPS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_APPS" GNUSTEP_NETWORK_ADMIN_APPS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_ADMIN_APPS" GNUSTEP_NETWORK_WEB_APPS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_WEB_APPS" GNUSTEP_NETWORK_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_TOOLS" GNUSTEP_NETWORK_ADMIN_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_ADMIN_TOOLS" GNUSTEP_NETWORK_LIBRARY="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_LIBRARY" GNUSTEP_NETWORK_HEADERS="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_HEADERS" GNUSTEP_NETWORK_LIBRARIES="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_LIBRARIES" GNUSTEP_NETWORK_DOC="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_DOC" GNUSTEP_NETWORK_DOC_MAN="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_DOC_MAN" GNUSTEP_NETWORK_DOC_INFO="$GNUSTEP_PREFIX$GNUSTEP_NETWORK_DOC_INFO" GNUSTEP_LOCAL_APPS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_APPS" GNUSTEP_LOCAL_ADMIN_APPS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_ADMIN_APPS" GNUSTEP_LOCAL_WEB_APPS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_WEB_APPS" GNUSTEP_LOCAL_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_TOOLS" GNUSTEP_LOCAL_ADMIN_TOOLS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_ADMIN_TOOLS" GNUSTEP_LOCAL_LIBRARY="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_LIBRARY" GNUSTEP_LOCAL_HEADERS="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_HEADERS" GNUSTEP_LOCAL_LIBRARIES="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_LIBRARIES" GNUSTEP_LOCAL_DOC="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_DOC" GNUSTEP_LOCAL_DOC_MAN="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_DOC_MAN" GNUSTEP_LOCAL_DOC_INFO="$GNUSTEP_PREFIX$GNUSTEP_LOCAL_DOC_INFO" #--------------------------------------------------------------------- # Location of the GNUstep.conf config file (--with-config-file) #--------------------------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNUstep configuration file to use" >&5 $as_echo_n "checking for GNUstep configuration file to use... " >&6; } # Check whether --with-config-file was given. if test "${with_config_file+set}" = set; then : withval=$with_config_file; GNUSTEP_CONFIG_FILE="$withval" fi if test "$GNUSTEP_CONFIG_FILE" = "" -o "$GNUSTEP_CONFIG_FILE" = "no"; then case "$target_os" in darwin*) GNUSTEP_CONFIG_FILE=/Library/GNUstep/GNUstep.conf ;; *) case x"$GNUSTEP_PREFIX" in x) GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf;; x/usr) GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf;; x/usr/GNUstep) GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf;; *) GNUSTEP_CONFIG_FILE="$GNUSTEP_PREFIX/etc/GNUstep/GNUstep.conf";; esac ;; esac fi if echo "$GNUSTEP_CONFIG_FILE" | grep '[ \\] > /dev/null' then echo "found a backslash or space (illegal) in '$GNUSTEP_CONFIG_FILE'" echo "Please try again using --with-config-file= to specify a valid path." if test "$MSWIND" = "yes" then echo "Please note that on windows you must use unix-style paths within" echo "the make package even though gnustep programs built in the mingw" echo "environment use native paths throughout." fi exit 1 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_CONFIG_FILE" >&5 $as_echo "$GNUSTEP_CONFIG_FILE" >&6; } #--------------------------------------------------------------------- # Now read/import the existing configuration file, if any #--------------------------------------------------------------------- # Reading/importing the existing configuration file might be good as a # default because it means that you don't have to type in your # layout/prefix settings every time you configure # gnustep-make. (please note we only read the system-wide one, not the # user one. Reason being that the settings we read will be used to # generate the new system-wide one, while the user one will be left # untouched). # Please note that this option will override any --with-layout=xxx and # --prefix=yyy options. { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we should import an existing configuration file" >&5 $as_echo_n "checking if we should import an existing configuration file... " >&6; } # Check whether --enable-importing-config-file was given. if test "${enable_importing_config_file+set}" = set; then : enableval=$enable_importing_config_file; ac_cv_importing_config_file=$enableval else ac_cv_importing_config_file="no" fi if test "$ac_cv_importing_config_file" = "yes"; then if test ! -f "$GNUSTEP_CONFIG_FILE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: file \"$GNUSTEP_CONFIG_FILE\" does not exist" >&5 $as_echo "no: file \"$GNUSTEP_CONFIG_FILE\" does not exist" >&6; } as_fn_error $? "asked to import non-existing configuration file. To fix this problem, make sure you have a config file to import, or remove the --enable-importing-config-file option." "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes: trying to import \"$GNUSTEP_CONFIG_FILE\"" >&5 $as_echo "yes: trying to import \"$GNUSTEP_CONFIG_FILE\"" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: If this fails, run configure again with --disable-importing-config-file" >&5 $as_echo "$as_me: If this fails, run configure again with --disable-importing-config-file" >&6;} . "$GNUSTEP_CONFIG_FILE" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi #-------------------------------------------------------------------- # Important - from now on, any variable that is set in the filesystem # layout and/or configuration file (eg, GNUSTEP_SYSTEM_TOOLS) could # already have a value that we have imported from the files. # ./configure command line options should override those values, but # otherwise we should keep them! #-------------------------------------------------------------------- #-------------------------------------------------------------------- # Process --with-user-config-file #-------------------------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for user config file to use" >&5 $as_echo_n "checking for user config file to use... " >&6; } # Check whether --with-user-config-file was given. if test "${with_user_config_file+set}" = set; then : withval=$with_user_config_file; GNUSTEP_USER_CONFIG_FILE="$withval" fi # Keep in mind we already have a default value set by the filesystem # layout, so it should never be empty. if echo "$GNUSTEP_USER_CONFIG_FILE" | grep '[ \\] > /dev/null' then echo "found a backslash or space (illegal) in '$GNUSTEP_USER_CONFIG_FILE'" echo "Please try again using --with-user-config-file= to specify a value." if test "$MSWIND" = "yes" then echo "Please note that on windows you must use unix-style paths within" echo "the make package even though gnustep programs built in the mingw" echo "environment use native paths throughout." fi exit 1 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_USER_CONFIG_FILE" >&5 $as_echo "$GNUSTEP_USER_CONFIG_FILE" >&6; } #-------------------------------------------------------------------- # Process --with-user-dir #-------------------------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the obsolete --with-user-dir option was used" >&5 $as_echo_n "checking if the obsolete --with-user-dir option was used... " >&6; } # Check whether --with-user-dir was given. if test "${with_user_dir+set}" = set; then : withval=$with_user_dir; OBSOLETE_GNUSTEP_USER_DIR="$withval" fi if test ! x"$OBSOLETE_GNUSTEP_USER_DIR" = x"" && test ! x"$OBSOLETE_GNUSTEP_USER_DIR" = x"no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBSOLETE_GNUSTEP_USER_DIR: ignored" >&5 $as_echo "$OBSOLETE_GNUSTEP_USER_DIR: ignored" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ignoring --with-user-dir=$OBSOLETE_GNUSTEP_USER_DIR option" >&5 $as_echo "$as_me: WARNING: ignoring --with-user-dir=$OBSOLETE_GNUSTEP_USER_DIR option" >&2;} else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: good" >&5 $as_echo "no: good" >&6; } fi #-------------------------------------------------------------------- # Process --with-user-defaults-dir #-------------------------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for user defaults dir to use" >&5 $as_echo_n "checking for user defaults dir to use... " >&6; } # Check whether --with-user-defaults-dir was given. if test "${with_user_defaults_dir+set}" = set; then : withval=$with_user_defaults_dir; GNUSTEP_USER_DEFAULTS_DIR="$withval" fi # Keep in mind we already have a default value set by the filesystem # layout, so it should never be empty. if echo "$GNUSTEP_USER_DEFAULTS_DIR" | grep '[ \\] > /dev/null' then echo "found a backslash or space (illegal) in '$GNUSTEP_USER_DEFAULTS_DIR'" echo "Please try again using --with-user-defaults-dir= to specify a value." if test "$MSWIND" = "yes" then echo "Please note that on windows you must use unix-style paths within" echo "the make package even though gnustep programs built in the mingw" echo "environment use native paths throughout." fi exit 1 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_USER_DEFAULTS_DIR" >&5 $as_echo "$GNUSTEP_USER_DEFAULTS_DIR" >&6; } #-------------------------------------------------------------------- # Setting up GNUSTEP_MAKEFILES #-------------------------------------------------------------------- # # This is where you install gnustep-make. We just print it out. # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNUSTEP_MAKEFILES to use" >&5 $as_echo_n "checking for GNUSTEP_MAKEFILES to use... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_MAKEFILES" >&5 $as_echo "$GNUSTEP_MAKEFILES" >&6; } # If GNUSTEP_MAKEFILES contains a space, we may have problems later # because make does not really support having spaces in filenames if echo "$GNUSTEP_MAKEFILES" | grep " " >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GNUSTEP_MAKEFILES ($GNUSTEP_MAKEFILES) contains spaces: this may not work" >&5 $as_echo "$as_me: WARNING: GNUSTEP_MAKEFILES ($GNUSTEP_MAKEFILES) contains spaces: this may not work" >&2;} fi #-------------------------------------------------------------------- # Setting up the install-sh script #-------------------------------------------------------------------- # HOST_INSTALL is the name of the install program in config.make so set it up # to point to the install-sh script in the GNUstep tree if no system install is # found. if test "$INSTALL" = "$ac_install_sh"; then HOST_INSTALL="$GNUSTEP_MAKEFILES/$INSTALL" else HOST_INSTALL="$INSTALL" fi #-------------------------------------------------------------------- # Is the system flattened? #-------------------------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flattened directory structure" >&5 $as_echo_n "checking for flattened directory structure... " >&6; } # Check whether --enable-flattened was given. if test "${enable_flattened+set}" = set; then : enableval=$enable_flattened; ac_cv_flattened=$enableval else ac_cv_flattened="undefined" fi if test "$ac_cv_flattened" = "no"; then # GNUSTEP_FLATTENED is here for backwards compatibility only and # should be removed at some point. It has the problem that it # defaults to 'no' while we want the default to be 'yes'! # The new GNUSTEP_IS_FLATTENED variable defaults to 'yes'. :-) GNUSTEP_FLATTENED=; GNUSTEP_IS_FLATTENED=no; # FIXME - maybe we should have a warning here if you try to # use 'fhs' or 'fhs-system' layout with non-flattened! else GNUSTEP_FLATTENED=yes; GNUSTEP_IS_FLATTENED=yes; fi if test "$GNUSTEP_IS_FLATTENED" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; fi #-------------------------------------------------------------------- # Output the full filesystem layout #-------------------------------------------------------------------- # Note: We print out the entire filesystem layout so that people can # see with their eyes the result of the configuration options that # they used. This is good to immediately spot mistakes. { $as_echo "$as_me:${as_lineno-$LINENO}: Now printing the filesystem layout configuration." >&5 $as_echo "$as_me: Now printing the filesystem layout configuration." >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for System Applications directory" >&5 $as_echo_n "checking for System Applications directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_SYSTEM_APPS" >&5 $as_echo "$GNUSTEP_SYSTEM_APPS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for System Admin Applications directory" >&5 $as_echo_n "checking for System Admin Applications directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_SYSTEM_ADMIN_APPS" >&5 $as_echo "$GNUSTEP_SYSTEM_ADMIN_APPS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for System Web Applications directory" >&5 $as_echo_n "checking for System Web Applications directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_SYSTEM_WEB_APPS" >&5 $as_echo "$GNUSTEP_SYSTEM_WEB_APPS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for System Tools directory" >&5 $as_echo_n "checking for System Tools directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_SYSTEM_TOOLS" >&5 $as_echo "$GNUSTEP_SYSTEM_TOOLS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for System Admin Tools directory" >&5 $as_echo_n "checking for System Admin Tools directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_SYSTEM_ADMIN_TOOLS" >&5 $as_echo "$GNUSTEP_SYSTEM_ADMIN_TOOLS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for System Library directory" >&5 $as_echo_n "checking for System Library directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_SYSTEM_LIBRARY" >&5 $as_echo "$GNUSTEP_SYSTEM_LIBRARY" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for System Headers directory" >&5 $as_echo_n "checking for System Headers directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_SYSTEM_HEADERS" >&5 $as_echo "$GNUSTEP_SYSTEM_HEADERS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for System Libraries directory" >&5 $as_echo_n "checking for System Libraries directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_SYSTEM_LIBRARIES" >&5 $as_echo "$GNUSTEP_SYSTEM_LIBRARIES" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for System Documentation directory" >&5 $as_echo_n "checking for System Documentation directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_SYSTEM_DOC" >&5 $as_echo "$GNUSTEP_SYSTEM_DOC" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for System Info Documentation directory" >&5 $as_echo_n "checking for System Info Documentation directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_SYSTEM_DOC_INFO" >&5 $as_echo "$GNUSTEP_SYSTEM_DOC_INFO" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for System Man Documentation directory" >&5 $as_echo_n "checking for System Man Documentation directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_SYSTEM_DOC_MAN" >&5 $as_echo "$GNUSTEP_SYSTEM_DOC_MAN" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Network Applications directory" >&5 $as_echo_n "checking for Network Applications directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_NETWORK_APPS" >&5 $as_echo "$GNUSTEP_NETWORK_APPS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Network Admin Applications directory" >&5 $as_echo_n "checking for Network Admin Applications directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_NETWORK_ADMIN_APPS" >&5 $as_echo "$GNUSTEP_NETWORK_ADMIN_APPS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Network Web Applications directory" >&5 $as_echo_n "checking for Network Web Applications directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_NETWORK_WEB_APPS" >&5 $as_echo "$GNUSTEP_NETWORK_WEB_APPS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Network Tools directory" >&5 $as_echo_n "checking for Network Tools directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_NETWORK_TOOLS" >&5 $as_echo "$GNUSTEP_NETWORK_TOOLS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Network Admin Tools directory" >&5 $as_echo_n "checking for Network Admin Tools directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_NETWORK_ADMIN_TOOLS" >&5 $as_echo "$GNUSTEP_NETWORK_ADMIN_TOOLS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Network Library directory" >&5 $as_echo_n "checking for Network Library directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_NETWORK_LIBRARY" >&5 $as_echo "$GNUSTEP_NETWORK_LIBRARY" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Network Headers directory" >&5 $as_echo_n "checking for Network Headers directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_NETWORK_HEADERS" >&5 $as_echo "$GNUSTEP_NETWORK_HEADERS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Network Libraries directory" >&5 $as_echo_n "checking for Network Libraries directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_NETWORK_LIBRARIES" >&5 $as_echo "$GNUSTEP_NETWORK_LIBRARIES" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Network Documentation directory" >&5 $as_echo_n "checking for Network Documentation directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_NETWORK_DOC" >&5 $as_echo "$GNUSTEP_NETWORK_DOC" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Network Info Documentation directory" >&5 $as_echo_n "checking for Network Info Documentation directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_NETWORK_DOC_INFO" >&5 $as_echo "$GNUSTEP_NETWORK_DOC_INFO" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Network Man Documentation directory" >&5 $as_echo_n "checking for Network Man Documentation directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_NETWORK_DOC_MAN" >&5 $as_echo "$GNUSTEP_NETWORK_DOC_MAN" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Local Applications directory" >&5 $as_echo_n "checking for Local Applications directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_LOCAL_APPS" >&5 $as_echo "$GNUSTEP_LOCAL_APPS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Local Admin Applications directory" >&5 $as_echo_n "checking for Local Admin Applications directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_LOCAL_ADMIN_APPS" >&5 $as_echo "$GNUSTEP_LOCAL_ADMIN_APPS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Local Web Applications directory" >&5 $as_echo_n "checking for Local Web Applications directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_LOCAL_WEB_APPS" >&5 $as_echo "$GNUSTEP_LOCAL_WEB_APPS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Local Tools directory" >&5 $as_echo_n "checking for Local Tools directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_LOCAL_TOOLS" >&5 $as_echo "$GNUSTEP_LOCAL_TOOLS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Local Admin Tools directory" >&5 $as_echo_n "checking for Local Admin Tools directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_LOCAL_ADMIN_TOOLS" >&5 $as_echo "$GNUSTEP_LOCAL_ADMIN_TOOLS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Local Library directory" >&5 $as_echo_n "checking for Local Library directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_LOCAL_LIBRARY" >&5 $as_echo "$GNUSTEP_LOCAL_LIBRARY" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Local Headers directory" >&5 $as_echo_n "checking for Local Headers directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_LOCAL_HEADERS" >&5 $as_echo "$GNUSTEP_LOCAL_HEADERS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Local Libraries directory" >&5 $as_echo_n "checking for Local Libraries directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_LOCAL_LIBRARIES" >&5 $as_echo "$GNUSTEP_LOCAL_LIBRARIES" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Local Documentation directory" >&5 $as_echo_n "checking for Local Documentation directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_LOCAL_DOC" >&5 $as_echo "$GNUSTEP_LOCAL_DOC" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Local Info Documentation directory" >&5 $as_echo_n "checking for Local Info Documentation directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_LOCAL_DOC_INFO" >&5 $as_echo "$GNUSTEP_LOCAL_DOC_INFO" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Local Man Documentation directory" >&5 $as_echo_n "checking for Local Man Documentation directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_LOCAL_DOC_MAN" >&5 $as_echo "$GNUSTEP_LOCAL_DOC_MAN" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for User Applications directory" >&5 $as_echo_n "checking for User Applications directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_USER_DIR_APPS" >&5 $as_echo "$GNUSTEP_USER_DIR_APPS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for User Admin Applications directory" >&5 $as_echo_n "checking for User Admin Applications directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_USER_DIR_ADMIN_APPS" >&5 $as_echo "$GNUSTEP_USER_DIR_ADMIN_APPS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for User Web Applications directory" >&5 $as_echo_n "checking for User Web Applications directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_USER_DIR_WEB_APPS" >&5 $as_echo "$GNUSTEP_USER_DIR_WEB_APPS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for User Tools directory" >&5 $as_echo_n "checking for User Tools directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_USER_DIR_TOOLS" >&5 $as_echo "$GNUSTEP_USER_DIR_TOOLS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for User Admin Tools directory" >&5 $as_echo_n "checking for User Admin Tools directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_USER_DIR_ADMIN_TOOLS" >&5 $as_echo "$GNUSTEP_USER_DIR_ADMIN_TOOLS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for User Library directory" >&5 $as_echo_n "checking for User Library directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_USER_DIR_LIBRARY" >&5 $as_echo "$GNUSTEP_USER_DIR_LIBRARY" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for User Headers directory" >&5 $as_echo_n "checking for User Headers directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_USER_DIR_HEADERS" >&5 $as_echo "$GNUSTEP_USER_DIR_HEADERS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for User Libraries directory" >&5 $as_echo_n "checking for User Libraries directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_USER_DIR_LIBRARIES" >&5 $as_echo "$GNUSTEP_USER_DIR_LIBRARIES" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for User Documentation directory" >&5 $as_echo_n "checking for User Documentation directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_USER_DIR_DOC" >&5 $as_echo "$GNUSTEP_USER_DIR_DOC" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for User Info Documentation directory" >&5 $as_echo_n "checking for User Info Documentation directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_USER_DIR_DOC_INFO" >&5 $as_echo "$GNUSTEP_USER_DIR_DOC_INFO" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for User Man Documentation directory" >&5 $as_echo_n "checking for User Man Documentation directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_USER_DIR_DOC_MAN" >&5 $as_echo "$GNUSTEP_USER_DIR_DOC_MAN" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for System User directory" >&5 $as_echo_n "checking for System User directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_SYSTEM_USERS_DIR" >&5 $as_echo "$GNUSTEP_SYSTEM_USERS_DIR" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Network User directory" >&5 $as_echo_n "checking for Network User directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_NETWORK_USERS_DIR" >&5 $as_echo "$GNUSTEP_NETWORK_USERS_DIR" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Local User directory" >&5 $as_echo_n "checking for Local User directory... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_LOCAL_USERS_DIR" >&5 $as_echo "$GNUSTEP_LOCAL_USERS_DIR" >&6; } #-------------------------------------------------------------------- # These variables no longer exist! We try to set some compatibility # values for them that should work with the old 'gnustep' layout. # So things using the old 'gnustep' layout should keep working. # These variables won't have any meaning with the new layouts. # They are deprecated and they *will* be removed. #-------------------------------------------------------------------- GNUSTEP_SYSTEM_ROOT="$GNUSTEP_PREFIX/System" GNUSTEP_NETWORK_ROOT="$GNUSTEP_PREFIX/Network" GNUSTEP_LOCAL_ROOT="$GNUSTEP_PREFIX/Local" GNUSTEP_USER_DIR="GNUstep" #-------------------------------------------------------------------- # Is the system multi-platform? #-------------------------------------------------------------------- # # Multi-platform means that GNUstep.sh will determine the host # platform (by running config.guess) each time that it is sourced. # This is good if you are sharing your GNUstep.sh across your network # (for example, mounting the makefiles via NFS), but it requires you # to be able to run config.guess on your machine(s), which usually # requires a development environment (compiler, libc etc). # # The default instead is not using multi-platform, which means the # local host os, cpu and version is hardcoded in GNUstep.sh. This # works nicely for a single machine using this gnustep-make # installation, and it works even if you don't have development # packages (gcc, binutils, libc-dev etc) installed. We had to make # this the default after end-users (with no development packages # installed) complained that binary packages wouldn't work (and the # reason turned out to be that GNUstep.sh was running config.guess # which was returning the wrong platform because the development # tools needed/used to determine the platform were not available). # # Unless you know what you are doing, stick with the default, which is # also much faster when sourcing GNUstep.sh. # # Check whether --enable-multi-platform was given. if test "${enable_multi_platform+set}" = set; then : enableval=$enable_multi_platform; ac_cv_multi_platform=$enableval else ac_cv_multi_platform="undefined" fi if test "$ac_cv_multi_platform" = "yes"; then GNUSTEP_MULTI_PLATFORM=yes; else GNUSTEP_MULTI_PLATFORM=; fi #-------------------------------------------------------------------- # Build backend bundles (on by default) #-------------------------------------------------------------------- # Check whether --enable-backend-bundle was given. if test "${enable_backend_bundle+set}" = set; then : enableval=$enable_backend_bundle; ac_cv_backend=$enableval else ac_cv_backend="yes" fi if test "$ac_cv_backend" = "yes"; then BACKEND_BUNDLE=yes; else BACKEND_BUNDLE=; fi #-------------------------------------------------------------------- # Enable installation of ld.so.conf.d/gnustep-make.conf #-------------------------------------------------------------------- # Check whether --enable-install-ld-so-conf was given. if test "${enable_install_ld_so_conf+set}" = set; then : enableval=$enable_install_ld_so_conf; ac_cv_install_ld_so_conf=$enableval else ac_cv_install_ld_so_conf="undefined" fi if test "$ac_cv_install_ld_so_conf" = "yes"; then GNUSTEP_INSTALL_LD_SO_CONF=yes; else GNUSTEP_INSTALL_LD_SO_CONF=; fi #-------------------------------------------------------------------- # Miscellaneous flags and setup #-------------------------------------------------------------------- # TODO: This check for a custom ObjC library needs to be moved to # gnustep-base since it concerns the runtime library (see explanations # at the beginning of this file). if test "$GNUSTEP_IS_FLATTENED" != yes; then clean_target_os=`$srcdir/clean_os.sh $target_os` clean_target_cpu=`$srcdir/clean_cpu.sh $target_cpu` obj_dir="$clean_target_cpu/$clean_target_os" fi # Check to see if the libobjc library is in our GNUSTEP_SYSTEM_LIBRARIES # If so, there are probably other libraries that we want there also, so # leave the proper includes in CPPFLAGS and LDFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking for custom shared objc library" >&5 $as_echo_n "checking for custom shared objc library... " >&6; } if ${gs_cv_objc_libdir+:} false; then : $as_echo_n "(cached) " >&6 else gs_cv_objc_libdir=NONE gs_cv_objc_incdir=NONE # Try GNUSTEP_SYSTEM_LIBRARIES first if test "$GNUSTEP_IS_FLATTENED" = yes; then GNUSTEP_LDIR="$GNUSTEP_SYSTEM_LIBRARIES" GNUSTEP_HDIR="$GNUSTEP_SYSTEM_HEADERS" else GNUSTEP_LDIR="$GNUSTEP_SYSTEM_LIBRARIES/$obj_dir" GNUSTEP_HDIR="$GNUSTEP_SYSTEM_HEADERS/$LIBRARY_COMBO" fi if test -f "$GNUSTEP_HDIR/objc/objc.h"; then if test -f "$GNUSTEP_LDIR/libobjc.a" -o -f "$GNUSTEP_LDIR/libobjc.so" -o -f "$GNUSTEP_LDIR/libobjc.dll.a" -o -f "$GNUSTEP_LDIR/libobjc-gnu.dylib"; then gs_cv_objc_libdir="$GNUSTEP_LDIR" gs_cv_objc_incdir="$GNUSTEP_HDIR" gs_cv_objc_tools="$GNUSTEP_SYSTEM_TOOLS" fi fi # Try GNUSTEP_NETWORK_LIBRARIES second (override GNUSTEP_SYSTEM if # found) if test "$GNUSTEP_IS_FLATTENED" = yes; then GNUSTEP_LDIR="$GNUSTEP_NETWORK_LIBRARIES" GNUSTEP_HDIR="$GNUSTEP_NETWORK_HEADERS" else GNUSTEP_LDIR="$GNUSTEP_NETWORK_LIBRARIES/$obj_dir" GNUSTEP_HDIR="$GNUSTEP_NETWORK_HEADERS/$LIBRARY_COMBO" fi if test -f "$GNUSTEP_HDIR/objc/objc.h"; then if test -f "$GNUSTEP_LDIR/libobjc.a" -o -f "$GNUSTEP_LDIR/libobjc.so" -o -f "$GNUSTEP_LDIR/libobjc.dll.a" -o -f "$GNUSTEP_LDIR/libobjc-gnu.dylib"; then gs_cv_objc_libdir="$GNUSTEP_LDIR" gs_cv_objc_incdir="$GNUSTEP_HDIR" gs_cv_objc_tools="$GNUSTEP_NETWORK_TOOLS" fi fi # Try GNUSTEP_LOCAL_LIBRARIES third (override GNUSTEP_SYSTEM and # GNUSTEP_NETWORK if found) if test "$GNUSTEP_IS_FLATTENED" = yes; then GNUSTEP_LDIR="$GNUSTEP_LOCAL_LIBRARIES" GNUSTEP_HDIR="$GNUSTEP_LOCAL_HEADERS" else GNUSTEP_LDIR="$GNUSTEP_LOCAL_LIBRARIES/$obj_dir" GNUSTEP_HDIR="$GNUSTEP_LOCAL_HEADERS/$LIBRARY_COMBO" fi if test -f "$GNUSTEP_HDIR/objc/objc.h"; then if test -f "$GNUSTEP_LDIR/libobjc.a" -o -f "$GNUSTEP_LDIR/libobjc.so" -o -f "$GNUSTEP_LDIR/libobjc.dll.a" -o -f "$GNUSTEP_LDIR/libobjc-gnu.dylib"; then gs_cv_objc_libdir="$GNUSTEP_LDIR" gs_cv_objc_incdir="$GNUSTEP_HDIR" gs_cv_objc_tools="$GNUSTEP_LOCAL_TOOLS" fi fi #gcc_shared_libobjc=`gcc -print-file-name=libobjc.so` #if test -f "$gcc_shared_libobjc"; then # gs_cv_objc_libdir=`dirname $gcc_shared_libobjc` #fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gs_cv_objc_libdir" >&5 $as_echo "$gs_cv_objc_libdir" >&6; } if test "$gs_cv_objc_libdir" != "NONE"; then # The following are needed to compile the test programs OBJC_CPPFLAGS="$CPPFLAGS $INCLUDES -I$gs_cv_objc_incdir" OBJC_LDFLAGS="$LDFLAGS $LIB_DIR -L$gs_cv_objc_libdir" # And the following to execute them LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gs_cv_objc_libdir" export LD_LIBRARY_PATH # Need to also add the Tools library on mingw case $host_os in *mingw32* ) PATH=$PATH:$gs_cv_objc_tools;; * ) ;; esac fi # Special case for Apple systems: When compiling plain C source files that # include Objective-C runtime headers we must make sure that the correct # header files are used with a gnu-*-* combo. The -fgnu-runtime compiler # option takes care of this when compiling Objective-C source files, but # has no effect when compiling plain C (or C++) source files. cc_gnuruntime= case $target_os-$ac_cv_library_combo in darwin*-gnu-*-* ) if test "$gs_cv_objc_libdir" = "NONE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking GNU Objective-C runtime header directory" >&5 $as_echo_n "checking GNU Objective-C runtime header directory... " >&6; } install_dir="`$CC -print-search-dirs | sed -n 's/install: //p'`" if test -n "${install_dir}" && \ test -d "${install_dir}"include-gnu-runtime; then cc_gnuruntime="${install_dir}"include-gnu-runtime { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cc_gnuruntime" >&5 $as_echo "$cc_gnuruntime" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: NONE" >&5 $as_echo "NONE" >&6; } fi fi ;; esac # TODO: This flag needs to be moved to gnustep-base since it concerns # the runtime library (see explanations at the beginning of this # file). { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the flag to link libobjc" >&5 $as_echo_n "checking for the flag to link libobjc... " >&6; } # Check whether --with-objc-lib-flag was given. if test "${with_objc_lib_flag+set}" = set; then : withval=$with_objc_lib_flag; OBJC_LIB_FLAG="$withval" else OBJC_LIB_FLAG="" fi # We pass the flag, unchanged, to gnustep-make - if it's empty, # gnustep-make will be free to use -lobjc # But we need to compute, and print out, what flag we're using now. OBJC_FINAL_LIB_FLAG="$OBJC_LIB_FLAG" saved_CFLAGS="$CFLAGS" saved_LIBS="$LIBS" CFLAGS="$CFLAGS -x objective-c -I$srcdir $OBJC_CPPFLAGS $OBJC_LDFLAGS" if test "$OBJC_RUNTIME_LIB" = "gnu"; then CFLAGS="$CFLAGS -fgnu-runtime -DGNU_RUNTIME" if test "$OBJC_FINAL_LIB_FLAG" = ""; then OBJC_FINAL_LIB_FLAG=-lobjc fi OBJCRT="$OBJC_FINAL_LIB_FLAG" fi if test "$OBJC_RUNTIME_LIB" = "nx"; then CFLAGS="$CFLAGS -DNeXT_RUNTIME" if test "$OBJC_FINAL_LIB_FLAG" = ""; then OBJC_FINAL_LIB_FLAG=-lobjc fi OBJCRT="$OBJC_FINAL_LIB_FLAG" fi if test "$OBJC_RUNTIME_LIB" = "apple"; then CFLAGS="$CFLAGS -DAPPLE_RUNTIME" if test "$OBJC_FINAL_LIB_FLAG" = ""; then OBJC_FINAL_LIB_FLAG=-lobjc fi OBJCRT="$OBJC_FINAL_LIB_FLAG" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJC_FINAL_LIB_FLAG" >&5 $as_echo "$OBJC_FINAL_LIB_FLAG" >&6; } #-------------------------------------------------------------------- # Check if libobjc was compiled with thread support. #-------------------------------------------------------------------- # TODO: This check needs to be moved to gnustep-base since it concerns # the runtime library (see explanations at the beginning of this # file). OBJC_THREAD= # Check whether --with-thread-lib was given. if test "${with_thread_lib+set}" = set; then : withval=$with_thread_lib; OBJC_THREAD=$withval else OBJC_THREAD= fi if test "$OBJC_THREAD" = no; then OBJC_THREAD= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether objc has thread support" >&5 $as_echo_n "checking whether objc has thread support... " >&6; } if test "$OBJC_THREAD" != ""; then LIBS="$OBJCRT $LIBS $OBJC_THREAD" if test "$cross_compiling" = yes; then : objc_threaded="" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "config_thread.m" _ACEOF if ac_fn_c_try_run "$LINENO"; then : objc_threaded="$OBJC_THREAD" else objc_threaded="" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi elif test "$host_os" = linux-gnu; then LIBS="$OBJCRT -lpthread" if test "$cross_compiling" = yes; then : objc_threaded="-lpthread" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "config_thread.m" _ACEOF if ac_fn_c_try_run "$LINENO"; then : objc_threaded="-lpthread" else objc_threaded="" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test x"$objc_threaded" = x""; then LIBS="$OBJCRT" if test "$cross_compiling" = yes; then : objc_threaded="works" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "config_thread.m" _ACEOF if ac_fn_c_try_run "$LINENO"; then : objc_threaded="works" else objc_threaded="" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi elif test "`echo $host_os|sed 's/[0-9].*//'|sed s/elf//`" = freebsd; then LIBS="-pthread $OBJCRT" if test "$cross_compiling" = yes; then : objc_threaded="-pthread" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "config_thread.m" _ACEOF if ac_fn_c_try_run "$LINENO"; then : objc_threaded="-pthread" else objc_threaded="" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test x"$objc_threaded" = x""; then LIBS="-lpthread $OBJCRT" if test "$cross_compiling" = yes; then : objc_threaded="-lpthread" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "config_thread.m" _ACEOF if ac_fn_c_try_run "$LINENO"; then : objc_threaded="-lpthread" else objc_threaded="" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi if test x"$objc_threaded" = x""; then LIBS="$OBJCRT -lpcthread" if test "$cross_compiling" = yes; then : objc_threaded="-lpcthread" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "config_thread.m" _ACEOF if ac_fn_c_try_run "$LINENO"; then : objc_threaded="-lpcthread" else objc_threaded="" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi if test x"$objc_threaded" = x""; then LIBS="$OBJCRT" if test "$cross_compiling" = yes; then : objc_threaded="works" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "config_thread.m" _ACEOF if ac_fn_c_try_run "$LINENO"; then : objc_threaded="works" else objc_threaded="" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi elif test "$MINGW32" = yes; then # Mingw doesn't need anything extra for threads LIBS="$OBJCRT $LIBS" if test "$cross_compiling" = yes; then : objc_threaded="works" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "config_thread.m" _ACEOF if ac_fn_c_try_run "$LINENO"; then : objc_threaded="works" else objc_threaded="" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi elif test "$MINGW64" = yes; then # Mingw doesn't need anything extra for threads LIBS="$OBJCRT $LIBS" if test "$cross_compiling" = yes; then : objc_threaded="works" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "config_thread.m" _ACEOF if ac_fn_c_try_run "$LINENO"; then : objc_threaded="works" else objc_threaded="" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi elif test "$OBJC_RUNTIME_LIB" = "apple"; then # Apple doesn't need anything extra for threads LIBS="$OBJCRT $LIBS" if test "$cross_compiling" = yes; then : objc_threaded="works" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "config_thread.m" _ACEOF if ac_fn_c_try_run "$LINENO"; then : objc_threaded="works" else objc_threaded="" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else LIBS="$OBJCRT $LIBS" if test "$cross_compiling" = yes; then : objc_threaded="" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "config_thread.m" _ACEOF if ac_fn_c_try_run "$LINENO"; then : objc_threaded="works" else objc_threaded="" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test x"$objc_threaded" = x""; then LIBS="$OBJCRT $saved_LIBS -lpthread " if test "$cross_compiling" = yes; then : objc_threaded="" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "config_thread.m" _ACEOF if ac_fn_c_try_run "$LINENO"; then : objc_threaded="-lpthread" else objc_threaded="" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi if test x"$objc_threaded" = x""; then # Solaris, OpenBSD/sparc LIBS="$OBJCRT $saved_LIBS -lpthread -lposix4" if test "$cross_compiling" = yes; then : objc_threaded="" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "config_thread.m" _ACEOF if ac_fn_c_try_run "$LINENO"; then : objc_threaded="-lpthread -lposix4" else objc_threaded="" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi if test x"$objc_threaded" = x""; then LIBS="$OBJCRT $saved_LIBS -lthread " if test "$cross_compiling" = yes; then : objc_threaded="" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "config_thread.m" _ACEOF if ac_fn_c_try_run "$LINENO"; then : objc_threaded="-lthread" else objc_threaded="" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi if test x"$objc_threaded" = x""; then LIBS="$OBJCRT" if test "$cross_compiling" = yes; then : objc_threaded="works" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "config_thread.m" _ACEOF if ac_fn_c_try_run "$LINENO"; then : objc_threaded="works" else objc_threaded="" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi if test x"$objc_threaded" = x""; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else if test x"$objc_threaded" = x"works"; then objc_threaded="" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes: $objc_threaded" >&5 $as_echo "yes: $objc_threaded" >&6; } fi ac_cv_objc_threaded="$objc_threaded" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Objective-C++ is supported" >&5 $as_echo_n "checking whether Objective-C++ is supported... " >&6; } # Only new autoconf supports ObjC++ so we use C++ instead for now #AC_LANG_PUSH(Objective C++) #OBJCXXFLAGS_saved="$OBJCXXFLAGS" #OBJCXXFLAGS="$OBJCXXFLAGS -x objective-c++" #OBJCXXPPFLAGS_saved="$OBJCXXPPFLAGS" #OBJCXXPPFLAGS="$OBJCXXPPFLAGS -x objective-c++" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu CXXFLAGS_saved="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -x objective-c++" CXXPPFLAGS_saved="$CXXPPFLAGS" CXXPPFLAGS="$CXXPPFLAGS -x objective-c++" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @interface ObjCClass { int x; } @end class CppClass { int x; }; int main() { return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : objcc=yes else objcc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $objcc" >&5 $as_echo "$objcc" >&6; } if test x"$objcc" = x"no"; then OBJCXX= fi # Only new autoconf supports ObjC++ so we use C++ instead for now #OBJCXXFLAGS="$OBJCXXFLAGS_saved" #OBJCXXPPFLAGS="$OBJCXXPPFLAGS_saved" #AC_LANG_POP(Objective C++) CXXFLAGS="$CXXFLAGS_saved" CXXPPFLAGS="$CXXPPFLAGS_saved" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "$OBJC_RUNTIME_LIB" != ng; then #-------------------------------------------------------------------- # Check if compiler supports -fobjc-nonfragile-abi, and if so, turn it on! #-------------------------------------------------------------------- # Check whether --enable-objc-nonfragile-abi was given. if test "${enable_objc_nonfragile_abi+set}" = set; then : enableval=$enable_objc_nonfragile_abi; USE_NONFRAGILE_ABI=$enableval else USE_NONFRAGILE_ABI=notset fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we should use the nonfragile ABI" >&5 $as_echo_n "checking whether we should use the nonfragile ABI... " >&6; } if test x"$USE_NONFRAGILE_ABI" = x"yes"; then # What we want to do: set USE_NONFRAGILE_ABI to yes if we can compile # something with -fobjc-nonfragile-abi. CFLAGS_no_nonfragile="$CFLAGS" CFLAGS="$CFLAGS -fobjc-nonfragile-abi" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Note that we never execute this code so it does not really matter what it is. We are testing that the compiler accepts the '-fobjc-nonfragile-abi' flag. */ int main() { #ifndef __has_feature #define __has_feature(x) 0 #endif return __has_feature(objc_nonfragile_abi) ? 0 : 1; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : USE_NONFRAGILE_ABI=yes else USE_NONFRAGILE_ABI=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NONFRAGILE_ABI" >&5 $as_echo "$USE_NONFRAGILE_ABI" >&6; } CFLAGS="$CFLAGS_no_nonfragile" if test x"$USE_NONFRAGILE_ABI" = x"no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: The nonfragile ABI was requested, but the compiler" >&5 $as_echo "$as_me: The nonfragile ABI was requested, but the compiler" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: doesn't support it." >&5 $as_echo "$as_me: doesn't support it." >&6;} as_fn_error $? "compiler doesn't support nonfragile ABI" "$LINENO" 5 fi else if test x"$USE_NONFRAGILE_ABI" != x"no"; then saved_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS -x objective-c" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __has_feature #define __has_feature(x) 0 #endif __has_feature(objc_nonfragile_abi) _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "^1$" >/dev/null 2>&1; then : USE_NONFRAGILE_ABI=yes else USE_NONFRAGILE_ABI=no fi rm -f conftest* CPPFLAGS=$saved_CPPFLAGS fi if test x"$USE_NONFRAGILE_ABI" = x"yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (compiler default)" >&5 $as_echo "yes (compiler default)" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: not requested by user" >&5 $as_echo "not requested by user" >&6; } fi fi fi #-------------------------------------------------------------------- # Check if compiler supports -fobjc-arc, and if so, turn it on! #-------------------------------------------------------------------- # Check whether --enable-objc-arc was given. if test "${enable_objc_arc+set}" = set; then : enableval=$enable_objc_arc; USE_ARC=$enableval else USE_ARC=$defaultng fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we should use ARC" >&5 $as_echo_n "checking whether we should use ARC... " >&6; } if test x"$USE_ARC" = x"yes"; then # What we want to do: set USE_ARC to yes if we can compile # something with -fobjc-arc. CFLAGS_no_arc="$CFLAGS" CFLAGS="$CFLAGS -fobjc-runtime=gnustep-1.8 -fobjc-arc" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Note that we never execute this code so it does not really matter what it is. We are testing that the compiler accepts the '-fobjc-arc' flag. */ int main() { #ifndef __has_feature #define __has_feature(x) 0 #endif return __has_feature(objc_arc) ? 0 : 1; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : USE_ARC=yes else USE_ARC=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_ARC" >&5 $as_echo "$USE_ARC" >&6; } CFLAGS="$CFLAGS_no_arc" if test x"$USE_ARC" = x"no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Building ARC code was requested, but the compiler" >&5 $as_echo "$as_me: Building ARC code was requested, but the compiler" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: doesn't support it." >&5 $as_echo "$as_me: doesn't support it." >&6;} as_fn_error $? "compiler doesn't support ARC" "$LINENO" 5 fi else if test x"$USE_ARC" != x"no"; then saved_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS -x objective-c" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __has_feature #define __has_feature(x) 0 #endif __has_feature(objc_arc) _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "^1$" >/dev/null 2>&1; then : USE_ARC=yes else USE_ARC=no fi rm -f conftest* CPPFLAGS=$saved_CPPFLAGS fi if test x"$USE_ARC" = x"yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (compiler default)" >&5 $as_echo "yes (compiler default)" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: not requested by user" >&5 $as_echo "not requested by user" >&6; } fi fi # Keep LIBS and CFLAGS as they are for a while - we need them in # the following Objective-C tests! #-------------------------------------------------------------------- # Check if we should use -r or -Wl,-r when doing partial linking #-------------------------------------------------------------------- # Ideally, we'd use -r or -Wl,-r everywhere and that would work with # both GCC and clang. But -r doesn't work with clang on some # platforms, while using -Wl,-r is a problem with GCC on some Sparc # systems, where GCC automatically passes --relax to the linker unless # you specify -r. If you specify -Wl,-r, it still passes --relax, # producing the error # # ld: --relax and -r may not be used together # # To work around this, we use -Wl,-r with clang, and -r with GCC. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the flag to use to do partial linking" >&5 $as_echo_n "checking for the flag to use to do partial linking... " >&6; } gs_cv_using_clang=`${CC} --version 2>&5 | grep -c "clang"` if test x"${gs_cv_using_clang}" = x"0" ; then OBJ_MERGE_CMD_FLAG=-r { $as_echo "$as_me:${as_lineno-$LINENO}: result: -r" >&5 $as_echo "-r" >&6; } else OBJ_MERGE_CMD_FLAG=-Wl,-r { $as_echo "$as_me:${as_lineno-$LINENO}: result: -Wl,-r" >&5 $as_echo "-Wl,-r" >&6; } fi #-------------------------------------------------------------------- # Check for the GCC version - this is used in the following tests #-------------------------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the GCC version" >&5 $as_echo_n "checking for the GCC version... " >&6; } if test ! x"${GCC}" = x"yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: it's not gcc" >&5 $as_echo "no: it's not gcc" >&6; } else # Running gcc -dumpversion we get something like 2.95.4 or # egcs-2.91.66 or 3.0.2 or 3.1 20011211 # We want to discard anything but the major number. # Explanation of the regexp - # \([^0-9]*\) matches non numeric chars at the beginning # \([0-9][0-9]*\) matches 1 or more numeric chars (this is the 2^nd # subpattern) # \([^0-9]*\) matches one or more non numeric chars # \([0-9][0-9]*\) matches 1 or more numeric chars (this is the 4^nd # subpattern) # \([^0-9].*\) matches a non numeric char followed by anything # /\2/ replace the whole lot with the 2^nd subpattern # /\4/ replace the whole lot with the 4^nd subpattern # All square brackets are doubled because this file is processed by m4 first. # Finally, any error messages are redirected to &5, so that they are logged # into config.log but don't clutter the normal user output. gs_cv_gcc_major_version=`(${CC} -dumpversion | sed "s/\([^0-9]*\)\([0-9][0-9]*\)\([^0-9]*\)\([0-9][0-9]*\)\([^0-9]*.*\)/\2/") 2>&5`; gs_cv_gcc_minor_version=`(${CC} -dumpversion | sed "s/\([^0-9]*\)\([0-9][0-9]*\)\([^0-9]*\)\([0-9][0-9]*\)\([^0-9]*.*\)/\4/") 2>&5`; gs_cv_gcc_parsed_version=${gs_cv_gcc_major_version}.${gs_cv_gcc_minor_version} { $as_echo "$as_me:${as_lineno-$LINENO}: result: version: ${gs_cv_gcc_parsed_version}" >&5 $as_echo "version: ${gs_cv_gcc_parsed_version}" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 $as_echo_n "checking whether the compiler is clang... " >&6; } if test ! x"${GCC}" = x"yes" ; then CLANG_CC=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else if "${CC}" -v 2>&1 | grep -q 'clang version'; then CLANG_CC=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else CLANG_CC=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # Do not restore LIBS and CFLAGS yet as we need to test if the # compiler supports native exceptions. #-------------------------------------------------------------------- # Check if GCC supports -fobjc-exceptions, and if so, turn it on! #-------------------------------------------------------------------- # Check whether --enable-native-objc-exceptions was given. if test "${enable_native_objc_exceptions+set}" = set; then : enableval=$enable_native_objc_exceptions; USE_OBJC_EXCEPTIONS=$enableval else USE_OBJC_EXCEPTIONS=maybe fi if test x"$USE_OBJC_EXCEPTIONS" = x"maybe"; then if test x"$MSWIND" = x"yes"; then USE_OBJC_EXCEPTIONS=no fi fi # Please note that -fobjc-exceptions should automatically enable # -fexceptions. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports native ObjC exceptions" >&5 $as_echo_n "checking whether the compiler supports native ObjC exceptions... " >&6; } if test x"$USE_OBJC_EXCEPTIONS" = x"maybe"; then # What we want to do: set USE_OBJC_EXCEPTIONS to yes if we can compile # something with @try/@catch/@finally in it. CFLAGS_no_exceptions="$CFLAGS" CFLAGS="$CFLAGS -fexceptions -fobjc-exceptions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <objc/objc.h> @interface Test { id isa; } @end int test (Test *o) { @try { @throw o; } @catch (id foo) { if (o != foo) return 1; } return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : USE_OBJC_EXCEPTIONS=yes else USE_OBJC_EXCEPTIONS=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test x"$USE_OBJC_EXCEPTIONS" = x"no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS_no_exceptions" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_OBJC_EXCEPTIONS" >&5 $as_echo "$USE_OBJC_EXCEPTIONS" >&6; } fi # Check if we need -shared-libgcc linker flags if test x"$USE_OBJC_EXCEPTIONS" = x"yes" -a x"${GCC}" = x"yes"; then if test x"$CLANG_CC" = x"no"; then LDFLAGS="$LDFLAGS -shared-libgcc" fi fi #-------------------------------------------------------------------- # Check if compiler supports -MMD -MP to generate %.d files ... #-------------------------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the compiler supports autodependencies" >&5 $as_echo_n "checking if the compiler supports autodependencies... " >&6; } # What we want to do: set AUTO_DEPENDENCIES to yes if gcc => 3.x. As # an exception, we disabled them on cygwin because the compiler # generates autodependencies files containing filenames such as # G:/GNUstep/mingw/include/stdlib.h which can't really work with GNU # make because of the ':'. AUTO_DEPENDENCIES="" if test "$CYGWIN" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: autodependencies do not work on cygwin" >&5 $as_echo "no: autodependencies do not work on cygwin" >&6; } elif test ! ${GCC} = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: it's not gcc" >&5 $as_echo "no: it's not gcc" >&6; } else if test "${gs_cv_gcc_major_version}" -ge "3" >&5 2>&5; then AUTO_DEPENDENCIES=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes: gcc version is ${gs_cv_gcc_parsed_version} >= 3.0" >&5 $as_echo "yes: gcc version is ${gs_cv_gcc_parsed_version} >= 3.0" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: gcc version is ${gs_cv_gcc_parsed_version} < 3.0" >&5 $as_echo "no: gcc version is ${gs_cv_gcc_parsed_version} < 3.0" >&6; } fi fi #-------------------------------------------------------------------- # Check if compiler supports precompiled headers #-------------------------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the compiler supports precompiled headers" >&5 $as_echo_n "checking if the compiler supports precompiled headers... " >&6; } # We used to check the compiler version here; this is not that # reliable because precompiled headers were added in 3.4, then they # were broken in 4.1, then fixed again. # So we prefer to actually try them out! ;-) # (Unfortunately, even that is not enough since we have reports of # 4.1.1 GCC prereleases that pass this simple test, but where any # serious usage of precompiled headers (ie, including # Foundation/Foundation.h and AppKit/AppKit.h) doesn't work. So in # addition to doing this test, we also forcefully disable precompiled # headers in 4.1) # What we want to do: set GCC_WITH_PRECOMPILED_HEADERS to yes if gcc # can compile and use a precompiled header. GCC_WITH_PRECOMPILED_HEADERS="no" # First, a preliminary test. If this is not gcc, precompiled headers # are not supported. if test ! "${GCC}" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: it's not gcc" >&5 $as_echo "no: it's not gcc" >&6; } else if test "${gs_cv_gcc_parsed_version}" = "4.1" >&5 2>&5; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: gcc 4.1 is often shipped with broken precompiled headers" >&5 $as_echo "no: gcc 4.1 is often shipped with broken precompiled headers" >&6; } else gs_precomp_test_builddir="`pwd`" gs_precomp_test_results=`(CC="$CC"; export CC; CFLAGS="$CFLAGS"; export CFLAGS; CPPLAGS="$CPPFLAGS"; export CPPFLAGS; LDFLAGS="$LDFLAGS"; export LDFLAGS; LIBS="$LIBS"; export LIBS; cd "$srcdir/config-precomp-test/"; ./run-test.sh "$gs_precomp_test_builddir"; echo $?) 2>&5` if test "$gs_precomp_test_results" = "0"; then GCC_WITH_PRECOMPILED_HEADERS="yes" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # Please check the config-precomp-test.log log file for more info { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: old or buggy gcc" >&5 $as_echo "no: old or buggy gcc" >&6; } fi fi fi # Important - if you think there is a problem with precompiled # headers, try adding ADDITIONAL_OBJC_FLAGS = -Winvalid-pch to your # GNUmakefile to check that they are used. # Restore LIBS and CFLAGS - we used to compile C code after this # point. Useful to keep this in case we need to compile C code again. LIBS="$saved_LIBS" CFLAGS="$saved_CFLAGS" #-------------------------------------------------------------------- # Check if compiler requires -shared flag on Solaris ... #-------------------------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the compiler requires -shared flag to build for Solaris" >&5 $as_echo_n "checking if the compiler requires -shared flag to build for Solaris... " >&6; } # set SOLARIS_SHARED to yes if gcc => 4.x SOLARIS_SHARED="" if test ! ${GCC} = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: it's not gcc" >&5 $as_echo "no: it's not gcc" >&6; } else if test "${gs_cv_gcc_major_version}" -ge "4" >&5 2>&5; then if test "$host_os" = "solaris2.7" -o $"host_os" = "solaris2.6"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: solaris 2.6 or 2.7" >&5 $as_echo "no: solaris 2.6 or 2.7" >&6; } else SOLARIS_SHARED=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes: gcc version is ${gs_cv_gcc_parsed_version} >= 4.0" >&5 $as_echo "yes: gcc version is ${gs_cv_gcc_parsed_version} >= 4.0" >&6; } fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: gcc version is ${gs_cv_gcc_parsed_version} < 4.0" >&5 $as_echo "no: gcc version is ${gs_cv_gcc_parsed_version} < 4.0" >&6; } fi fi #-------------------------------------------------------------------- # Check if we need to enable debug=yes builds by default #-------------------------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we should enable 'make debug=yes' by default" >&5 $as_echo_n "checking if we should enable 'make debug=yes' by default... " >&6; } # Check whether --enable-debug-by-default was given. if test "${enable_debug_by_default+set}" = set; then : enableval=$enable_debug_by_default; ac_cv_debug_by_default=$enableval else ac_cv_debug_by_default="undefined" fi if test "$ac_cv_debug_by_default" = "yes"; then GNUSTEP_DEFAULT_DEBUG=yes; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; else GNUSTEP_DEFAULT_DEBUG=no; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; fi #-------------------------------------------------------------------- # Check for GNU make #-------------------------------------------------------------------- # Search for GNU make. We try 'gmake' then 'gnumake' then 'make'. If # we can't find it, we set it to 'make', even if that will fail later # on. for ac_prog in gmake gnumake make do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_GNUMAKE+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$GNUMAKE"; then ac_cv_prog_GNUMAKE="$GNUMAKE" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_GNUMAKE="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi GNUMAKE=$ac_cv_prog_GNUMAKE if test -n "$GNUMAKE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUMAKE" >&5 $as_echo "$GNUMAKE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$GNUMAKE" && break done test -n "$GNUMAKE" || GNUMAKE="make" # Used by gnustep-config to launch gnustep-make to compute # compilation/link flags # If GNU make supports $(info ...), gnustep-make can use it to print # out a help message at the beginning of each compilation. This # feature was introduced in GNU make 3.81, so we check GNU make's # version number (alternatively, we could try executing a makefile # that contains an info command). { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the GNU Make version" >&5 $as_echo_n "checking for the GNU Make version... " >&6; } # To get the make version, take the output of 'make --version', read # only the first line (that we expect to be something like "GNU Make # 3.81"), and ignore everything up to the first numeric character. gs_cv_make_version=`($GNUMAKE --version | head -1 | sed -e 's/^[^0-9]*//') 2>&5` # Now check for the major/minor version numbers. gs_cv_make_major_version=`(echo ${gs_cv_make_version} | sed -e 's/\([0-9][0-9]*\)[^0-9]\([0-9][0-9]*\).*/\1/') 2>&5` gs_cv_make_minor_version=`(echo ${gs_cv_make_version} | sed -e 's/\([0-9][0-9]*\)[^0-9]\([0-9][0-9]*\).*/\2/') 2>&5` { $as_echo "$as_me:${as_lineno-$LINENO}: result: version: ${gs_cv_make_major_version}.${gs_cv_make_minor_version}" >&5 $as_echo "version: ${gs_cv_make_major_version}.${gs_cv_make_minor_version}" >&6; } #-------------------------------------------------------------------- # Check for GNU Make >= 3.79 #-------------------------------------------------------------------- # We want to emit a warning if they are using GNU make < 3.79 as it's # no longer supported. We let them install everything at their own # risk though. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU Make >= 3.79" >&5 $as_echo_n "checking for GNU Make >= 3.79... " >&6; } SUPPORTED_MAKE=no if test "${gs_cv_make_major_version}" = "3" >&5 2>&5; then if test "${gs_cv_make_minor_version}" -ge "79" >&5 2>&5; then SUPPORTED_MAKE=yes fi fi if test "${gs_cv_make_major_version}" -ge "4" >&5 2>&5; then SUPPORTED_MAKE=yes fi if test "${SUPPORTED_MAKE}" = "yes" >&5 2>&5; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # We do not abort mostly because the checks for GNU make might have # gone wrong and returned the wrong version, and because GNU make < # 3.79.1 probably works anyway (with the exception of parallel # building). { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GNU Make >= 3.79.1 is recommended! Older versions are no longer supported. Continue at your own risk." >&5 $as_echo "$as_me: WARNING: GNU Make >= 3.79.1 is recommended! Older versions are no longer supported. Continue at your own risk." >&2;} fi #-------------------------------------------------------------------- # Check for $(info ...) function in GNU make #-------------------------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if GNU Make has the info function" >&5 $as_echo_n "checking if GNU Make has the info function... " >&6; } # Things may go wrong (eg, make couldn't be found in one of the # previous steps), so by default we assume 'no' here. If things go # wrong, you'll lost some non-essential features. MAKE_WITH_INFO_FUNCTION=no if test "${gs_cv_make_major_version}" = "3" >&5 2>&5; then if test "${gs_cv_make_minor_version}" -ge "81" >&5 2>&5; then MAKE_WITH_INFO_FUNCTION=yes fi fi if test "${gs_cv_make_major_version}" -ge "4" >&5 2>&5; then MAKE_WITH_INFO_FUNCTION=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${MAKE_WITH_INFO_FUNCTION}" >&5 $as_echo "${MAKE_WITH_INFO_FUNCTION}" >&6; } #-------------------------------------------------------------------- # Shall we strip makefiles upon installation ? #-------------------------------------------------------------------- # Stripping makefiles removes comments and newlines from them. The # resulting stripped makefiles execute around 5% faster on average. # Too little for it to be worth for the common user who's more # interested in the comments :-) so it's disabled by default. { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we should strip makefiles after installation" >&5 $as_echo_n "checking if we should strip makefiles after installation... " >&6; } # Check whether --enable-strip-makefiles was given. if test "${enable_strip_makefiles+set}" = set; then : enableval=$enable_strip_makefiles; ac_cv_strip_makefiles=$enableval else ac_cv_strip_makefiles="undefined" fi if test "$ac_cv_strip_makefiles" = "yes"; then GNUSTEP_STRIP_MAKEFILES=strip; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; else GNUSTEP_STRIP_MAKEFILES=; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; fi #------------------------------------------------- # Determine if we should enable parallel building #------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we should enable support for parallel building" >&5 $as_echo_n "checking if we should enable support for parallel building... " >&6; } # Check whether --enable-parallel-building was given. if test "${enable_parallel_building+set}" = set; then : enableval=$enable_parallel_building; ac_cv_parallel_building=$enableval else ac_cv_parallel_building="yes" fi if test "$ac_cv_parallel_building" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; GNUSTEP_MAKE_PARALLEL_BUILDING="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; GNUSTEP_MAKE_PARALLEL_BUILDING="no" fi #-------------------------------------------------------------------- # Record the version #-------------------------------------------------------------------- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the version of gnustep-make we are compiling" >&5 $as_echo_n "checking for the version of gnustep-make we are compiling... " >&6; } . "$srcdir/Version" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUSTEP_MAKE_VERSION" >&5 $as_echo "$GNUSTEP_MAKE_VERSION" >&6; } #------------------------------------------------------------------- # Record the 'clean' target_os, target_cpu and target_vendor #------------------------------------------------------------------- # This is just for efficiency, so that core/make/GNUmakefile does not # have to compute clean_target_os from target_os (and similar) by # running shell scripts each time you 'make' something inside # gnustep-make. We basically compute them once now, and cache them # forever. It is also used by GNUstep.sh when multi-platform is # disabled. clean_target_os=`$srcdir/clean_os.sh $target_os` clean_target_cpu=`$srcdir/clean_cpu.sh $target_cpu` clean_target_vendor=`$srcdir/clean_cpu.sh $target_vendor` #-------------------------------------------------------------------- # For documentation #-------------------------------------------------------------------- for ac_prog in latex2html do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LATEX2HTML+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LATEX2HTML"; then ac_cv_prog_LATEX2HTML="$LATEX2HTML" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LATEX2HTML="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LATEX2HTML=$ac_cv_prog_LATEX2HTML if test -n "$LATEX2HTML"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LATEX2HTML" >&5 $as_echo "$LATEX2HTML" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LATEX2HTML" && break done #-------------------------------------------------------------------- # For test framework #-------------------------------------------------------------------- # Extract the first word of "bash", so it can be a program name with args. set dummy bash; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_SHELLPROG+:} false; then : $as_echo_n "(cached) " >&6 else case $SHELLPROG in [\\/]* | ?:[\\/]*) ac_cv_path_SHELLPROG="$SHELLPROG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_SHELLPROG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_SHELLPROG" && ac_cv_path_SHELLPROG="/bin/sh" ;; esac fi SHELLPROG=$ac_cv_path_SHELLPROG if test -n "$SHELLPROG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHELLPROG" >&5 $as_echo "$SHELLPROG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "test", so it can be a program name with args. set dummy test; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_TESTPROG+:} false; then : $as_echo_n "(cached) " >&6 else case $TESTPROG in [\\/]* | ?:[\\/]*) ac_cv_path_TESTPROG="$TESTPROG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_TESTPROG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi TESTPROG=$ac_cv_path_TESTPROG if test -n "$TESTPROG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TESTPROG" >&5 $as_echo "$TESTPROG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi #-------------------------------------------------------------------- # Produce the output files #-------------------------------------------------------------------- ac_config_files="$ac_config_files config-noarch.make config.make openapp opentool executable.template GNUmakefile GNUstep.conf GNUstep-strict-v2.conf GNUstep.sh GNUstep.csh fixpath.sh gnustep-make.spec gnustep-config TestFramework/gnustep-tests filesystem.make filesystem.sh filesystem.csh gnustep-make-ld.so.conf" ac_config_files="$ac_config_files runtime/$OBJC_RUNTIME_LIB.make:config.make.in" ac_config_commands="$ac_config_commands default" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by $as_me, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config-noarch.make") CONFIG_FILES="$CONFIG_FILES config-noarch.make" ;; "config.make") CONFIG_FILES="$CONFIG_FILES config.make" ;; "openapp") CONFIG_FILES="$CONFIG_FILES openapp" ;; "opentool") CONFIG_FILES="$CONFIG_FILES opentool" ;; "executable.template") CONFIG_FILES="$CONFIG_FILES executable.template" ;; "GNUmakefile") CONFIG_FILES="$CONFIG_FILES GNUmakefile" ;; "GNUstep.conf") CONFIG_FILES="$CONFIG_FILES GNUstep.conf" ;; "GNUstep-strict-v2.conf") CONFIG_FILES="$CONFIG_FILES GNUstep-strict-v2.conf" ;; "GNUstep.sh") CONFIG_FILES="$CONFIG_FILES GNUstep.sh" ;; "GNUstep.csh") CONFIG_FILES="$CONFIG_FILES GNUstep.csh" ;; "fixpath.sh") CONFIG_FILES="$CONFIG_FILES fixpath.sh" ;; "gnustep-make.spec") CONFIG_FILES="$CONFIG_FILES gnustep-make.spec" ;; "gnustep-config") CONFIG_FILES="$CONFIG_FILES gnustep-config" ;; "TestFramework/gnustep-tests") CONFIG_FILES="$CONFIG_FILES TestFramework/gnustep-tests" ;; "filesystem.make") CONFIG_FILES="$CONFIG_FILES filesystem.make" ;; "filesystem.sh") CONFIG_FILES="$CONFIG_FILES filesystem.sh" ;; "filesystem.csh") CONFIG_FILES="$CONFIG_FILES filesystem.csh" ;; "gnustep-make-ld.so.conf") CONFIG_FILES="$CONFIG_FILES gnustep-make-ld.so.conf" ;; "runtime/$OBJC_RUNTIME_LIB.make") CONFIG_FILES="$CONFIG_FILES runtime/$OBJC_RUNTIME_LIB.make:config.make.in" ;; "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' <conf$$subs.awk | sed ' /^[^""]/{ N s/\n// } ' >>$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "default":C) chmod a+x openapp opentool fixpath.sh executable.template ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi �������������������������������������������������������������������������������������������������������������������������������gnustep-make-2.7.0/library.make���������������������������������������������������������������������0000664�0001750�0001750�00000001627�10711636501�016245� 0����������������������������������������������������������������������������������������������������ustar �richard�������������������������richard����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # library.make # # Makefile rules to build GNUstep-based libraries. # # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero <nicola@brainstorm.co.uk> # # This file is part of the GNUstep Makefile Package. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING. # If not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_INSTANCE),) include $(GNUSTEP_MAKEFILES)/Master/library.make else ifeq ($(GNUSTEP_TYPE),library) include $(GNUSTEP_MAKEFILES)/Instance/library.make endif endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������